<?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>89881</bug_id>
          
          <creation_ts>2012-06-25 08:34:34 -0700</creation_ts>
          <short_desc>Split map* functions out of StyleResolver into a helper object</short_desc>
          <delta_ts>2012-06-25 22:16:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>89879</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>656586</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-06-25 08:34:34 -0700</bug_when>
    <thetext>Split map* functions out of StyleResolver into a helper object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656590</commentid>
    <comment_count>1</comment_count>
      <attachid>149297</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-06-25 08:42:42 -0700</bug_when>
    <thetext>Created attachment 149297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656595</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-06-25 08:45:39 -0700</bug_when>
    <thetext>I&apos;m not wedded to the naming here.

Basically this is a StyleBuilder helper object, which currently needs a StyleResolver pointer, because StyleResolver is the god-object of style resolve and has the current-resolve cache pointers we need.  Once those are split off into a separate object, this object wont have anything to do with StyleResolver and may even be completely static.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656604</commentid>
    <comment_count>3</comment_count>
      <attachid>149299</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-06-25 09:01:49 -0700</bug_when>
    <thetext>Created attachment 149299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656612</commentid>
    <comment_count>4</comment_count>
      <attachid>149304</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-06-25 09:12:31 -0700</bug_when>
    <thetext>Created attachment 149304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656616</commentid>
    <comment_count>5</comment_count>
      <attachid>149304</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-25 09:19:33 -0700</bug_when>
    <thetext>Comment on attachment 149304
Patch

Attachment 149304 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13096162</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656618</commentid>
    <comment_count>6</comment_count>
      <attachid>149304</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-25 09:21:21 -0700</bug_when>
    <thetext>Comment on attachment 149304
Patch

Attachment 149304 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13102084</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656625</commentid>
    <comment_count>7</comment_count>
      <attachid>149308</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-06-25 09:26:20 -0700</bug_when>
    <thetext>Created attachment 149308
Fix Qt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656670</commentid>
    <comment_count>8</comment_count>
      <attachid>149308</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-06-25 10:15:32 -0700</bug_when>
    <thetext>Comment on attachment 149308
Fix Qt

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

&gt; Source/WebCore/css/CSSToStyleMap.cpp:84
&gt; +    case CSSValueFixed:
&gt; +        layer-&gt;setAttachment(FixedBackgroundAttachment);
&gt; +        break;
&gt; +    case CSSValueScroll:
&gt; +        layer-&gt;setAttachment(ScrollBackgroundAttachment);
&gt; +        break;
&gt; +    case CSSValueLocal:
&gt; +        layer-&gt;setAttachment(LocalBackgroundAttachment);
&gt; +        break;

I know that you&apos;re moving code. The compiler will probably already do this, we should substitute &quot;return&quot; for &quot;break&quot; in each of these case statements since we fall off the end of the function anyway after exiting the switch block. Also, I tend to find that a switch block that is all returns or all breaks tends to read better.

&gt; Source/WebCore/css/CSSToStyleMap.cpp:266
&gt; +    float zoomFactor = style()-&gt;effectiveZoom();
&gt; +
&gt; +    CSSPrimitiveValue* primitiveValue = static_cast&lt;CSSPrimitiveValue*&gt;(value);
&gt; +    Length length;
&gt; +    if (primitiveValue-&gt;isLength())
&gt; +        length = primitiveValue-&gt;computeLength&lt;Length&gt;(style(), rootElementStyle(), zoomFactor);
&gt; +    else if (primitiveValue-&gt;isPercentage())
&gt; +        length = Length(primitiveValue-&gt;getDoubleValue(), Percent);
&gt; +    else if (primitiveValue-&gt;isCalculatedPercentageWithLength())
&gt; +        length = Length(primitiveValue-&gt;cssCalcValue()-&gt;toCalcValue(style(), rootElementStyle(), zoomFactor));
&gt; +    else if (primitiveValue-&gt;isViewportPercentageLength())
&gt; +        length = primitiveValue-&gt;viewportPercentageLength();
&gt; +    else
&gt; +        return;

This code is identical to code in CSSToStyleMap::mapFillXPosition. We consider sharing such code in a follow up patch.

&gt; Source/WebCore/css/CSSToStyleMap.cpp:572
&gt; +    float zoom = useSVGZoomRules() ? 1.0f : style()-&gt;effectiveZoom();

Nit: It&apos;s sufficient to use 1 here instead of 1.0f.

&gt; Source/WebCore/css/CSSToStyleMap.cpp:581
&gt; +        box.m_top = Length(slices-&gt;top()-&gt;getIntValue(), Relative);

LengthBox::m_{top, bottom, left, right} are all public instance variables. We may want to consider renaming them {top, bottom, left, right} in a follow up patch since LengthBox provides no encapsulation.

&gt; Source/WebCore/css/CSSToStyleMap.h:86
&gt; +}

Nit: We usually add an inline comment here of the form &quot;// namespace WebCore&quot;

&gt; Source/WebCore/css/CSSToStyleMap.h:88
&gt; +#endif

Nit: We usually add an inline comment here of the form &quot;// CSSToStyleMap_h&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656692</commentid>
    <comment_count>9</comment_count>
      <attachid>149308</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-25 10:36:58 -0700</bug_when>
    <thetext>Comment on attachment 149308
Fix Qt

Clearing flags on attachment: 149308

Committed r121164: &lt;http://trac.webkit.org/changeset/121164&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656694</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-25 10:37:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656862</commentid>
    <comment_count>11</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-06-25 14:26:49 -0700</bug_when>
    <thetext>CSSToStyleMap name does not follow our naming pattern for style resolver related classes (which is to use Style* prefix). It sounds like a hash map of some sort of (hash) map but apparently it is not. Is it just a random type to hang functions? Is that a good factoring?

Please cc me for any future patches that touch StyleResolver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656902</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-06-25 15:01:19 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; CSSToStyleMap name does not follow our naming pattern for style resolver related classes (which is to use Style* prefix). It sounds like a hash map of some sort of (hash) map but apparently it is not. Is it just a random type to hang functions? Is that a good factoring?
&gt; 
&gt; Please cc me for any future patches that touch StyleResolver.

Thank you for your thoughts.  I CC&apos;d you on the meta bug, hoping for your commentary on this, and any other refactorings.  I&apos;m glad you found your way here.

As mentioned in comment #2, I&apos;m not at all wedded to this naming.  If you&apos;d like to propose a change, I&apos;m happy to make it.

Thank you again for your thoughts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657283</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-06-25 22:16:14 -0700</bug_when>
    <thetext>I have other responsibilities and may not be able to come back to the next stages of my desired refactoring of StyleResolver very soon.

As I would not like my work to be perceived as simply &quot;drive-by&quot;, please let me (or sherrifbot) know and I can roll this patch out. :)

Otherwise I will assume silence to mean you agree this is an improvement and we&apos;ll leave this as is.  Thanks again for your thoughts.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149297</attachid>
            <date>2012-06-25 08:42:42 -0700</date>
            <delta_ts>2012-06-25 09:01:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89881-20120625084242.patch</filename>
            <type>text/plain</type>
            <size>107035</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBiMWNkZDBjMWMyMjk3
YWM1ZDFjMWFlMDc5NDYyMjU1YjkzNGIxZS4uYjIxOWFkNGI5YzVjOTcxNmQ1YjY3MTQ3NGQyNDky
NTk0ODhjZWQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA2LTI1ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBTcGxpdCBtYXAqIGZ1bmN0aW9u
cyBvdXQgb2YgU3R5bGVSZXNvbHZlciBpbnRvIGEgaGVscGVyIG9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk4ODEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSBtYXAqIGZ1bmN0aW9ucyBh
cmUgY29tcGxldGVseSBpbmRlcGVuZGVudCBvZiB0aGUgcmVzdCBvZiBTdHlsZVJlc29sdmVyCisg
ICAgICAgIGFuZCBvbmx5IGV4aXN0IHRvIHNlcnZlIFN0eWxlQnVpbGRlci4KKyAgICAgICAgQ1NT
VG9TdHlsZU1hcCBkb2Vzbid0IGV2ZW4gd2FudCB0byBoYXZlIGEgU3R5bGVSZXNvbHZlciBwb2lu
dGVyLCBidXQKKyAgICAgICAgY3VycmVudGx5IG5lZWRzIG9uZSB0byBhY2Nlc3MgdGhlIHJlc29s
dmUtbGlmZXRpbWUgY2FjaGVzIGZvciB0aGUKKyAgICAgICAgY3VycmVudCByZXNvbHZlLiAgT25j
ZSB3ZSBzcGxpdCBvdXQgdGhhdCBwZXItcmVzb2x2ZSBzdGF0ZSBpbnRvCisgICAgICAgIHNvbWUg
c29ydCBvZiBSZXNvbHZlU3RhdGUvUmVzb2x2ZUluZm8gb2JqZWN0IChha2luIHRvIFBhaW50SW5m
by9MYXlvdXRTdGF0ZSkKKyAgICAgICAgdGhlbiB0aGlzIG9iamVjdCB3aWxsIGJlIGV2ZW4gc2lt
cGxlci4KKworICAgICAgICBObyBiZWhhdmlvcmFsIGNoYW5nZSwgdGh1cyBubyB0ZXN0cy4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBjc3MvQ1NTVG9TdHlsZU1hcC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpzdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpyb290RWxlbWVudFN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1RvU3R5bGVNYXA6OnVzZVNWR1pvb21SdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb1N0eWxlTWFwOjpzdHlsZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVN
YXA6Om1hcEZpbGxBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6
Om1hcEZpbGxDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxD
b21wb3NpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbE9yaWdp
bik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFgpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFkpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9T
dHlsZU1hcDo6bWFwRmlsbFhQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxl
TWFwOjptYXBGaWxsWVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6
Om1hcEFuaW1hdGlvbkRlbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1h
cEFuaW1hdGlvbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25EdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25GaWxsTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25JdGVyYXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxl
TWFwOjptYXBBbmltYXRpb25OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6
Om1hcEFuaW1hdGlvblBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBBbmltYXRpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0
eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxl
TWFwOjptYXBOaW5lUGllY2VJbWFnZVNsaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5
bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0
eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVJlcGVhdCk6CisgICAgICAgICogY3NzL0NTU1RvU3R5
bGVNYXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENTU1RvU3R5bGVN
YXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6Q1NTVG9TdHlsZU1hcCk6Cisg
ICAgICAgICogY3NzL1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5RmlsbExheWVyOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJv
cGVydHlCb3JkZXJJbWFnZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBbmltYXRpb246Om1hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcik6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3R5
bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZU1hcCk6CisgICAgICAgIChTdHlsZVJl
c29sdmVyKToKKwogMjAxMi0wNi0yMCAgWmVldiBMaWViZXIgIDx6bGllYmVyQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZSByZWR1bmRhbnQgI2luY2x1ZGVzIGluIGNv
bXBvc2l0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTNhMDU3MjMyNjMwZDdjMDNiMDU1Njc2
Y2M3NTI3ZDAyODRjZTFhZi4uNzQwMzI1NGUxYjEwZTA4NjEyYTJlMmYxMzk2ZWQ1ODQ0ZmNhMWVh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUwMiw2ICs1MDIsNyBAQCBTRVQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgY3NzL0NTU1N0eWxlUnVsZS5jcHAKICAgICBjc3MvQ1NTU3R5bGVTaGVldC5j
cHAKICAgICBjc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKKyAgICBjc3MvQ1NTVG9TdHls
ZU1hcC5jcHAKICAgICBjc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwCiAgICAgY3NzL0NTU1Zh
bHVlLmNwcAogICAgIGNzcy9DU1NWYWx1ZUxpc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCAyMDJmNWVhMzc4YTcwZTFiZjA4MDEzMjIyYWI2MjZhNDcxNmQyZmNhLi5kY2Ez
MjkxZmIxNGEwN2Y2NzU2NTQ3NDdjYTdmMjM0ZWUyMGJiZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KQEAgLTE2NzcsNiArMTY3Nyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBcCiAJU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGlt
aW5nRnVuY3Rpb25WYWx1ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmggXAogCVNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NXcmFwU2hhcGVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1dyYXBT
aGFwZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKaW5kZXggYzg5NzRkMmQ2NTJkYmVhNjY4MjcwZGEzZGY4ZjQzYmY4NGEy
MjJjNC4uMmJhZDdmODhhNzQ3MmVlZjExYjM4ODcxYjk1MGNlOGU5MWZhMDdmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMjUwNSw2ICsyNTA1LDggQEAKICAgICAgICAgICAgICdjc3MvQ1NTU3R5bGVT
aGVldC5oJywKICAgICAgICAgICAgICdjc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAnLAog
ICAgICAgICAgICAgJ2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgnLAorICAgICAgICAgICAg
J2Nzcy9DU1NUb1N0eWxlTWFwLmNwcCcsCisgICAgICAgICAgICAnY3NzL0NTU1RvU3R5bGVNYXAu
aCcsCiAgICAgICAgICAgICAnY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcCcsCiAgICAgICAg
ICAgICAnY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgnLAogICAgICAgICAgICAgJ2Nzcy9DU1NV
bmtub3duUnVsZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKaW5kZXggNjE5ZTgyOWY3OTU2MTg5NWVlY2RkZjI0MzM4NjY5MTQ0ZTI0MmQ1My4uYzE0
OTQyNjg1NTI2MmZmNGUwYWQ2ZmYyMGI5NWFiNjdhZDI0MzkyMCAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTM2NjI3LDYgKzM2NjI3LDE0IEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xD
U1NUb1N0eWxlTWFwLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cY3NzXENTU1RvU3R5bGVNYXAuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcCIK
IAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmU4YjVmZDI0YjBjM2UxY2Y4M2Iw
ZmU3ZjY3ZTk3N2UyMmIwMjBlZC4uMjRjYTE3YmI2MGE1ZjY0NDI1NjFiYTAyYjgzNjg1OGE2MWNm
ZTY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTc3OSwxMiArMTc3OSwxMiBAQAogCQk2RTIxQzZDMDExMjYzMzg1MDBBN0JF
MDIgLyogR3JhcGhpY3NDb250ZXh0M0QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkUyMUM2QkYxMTI2MzM4NTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29u
dGV4dDNELmNwcCAqLzsgfTsKIAkJNkUyMUM2QzIxMTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNz
Q29udGV4dDNEQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkUyMUM2QzExMTI2MzM5OTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNEQ0cuY3Bw
ICovOyB9OwogCQk2RTNGQUQzODE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2RTNGQUQzNjE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQy5jcHAgKi87IH07Ci0JCTZFM0ZBRDM5MTQ3MzNGNDAwMEU0MjMwNiAvKiBKU1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2RTNGQUQzNzE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQy5oICovOyB9OwotCQk2RTNGQUU4RTE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNkUzRkFFOEMxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDLmNwcCAqLzsgfTsKLQkJNkUzRkFFOEYxNDczM0ZEQjAwRTQyMzA2IC8qIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUU4RDE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMuaCAqLzsgfTsKIAkJNkUzRkFEMzgxNDczM0Y0MDAwRTQyMzA3IC8qIEpT
V2ViR0xEZXB0aFRleHR1cmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkUzRkFEMzYxNDczM0Y0MDAwRTQyMzA3IC8qIEpTV2ViR0xEZXB0aFRleHR1
cmUuY3BwICovOyB9OworCQk2RTNGQUQzOTE0NzMzRjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkUzRkFEMzcxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMuaCAqLzsgfTsKIAkJNkUzRkFEMzkxNDczM0Y0MDAwRTQyMzA3IC8qIEpTV2ViR0xE
ZXB0aFRleHR1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZFM0ZBRDM3MTQ3MzNGNDAwMEU0MjMwNyAvKiBKU1dlYkdMRGVwdGhUZXh0dXJlLmggKi87
IH07CisJCTZFM0ZBRThFMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3Bw
ICovOyB9OwogCQk2RTNGQUU4RTE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkUzRkFF
OEMxNDczM0ZEQjAwRTQyMzA3IC8qIFdlYkdMRGVwdGhUZXh0dXJlLmNwcCAqLzsgfTsKKwkJNkUz
RkFFOEYxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUU4RDE0NzMz
RkRCMDBFNDIzMDYgLyogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCAqLzsgfTsKIAkJNkUz
RkFFOEYxNDczM0ZEQjAwRTQyMzA3IC8qIFdlYkdMRGVwdGhUZXh0dXJlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTNGQUU4RDE0NzMzRkRCMDBFNDIz
MDcgLyogV2ViR0xEZXB0aFRleHR1cmUuaCAqLzsgfTsKIAkJNkU0N0U2NjAxMEI3OTQ0QjAwQjE4
NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNw
cCAqLzsgfTsKIAkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUYxMEI3
OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oICovOyB9OwpAQCAtNDE4NCw2ICs0MTg0LDgg
QEAKIAkJQTg3MURGRTQwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlcldpZGdldC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg3MURGRTAwQTE1Mzc2QjAw
QjEyQTY4IC8qIFJlbmRlcldpZGdldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE4NzFERkU1MEExNTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJXaWRn
ZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg3
MURGRTEwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlcldpZGdldC5jcHAgKi87IH07CiAJCUE4NzQ4
QkUwMTJDQkYyREMwMDFGQkE0MSAvKiBIYXNoVG9vbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NzQ4QkRGMTJDQkYyREMwMDFGQkE0MSAvKiBIYXNo
VG9vbHMuaCAqLzsgfTsKKwkJQTg4MkRBMjAxNTkzODQ2QTAwMDExNUVEIC8qIENTU1RvU3R5bGVN
YXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg4
MkRBMUYxNTkzODQ2QTAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAuY3BwICovOyB9OworCQlBODgy
REEyMzE1OTM4NDhEMDAwMTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg4MkRBMjIxNTkzODQ4RDAwMDExNUVEIC8q
IENTU1RvU3R5bGVNYXAuaCAqLzsgfTsKIAkJQTg4M0RGMjcwRjNEMDQ1RDAwRjE5QkY2IC8qIFZp
c2libGVTZWxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTg4M0RGMjUwRjNEMDQ1RDAwRjE5QkY2IC8qIFZpc2libGVTZWxlY3Rpb24uY3Bw
ICovOyB9OwogCQlBODgzREYyODBGM0QwNDVEMDBGMTlCRjYgLyogVmlzaWJsZVNlbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg4M0RGMjYw
RjNEMDQ1RDAwRjE5QkY2IC8qIFZpc2libGVTZWxlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBODhBRDUyRjA5NTI0QjkyMDAxREQxOTYg
LyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBODVEN0EyRjA4NzlFQkE5MDA2QTkxNzIgLyogUXVhcnR6Q29yZS5m
cmFtZXdvcmsgKi87IH07CkBAIC04ODYyLDE0ICs4ODY0LDE0IEBACiAJCTZFMjFDNkJGMTEyNjMz
ODUwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQzRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZFMjFDNkMxMTEyNjMzOTkwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRleHQz
RENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29u
dGV4dDNEQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTNGQUQzNjE0NzMz
RjQwMDBFNDIzMDYgLyogSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkUzRkFEMzcxNDczM0Y0MDAwRTQy
MzA2IC8qIEpTV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk2RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDYgLyogV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkUz
RkFFOEQxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
Lmg7IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNkUzRkFFOTAxNDczM0ZFQTAwRTQyMzA2IC8qIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQy5pZGw7IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTNGQUQzNjE0NzMzRjQw
MDBFNDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMRGVwdGhUZXh0dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNkUzRkFEMzcxNDczM0Y0MDAwRTQyMzA2IC8qIEpTV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RTNGQUQzNzE0NzMzRjQwMDBFNDIzMDcgLyogSlNXZWJHTERlcHRoVGV4dHVyZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMRGVwdGhUZXh0dXJlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFM0ZBRThDMTQ3MzNGREIwMEU0MjMwNiAvKiBXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHA7IHBhdGggPSBjYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RTNGQUU4QzE0NzMzRkRCMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xEZXB0aFRleHR1cmUuY3BwOyBwYXRo
ID0gY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNkUzRkFFOEQxNDczM0ZEQjAwRTQyMzA2IC8qIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDLmg7IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkUzRkFFOEQxNDczM0ZEQjAwRTQyMzA3IC8q
IFdlYkdMRGVwdGhUZXh0dXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdl
YkdMRGVwdGhUZXh0dXJlLmg7IHBhdGggPSBjYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkUzRkFFOTAxNDczM0ZFQTAwRTQyMzA2IC8qIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQy5pZGw7IHBhdGggPSBjYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTNGQUU5MDE0
NzMzRkVBMDBFNDIzMDcgLyogV2ViR0xEZXB0aFRleHR1cmUuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
bmFtZSA9IFdlYkdMRGVwdGhUZXh0dXJlLmlkbDsgcGF0aCA9IGNhbnZhcy9XZWJHTERlcHRoVGV4
dHVyZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNDdFNjVFMTBCNzk0NEIw
MEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV2ViR0xHZXRJbmZvLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTEdldEluZm8uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2Qzgg
LyogV2ViR0xHZXRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdM
R2V0SW5mby5oOyBwYXRoID0gY2FudmFzL1dlYkdMR2V0SW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTExODQsNiArMTExODYsOCBAQAogCQlBODc0OEJERjEyQ0JGMkRDMDAx
RkJBNDEgLyogSGFzaFRvb2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhh
c2hUb29scy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODc0OEQ2NjEyQ0MzNzYz
MDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZU9yaWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4NzQ4RDc0MTJDQzNGODkwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlT3JpZW50YXRpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBODgyREExRjE1OTM4NDZBMDAwMTE1RUQgLyogQ1NT
VG9TdHlsZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NU
b1N0eWxlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTg4MkRBMjIxNTkz
ODQ4RDAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ1NTVG9TdHlsZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
ODgzREYyNTBGM0QwNDVEMDBGMTlCRjYgLyogVmlzaWJsZVNlbGVjdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXNpYmxlU2VsZWN0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg4M0RGMjYwRjNEMDQ1RDAwRjE5QkY2IC8qIFZpc2li
bGVTZWxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlzaWJsZVNl
bGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODg2Q0RDMjE0RkJCQUEz
MDBEMjc5RjQgLyogV29ya2VyQ29udGV4dFdlYlNvY2tldC5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBu
YW1lID0gV29ya2VyQ29udGV4dFdlYlNvY2tldC5pZGw7IHBhdGggPSBNb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyQ29udGV4dFdlYlNvY2tldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMDk2OSw2ICsyMDk3Myw4IEBACiAJCQkJQkM5QUREN0YwQ0M0MDkyMjAwMDk4QzRDIC8q
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcCAqLywKIAkJCQlCQzlBREQyMjBDQzQwMzI2MDAw
OThDNEMgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCAqLywKIAkJCQkzMTYxMUU1NDBFMUM0
RDRBMDBGNkE1NzkgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsICovLAorCQkJCUE4ODJE
QTFGMTU5Mzg0NkEwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmNwcCAqLywKKwkJCQlBODgyREEy
MjE1OTM4NDhEMDAwMTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSBjc3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjUxMTIsNiArMjUxMTgsNyBA
QAogCQkJCUNFN0IyREIzMTU4NkFCQUQwMDk4QjNGQSAvKiBBbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFN0IyREI1MTU4NkFCQUQwMDk4QjNGQSAvKiBU
ZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUwOTg3QzI3MTU3
RDY3NkQwMEJEQTgzNSAvKiBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmggaW4gSGVhZGVycyAq
LywKKwkJCQlBODgyREEyMzE1OTM4NDhEMDAwMTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkBAIC0yODE2MCw2ICsyODE2Nyw3IEBACiAJCQkJQ0U3QjJEQjQxNTg2QUJBRDAw
OThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUNFN0IyREI2MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2Uu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1MDk4N0MyNjE1N0Q2NzZEMDBCREE4MzUgLyogQ3VzdG9t
RmlsdGVyR2xvYmFsQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBODgyREEyMDE1OTM4
NDZBMDAwMTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NUb1N0eWxlTWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTU0Y2VjZDNlOGEwNWNlNjQ0NjQx
Y2NhOTUzYTk4NzNlNTc4NGQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1RvU3R5bGVNYXAuY3BwCkBAIC0wLDAgKzEsNjU5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDQt
MjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5jb20pCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcgTmljaG9sYXMgU2hhbmtzICh3ZWJraXRAbmlja3NoYW5rcy5jb20p
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA3IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQg
KEMpIDIwMDcsIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAo
aHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQorICogQ29weXJpZ2h0IChjKSAyMDExLCBDb2Rl
IEF1cm9yYSBGb3J1bS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU1RvU3R5bGVNYXAuaCIKKworI2luY2x1ZGUgIkFu
aW1hdGlvbi5oIgorI2luY2x1ZGUgIkNTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIgorI2luY2x1
ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBw
aW5ncy5oIgorI2luY2x1ZGUgIkNTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCIKKyNpbmNsdWRlICJD
U1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiRmlsbExheWVyLmgiCisjaW5jbHVkZSAiUGFp
ci5oIgorI2luY2x1ZGUgIlJlY3QuaCIKKyNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUmVuZGVyU3R5bGUqIENTU1RvU3R5bGVNYXA6OnN0eWxlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvbHZlci0+c3R5bGUoKTsKK30KKyAgICAKK1JlbmRl
clN0eWxlKiBDU1NUb1N0eWxlTWFwOjpyb290RWxlbWVudFN0eWxlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9yZXNvbHZlci0+cm9vdEVsZW1lbnRTdHlsZSgpOworfQorCitib29sIENTU1RvU3R5
bGVNYXA6OnVzZVNWR1pvb21SdWxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVzb2x2ZXIt
PnVzZVNWR1pvb21SdWxlcygpOworfQorICAgIAorUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBDU1NU
b1N0eWxlTWFwOjpzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgQ1NTVmFsdWUq
IHZhbHVlKQoreworICAgIHJldHVybiBtX3Jlc29sdmVyLT5zdHlsZUltYWdlKHByb3BlcnR5SWQs
IHZhbHVlKTsKK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsQXR0YWNobWVudChDU1NQ
cm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgaWYg
KHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CisgICAgICAgIGxheWVyLT5zZXRBdHRhY2htZW50
KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxBdHRhY2htZW50KGxheWVyLT50eXBlKCkpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgc3dpdGNoIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgIGNhc2UgQ1NTVmFsdWVGaXhlZDoKKyAg
ICAgICAgbGF5ZXItPnNldEF0dGFjaG1lbnQoRml4ZWRCYWNrZ3JvdW5kQXR0YWNobWVudCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVTY3JvbGw6CisgICAgICAgIGxheWVyLT5z
ZXRBdHRhY2htZW50KFNjcm9sbEJhY2tncm91bmRBdHRhY2htZW50KTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NWYWx1ZUxvY2FsOgorICAgICAgICBsYXllci0+c2V0QXR0YWNobWVudChM
b2NhbEJhY2tncm91bmRBdHRhY2htZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxs
Q2xpcChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit7
CisgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CisgICAgICAgIGxheWVyLT5zZXRD
bGlwKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxDbGlwKGxheWVyLT50eXBlKCkpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgbGF5ZXItPnNldENs
aXAoKnByaW1pdGl2ZVZhbHVlKTsKK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsQ29t
cG9zaXRlKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkK
K3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKKyAgICAgICAgbGF5ZXItPnNl
dENvbXBvc2l0ZShGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ29tcG9zaXRlKGxheWVyLT50eXBlKCkp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1p
dGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAg
bGF5ZXItPnNldENvbXBvc2l0ZSgqcHJpbWl0aXZlVmFsdWUpOworfQorCit2b2lkIENTU1RvU3R5
bGVNYXA6Om1hcEZpbGxPcmlnaW4oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NT
VmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgeworICAg
ICAgICBsYXllci0+c2V0T3JpZ2luKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxPcmlnaW4obGF5ZXIt
PnR5cGUoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF2YWx1ZS0+aXNQ
cmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVl
KTsKKyAgICBsYXllci0+c2V0T3JpZ2luKCpwcmltaXRpdmVWYWx1ZSk7Cit9CisKKwordm9pZCBD
U1NUb1N0eWxlTWFwOjptYXBGaWxsSW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgRmlsbExh
eWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+aXNJbml0aWFs
VmFsdWUoKSkgeworICAgICAgICBsYXllci0+c2V0SW1hZ2UoRmlsbExheWVyOjppbml0aWFsRmls
bEltYWdlKGxheWVyLT50eXBlKCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxh
eWVyLT5zZXRJbWFnZShzdHlsZUltYWdlKHByb3BlcnR5LCB2YWx1ZSkpOworfQorCit2b2lkIENT
U1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRYKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5
ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkp
IHsKKyAgICAgICAgbGF5ZXItPnNldFJlcGVhdFgoRmlsbExheWVyOjppbml0aWFsRmlsbFJlcGVh
dFgobGF5ZXItPnR5cGUoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF2
YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKKyAgICBsYXllci0+c2V0UmVwZWF0WCgqcHJpbWl0aXZlVmFsdWUpOworfQor
Cit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRZKENTU1Byb3BlcnR5SUQsIEZpbGxM
YXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlh
bFZhbHVlKCkpIHsKKyAgICAgICAgbGF5ZXItPnNldFJlcGVhdFkoRmlsbExheWVyOjppbml0aWFs
RmlsbFJlcGVhdFkobGF5ZXItPnR5cGUoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBsYXllci0+c2V0UmVwZWF0WSgqcHJpbWl0aXZlVmFs
dWUpOworfQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxTaXplKENTU1Byb3BlcnR5SUQs
IEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgbGF5ZXItPnNldFNpemVUeXBlKFNpemVOb25l
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUNvbnRhaW4pCisgICAg
ICAgIGxheWVyLT5zZXRTaXplVHlwZShDb250YWluKTsKKyAgICBlbHNlIGlmIChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUNvdmVyKQorICAgICAgICBsYXllci0+c2V0U2l6
ZVR5cGUoQ292ZXIpOworICAgIGVsc2UKKyAgICAgICAgbGF5ZXItPnNldFNpemVUeXBlKFNpemVM
ZW5ndGgpOworCisgICAgTGVuZ3RoU2l6ZSBiID0gRmlsbExheWVyOjppbml0aWFsRmlsbFNpemVM
ZW5ndGgobGF5ZXItPnR5cGUoKSk7CisKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkg
fHwgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVDb250YWluIHx8IHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ292ZXIpIHsKKyAgICAgICAgbGF5ZXIt
PnNldFNpemVMZW5ndGgoYik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmbG9hdCB6
b29tRmFjdG9yID0gc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOworCisgICAgTGVuZ3RoIGZpcnN0
TGVuZ3RoOworICAgIExlbmd0aCBzZWNvbmRMZW5ndGg7CisKKyAgICBpZiAoUGFpciogcGFpciA9
IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogZmlyc3QgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHBhaXItPmZpcnN0
KCkpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPihwYWlyLT5zZWNvbmQoKSk7CisgICAgICAgIGZpcnN0TGVuZ3RoID0g
Zmlyc3QtPmNvbnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9uPihzdHlsZSgpLCByb290RWxlbWVu
dFN0eWxlKCksIHpvb21GYWN0b3IpOworICAgICAgICBzZWNvbmRMZW5ndGggPSBzZWNvbmQtPmNv
bnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9uPihzdHlsZSgpLCByb290RWxlbWVudFN0eWxlKCks
IHpvb21GYWN0b3IpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZpcnN0TGVuZ3RoID0gcHJpbWl0
aXZlVmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9uPihzdHlsZSgpLCByb290RWxl
bWVudFN0eWxlKCksIHpvb21GYWN0b3IpOworICAgICAgICBzZWNvbmRMZW5ndGggPSBMZW5ndGgo
KTsKKyAgICB9CisKKyAgICBpZiAoZmlyc3RMZW5ndGguaXNVbmRlZmluZWQoKSB8fCBzZWNvbmRM
ZW5ndGguaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYi5zZXRXaWR0aChm
aXJzdExlbmd0aCk7CisgICAgYi5zZXRIZWlnaHQoc2Vjb25kTGVuZ3RoKTsKKyAgICBsYXllci0+
c2V0U2l6ZUxlbmd0aChiKTsKK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0
aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sK
KyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKKyAgICAgICAgbGF5ZXItPnNldFhQ
b3NpdGlvbihGaWxsTGF5ZXI6OmluaXRpYWxGaWxsWFBvc2l0aW9uKGxheWVyLT50eXBlKCkpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgem9vbUZhY3RvciA9IHN0eWxlKCkt
PmVmZmVjdGl2ZVpvb20oKTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIExlbmd0aCBs
ZW5ndGg7CisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKQorICAgICAgICBsZW5n
dGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIHJvb3RF
bGVtZW50U3R5bGUoKSwgem9vbUZhY3Rvcik7CisgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUt
PmlzUGVyY2VudGFnZSgpKQorICAgICAgICBsZW5ndGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUt
PmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVl
LT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQorICAgICAgICBsZW5ndGggPSBM
ZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNzc0NhbGNWYWx1ZSgpLT50b0NhbGNWYWx1ZShzdHlsZSgp
LCByb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpKTsKKyAgICBlbHNlIGlmIChwcmltaXRp
dmVWYWx1ZS0+aXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSkKKyAgICAgICAgbGVuZ3RoID0g
cHJpbWl0aXZlVmFsdWUtPnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpOworICAgIGVsc2UKKyAg
ICAgICAgcmV0dXJuOworICAgIGxheWVyLT5zZXRYUG9zaXRpb24obGVuZ3RoKTsKK30KKwordm9p
ZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxMYXll
ciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZh
bHVlKCkpIHsKKyAgICAgICAgbGF5ZXItPnNldFlQb3NpdGlvbihGaWxsTGF5ZXI6OmluaXRpYWxG
aWxsWVBvc2l0aW9uKGxheWVyLT50eXBlKCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZmxvYXQgem9vbUZhY3RvciA9IHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKKworICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOworICAgIExlbmd0aCBsZW5ndGg7CisgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5pc0xlbmd0aCgpKQorICAgICAgICBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0
ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3Rvcik7
CisgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzUGVyY2VudGFnZSgpKQorICAgICAgICBs
ZW5ndGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQp
OworICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0
aExlbmd0aCgpKQorICAgICAgICBsZW5ndGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNzc0Nh
bGNWYWx1ZSgpLT50b0NhbGNWYWx1ZShzdHlsZSgpLCByb290RWxlbWVudFN0eWxlKCksIHpvb21G
YWN0b3IpKTsKKyAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNWaWV3cG9ydFBlcmNlbnRh
Z2VMZW5ndGgoKSkKKyAgICAgICAgbGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPnZpZXdwb3J0UGVy
Y2VudGFnZUxlbmd0aCgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuOworICAgIGxheWVyLT5z
ZXRZUG9zaXRpb24obGVuZ3RoKTsKK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRp
b25EZWxheShBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlm
ICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgeworICAgICAgICBhbmltYXRpb24tPnNldERlbGF5
KEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkRlbGF5KCkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBhbmltYXRpb24tPnNldERlbGF5KHBy
aW1pdGl2ZVZhbHVlLT5jb21wdXRlVGltZTxmbG9hdCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlNlY29u
ZHM+KCkpOworfQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkRpcmVjdGlvbihB
bmltYXRpb24qIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLT5pc0lu
aXRpYWxWYWx1ZSgpKSB7CisgICAgICAgIGxheWVyLT5zZXREaXJlY3Rpb24oQW5pbWF0aW9uOjpp
bml0aWFsQW5pbWF0aW9uRGlyZWN0aW9uKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKKyAgICAgICAgbGF5ZXItPnNldERpcmVj
dGlvbihBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbk5vcm1hbCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTVmFsdWVBbHRlcm5hdGU6CisgICAgICAgIGxheWVyLT5zZXREaXJlY3Rp
b24oQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGUpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENTU1ZhbHVlUmV2ZXJzZToKKyAgICAgICAgbGF5ZXItPnNldERpcmVjdGlv
bihBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvblJldmVyc2UpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENTU1ZhbHVlQWx0ZXJuYXRlUmV2ZXJzZToKKyAgICAgICAgbGF5ZXItPnNldERp
cmVjdGlvbihBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbkFsdGVybmF0ZVJldmVyc2UpOwor
ICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0
aW9uRHVyYXRpb24oQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAg
ICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRE
dXJhdGlvbihBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EdXJhdGlvbigpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgYW5pbWF0aW9uLT5z
ZXREdXJhdGlvbihwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZVRpbWU8ZmxvYXQsIENTU1ByaW1pdGl2
ZVZhbHVlOjpTZWNvbmRzPigpKTsKK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRp
b25GaWxsTW9kZShBbmltYXRpb24qIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgaWYg
KHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CisgICAgICAgIGxheWVyLT5zZXRGaWxsTW9kZShB
bmltYXRpb246OmluaXRpYWxBbmltYXRpb25GaWxsTW9kZSgpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSkgeworICAgIGNhc2UgQ1NTVmFsdWVOb25lOgorICAgICAgICBsYXllci0+
c2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVOb25lKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDU1NWYWx1ZUZvcndhcmRzOgorICAgICAgICBsYXllci0+c2V0RmlsbE1vZGUoQW5pbWF0
aW9uRmlsbE1vZGVGb3J3YXJkcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVC
YWNrd2FyZHM6CisgICAgICAgIGxheWVyLT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZUJh
Y2t3YXJkcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVCb3RoOgorICAgICAg
ICBsYXllci0+c2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVCb3RoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkl0ZXJhdGlv
bkNvdW50KEFuaW1hdGlvbiogYW5pbWF0aW9uLCBDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgaWYg
KHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0SXRlcmF0
aW9uQ291bnQoQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQorICAgICAgICBh
bmltYXRpb24tPnNldEl0ZXJhdGlvbkNvdW50KC0xKTsKKyAgICBlbHNlCisgICAgICAgIGFuaW1h
dGlvbi0+c2V0SXRlcmF0aW9uQ291bnQocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSk7
Cit9CisKK3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uTmFtZShBbmltYXRpb24qIGxh
eWVyLCBDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgp
KSB7CisgICAgICAgIGxheWVyLT5zZXROYW1lKEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbk5h
bWUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwor
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAg
ICAgIGxheWVyLT5zZXRJc05vbmVBbmltYXRpb24odHJ1ZSk7CisgICAgZWxzZQorICAgICAgICBs
YXllci0+c2V0TmFtZShwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7Cit9CisKK3Zv
aWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUGxheVN0YXRlKEFuaW1hdGlvbiogbGF5ZXIs
IENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsK
KyAgICAgICAgbGF5ZXItPnNldFBsYXlTdGF0ZShBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25Q
bGF5U3RhdGUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOworICAgIEVBbmltUGxheVN0YXRlIHBsYXlTdGF0ZSA9IChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZVBhdXNlZCkgPyBBbmltUGxheVN0YXRlUGF1c2VkIDogQW5pbVBs
YXlTdGF0ZVBsYXlpbmc7CisgICAgbGF5ZXItPnNldFBsYXlTdGF0ZShwbGF5U3RhdGUpOworfQor
Cit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblByb3BlcnR5KEFuaW1hdGlvbiogYW5p
bWF0aW9uLCBDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1
ZSgpKSB7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0QW5pbWF0aW9uTW9kZShBbmltYXRpb246OkFu
aW1hdGVBbGwpOworICAgICAgICBhbmltYXRpb24tPnNldFByb3BlcnR5KENTU1Byb3BlcnR5SW52
YWxpZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwor
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUFsbCkgeworICAg
ICAgICBhbmltYXRpb24tPnNldEFuaW1hdGlvbk1vZGUoQW5pbWF0aW9uOjpBbmltYXRlQWxsKTsK
KyAgICAgICAgYW5pbWF0aW9uLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUludmFsaWQpOworICAg
IH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25lKSB7
CisgICAgICAgIGFuaW1hdGlvbi0+c2V0QW5pbWF0aW9uTW9kZShBbmltYXRpb246OkFuaW1hdGVO
b25lKTsKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUludmFsaWQp
OworICAgIH0gZWxzZSB7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0QW5pbWF0aW9uTW9kZShBbmlt
YXRpb246OkFuaW1hdGVTaW5nbGVQcm9wZXJ0eSk7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0UHJv
cGVydHkoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkpKTsKKyAgICB9Cit9CisKK3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uVGltaW5n
RnVuY3Rpb24oQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBp
ZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1p
bmdGdW5jdGlvbihBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25UaW1pbmdGdW5jdGlvbigpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBzd2l0Y2ggKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVMaW5lYXI6Cisg
ICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKExpbmVhclRpbWluZ0Z1bmN0
aW9uOjpjcmVhdGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1
ZUVhc2U6CisgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENTU1ZhbHVlRWFzZUluOgorICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdG
dW5jdGlvbihDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoMC40MiwgMC4wLCAxLjAs
IDEuMCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVFYXNlT3V0
OgorICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihDdWJpY0JlemllclRp
bWluZ0Z1bmN0aW9uOjpjcmVhdGUoMC4wLCAwLjAsIDAuNTgsIDEuMCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVFYXNlSW5PdXQ6CisgICAgICAgICAgICBhbmlt
YXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0
ZSgwLjQyLCAwLjAsIDAuNTgsIDEuMCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ1NTVmFsdWVTdGVwU3RhcnQ6CisgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1
bmN0aW9uKFN0ZXBzVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgxLCB0cnVlKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVN0ZXBFbmQ6CisgICAgICAgICAgICBhbmlt
YXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKFN0ZXBzVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgxLCBm
YWxzZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmICh2YWx1ZS0+aXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUo
KSkgeworICAgICAgICBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUqIGN1YmljVGlt
aW5nRnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFs
dWUqPih2YWx1ZSk7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKGN1YmljVGltaW5nRnVuY3Rpb24tPngxKCksIGN1
YmljVGltaW5nRnVuY3Rpb24tPnkxKCksIGN1YmljVGltaW5nRnVuY3Rpb24tPngyKCksIGN1Ymlj
VGltaW5nRnVuY3Rpb24tPnkyKCkpKTsKKyAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc1N0ZXBzVGlt
aW5nRnVuY3Rpb25WYWx1ZSgpKSB7CisgICAgICAgIENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1
ZSogc3RlcHNUaW1pbmdGdW5jdGlvbiA9IHN0YXRpY19jYXN0PENTU1N0ZXBzVGltaW5nRnVuY3Rp
b25WYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihT
dGVwc1RpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoc3RlcHNUaW1pbmdGdW5jdGlvbi0+bnVtYmVyT2ZT
dGVwcygpLCBzdGVwc1RpbWluZ0Z1bmN0aW9uLT5zdGVwQXRTdGFydCgpKSk7CisgICAgfSBlbHNl
IGlmICh2YWx1ZS0+aXNMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlKCkpCisgICAgICAgIGFuaW1h
dGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oTGluZWFyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpKTsK
K30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5LCBDU1NWYWx1ZSogdmFsdWUsIE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKK3sKKyAg
ICAvLyBJZiB3ZSdyZSBub3QgYSB2YWx1ZSBsaXN0LCB0aGVuIHdlIGFyZSAibm9uZSIgYW5kIGRv
bid0IG5lZWQgdG8gYWx0ZXIgdGhlIGVtcHR5IGltYWdlIGF0IGFsbC4KKyAgICBpZiAoIXZhbHVl
IHx8ICF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gUmV0
cmlldmUgdGhlIGJvcmRlciBpbWFnZSB2YWx1ZS4KKyAgICBDU1NWYWx1ZUxpc3QqIGJvcmRlcklt
YWdlID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworCisgICAgLy8gU2V0IHRo
ZSBpbWFnZSAodGhpcyBraWNrcyBvZmYgdGhlIGxvYWQpLgorICAgIENTU1Byb3BlcnR5SUQgaW1h
Z2VQcm9wZXJ0eTsKKyAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJ
bWFnZSkKKyAgICAgICAgaW1hZ2VQcm9wZXJ0eSA9IENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTb3Vy
Y2U7CisgICAgZWxzZSBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1h
Z2UpCisgICAgICAgIGltYWdlUHJvcGVydHkgPSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFn
ZVNvdXJjZTsKKyAgICBlbHNlCisgICAgICAgIGltYWdlUHJvcGVydHkgPSBwcm9wZXJ0eTsKKwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDAgOyBpIDwgYm9yZGVySW1hZ2UtPmxlbmd0aCgpIDsgKytp
KSB7CisgICAgICAgIENTU1ZhbHVlKiBjdXJyZW50ID0gYm9yZGVySW1hZ2UtPml0ZW0oaSk7CisK
KyAgICAgICAgaWYgKGN1cnJlbnQtPmlzSW1hZ2VWYWx1ZSgpIHx8IGN1cnJlbnQtPmlzSW1hZ2VH
ZW5lcmF0b3JWYWx1ZSgpCisjaWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCisgICAgICAgICAgICB8
fCBjdXJyZW50LT5pc0ltYWdlU2V0VmFsdWUoKQorI2VuZGlmCisgICAgICAgICAgICApCisgICAg
ICAgICAgICBpbWFnZS5zZXRJbWFnZShzdHlsZUltYWdlKGltYWdlUHJvcGVydHksIGN1cnJlbnQp
KTsKKyAgICAgICAgZWxzZSBpZiAoY3VycmVudC0+aXNCb3JkZXJJbWFnZVNsaWNlVmFsdWUoKSkK
KyAgICAgICAgICAgIG1hcE5pbmVQaWVjZUltYWdlU2xpY2UoY3VycmVudCwgaW1hZ2UpOworICAg
ICAgICBlbHNlIGlmIChjdXJyZW50LT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAgICAgICBDU1NW
YWx1ZUxpc3QqIHNsYXNoTGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KGN1cnJlbnQp
OworICAgICAgICAgICAgLy8gTWFwIGluIHRoZSBpbWFnZSBzbGljZXMuCisgICAgICAgICAgICBp
ZiAoc2xhc2hMaXN0LT5pdGVtKDApICYmIHNsYXNoTGlzdC0+aXRlbSgwKS0+aXNCb3JkZXJJbWFn
ZVNsaWNlVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBtYXBOaW5lUGllY2VJbWFnZVNsaWNlKHNs
YXNoTGlzdC0+aXRlbSgwKSwgaW1hZ2UpOworCisgICAgICAgICAgICAvLyBNYXAgaW4gdGhlIGJv
cmRlciBzbGljZXMuCisgICAgICAgICAgICBpZiAoc2xhc2hMaXN0LT5pdGVtKDEpKQorICAgICAg
ICAgICAgICAgIGltYWdlLnNldEJvcmRlclNsaWNlcyhtYXBOaW5lUGllY2VJbWFnZVF1YWQoc2xh
c2hMaXN0LT5pdGVtKDEpKSk7CisKKyAgICAgICAgICAgIC8vIE1hcCBpbiB0aGUgb3V0c2V0Lgor
ICAgICAgICAgICAgaWYgKHNsYXNoTGlzdC0+aXRlbSgyKSkKKyAgICAgICAgICAgICAgICBpbWFn
ZS5zZXRPdXRzZXQobWFwTmluZVBpZWNlSW1hZ2VRdWFkKHNsYXNoTGlzdC0+aXRlbSgyKSkpOwor
ICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnQtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAgICAg
ICAgICAgLy8gU2V0IHRoZSBhcHByb3ByaWF0ZSBydWxlcyBmb3Igc3RyZXRjaC9yb3VuZC9yZXBl
YXQgb2YgdGhlIHNsaWNlcy4KKyAgICAgICAgICAgIG1hcE5pbmVQaWVjZUltYWdlUmVwZWF0KGN1
cnJlbnQsIGltYWdlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChwcm9wZXJ0eSA9PSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlKSB7CisgICAgICAgIC8vIFdlIGhhdmUgdG8gcHJl
c2VydmUgdGhlIGxlZ2FjeSBiZWhhdmlvciBvZiAtd2Via2l0LWJvcmRlci1pbWFnZSBhbmQgbWFr
ZSB0aGUgYm9yZGVyIHNsaWNlcworICAgICAgICAvLyBhbHNvIHNldCB0aGUgYm9yZGVyIHdpZHRo
cy4gV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBwZXJjZW50YWdlcywgc2luY2Ugd2UgZG9u
J3QgZXZlbiBzdXBwb3J0CisgICAgICAgIC8vIHRob3NlIG9uIHJlYWwgYm9yZGVycyB5ZXQuCisg
ICAgICAgIGlmIChpbWFnZS5ib3JkZXJTbGljZXMoKS50b3AoKS5pc0ZpeGVkKCkpCisgICAgICAg
ICAgICBzdHlsZSgpLT5zZXRCb3JkZXJUb3BXaWR0aChpbWFnZS5ib3JkZXJTbGljZXMoKS50b3Ao
KS52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGltYWdlLmJvcmRlclNsaWNlcygpLnJpZ2h0KCkuaXNG
aXhlZCgpKQorICAgICAgICAgICAgc3R5bGUoKS0+c2V0Qm9yZGVyUmlnaHRXaWR0aChpbWFnZS5i
b3JkZXJTbGljZXMoKS5yaWdodCgpLnZhbHVlKCkpOworICAgICAgICBpZiAoaW1hZ2UuYm9yZGVy
U2xpY2VzKCkuYm90dG9tKCkuaXNGaXhlZCgpKQorICAgICAgICAgICAgc3R5bGUoKS0+c2V0Qm9y
ZGVyQm90dG9tV2lkdGgoaW1hZ2UuYm9yZGVyU2xpY2VzKCkuYm90dG9tKCkudmFsdWUoKSk7Cisg
ICAgICAgIGlmIChpbWFnZS5ib3JkZXJTbGljZXMoKS5sZWZ0KCkuaXNGaXhlZCgpKQorICAgICAg
ICAgICAgc3R5bGUoKS0+c2V0Qm9yZGVyTGVmdFdpZHRoKGltYWdlLmJvcmRlclNsaWNlcygpLmxl
ZnQoKS52YWx1ZSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwTmluZVBp
ZWNlSW1hZ2VTbGljZShDU1NWYWx1ZSogdmFsdWUsIE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKK3sK
KyAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS0+aXNCb3JkZXJJbWFnZVNsaWNlVmFsdWUoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gUmV0cmlldmUgdGhlIGJvcmRlciBpbWFnZSB2YWx1ZS4K
KyAgICBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUqIGJvcmRlckltYWdlU2xpY2UgPSBzdGF0aWNf
Y2FzdDxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUqPih2YWx1ZSk7CisKKyAgICAvLyBTZXQgdXAg
YSBsZW5ndGggYm94IHRvIHJlcHJlc2VudCBvdXIgaW1hZ2Ugc2xpY2VzLgorICAgIExlbmd0aEJv
eCBib3g7CisgICAgUXVhZCogc2xpY2VzID0gYm9yZGVySW1hZ2VTbGljZS0+c2xpY2VzKCk7Cisg
ICAgaWYgKHNsaWNlcy0+dG9wKCktPmlzUGVyY2VudGFnZSgpKQorICAgICAgICBib3gubV90b3Ag
PSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAg
ZWxzZQorICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgaWYgKHNsaWNl
cy0+Ym90dG9tKCktPmlzUGVyY2VudGFnZSgpKQorICAgICAgICBib3gubV9ib3R0b20gPSBMZW5n
dGgoc2xpY2VzLT5ib3R0b20oKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgZWxz
ZQorICAgICAgICBib3gubV9ib3R0b20gPSBMZW5ndGgoKGludClzbGljZXMtPmJvdHRvbSgpLT5n
ZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOworICAg
IGlmIChzbGljZXMtPmxlZnQoKS0+aXNQZXJjZW50YWdlKCkpCisgICAgICAgIGJveC5tX2xlZnQg
PSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAg
IGVsc2UKKyAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgaWYgKHNs
aWNlcy0+cmlnaHQoKS0+aXNQZXJjZW50YWdlKCkpCisgICAgICAgIGJveC5tX3JpZ2h0ID0gTGVu
Z3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgZWxz
ZQorICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZh
bHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOworICAgIGltYWdlLnNl
dEltYWdlU2xpY2VzKGJveCk7CisKKyAgICAvLyBTZXQgb3VyIGZpbGwgbW9kZS4KKyAgICBpbWFn
ZS5zZXRGaWxsKGJvcmRlckltYWdlU2xpY2UtPm1fZmlsbCk7Cit9CisKK0xlbmd0aEJveCBDU1NU
b1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVF1YWQoQ1NTVmFsdWUqIHZhbHVlKQoreworICAg
IGlmICghdmFsdWUgfHwgIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVy
biBMZW5ndGhCb3goKTsKKworICAgIC8vIEdldCBvdXIgem9vbSB2YWx1ZS4KKyAgICBmbG9hdCB6
b29tID0gdXNlU1ZHWm9vbVJ1bGVzKCkgPyAxLjBmIDogc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgp
OworCisgICAgLy8gUmV0cmlldmUgdGhlIHByaW1pdGl2ZSB2YWx1ZS4KKyAgICBDU1NQcmltaXRp
dmVWYWx1ZSogYm9yZGVyV2lkdGhzID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWx1ZSk7CisKKyAgICAvLyBTZXQgdXAgYSBsZW5ndGggYm94IHRvIHJlcHJlc2VudCBvdXIgaW1h
Z2Ugc2xpY2VzLgorICAgIExlbmd0aEJveCBib3g7IC8vIERlZmF1bHRzIHRvICdhdXRvJyBzbyB3
ZSBkb24ndCBoYXZlIHRvIGhhbmRsZSB0aGF0IGV4cGxpY2l0bHkgYmVsb3cuCisgICAgUXVhZCog
c2xpY2VzID0gYm9yZGVyV2lkdGhzLT5nZXRRdWFkVmFsdWUoKTsKKyAgICBpZiAoc2xpY2VzLT50
b3AoKS0+aXNOdW1iZXIoKSkKKyAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9w
KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKKyAgICBlbHNlIGlmIChzbGljZXMtPnRvcCgp
LT5pc1BlcmNlbnRhZ2UoKSkKKyAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9w
KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBl
cmNlbnQpOworICAgIGVsc2UgaWYgKHNsaWNlcy0+dG9wKCktPmdldElkZW50KCkgIT0gQ1NTVmFs
dWVBdXRvKQorICAgICAgICBib3gubV90b3AgPSBzbGljZXMtPnRvcCgpLT5jb21wdXRlTGVuZ3Ro
PExlbmd0aD4oc3R5bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tKTsKKworICAgIGlmIChz
bGljZXMtPnJpZ2h0KCktPmlzTnVtYmVyKCkpCisgICAgICAgIGJveC5tX3JpZ2h0ID0gTGVuZ3Ro
KHNsaWNlcy0+cmlnaHQoKS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgIGVsc2UgaWYg
KHNsaWNlcy0+cmlnaHQoKS0+aXNQZXJjZW50YWdlKCkpCisgICAgICAgIGJveC5tX3JpZ2h0ID0g
TGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CisgICAgZWxzZSBpZiAoc2xpY2VzLT5yaWdodCgp
LT5nZXRJZGVudCgpICE9IENTU1ZhbHVlQXV0bykKKyAgICAgICAgYm94Lm1fcmlnaHQgPSBzbGlj
ZXMtPnJpZ2h0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZSgpLCByb290RWxlbWVudFN0
eWxlKCksIHpvb20pOworCisgICAgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzTnVtYmVyKCkpCisg
ICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXRJbnRWYWx1
ZSgpLCBSZWxhdGl2ZSk7CisgICAgZWxzZSBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJjZW50
YWdlKCkpCisgICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5n
ZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpLCBQZXJjZW50
KTsKKyAgICBlbHNlIGlmIChzbGljZXMtPmJvdHRvbSgpLT5nZXRJZGVudCgpICE9IENTU1ZhbHVl
QXV0bykKKyAgICAgICAgYm94Lm1fYm90dG9tID0gc2xpY2VzLT5ib3R0b20oKS0+Y29tcHV0ZUxl
bmd0aDxMZW5ndGg+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9vbSk7CisKKyAgICBp
ZiAoc2xpY2VzLT5sZWZ0KCktPmlzTnVtYmVyKCkpCisgICAgICAgIGJveC5tX2xlZnQgPSBMZW5n
dGgoc2xpY2VzLT5sZWZ0KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKKyAgICBlbHNlIGlm
IChzbGljZXMtPmxlZnQoKS0+aXNQZXJjZW50YWdlKCkpCisgICAgICAgIGJveC5tX2xlZnQgPSBM
ZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5n
ZXRJZGVudCgpICE9IENTU1ZhbHVlQXV0bykKKyAgICAgICAgYm94Lm1fbGVmdCA9IHNsaWNlcy0+
bGVmdCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgp
LCB6b29tKTsKKworICAgIHJldHVybiBib3g7Cit9CisKK3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFw
TmluZVBpZWNlSW1hZ2VSZXBlYXQoQ1NTVmFsdWUqIHZhbHVlLCBOaW5lUGllY2VJbWFnZSYgaW1h
Z2UpCit7CisgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgUGFpciogcGFpciA9
IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKTsKKyAgICBpZiAoIXBhaXIgfHwgIXBhaXIt
PmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnQg
Zmlyc3RJZGVudGlmaWVyID0gcGFpci0+Zmlyc3QoKS0+Z2V0SWRlbnQoKTsKKyAgICBpbnQgc2Vj
b25kSWRlbnRpZmllciA9IHBhaXItPnNlY29uZCgpLT5nZXRJZGVudCgpOworCisgICAgRU5pbmVQ
aWVjZUltYWdlUnVsZSBob3Jpem9udGFsUnVsZTsKKyAgICBzd2l0Y2ggKGZpcnN0SWRlbnRpZmll
cikgeworICAgIGNhc2UgQ1NTVmFsdWVTdHJldGNoOgorICAgICAgICBob3Jpem9udGFsUnVsZSA9
IFN0cmV0Y2hJbWFnZVJ1bGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVSb3Vu
ZDoKKyAgICAgICAgaG9yaXpvbnRhbFJ1bGUgPSBSb3VuZEltYWdlUnVsZTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NWYWx1ZVNwYWNlOgorICAgICAgICBob3Jpem9udGFsUnVsZSA9IFNw
YWNlSW1hZ2VSdWxlOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OiAvLyBDU1NWYWx1ZVJl
cGVhdAorICAgICAgICBob3Jpem9udGFsUnVsZSA9IFJlcGVhdEltYWdlUnVsZTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGltYWdlLnNldEhvcml6b250YWxSdWxlKGhvcml6b250YWxSdWxl
KTsKKworICAgIEVOaW5lUGllY2VJbWFnZVJ1bGUgdmVydGljYWxSdWxlOworICAgIHN3aXRjaCAo
c2Vjb25kSWRlbnRpZmllcikgeworICAgIGNhc2UgQ1NTVmFsdWVTdHJldGNoOgorICAgICAgICB2
ZXJ0aWNhbFJ1bGUgPSBTdHJldGNoSW1hZ2VSdWxlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1ZhbHVlUm91bmQ6CisgICAgICAgIHZlcnRpY2FsUnVsZSA9IFJvdW5kSW1hZ2VSdWxlOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlU3BhY2U6CisgICAgICAgIHZlcnRpY2Fs
UnVsZSA9IFNwYWNlSW1hZ2VSdWxlOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OiAvLyBD
U1NWYWx1ZVJlcGVhdAorICAgICAgICB2ZXJ0aWNhbFJ1bGUgPSBSZXBlYXRJbWFnZVJ1bGU7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpbWFnZS5zZXRWZXJ0aWNhbFJ1bGUodmVydGljYWxS
dWxlKTsKK30KKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxl
TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhl
MGZjOTUzZDA0YzQ3MTViZGIyOWFhZDZkM2I3MzdhMWNjMWU4ODIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5oCkBAIC0wLDAgKzEsODggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBDU1NUb1N0eWxl
TWFwX2gKKyNkZWZpbmUgQ1NTVG9TdHlsZU1hcF9oCisKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5h
bWVzLmgiCisjaW5jbHVkZSAiTGVuZ3RoQm94LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgRmlsbExheWVyOworY2xhc3MgQ1NTVmFsdWU7CitjbGFzcyBBbmltYXRpb247CitjbGFz
cyBTdHlsZUltYWdlOworY2xhc3MgU3R5bGVSZXNvbHZlcjsKK2NsYXNzIE5pbmVQaWVjZUltYWdl
OworCitjbGFzcyBDU1NUb1N0eWxlTWFwIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NU
b1N0eWxlTWFwKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHVibGljOgorICAg
IENTU1RvU3R5bGVNYXAoU3R5bGVSZXNvbHZlciogcmVzb2x2ZXIpIDogbV9yZXNvbHZlcihyZXNv
bHZlcikgeyB9CisKKyAgICB2b2lkIG1hcEZpbGxBdHRhY2htZW50KENTU1Byb3BlcnR5SUQsIEZp
bGxMYXllciosIENTU1ZhbHVlKik7CisgICAgdm9pZCBtYXBGaWxsQ2xpcChDU1NQcm9wZXJ0eUlE
LCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOworICAgIHZvaWQgbWFwRmlsbENvbXBvc2l0ZShDU1NQ
cm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOworICAgIHZvaWQgbWFwRmlsbE9yaWdp
bihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOworICAgIHZvaWQgbWFwRmls
bEltYWdlKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7CisgICAgdm9pZCBt
YXBGaWxsUmVwZWF0WChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOworICAg
IHZvaWQgbWFwRmlsbFJlcGVhdFkoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUq
KTsKKyAgICB2b2lkIG1hcEZpbGxTaXplKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1Zh
bHVlKik7CisgICAgdm9pZCBtYXBGaWxsWFBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxMYXll
ciosIENTU1ZhbHVlKik7CisgICAgdm9pZCBtYXBGaWxsWVBvc2l0aW9uKENTU1Byb3BlcnR5SUQs
IEZpbGxMYXllciosIENTU1ZhbHVlKik7CisKKyAgICB2b2lkIG1hcEFuaW1hdGlvbkRlbGF5KEFu
aW1hdGlvbiosIENTU1ZhbHVlKik7CisgICAgdm9pZCBtYXBBbmltYXRpb25EaXJlY3Rpb24oQW5p
bWF0aW9uKiwgQ1NTVmFsdWUqKTsKKyAgICB2b2lkIG1hcEFuaW1hdGlvbkR1cmF0aW9uKEFuaW1h
dGlvbiosIENTU1ZhbHVlKik7CisgICAgdm9pZCBtYXBBbmltYXRpb25GaWxsTW9kZShBbmltYXRp
b24qLCBDU1NWYWx1ZSopOworICAgIHZvaWQgbWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoQW5p
bWF0aW9uKiwgQ1NTVmFsdWUqKTsKKyAgICB2b2lkIG1hcEFuaW1hdGlvbk5hbWUoQW5pbWF0aW9u
KiwgQ1NTVmFsdWUqKTsKKyAgICB2b2lkIG1hcEFuaW1hdGlvblBsYXlTdGF0ZShBbmltYXRpb24q
LCBDU1NWYWx1ZSopOworICAgIHZvaWQgbWFwQW5pbWF0aW9uUHJvcGVydHkoQW5pbWF0aW9uKiwg
Q1NTVmFsdWUqKTsKKyAgICB2b2lkIG1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKEFuaW1hdGlv
biosIENTU1ZhbHVlKik7CisKKyAgICB2b2lkIG1hcE5pbmVQaWVjZUltYWdlKENTU1Byb3BlcnR5
SUQsIENTU1ZhbHVlKiwgTmluZVBpZWNlSW1hZ2UmKTsKKyAgICB2b2lkIG1hcE5pbmVQaWVjZUlt
YWdlU2xpY2UoQ1NTVmFsdWUqLCBOaW5lUGllY2VJbWFnZSYpOworICAgIExlbmd0aEJveCBtYXBO
aW5lUGllY2VJbWFnZVF1YWQoQ1NTVmFsdWUqKTsKKyAgICB2b2lkIG1hcE5pbmVQaWVjZUltYWdl
UmVwZWF0KENTU1ZhbHVlKiwgTmluZVBpZWNlSW1hZ2UmKTsKKworcHJpdmF0ZToKKyAgICAvLyBG
SVhNRTogVGhlc2UgYWNjZXNzb3JzIHNob3VsZCBiZSByZXBsYWNlZCBieSBhIFJlc29sdmVTdGF0
ZSBvYmplY3QKKyAgICAvLyBzaW1pbGFyIHRvIGhvdyBQYWludEluZm8vTGF5b3V0U3RhdGUgY2Fj
aGUgdmFsdWVzIG5lZWRlZCBmb3IKKyAgICAvLyB0aGUgY3VycmVudCBwYWludC9sYXlvdXQuCisg
ICAgUmVuZGVyU3R5bGUqIHN0eWxlKCkgY29uc3Q7CisgICAgUmVuZGVyU3R5bGUqIHJvb3RFbGVt
ZW50U3R5bGUoKSBjb25zdDsKKyAgICBib29sIHVzZVNWR1pvb21SdWxlcygpIGNvbnN0OworCisg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHBhcnQgb2Ygc29tZSBzb3J0IG9mIFN0eWxlSW1h
Z2VDYWNoZSBvYmplY3Qgd2hpY2gKKyAgICAvLyBpcyBoZWxkIGJ5IHRoZSBTdHlsZVJlc29sdmVy
LCBhbmQgbGlrZWx5IHByb3ZpZGVkIHRvIHRoaXMgb2JqZWN0CisgICAgLy8gZHVyaW5nIHRoZSBy
ZXNvbHZlLgorICAgIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gc3R5bGVJbWFnZShDU1NQcm9wZXJ0
eUlELCBDU1NWYWx1ZSopOworCisgICAgU3R5bGVSZXNvbHZlciogbV9yZXNvbHZlcjsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCmluZGV4IDMwNGRiN2Nk
ZjcxYWZkNWM1OTRlMTRlZmM2ZjljZDU2NTVlZTdjZmIuLjY4YTFjMjhlOGQyYjZlZmYxZDg2YzM4
OTI5ODc5MDg0NzVhYzU0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBp
bmdzLmgiCisjaW5jbHVkZSAiQ1NTVG9TdHlsZU1hcC5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlz
dC5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAt
NDg0LDcgKzQ4NSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULAogICAgICAgICAgIHZvaWQgKEZp
bGxMYXllcjo6KnNldEZ1bmN0aW9uKSh0eXBlbmFtZSBGaWxsTGF5ZXJBY2Nlc3NvclR5cGVzPFQ+
OjpTZXR0ZXIpLAogICAgICAgICAgIHZvaWQgKEZpbGxMYXllcjo6KmNsZWFyRnVuY3Rpb24pKCks
CiAgICAgICAgICAgdHlwZW5hbWUgRmlsbExheWVyQWNjZXNzb3JUeXBlczxUPjo6R2V0dGVyICgq
aW5pdGlhbEZ1bmN0aW9uKShFRmlsbExheWVyVHlwZSksCi0gICAgICAgICAgdm9pZCAoU3R5bGVS
ZXNvbHZlcjo6Km1hcEZpbGxGdW5jdGlvbikoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NT
VmFsdWUqKT4KKyAgICAgICAgICB2b2lkIChDU1NUb1N0eWxlTWFwOjoqbWFwRmlsbEZ1bmN0aW9u
KShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopPgogY2xhc3MgQXBwbHlQcm9w
ZXJ0eUZpbGxMYXllciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFs
dWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKQEAgLTUzNiwxMiArNTM3LDEyIEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgY3VyckNoaWxkID0gbmV3IEZpbGxMYXllcihmaWxs
TGF5ZXJUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgcHJldkNoaWxkLT5zZXROZXh0KGN1cnJD
aGlsZCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIChzdHlsZVJlc29sdmVy
LT4qbWFwRmlsbEZ1bmN0aW9uKShwcm9wZXJ0eUlkLCBjdXJyQ2hpbGQsIHZhbHVlTGlzdC0+aXRl
bVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7CisgICAgICAgICAgICAgICAgKHN0eWxlUmVzb2x2ZXIt
PnN0eWxlTWFwKCktPiptYXBGaWxsRnVuY3Rpb24pKHByb3BlcnR5SWQsIGN1cnJDaGlsZCwgdmFs
dWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKICAgICAgICAgICAgICAgICBwcmV2
Q2hpbGQgPSBjdXJyQ2hpbGQ7CiAgICAgICAgICAgICAgICAgY3VyckNoaWxkID0gY3VyckNoaWxk
LT5uZXh0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAo
c3R5bGVSZXNvbHZlci0+Km1hcEZpbGxGdW5jdGlvbikocHJvcGVydHlJZCwgY3VyckNoaWxkLCB2
YWx1ZSk7CisgICAgICAgICAgICAoc3R5bGVSZXNvbHZlci0+c3R5bGVNYXAoKS0+Km1hcEZpbGxG
dW5jdGlvbikocHJvcGVydHlJZCwgY3VyckNoaWxkLCB2YWx1ZSk7CiAgICAgICAgICAgICBjdXJy
Q2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsKICAgICAgICAgfQogICAgICAgICB3aGlsZSAoY3Vy
ckNoaWxkKSB7CkBAIC04NzQsNyArODc1LDcgQEAgcHVibGljOgogICAgICAgICBOaW5lUGllY2VJ
bWFnZSBpbWFnZTsKICAgICAgICAgaWYgKGJvcmRlckltYWdlVHlwZSA9PSBNYXNrKQogICAgICAg
ICAgICAgaW1hZ2Uuc2V0TWFza0RlZmF1bHRzKCk7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXItPm1h
cE5pbmVQaWVjZUltYWdlKHByb3BlcnR5LCB2YWx1ZSwgaW1hZ2UpOworICAgICAgICBzdHlsZVJl
c29sdmVyLT5zdHlsZU1hcCgpLT5tYXBOaW5lUGllY2VJbWFnZShwcm9wZXJ0eSwgdmFsdWUsIGlt
YWdlKTsKICAgICAgICAgKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlvbiko
aW1hZ2UpOwogICAgIH0KIApAQCAtOTQxLDE2ICs5NDIsMTYgQEAgcHVibGljOgogICAgICAgICBO
aW5lUGllY2VJbWFnZSBpbWFnZShnZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpKSk7CiAg
ICAgICAgIHN3aXRjaCAobW9kaWZpZXIpIHsKICAgICAgICAgY2FzZSBPdXRzZXQ6Ci0gICAgICAg
ICAgICBpbWFnZS5zZXRPdXRzZXQoc3R5bGVSZXNvbHZlci0+bWFwTmluZVBpZWNlSW1hZ2VRdWFk
KHZhbHVlKSk7CisgICAgICAgICAgICBpbWFnZS5zZXRPdXRzZXQoc3R5bGVSZXNvbHZlci0+c3R5
bGVNYXAoKS0+bWFwTmluZVBpZWNlSW1hZ2VRdWFkKHZhbHVlKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBSZXBlYXQ6Ci0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5tYXBO
aW5lUGllY2VJbWFnZVJlcGVhdCh2YWx1ZSwgaW1hZ2UpOworICAgICAgICAgICAgc3R5bGVSZXNv
bHZlci0+c3R5bGVNYXAoKS0+bWFwTmluZVBpZWNlSW1hZ2VSZXBlYXQodmFsdWUsIGltYWdlKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNsaWNlOgotICAgICAgICAgICAgc3R5
bGVSZXNvbHZlci0+bWFwTmluZVBpZWNlSW1hZ2VTbGljZSh2YWx1ZSwgaW1hZ2UpOworICAgICAg
ICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGVNYXAoKS0+bWFwTmluZVBpZWNlSW1hZ2VTbGljZSh2
YWx1ZSwgaW1hZ2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2lkdGg6Ci0g
ICAgICAgICAgICBpbWFnZS5zZXRCb3JkZXJTbGljZXMoc3R5bGVSZXNvbHZlci0+bWFwTmluZVBp
ZWNlSW1hZ2VRdWFkKHZhbHVlKSk7CisgICAgICAgICAgICBpbWFnZS5zZXRCb3JkZXJTbGljZXMo
c3R5bGVSZXNvbHZlci0+c3R5bGVNYXAoKS0+bWFwTmluZVBpZWNlSW1hZ2VRdWFkKHZhbHVlKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBzZXRWYWx1ZShzdHlsZVJl
c29sdmVyLT5zdHlsZSgpLCBpbWFnZSk7CkBAIC0xNDI1LDcgKzE0MjYsNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwKICAgICAgICAgICBib29sIChBbmltYXRpb246Oip0ZXN0RnVuY3Rpb24pKCkg
Y29uc3QsCiAgICAgICAgICAgdm9pZCAoQW5pbWF0aW9uOjoqY2xlYXJGdW5jdGlvbikoKSwKICAg
ICAgICAgICBUICgqaW5pdGlhbEZ1bmN0aW9uKSgpLAotICAgICAgICAgIHZvaWQgKFN0eWxlUmVz
b2x2ZXI6OiptYXBGdW5jdGlvbikoQW5pbWF0aW9uKiwgQ1NTVmFsdWUqKSwKKyAgICAgICAgICB2
b2lkIChDU1NUb1N0eWxlTWFwOjoqbWFwRnVuY3Rpb24pKEFuaW1hdGlvbiosIENTU1ZhbHVlKiks
CiAgICAgICAgICAgQW5pbWF0aW9uTGlzdCogKFJlbmRlclN0eWxlOjoqYW5pbWF0aW9uR2V0dGVy
RnVuY3Rpb24pKCksCiAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogKFJlbmRlclN0eWxl
OjoqaW1tdXRhYmxlQW5pbWF0aW9uR2V0dGVyRnVuY3Rpb24pKCkgY29uc3Q+CiBjbGFzcyBBcHBs
eVByb3BlcnR5QW5pbWF0aW9uIHsKQEAgLTE0MzUsNyArMTQzNiw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgYm9vbCB0ZXN0KGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uKSB7IHJldHVybiAoYW5p
bWF0aW9uLT4qdGVzdEZ1bmN0aW9uKSgpOyB9CiAgICAgc3RhdGljIHZvaWQgY2xlYXIoQW5pbWF0
aW9uKiBhbmltYXRpb24pIHsgKGFuaW1hdGlvbi0+KmNsZWFyRnVuY3Rpb24pKCk7IH0KICAgICBz
dGF0aWMgVCBpbml0aWFsKCkgeyByZXR1cm4gKCppbml0aWFsRnVuY3Rpb24pKCk7IH0KLSAgICBz
dGF0aWMgdm9pZCBtYXAoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQW5pbWF0aW9uKiBh
bmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkgeyAoc3R5bGVSZXNvbHZlci0+Km1hcEZ1bmN0aW9u
KShhbmltYXRpb24sIHZhbHVlKTsgfQorICAgIHN0YXRpYyB2b2lkIG1hcChTdHlsZVJlc29sdmVy
KiBzdHlsZVJlc29sdmVyLCBBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKSB7
IChzdHlsZVJlc29sdmVyLT5zdHlsZU1hcCgpLT4qbWFwRnVuY3Rpb24pKGFuaW1hdGlvbiwgdmFs
dWUpOyB9CiAgICAgc3RhdGljIEFuaW1hdGlvbkxpc3QqIGFjY2Vzc0FuaW1hdGlvbnMoUmVuZGVy
U3R5bGUqIHN0eWxlKSB7IHJldHVybiAoc3R5bGUtPiphbmltYXRpb25HZXR0ZXJGdW5jdGlvbiko
KTsgfQogICAgIHN0YXRpYyBjb25zdCBBbmltYXRpb25MaXN0KiBhbmltYXRpb25zKFJlbmRlclN0
eWxlKiBzdHlsZSkgeyByZXR1cm4gKHN0eWxlLT4qaW1tdXRhYmxlQW5pbWF0aW9uR2V0dGVyRnVu
Y3Rpb24pKCk7IH0KIApAQCAtMTgyMiwxOCArMTgyMywxOCBAQCBTdHlsZUJ1aWxkZXI6OlN0eWxl
QnVpbGRlcigpCiAgICAgICAgIG1fcHJvcGVydHlNYXBbaV0gPSBQcm9wZXJ0eUhhbmRsZXIoKTsK
IAogICAgIC8vIFBsZWFzZSBrZWVwIENTUyBwcm9wZXJ0eSBsaXN0IGluIGFscGhhYmV0aWNhbCBv
cmRlci4KLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNo
bWVudCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5
QmFja2dyb3VuZEF0dGFjaG1lbnQsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6
YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAm
RmlsbExheWVyOjppc0F0dGFjaG1lbnRTZXQsICZGaWxsTGF5ZXI6OmF0dGFjaG1lbnQsICZGaWxs
TGF5ZXI6OnNldEF0dGFjaG1lbnQsICZGaWxsTGF5ZXI6OmNsZWFyQXR0YWNobWVudCwgJkZpbGxM
YXllcjo6aW5pdGlhbEZpbGxBdHRhY2htZW50LCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbEF0dGFj
aG1lbnQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDbGlwLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQm94LCBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDbGlwLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6
OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywg
JkZpbGxMYXllcjo6aXNDbGlwU2V0LCAmRmlsbExheWVyOjpjbGlwLCAmRmlsbExheWVyOjpzZXRD
bGlwLCAmRmlsbExheWVyOjpjbGVhckNsaXAsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ2xpcCwg
JlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxDbGlwPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgQXBwbHlQcm9w
ZXJ0eUZpbGxMYXllcjxFRmlsbEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFj
aG1lbnQsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3Vu
ZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0F0
dGFjaG1lbnRTZXQsICZGaWxsTGF5ZXI6OmF0dGFjaG1lbnQsICZGaWxsTGF5ZXI6OnNldEF0dGFj
aG1lbnQsICZGaWxsTGF5ZXI6OmNsZWFyQXR0YWNobWVudCwgJkZpbGxMYXllcjo6aW5pdGlhbEZp
bGxBdHRhY2htZW50LCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbEF0dGFjaG1lbnQ+OjpjcmVhdGVI
YW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRD
bGlwLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQm94LCBDU1NQcm9wZXJ0eUJhY2tncm91
bmRDbGlwLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91
bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXND
bGlwU2V0LCAmRmlsbExheWVyOjpjbGlwLCAmRmlsbExheWVyOjpzZXRDbGlwLCAmRmlsbExheWVy
OjpjbGVhckNsaXAsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ2xpcCwgJkNTU1RvU3R5bGVNYXA6
Om1hcEZpbGxDbGlwPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIEFwcGx5UHJvcGVydHlDb2xvcjxOb0luaGVyaXRG
cm9tUGFyZW50LCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRDb2xvciwgJlJlbmRlclN0eWxlOjpz
ZXRCYWNrZ3JvdW5kQ29sb3IsICZSZW5kZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtCYWNrZ3JvdW5k
Q29sb3IsICZSZW5kZXJTdHlsZTo6aW52YWxpZENvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIEFwcGx5UHJv
cGVydHlGaWxsTGF5ZXI8U3R5bGVJbWFnZSosIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBC
YWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMs
ICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNJbWFnZVNldCwg
JkZpbGxMYXllcjo6aW1hZ2UsICZGaWxsTGF5ZXI6OnNldEltYWdlLCAmRmlsbExheWVyOjpjbGVh
ckltYWdlLCAmRmlsbExheWVyOjppbml0aWFsRmlsbEltYWdlLCAmU3R5bGVSZXNvbHZlcjo6bWFw
RmlsbEltYWdlPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQm94
LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5k
ZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5k
TGF5ZXJzLCAmRmlsbExheWVyOjppc09yaWdpblNldCwgJkZpbGxMYXllcjo6b3JpZ2luLCAmRmls
bExheWVyOjpzZXRPcmlnaW4sICZGaWxsTGF5ZXI6OmNsZWFyT3JpZ2luLCAmRmlsbExheWVyOjpp
bml0aWFsRmlsbE9yaWdpbiwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxPcmlnaW4+OjpjcmVhdGVI
YW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRJ
bWFnZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxTdHlsZUltYWdlKiwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kSW1hZ2UsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFj
a2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVy
Ojppc0ltYWdlU2V0LCAmRmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2UsICZG
aWxsTGF5ZXI6OmNsZWFySW1hZ2UsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsSW1hZ2UsICZDU1NU
b1N0eWxlTWFwOjptYXBGaWxsSW1hZ2U+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIEFwcGx5UHJvcGVydHlGaWxs
TGF5ZXI8RUZpbGxCb3gsIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwgQmFja2dyb3VuZEZp
bGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5
bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzT3JpZ2luU2V0LCAmRmlsbExheWVy
OjpvcmlnaW4sICZGaWxsTGF5ZXI6OnNldE9yaWdpbiwgJkZpbGxMYXllcjo6Y2xlYXJPcmlnaW4s
ICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsT3JpZ2luLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbE9y
aWdpbj46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uLCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFs
dWUsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UG9zaXRpb25ZPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBBcHBseVByb3BlcnR5RmlsbExheWVyPExlbmd0
aCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAm
UmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dy
b3VuZExheWVycywgJkZpbGxMYXllcjo6aXNYUG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6OnhQb3Np
dGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVhclhQb3NpdGlv
biwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxYUG9zaXRpb24sICZTdHlsZVJlc29sdmVyOjptYXBG
aWxsWFBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBBcHBseVByb3BlcnR5RmlsbExheWVyPExl
bmd0aCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBCYWNrZ3JvdW5kRmlsbExheWVy
LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFj
a2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNZUG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6OnlQ
b3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVhcllQb3Np
dGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxZUG9zaXRpb24sICZTdHlsZVJlc29sdmVyOjpt
YXBGaWxsWVBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBBcHBseVByb3BlcnR5RmlsbExheWVy
PExlbmd0aCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBCYWNrZ3JvdW5kRmlsbExh
eWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6
YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNYUG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6
OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVhclhQ
b3NpdGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxYUG9zaXRpb24sICZDU1NUb1N0eWxlTWFw
OjptYXBGaWxsWFBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBBcHBseVByb3BlcnR5RmlsbExh
eWVyPExlbmd0aCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBCYWNrZ3JvdW5kRmls
bExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHls
ZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNZUG9zaXRpb25TZXQsICZGaWxsTGF5
ZXI6OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVh
cllQb3NpdGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxZUG9zaXRpb24sICZDU1NUb1N0eWxl
TWFwOjptYXBGaWxsWVBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0LCBBcHBseVByb3BlcnR5RXhwYW5k
aW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFJlcGVhdFk+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBBcHBseVByb3BlcnR5RmlsbExh
eWVyPEVGaWxsUmVwZWF0LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBCYWNrZ3JvdW5k
RmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJT
dHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNSZXBlYXRYU2V0LCAmRmlsbExh
eWVyOjpyZXBlYXRYLCAmRmlsbExheWVyOjpzZXRSZXBlYXRYLCAmRmlsbExheWVyOjpjbGVhclJl
cGVhdFgsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WCwgJlN0eWxlUmVzb2x2ZXI6Om1h
cEZpbGxSZXBlYXRYPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmls
bFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgQmFja2dyb3VuZEZpbGxMYXll
ciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJh
Y2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzUmVwZWF0WVNldCwgJkZpbGxMYXllcjo6cmVw
ZWF0WSwgJkZpbGxMYXllcjo6c2V0UmVwZWF0WSwgJkZpbGxMYXllcjo6Y2xlYXJSZXBlYXRZLCAm
RmlsbExheWVyOjppbml0aWFsRmlsbFJlcGVhdFksICZTdHlsZVJlc29sdmVyOjptYXBGaWxsUmVw
ZWF0WT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5QmFja2dyb3VuZFNpemUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RmlsbFNpemUsIENTU1By
b3BlcnR5QmFja2dyb3VuZFNpemUsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6
YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAm
RmlsbExheWVyOjppc1NpemVTZXQsICZGaWxsTGF5ZXI6OnNpemUsICZGaWxsTGF5ZXI6OnNldFNp
emUsICZGaWxsTGF5ZXI6OmNsZWFyU2l6ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxTaXplLCAm
U3R5bGVSZXNvbHZlcjo6bWFwRmlsbFNpemU+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBBcHBseVByb3BlcnR5
RmlsbExheWVyPEVGaWxsUmVwZWF0LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBCYWNr
Z3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZS
ZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNSZXBlYXRYU2V0LCAm
RmlsbExheWVyOjpyZXBlYXRYLCAmRmlsbExheWVyOjpzZXRSZXBlYXRYLCAmRmlsbExheWVyOjpj
bGVhclJlcGVhdFgsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WCwgJkNTU1RvU3R5bGVN
YXA6Om1hcEZpbGxSZXBlYXRYPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXll
cjxFRmlsbFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgQmFja2dyb3VuZEZp
bGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5
bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzUmVwZWF0WVNldCwgJkZpbGxMYXll
cjo6cmVwZWF0WSwgJkZpbGxMYXllcjo6c2V0UmVwZWF0WSwgJkZpbGxMYXllcjo6Y2xlYXJSZXBl
YXRZLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFJlcGVhdFksICZDU1NUb1N0eWxlTWFwOjptYXBG
aWxsUmVwZWF0WT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RmlsbFNpemUs
IENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJT
dHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5
ZXJzLCAmRmlsbExheWVyOjppc1NpemVTZXQsICZGaWxsTGF5ZXI6OnNpemUsICZGaWxsTGF5ZXI6
OnNldFNpemUsICZGaWxsTGF5ZXI6OmNsZWFyU2l6ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxT
aXplLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemU+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAg
IHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlciwgQXBwbHlQcm9wZXJ0eUV4cGFu
ZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBDU1NQcm9wZXJ0eUJv
cmRlcldpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sIEFwcGx5UHJvcGVy
dHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwg
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0
aD46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tQ29sb3IsIEFwcGx5UHJvcGVydHlDb2xvcjxOb0luaGVyaXRGcm9tUGFyZW50
LCAmUmVuZGVyU3R5bGU6OmJvcmRlckJvdHRvbUNvbG9yLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRl
ckJvdHRvbUNvbG9yLCAmUmVuZGVyU3R5bGU6OnNldFZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29s
b3IsICZSZW5kZXJTdHlsZTo6Y29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOwpAQCAtMTkzOSwxOSAr
MTk0MCwxOSBAQCBTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcigpCiAgICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5VW5pY29kZUJpZGksIEFwcGx5UHJvcGVydHlVbmljb2RlQmlkaTo6
Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlWZXJ0
aWNhbEFsaWduLCBBcHBseVByb3BlcnR5VmVydGljYWxBbGlnbjo6Y3JlYXRlSGFuZGxlcigpKTsK
ICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCBBcHBseVByb3Bl
cnR5RGVmYXVsdDxFVmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjp2aXNpYmlsaXR5LCBFVmlzaWJp
bGl0eSwgJlJlbmRlclN0eWxlOjpzZXRWaXNpYmlsaXR5LCBFVmlzaWJpbGl0eSwgJlJlbmRlclN0
eWxlOjppbml0aWFsVmlzaWJpbGl0eT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXksIEFwcGx5UHJvcGVydHlB
bmltYXRpb248ZG91YmxlLCAmQW5pbWF0aW9uOjpkZWxheSwgJkFuaW1hdGlvbjo6c2V0RGVsYXks
ICZBbmltYXRpb246OmlzRGVsYXlTZXQsICZBbmltYXRpb246OmNsZWFyRGVsYXksICZBbmltYXRp
b246OmluaXRpYWxBbmltYXRpb25EZWxheSwgJlN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvbkRl
bGF5LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0
aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPEFuaW1h
dGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uLCAmQW5pbWF0aW9uOjpkaXJlY3Rpb24sICZBbmltYXRp
b246OnNldERpcmVjdGlvbiwgJkFuaW1hdGlvbjo6aXNEaXJlY3Rpb25TZXQsICZBbmltYXRpb246
OmNsZWFyRGlyZWN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRGlyZWN0aW9uLCAm
U3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uRGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OmFjY2Vz
c0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7
Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRp
b24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248ZG91YmxlLCAmQW5pbWF0aW9uOjpkdXJhdGlvbiwg
JkFuaW1hdGlvbjo6c2V0RHVyYXRpb24sICZBbmltYXRpb246OmlzRHVyYXRpb25TZXQsICZBbmlt
YXRpb246OmNsZWFyRHVyYXRpb24sICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EdXJhdGlv
biwgJlN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvbkR1cmF0aW9uLCAmUmVuZGVyU3R5bGU6OmFj
Y2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIo
KSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmls
bE1vZGUsIEFwcGx5UHJvcGVydHlBbmltYXRpb248dW5zaWduZWQsICZBbmltYXRpb246OmZpbGxN
b2RlLCAmQW5pbWF0aW9uOjpzZXRGaWxsTW9kZSwgJkFuaW1hdGlvbjo6aXNGaWxsTW9kZVNldCwg
JkFuaW1hdGlvbjo6Y2xlYXJGaWxsTW9kZSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkZp
bGxNb2RlLCAmU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uRmlsbE1vZGUsICZSZW5kZXJTdHls
ZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25JdGVyYXRpb25Db3VudCwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUsICZBbmltYXRp
b246Oml0ZXJhdGlvbkNvdW50LCAmQW5pbWF0aW9uOjpzZXRJdGVyYXRpb25Db3VudCwgJkFuaW1h
dGlvbjo6aXNJdGVyYXRpb25Db3VudFNldCwgJkFuaW1hdGlvbjo6Y2xlYXJJdGVyYXRpb25Db3Vu
dCwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LCAmU3R5bGVSZXNv
bHZlcjo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5p
bWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLCBBcHBs
eVByb3BlcnR5QW5pbWF0aW9uPGNvbnN0IFN0cmluZyYsICZBbmltYXRpb246Om5hbWUsICZBbmlt
YXRpb246OnNldE5hbWUsICZBbmltYXRpb246OmlzTmFtZVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJO
YW1lLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uTmFtZSwgJlN0eWxlUmVzb2x2ZXI6Om1h
cEFuaW1hdGlvbk5hbWUsICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0
eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25QbGF5U3RhdGUsIEFwcGx5UHJvcGVydHlBbmlt
YXRpb248RUFuaW1QbGF5U3RhdGUsICZBbmltYXRpb246OnBsYXlTdGF0ZSwgJkFuaW1hdGlvbjo6
c2V0UGxheVN0YXRlLCAmQW5pbWF0aW9uOjppc1BsYXlTdGF0ZVNldCwgJkFuaW1hdGlvbjo6Y2xl
YXJQbGF5U3RhdGUsICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25QbGF5U3RhdGUsICZTdHls
ZVJlc29sdmVyOjptYXBBbmltYXRpb25QbGF5U3RhdGUsICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5p
bWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5j
dGlvbiwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxjb25zdCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0
aW9uPiwgJkFuaW1hdGlvbjo6dGltaW5nRnVuY3Rpb24sICZBbmltYXRpb246OnNldFRpbWluZ0Z1
bmN0aW9uLCAmQW5pbWF0aW9uOjppc1RpbWluZ0Z1bmN0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVh
clRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rp
b24sICZTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgJlJlbmRlclN0
eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVI
YW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvbkRlbGF5LCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6ZGVs
YXksICZBbmltYXRpb246OnNldERlbGF5LCAmQW5pbWF0aW9uOjppc0RlbGF5U2V0LCAmQW5pbWF0
aW9uOjpjbGVhckRlbGF5LCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRGVsYXksICZDU1NU
b1N0eWxlTWFwOjptYXBBbmltYXRpb25EZWxheSwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRp
b25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwgQXBw
bHlQcm9wZXJ0eUFuaW1hdGlvbjxBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbiwgJkFuaW1h
dGlvbjo6ZGlyZWN0aW9uLCAmQW5pbWF0aW9uOjpzZXREaXJlY3Rpb24sICZBbmltYXRpb246Omlz
RGlyZWN0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVhckRpcmVjdGlvbiwgJkFuaW1hdGlvbjo6aW5p
dGlhbEFuaW1hdGlvbkRpcmVjdGlvbiwgJkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkRpcmVj
dGlvbiwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1h
dGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJs
ZSwgJkFuaW1hdGlvbjo6ZHVyYXRpb24sICZBbmltYXRpb246OnNldER1cmF0aW9uLCAmQW5pbWF0
aW9uOjppc0R1cmF0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVhckR1cmF0aW9uLCAmQW5pbWF0aW9u
Ojppbml0aWFsQW5pbWF0aW9uRHVyYXRpb24sICZDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25E
dXJhdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFu
aW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPHVu
c2lnbmVkLCAmQW5pbWF0aW9uOjpmaWxsTW9kZSwgJkFuaW1hdGlvbjo6c2V0RmlsbE1vZGUsICZB
bmltYXRpb246OmlzRmlsbE1vZGVTZXQsICZBbmltYXRpb246OmNsZWFyRmlsbE1vZGUsICZBbmlt
YXRpb246OmluaXRpYWxBbmltYXRpb25GaWxsTW9kZSwgJkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1h
dGlvbkZpbGxNb2RlLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHls
ZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIEFwcGx5UHJvcGVydHlB
bmltYXRpb248ZG91YmxlLCAmQW5pbWF0aW9uOjppdGVyYXRpb25Db3VudCwgJkFuaW1hdGlvbjo6
c2V0SXRlcmF0aW9uQ291bnQsICZBbmltYXRpb246OmlzSXRlcmF0aW9uQ291bnRTZXQsICZBbmlt
YXRpb246OmNsZWFySXRlcmF0aW9uQ291bnQsICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25J
dGVyYXRpb25Db3VudCwgJkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9u
cz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uTmFtZSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxjb25zdCBTdHJpbmcm
LCAmQW5pbWF0aW9uOjpuYW1lLCAmQW5pbWF0aW9uOjpzZXROYW1lLCAmQW5pbWF0aW9uOjppc05h
bWVTZXQsICZBbmltYXRpb246OmNsZWFyTmFtZSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlv
bk5hbWUsICZDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25OYW1lLCAmUmVuZGVyU3R5bGU6OmFj
Y2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIo
KSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uUGxh
eVN0YXRlLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPEVBbmltUGxheVN0YXRlLCAmQW5pbWF0aW9u
OjpwbGF5U3RhdGUsICZBbmltYXRpb246OnNldFBsYXlTdGF0ZSwgJkFuaW1hdGlvbjo6aXNQbGF5
U3RhdGVTZXQsICZBbmltYXRpb246OmNsZWFyUGxheVN0YXRlLCAmQW5pbWF0aW9uOjppbml0aWFs
QW5pbWF0aW9uUGxheVN0YXRlLCAmQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUGxheVN0YXRl
LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9u
cz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248Y29u
c3QgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4sICZBbmltYXRpb246OnRpbWluZ0Z1bmN0aW9u
LCAmQW5pbWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6aXNUaW1pbmdGdW5j
dGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6aW5p
dGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCAmQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9u
VGltaW5nRnVuY3Rpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0
eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlLCBBcHBseVByb3BlcnR5RGVmYXVsdDxDb250
cm9sUGFydCwgJlJlbmRlclN0eWxlOjphcHBlYXJhbmNlLCBDb250cm9sUGFydCwgJlJlbmRlclN0
eWxlOjpzZXRBcHBlYXJhbmNlLCBDb250cm9sUGFydCwgJlJlbmRlclN0eWxlOjppbml0aWFsQXBw
ZWFyYW5jZT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5V2Via2l0QXNwZWN0UmF0aW8sIEFwcGx5UHJvcGVydHlBc3BlY3RSYXRpbzo6Y3JlYXRl
SGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCYWNr
ZmFjZVZpc2liaWxpdHksIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVCYWNrZmFjZVZpc2liaWxpdHks
ICZSZW5kZXJTdHlsZTo6YmFja2ZhY2VWaXNpYmlsaXR5LCBFQmFja2ZhY2VWaXNpYmlsaXR5LCAm
UmVuZGVyU3R5bGU6OnNldEJhY2tmYWNlVmlzaWJpbGl0eSwgRUJhY2tmYWNlVmlzaWJpbGl0eSwg
JlJlbmRlclN0eWxlOjppbml0aWFsQmFja2ZhY2VWaXNpYmlsaXR5Pjo6Y3JlYXRlSGFuZGxlcigp
KTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xp
cCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXll
cjxDb21wb3NpdGVPcGVyYXRvciwgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9zaXRl
LCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXll
cnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNDb21wb3Np
dGVTZXQsICZGaWxsTGF5ZXI6OmNvbXBvc2l0ZSwgJkZpbGxMYXllcjo6c2V0Q29tcG9zaXRlLCAm
RmlsbExheWVyOjpjbGVhckNvbXBvc2l0ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxDb21wb3Np
dGUsICZTdHlsZVJlc29sdmVyOjptYXBGaWxsQ29tcG9zaXRlPjo6Y3JlYXRlSGFuZGxlcigpKTsK
KyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9z
aXRlLCBBcHBseVByb3BlcnR5RmlsbExheWVyPENvbXBvc2l0ZU9wZXJhdG9yLCBDU1NQcm9wZXJ0
eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJT
dHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5
ZXJzLCAmRmlsbExheWVyOjppc0NvbXBvc2l0ZVNldCwgJkZpbGxMYXllcjo6Y29tcG9zaXRlLCAm
RmlsbExheWVyOjpzZXRDb21wb3NpdGUsICZGaWxsTGF5ZXI6OmNsZWFyQ29tcG9zaXRlLCAmRmls
bExheWVyOjppbml0aWFsRmlsbENvbXBvc2l0ZSwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxDb21w
b3NpdGU+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW4sIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbik7
CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUs
IENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckZpdCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJvcmRlckZpdCwg
JlJlbmRlclN0eWxlOjpib3JkZXJGaXQsIEVCb3JkZXJGaXQsICZSZW5kZXJTdHlsZTo6c2V0Qm9y
ZGVyRml0LCBFQm9yZGVyRml0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJGaXQ+OjpjcmVh
dGVIYW5kbGVyKCkpOwpAQCAtMjAxOSwyNCArMjAyMCwyNCBAQCBTdHlsZUJ1aWxkZXI6OlN0eWxl
QnVpbGRlcigpCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
VG9wQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UpOwogICAg
IHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sIEFw
cGx5UHJvcGVydHlEZWZhdWx0PEVNYXJxdWVlRGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6Om1hcnF1
ZWVEaXJlY3Rpb24sIEVNYXJxdWVlRGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OnNldE1hcnF1ZWVE
aXJlY3Rpb24sIEVNYXJxdWVlRGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxNYXJxdWVl
RGlyZWN0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVNYXJxdWVl
QmVoYXZpb3IsICZSZW5kZXJTdHlsZTo6bWFycXVlZUJlaGF2aW9yLCBFTWFycXVlZUJlaGF2aW9y
LCAmUmVuZGVyU3R5bGU6OnNldE1hcnF1ZWVCZWhhdmlvciwgRU1hcnF1ZWVCZWhhdmlvciwgJlJl
bmRlclN0eWxlOjppbml0aWFsTWFycXVlZUJlaGF2aW9yPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgQXBw
bHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5V2Via2l0TWFz
a0F0dGFjaG1lbnQsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVy
cywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc0F0dGFjaG1lbnRTZXQs
ICZGaWxsTGF5ZXI6OmF0dGFjaG1lbnQsICZGaWxsTGF5ZXI6OnNldEF0dGFjaG1lbnQsICZGaWxs
TGF5ZXI6OmNsZWFyQXR0YWNobWVudCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxBdHRhY2htZW50
LCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbEF0dGFjaG1lbnQ+OjpjcmVhdGVIYW5kbGVyKCkpOwor
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBB
cHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQXR0YWNobWVudCwgQ1NTUHJvcGVydHlXZWJraXRN
YXNrQXR0YWNobWVudCwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5
ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzQXR0YWNobWVudFNl
dCwgJkZpbGxMYXllcjo6YXR0YWNobWVudCwgJkZpbGxMYXllcjo6c2V0QXR0YWNobWVudCwgJkZp
bGxMYXllcjo6Y2xlYXJBdHRhY2htZW50LCAmRmlsbExheWVyOjppbml0aWFsRmlsbEF0dGFjaG1l
bnQsICZDU1NUb1N0eWxlTWFwOjptYXBGaWxsQXR0YWNobWVudD46OmNyZWF0ZUhhbmRsZXIoKSk7
CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlLCBB
cHBseVByb3BlcnR5Qm9yZGVySW1hZ2U8TWFzaywgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1h
Z2UsICZSZW5kZXJTdHlsZTo6bWFza0JveEltYWdlLCAmUmVuZGVyU3R5bGU6OnNldE1hc2tCb3hJ
bWFnZT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0TWFza0JveEltYWdlT3V0c2V0LCBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VNb2Rp
ZmllcjxNYXNrLCBPdXRzZXQ+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCwgQXBwbHlQcm9wZXJ0eUJv
cmRlckltYWdlTW9kaWZpZXI8TWFzaywgUmVwZWF0Pjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZSwgQXBw
bHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI8TWFzaywgU2xpY2U+OjpjcmVhdGVIYW5kbGVy
KCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFn
ZVNvdXJjZSwgQXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlPENTU1Byb3BlcnR5V2Via2l0
TWFza0JveEltYWdlU291cmNlLCAmUmVuZGVyU3R5bGU6Om1hc2tCb3hJbWFnZVNvdXJjZSwgJlJl
bmRlclN0eWxlOjpzZXRNYXNrQm94SW1hZ2VTb3VyY2UsICZSZW5kZXJTdHlsZTo6aW5pdGlhbE1h
c2tCb3hJbWFnZVNvdXJjZT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlV2lkdGgsIEFwcGx5UHJvcGVydHlCb3Jk
ZXJJbWFnZU1vZGlmaWVyPE1hc2ssIFdpZHRoPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgQXBwbHlQcm9wZXJ0eUZp
bGxMYXllcjxFRmlsbEJveCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgTWFza0ZpbGxMYXll
ciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXll
cnMsICZGaWxsTGF5ZXI6OmlzQ2xpcFNldCwgJkZpbGxMYXllcjo6Y2xpcCwgJkZpbGxMYXllcjo6
c2V0Q2xpcCwgJkZpbGxMYXllcjo6Y2xlYXJDbGlwLCAmRmlsbExheWVyOjppbml0aWFsRmlsbENs
aXAsICZTdHlsZVJlc29sdmVyOjptYXBGaWxsQ2xpcD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZSwgQXBwbHlQ
cm9wZXJ0eUZpbGxMYXllcjxDb21wb3NpdGVPcGVyYXRvciwgQ1NTUHJvcGVydHlXZWJraXRNYXNr
Q29tcG9zaXRlLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMs
ICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNDb21wb3NpdGVTZXQsICZG
aWxsTGF5ZXI6OmNvbXBvc2l0ZSwgJkZpbGxMYXllcjo6c2V0Q29tcG9zaXRlLCAmRmlsbExheWVy
OjpjbGVhckNvbXBvc2l0ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxDb21wb3NpdGUsICZTdHls
ZVJlc29sdmVyOjptYXBGaWxsQ29tcG9zaXRlPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIEFwcGx5UHJvcGVydHlG
aWxsTGF5ZXI8U3R5bGVJbWFnZSosIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBNYXNrRmls
bExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFz
a0xheWVycywgJkZpbGxMYXllcjo6aXNJbWFnZVNldCwgJkZpbGxMYXllcjo6aW1hZ2UsICZGaWxs
TGF5ZXI6OnNldEltYWdlLCAmRmlsbExheWVyOjpjbGVhckltYWdlLCAmRmlsbExheWVyOjppbml0
aWFsRmlsbEltYWdlLCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbEltYWdlPjo6Y3JlYXRlSGFuZGxl
cigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrT3JpZ2lu
LCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQm94LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tP
cmlnaW4sIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJl
bmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc09yaWdpblNldCwgJkZpbGxMYXll
cjo6b3JpZ2luLCAmRmlsbExheWVyOjpzZXRPcmlnaW4sICZGaWxsTGF5ZXI6OmNsZWFyT3JpZ2lu
LCAmRmlsbExheWVyOjppbml0aWFsRmlsbE9yaWdpbiwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxP
cmlnaW4+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tDbGlwLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQm94LCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tDbGlwLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vz
c01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNDbGlw
U2V0LCAmRmlsbExheWVyOjpjbGlwLCAmRmlsbExheWVyOjpzZXRDbGlwLCAmRmlsbExheWVyOjpj
bGVhckNsaXAsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ2xpcCwgJkNTU1RvU3R5bGVNYXA6Om1h
cEZpbGxDbGlwPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlLCBBcHBseVByb3BlcnR5RmlsbExheWVyPENvbXBv
c2l0ZU9wZXJhdG9yLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUsIE1hc2tGaWxsTGF5
ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5
ZXJzLCAmRmlsbExheWVyOjppc0NvbXBvc2l0ZVNldCwgJkZpbGxMYXllcjo6Y29tcG9zaXRlLCAm
RmlsbExheWVyOjpzZXRDb21wb3NpdGUsICZGaWxsTGF5ZXI6OmNsZWFyQ29tcG9zaXRlLCAmRmls
bExheWVyOjppbml0aWFsRmlsbENvbXBvc2l0ZSwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxDb21w
b3NpdGU+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tJbWFnZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxTdHlsZUltYWdlKiwg
Q1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6
YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjpp
c0ltYWdlU2V0LCAmRmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2UsICZGaWxs
TGF5ZXI6OmNsZWFySW1hZ2UsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsSW1hZ2UsICZDU1NUb1N0
eWxlTWFwOjptYXBGaWxsSW1hZ2U+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIEFwcGx5UHJvcGVydHlGaWxsTGF5
ZXI8RUZpbGxCb3gsIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwgTWFza0ZpbGxMYXllciwg
JlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMs
ICZGaWxsTGF5ZXI6OmlzT3JpZ2luU2V0LCAmRmlsbExheWVyOjpvcmlnaW4sICZGaWxsTGF5ZXI6
OnNldE9yaWdpbiwgJkZpbGxMYXllcjo6Y2xlYXJPcmlnaW4sICZGaWxsTGF5ZXI6OmluaXRpYWxG
aWxsT3JpZ2luLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbE9yaWdpbj46OmNyZWF0ZUhhbmRsZXIo
KSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
LCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5V2Via2l0
TWFza1Bvc2l0aW9uWCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9z
aXRpb25YLCBBcHBseVByb3BlcnR5RmlsbExheWVyPExlbmd0aCwgQ1NTUHJvcGVydHlXZWJraXRN
YXNrUG9zaXRpb25YLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXll
cnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNYUG9zaXRpb25TZXQs
ICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExh
eWVyOjpjbGVhclhQb3NpdGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxYUG9zaXRpb24sICZT
dHlsZVJlc29sdmVyOjptYXBGaWxsWFBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZLCBBcHBseVBy
b3BlcnR5RmlsbExheWVyPExlbmd0aCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZLCBN
YXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHls
ZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNZUG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6OnlQ
b3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVhcllQb3Np
dGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxZUG9zaXRpb24sICZTdHlsZVJlc29sdmVyOjpt
YXBGaWxsWVBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBBcHBseVByb3BlcnR5RmlsbExheWVy
PExlbmd0aCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBNYXNrRmlsbExheWVyLCAm
UmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywg
JkZpbGxMYXllcjo6aXNYUG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxM
YXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVhclhQb3NpdGlvbiwgJkZpbGxMYXll
cjo6aW5pdGlhbEZpbGxYUG9zaXRpb24sICZDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0aW9u
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUG9zaXRpb25ZLCBBcHBseVByb3BlcnR5RmlsbExheWVyPExlbmd0aCwgQ1NTUHJv
cGVydHlXZWJraXRNYXNrUG9zaXRpb25ZLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFj
Y2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNZ
UG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0
aW9uLCAmRmlsbExheWVyOjpjbGVhcllQb3NpdGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxZ
UG9zaXRpb24sICZDU1NUb1N0eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxl
cigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0
LCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5QmFja2dy
b3VuZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFk+OjpjcmVhdGVIYW5kbGVy
KCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRY
LCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVwZWF0LCBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXRYLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMs
ICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNSZXBlYXRYU2V0LCAmRmls
bExheWVyOjpyZXBlYXRYLCAmRmlsbExheWVyOjpzZXRSZXBlYXRYLCAmRmlsbExheWVyOjpjbGVh
clJlcGVhdFgsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WCwgJlN0eWxlUmVzb2x2ZXI6
Om1hcEZpbGxSZXBlYXRYPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxF
RmlsbFJlcGVhdCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgTWFza0ZpbGxMYXllciwg
JlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMs
ICZGaWxsTGF5ZXI6OmlzUmVwZWF0WVNldCwgJkZpbGxMYXllcjo6cmVwZWF0WSwgJkZpbGxMYXll
cjo6c2V0UmVwZWF0WSwgJkZpbGxMYXllcjo6Y2xlYXJSZXBlYXRZLCAmRmlsbExheWVyOjppbml0
aWFsRmlsbFJlcGVhdFksICZTdHlsZVJlc29sdmVyOjptYXBGaWxsUmVwZWF0WT46OmNyZWF0ZUhh
bmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1Np
emUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RmlsbFNpemUsIENTU1Byb3BlcnR5V2Via2l0TWFz
a1NpemUsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJl
bmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1NpemVTZXQsICZGaWxsTGF5ZXI6
OnNpemUsICZGaWxsTGF5ZXI6OnNldFNpemUsICZGaWxsTGF5ZXI6OmNsZWFyU2l6ZSwgJkZpbGxM
YXllcjo6aW5pdGlhbEZpbGxTaXplLCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbFNpemU+OjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tSZXBlYXRYLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVwZWF0LCBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tSZXBlYXRYLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01h
c2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNSZXBlYXRY
U2V0LCAmRmlsbExheWVyOjpyZXBlYXRYLCAmRmlsbExheWVyOjpzZXRSZXBlYXRYLCAmRmlsbExh
eWVyOjpjbGVhclJlcGVhdFgsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WCwgJkNTU1Rv
U3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRYPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgQXBwbHlQcm9wZXJ0eUZp
bGxMYXllcjxFRmlsbFJlcGVhdCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgTWFza0Zp
bGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1h
c2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzUmVwZWF0WVNldCwgJkZpbGxMYXllcjo6cmVwZWF0WSwg
JkZpbGxMYXllcjo6c2V0UmVwZWF0WSwgJkZpbGxMYXllcjo6Y2xlYXJSZXBlYXRZLCAmRmlsbExh
eWVyOjppbml0aWFsRmlsbFJlcGVhdFksICZDU1NUb1N0eWxlTWFwOjptYXBGaWxsUmVwZWF0WT46
OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Vi
a2l0TWFza1NpemUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RmlsbFNpemUsIENTU1Byb3BlcnR5
V2Via2l0TWFza1NpemUsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xh
eWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1NpemVTZXQsICZG
aWxsTGF5ZXI6OnNpemUsICZGaWxsTGF5ZXI6OnNldFNpemUsICZGaWxsTGF5ZXI6OmNsZWFyU2l6
ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxTaXplLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNp
emU+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdE5ic3BNb2RlLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFTkJTUE1vZGUsICZSZW5kZXJT
dHlsZTo6bmJzcE1vZGUsIEVOQlNQTW9kZSwgJlJlbmRlclN0eWxlOjpzZXROQlNQTW9kZSwgRU5C
U1BNb2RlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxOQlNQTW9kZT46OmNyZWF0ZUhhbmRsZXIoKSk7
CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmln
aW4sIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlXZWJr
aXRQZXJzcGVjdGl2ZU9yaWdpblgsIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5Z
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlX
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgsIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0eWxl
OjpwZXJzcGVjdGl2ZU9yaWdpblgsICZSZW5kZXJTdHlsZTo6c2V0UGVyc3BlY3RpdmVPcmlnaW5Y
LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblg+OjpjcmVhdGVIYW5kbGVy
KCkpOwpAQCAtMjA2MiwxMCArMjA2MywxMCBAQCBTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcigp
CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2lu
WSwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6OnRyYW5zZm9ybU9yaWdpblksICZS
ZW5kZXJTdHlsZTo6c2V0VHJhbnNmb3JtT3JpZ2luWSwgJlJlbmRlclN0eWxlOjppbml0aWFsVHJh
bnNmb3JtT3JpZ2luWT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWiwgQXBwbHlQcm9wZXJ0eUNvbXB1dGVM
ZW5ndGg8ZmxvYXQsICZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtT3JpZ2luWiwgJlJlbmRlclN0eWxl
OjpzZXRUcmFuc2Zvcm1PcmlnaW5aLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1Pcmln
aW5aPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1TdHlsZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVRyYW5zZm9ybVN0
eWxlM0QsICZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtU3R5bGUzRCwgRVRyYW5zZm9ybVN0eWxlM0Qs
ICZSZW5kZXJTdHlsZTo6c2V0VHJhbnNmb3JtU3R5bGUzRCwgRVRyYW5zZm9ybVN0eWxlM0QsICZS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zZm9ybVN0eWxlM0Q+OjpjcmVhdGVIYW5kbGVyKCkpOwot
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheSwg
QXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUsICZBbmltYXRpb246OmRlbGF5LCAmQW5pbWF0
aW9uOjpzZXREZWxheSwgJkFuaW1hdGlvbjo6aXNEZWxheVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJE
ZWxheSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkRlbGF5LCAmU3R5bGVSZXNvbHZlcjo6
bWFwQW5pbWF0aW9uRGVsYXksICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5k
ZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwgQXBwbHlQcm9wZXJ0
eUFuaW1hdGlvbjxkb3VibGUsICZBbmltYXRpb246OmR1cmF0aW9uLCAmQW5pbWF0aW9uOjpzZXRE
dXJhdGlvbiwgJkFuaW1hdGlvbjo6aXNEdXJhdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEdXJh
dGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkR1cmF0aW9uLCAmU3R5bGVSZXNvbHZl
cjo6bWFwQW5pbWF0aW9uRHVyYXRpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMs
ICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwgQXBwbHlQ
cm9wZXJ0eUFuaW1hdGlvbjxDU1NQcm9wZXJ0eUlELCAmQW5pbWF0aW9uOjpwcm9wZXJ0eSwgJkFu
aW1hdGlvbjo6c2V0UHJvcGVydHksICZBbmltYXRpb246OmlzUHJvcGVydHlTZXQsICZBbmltYXRp
b246OmNsZWFyUHJvcGVydHksICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25Qcm9wZXJ0eSwg
JlN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvblByb3BlcnR5LCAmUmVuZGVyU3R5bGU6OmFjY2Vz
c1RyYW5zaXRpb25zLCAmUmVuZGVyU3R5bGU6OnRyYW5zaXRpb25zPjo6Y3JlYXRlSGFuZGxlcigp
KTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGlt
aW5nRnVuY3Rpb24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248Y29uc3QgUGFzc1JlZlB0cjxUaW1p
bmdGdW5jdGlvbj4sICZBbmltYXRpb246OnRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjpzZXRU
aW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6aXNUaW1pbmdGdW5jdGlvblNldCwgJkFuaW1hdGlv
bjo6Y2xlYXJUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblRpbWlu
Z0Z1bmN0aW9uLCAmU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sICZS
ZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zaXRpb25EZWxheSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUsICZBbmlt
YXRpb246OmRlbGF5LCAmQW5pbWF0aW9uOjpzZXREZWxheSwgJkFuaW1hdGlvbjo6aXNEZWxheVNl
dCwgJkFuaW1hdGlvbjo6Y2xlYXJEZWxheSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkRl
bGF5LCAmQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRGVsYXksICZSZW5kZXJTdHlsZTo6YWNj
ZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5kbGVy
KCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25E
dXJhdGlvbiwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUsICZBbmltYXRpb246OmR1cmF0
aW9uLCAmQW5pbWF0aW9uOjpzZXREdXJhdGlvbiwgJkFuaW1hdGlvbjo6aXNEdXJhdGlvblNldCwg
JkFuaW1hdGlvbjo6Y2xlYXJEdXJhdGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkR1
cmF0aW9uLCAmQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRHVyYXRpb24sICZSZW5kZXJTdHls
ZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVI
YW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
aXRpb25Qcm9wZXJ0eSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxDU1NQcm9wZXJ0eUlELCAmQW5p
bWF0aW9uOjpwcm9wZXJ0eSwgJkFuaW1hdGlvbjo6c2V0UHJvcGVydHksICZBbmltYXRpb246Omlz
UHJvcGVydHlTZXQsICZBbmltYXRpb246OmNsZWFyUHJvcGVydHksICZBbmltYXRpb246OmluaXRp
YWxBbmltYXRpb25Qcm9wZXJ0eSwgJkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblByb3BlcnR5
LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc1RyYW5zaXRpb25zLCAmUmVuZGVyU3R5bGU6OnRyYW5zaXRp
b25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248
Y29uc3QgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4sICZBbmltYXRpb246OnRpbWluZ0Z1bmN0
aW9uLCAmQW5pbWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6aXNUaW1pbmdG
dW5jdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6
aW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCAmQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0
aW9uVGltaW5nRnVuY3Rpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5k
ZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBBcHBseVByb3BlcnR5RGVmYXVsdDxF
VXNlckRyYWcsICZSZW5kZXJTdHlsZTo6dXNlckRyYWcsIEVVc2VyRHJhZywgJlJlbmRlclN0eWxl
OjpzZXRVc2VyRHJhZywgRVVzZXJEcmFnLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxVc2VyRHJhZz46
OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Vi
a2l0VXNlck1vZGlmeSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVVzZXJNb2RpZnksICZSZW5kZXJT
dHlsZTo6dXNlck1vZGlmeSwgRVVzZXJNb2RpZnksICZSZW5kZXJTdHlsZTo6c2V0VXNlck1vZGlm
eSwgRVVzZXJNb2RpZnksICZSZW5kZXJTdHlsZTo6aW5pdGlhbFVzZXJNb2RpZnk+OjpjcmVhdGVI
YW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFVzZXJT
ZWxlY3QsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVVc2VyU2VsZWN0LCAmUmVuZGVyU3R5bGU6OnVz
ZXJTZWxlY3QsIEVVc2VyU2VsZWN0LCAmUmVuZGVyU3R5bGU6OnNldFVzZXJTZWxlY3QsIEVVc2Vy
U2VsZWN0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxVc2VyU2VsZWN0Pjo6Y3JlYXRlSGFuZGxlcigp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAwM2RjMzEwNmM4NTNjMGU0
NzIzNDQzMGU4NGUyZTdhZDE1YjM2ZTRlLi4yMTZiMGYzNDQxNTY0M2UxNTQ3YTA5N2Y1MTcyODNl
N2Q4YTg5NDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC04LDYgKzgs
NyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmln
aHQgKGMpIDIwMTEsIENvZGUgQXVyb3JhIEZvcnVtLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM3NCw2ICszNzUsNyBAQCBTdHlsZVJl
c29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBtYXRjaEF1dGhv
ckFuZFVzZXJTdHlsZXMpCiAgICAgLCBtX3Njb3BlU3RhY2tQYXJlbnQoMCkKICAgICAsIG1fc2Nv
cGVTdGFja1BhcmVudEJvdW5kc0luZGV4KDApCiAjZW5kaWYKKyAgICAsIG1fc3R5bGVNYXAodGhp
cykKIHsKICAgICBFbGVtZW50KiByb290ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwog
CkBAIC0zNzM5LDcgKzM3NDEsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHko
Q1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgICAgICAgICAgcmVmbGVjdGlv
bi0+c2V0T2Zmc2V0KHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmNvbnZlcnRUb0xlbmd0aDxGaXhl
ZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVy
c2lvbj4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSk7CiAgICAgICAg
IE5pbmVQaWVjZUltYWdlIG1hc2s7CiAgICAgICAgIG1hc2suc2V0TWFza0RlZmF1bHRzKCk7Ci0g
ICAgICAgIG1hcE5pbmVQaWVjZUltYWdlKGlkLCByZWZsZWN0VmFsdWUtPm1hc2soKSwgbWFzayk7
CisgICAgICAgIG1fc3R5bGVNYXAubWFwTmluZVBpZWNlSW1hZ2UoaWQsIHJlZmxlY3RWYWx1ZS0+
bWFzaygpLCBtYXNrKTsKICAgICAgICAgcmVmbGVjdGlvbi0+c2V0TWFzayhtYXNrKTsKIAogICAg
ICAgICBtX3N0eWxlLT5zZXRCb3hSZWZsZWN0KHJlZmxlY3Rpb24ucmVsZWFzZSgpKTsKQEAgLTQ0
MjcsNzQgKzQ0MjksNiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJv
cGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIH0KIH0KIAotdm9pZCBTdHlsZVJlc29s
dmVyOjptYXBGaWxsQXR0YWNobWVudChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBD
U1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7Ci0g
ICAgICAgIGxheWVyLT5zZXRBdHRhY2htZW50KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxBdHRhY2ht
ZW50KGxheWVyLT50eXBlKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICgh
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7Ci0gICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewot
ICAgIGNhc2UgQ1NTVmFsdWVGaXhlZDoKLSAgICAgICAgbGF5ZXItPnNldEF0dGFjaG1lbnQoRml4
ZWRCYWNrZ3JvdW5kQXR0YWNobWVudCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFs
dWVTY3JvbGw6Ci0gICAgICAgIGxheWVyLT5zZXRBdHRhY2htZW50KFNjcm9sbEJhY2tncm91bmRB
dHRhY2htZW50KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUxvY2FsOgotICAg
ICAgICBsYXllci0+c2V0QXR0YWNobWVudChMb2NhbEJhY2tncm91bmRBdHRhY2htZW50KTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQot
dm9pZCBTdHlsZVJlc29sdmVyOjptYXBGaWxsQ2xpcChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIq
IGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1
ZSgpKSB7Ci0gICAgICAgIGxheWVyLT5zZXRDbGlwKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxDbGlw
KGxheWVyLT50eXBlKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghdmFs
dWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSk7Ci0gICAgbGF5ZXItPnNldENsaXAoKnByaW1pdGl2ZVZhbHVlKTsKLX0KLQotdm9p
ZCBTdHlsZVJlc29sdmVyOjptYXBGaWxsQ29tcG9zaXRlKENTU1Byb3BlcnR5SUQsIEZpbGxMYXll
ciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZh
bHVlKCkpIHsKLSAgICAgICAgbGF5ZXItPnNldENvbXBvc2l0ZShGaWxsTGF5ZXI6OmluaXRpYWxG
aWxsQ29tcG9zaXRlKGxheWVyLT50eXBlKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgbGF5ZXItPnNldENvbXBvc2l0ZSgqcHJpbWl0aXZl
VmFsdWUpOwotfQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxPcmlnaW4oQ1NTUHJvcGVy
dHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1
ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBsYXllci0+c2V0T3JpZ2luKEZpbGxMYXll
cjo6aW5pdGlhbEZpbGxPcmlnaW4obGF5ZXItPnR5cGUoKSkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBsYXllci0+c2V0T3JpZ2luKCpwcmlt
aXRpdmVWYWx1ZSk7Ci19Ci0KIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZlcjo6
c3R5bGVJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlLT5pc0ltYWdlVmFsdWUoKSkKQEAgLTQ1MzgsNTMyICs0NDcyLDYgQEAgUGFz
c1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpzZXRPclBlbmRpbmdGcm9tVmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXIKIH0KICNlbmRpZgogCi12b2lkIFN0eWxlUmVzb2x2ZXI6Om1h
cEZpbGxJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NW
YWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7Ci0gICAg
ICAgIGxheWVyLT5zZXRJbWFnZShGaWxsTGF5ZXI6OmluaXRpYWxGaWxsSW1hZ2UobGF5ZXItPnR5
cGUoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbGF5ZXItPnNldEltYWdlKHN0
eWxlSW1hZ2UocHJvcGVydHksIHZhbHVlKSk7Ci19Ci0KLXZvaWQgU3R5bGVSZXNvbHZlcjo6bWFw
RmlsbFJlcGVhdFgoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZh
bHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBsYXll
ci0+c2V0UmVwZWF0WChGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WChsYXllci0+dHlwZSgp
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotICAg
IGxheWVyLT5zZXRSZXBlYXRYKCpwcmltaXRpdmVWYWx1ZSk7Ci19Ci0KLXZvaWQgU3R5bGVSZXNv
bHZlcjo6bWFwRmlsbFJlcGVhdFkoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NT
VmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAg
ICAgICBsYXllci0+c2V0UmVwZWF0WShGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WShsYXll
ci0+dHlwZSgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOwotICAgIGxheWVyLT5zZXRSZXBlYXRZKCpwcmltaXRpdmVWYWx1ZSk7Ci19Ci0KLXZvaWQg
U3R5bGVSZXNvbHZlcjo6bWFwRmlsbFNpemUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXll
ciwgQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkgewotICAgICAgICBsYXllci0+c2V0U2l6ZVR5cGUoU2l6ZU5vbmUpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ29udGFpbikKLSAgICAgICAgbGF5ZXItPnNldFNp
emVUeXBlKENvbnRhaW4pOwotICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlQ292ZXIpCi0gICAgICAgIGxheWVyLT5zZXRTaXplVHlwZShDb3Zlcik7Ci0g
ICAgZWxzZQotICAgICAgICBsYXllci0+c2V0U2l6ZVR5cGUoU2l6ZUxlbmd0aCk7Ci0KLSAgICBM
ZW5ndGhTaXplIGIgPSBGaWxsTGF5ZXI6OmluaXRpYWxGaWxsU2l6ZUxlbmd0aChsYXllci0+dHlw
ZSgpKTsKLQotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSB8fCBwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUNvbnRhaW4gfHwgcHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkgPT0gQ1NTVmFsdWVDb3ZlcikgewotICAgICAgICBsYXllci0+c2V0U2l6ZUxlbmd0aChi
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGZsb2F0IHpvb21GYWN0b3IgPSBtX3N0
eWxlLT5lZmZlY3RpdmVab29tKCk7Ci0KLSAgICBMZW5ndGggZmlyc3RMZW5ndGg7Ci0gICAgTGVu
Z3RoIHNlY29uZExlbmd0aDsKLQotICAgIGlmIChQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUt
PmdldFBhaXJWYWx1ZSgpKSB7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmaXJzdCA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+Zmlyc3QoKSk7Ci0gICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmQgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHBhaXItPnNlY29uZCgpKTsKLSAgICAgICAgZmlyc3RMZW5ndGggPSBmaXJzdC0+Y29udmVydFRv
TGVuZ3RoPEFueUNvbnZlcnNpb24+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZh
Y3Rvcik7Ci0gICAgICAgIHNlY29uZExlbmd0aCA9IHNlY29uZC0+Y29udmVydFRvTGVuZ3RoPEFu
eUNvbnZlcnNpb24+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgZmlyc3RMZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29udmVy
dFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9v
bUZhY3Rvcik7Ci0gICAgICAgIHNlY29uZExlbmd0aCA9IExlbmd0aCgpOwotICAgIH0KLQotICAg
IGlmIChmaXJzdExlbmd0aC5pc1VuZGVmaW5lZCgpIHx8IHNlY29uZExlbmd0aC5pc1VuZGVmaW5l
ZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBiLnNldFdpZHRoKGZpcnN0TGVuZ3RoKTsKLSAg
ICBiLnNldEhlaWdodChzZWNvbmRMZW5ndGgpOwotICAgIGxheWVyLT5zZXRTaXplTGVuZ3RoKGIp
OwotfQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxYUG9zaXRpb24oQ1NTUHJvcGVydHlJ
RCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+
aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBsYXllci0+c2V0WFBvc2l0aW9uKEZpbGxMYXll
cjo6aW5pdGlhbEZpbGxYUG9zaXRpb24obGF5ZXItPnR5cGUoKSkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBmbG9hdCB6b29tRmFjdG9yID0gbV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgp
OwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgTGVuZ3RoIGxlbmd0aDsKLSAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkpCi0gICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZh
bHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6
b29tRmFjdG9yKTsKLSAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50YWdlKCkp
Ci0gICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUo
KSwgUGVyY2VudCk7Ci0gICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzQ2FsY3VsYXRlZFBl
cmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCi0gICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRpdmVW
YWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPnRvQ2FsY1ZhbHVlKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRT
dHlsZSwgem9vbUZhY3RvcikpOwotICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1ZpZXdw
b3J0UGVyY2VudGFnZUxlbmd0aCgpKQotICAgICAgICBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+
dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm47Ci0g
ICAgbGF5ZXItPnNldFhQb3NpdGlvbihsZW5ndGgpOwotfQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6
Om1hcEZpbGxZUG9zaXRpb24oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFs
dWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAg
ICBsYXllci0+c2V0WVBvc2l0aW9uKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxZUG9zaXRpb24obGF5
ZXItPnR5cGUoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9hdCB6b29tRmFj
dG9yID0gbV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7
Ci0gICAgTGVuZ3RoIGxlbmd0aDsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkp
Ci0gICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4o
c3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICBlbHNlIGlmIChw
cmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGxlbmd0aCA9IExlbmd0aChw
cmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgZWxzZSBpZiAo
cHJpbWl0aXZlVmFsdWUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCi0gICAg
ICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPnRvQ2Fs
Y1ZhbHVlKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikpOwotICAgIGVs
c2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpKQotICAg
ICAgICBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCk7
Ci0gICAgZWxzZQotICAgICAgICByZXR1cm47Ci0gICAgbGF5ZXItPnNldFlQb3NpdGlvbihsZW5n
dGgpOwotfQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvbkRlbGF5KEFuaW1hdGlv
biogYW5pbWF0aW9uLCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRp
YWxWYWx1ZSgpKSB7Ci0gICAgICAgIGFuaW1hdGlvbi0+c2V0RGVsYXkoQW5pbWF0aW9uOjppbml0
aWFsQW5pbWF0aW9uRGVsYXkoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
IXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOwotICAgIGFuaW1hdGlvbi0+c2V0RGVsYXkocHJpbWl0aXZlVmFsdWUtPmNv
bXB1dGVUaW1lPGZsb2F0LCBDU1NQcmltaXRpdmVWYWx1ZTo6U2Vjb25kcz4oKSk7Ci19Ci0KLXZv
aWQgU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uRGlyZWN0aW9uKEFuaW1hdGlvbiogbGF5ZXIs
IENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsK
LSAgICAgICAgbGF5ZXItPnNldERpcmVjdGlvbihBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25E
aXJlY3Rpb24oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOwotICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICBjYXNl
IENTU1ZhbHVlTm9ybWFsOgotICAgICAgICBsYXllci0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6
QW5pbWF0aW9uRGlyZWN0aW9uTm9ybWFsKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NW
YWx1ZUFsdGVybmF0ZToKLSAgICAgICAgbGF5ZXItPnNldERpcmVjdGlvbihBbmltYXRpb246OkFu
aW1hdGlvbkRpcmVjdGlvbkFsdGVybmF0ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NT
VmFsdWVSZXZlcnNlOgotICAgICAgICBsYXllci0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6QW5p
bWF0aW9uRGlyZWN0aW9uUmV2ZXJzZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFs
dWVBbHRlcm5hdGVSZXZlcnNlOgotICAgICAgICBsYXllci0+c2V0RGlyZWN0aW9uKEFuaW1hdGlv
bjo6QW5pbWF0aW9uRGlyZWN0aW9uQWx0ZXJuYXRlUmV2ZXJzZSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLX0KLQotdm9pZCBTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25EdXJhdGlvbihBbmlt
YXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNJ
bml0aWFsVmFsdWUoKSkgewotICAgICAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKEFuaW1hdGlv
bjo6aW5pdGlhbEFuaW1hdGlvbkR1cmF0aW9uKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKHByaW1p
dGl2ZVZhbHVlLT5jb21wdXRlVGltZTxmbG9hdCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlNlY29uZHM+
KCkpOwotfQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvbkZpbGxNb2RlKEFuaW1h
dGlvbiogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlh
bFZhbHVlKCkpIHsKLSAgICAgICAgbGF5ZXItPnNldEZpbGxNb2RlKEFuaW1hdGlvbjo6aW5pdGlh
bEFuaW1hdGlvbkZpbGxNb2RlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKLSAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7
Ci0gICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAgICAgIGxheWVyLT5zZXRGaWxsTW9kZShBbmlt
YXRpb25GaWxsTW9kZU5vbmUpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVlRm9y
d2FyZHM6Ci0gICAgICAgIGxheWVyLT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZUZvcndh
cmRzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUJhY2t3YXJkczoKLSAgICAg
ICAgbGF5ZXItPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlQmFja3dhcmRzKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUJvdGg6Ci0gICAgICAgIGxheWVyLT5zZXRGaWxs
TW9kZShBbmltYXRpb25GaWxsTW9kZUJvdGgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0K
LXZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoQW5pbWF0aW9u
KiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlh
bFZhbHVlKCkpIHsKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRJdGVyYXRpb25Db3VudChBbmltYXRp
b246OmluaXRpYWxBbmltYXRpb25JdGVyYXRpb25Db3VudCgpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlSW5maW5pdGUpCi0gICAgICAgIGFuaW1hdGlvbi0+c2V0SXRl
cmF0aW9uQ291bnQoLTEpOwotICAgIGVsc2UKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRJdGVyYXRp
b25Db3VudChwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKTsKLX0KLQotdm9pZCBTdHls
ZVJlc29sdmVyOjptYXBBbmltYXRpb25OYW1lKEFuaW1hdGlvbiogbGF5ZXIsIENTU1ZhbHVlKiB2
YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKLSAgICAgICAgbGF5
ZXItPnNldE5hbWUoQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uTmFtZSgpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgbGF5ZXItPnNldElz
Tm9uZUFuaW1hdGlvbih0cnVlKTsKLSAgICBlbHNlCi0gICAgICAgIGxheWVyLT5zZXROYW1lKHBy
aW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKLX0KLQotdm9pZCBTdHlsZVJlc29sdmVy
OjptYXBBbmltYXRpb25QbGF5U3RhdGUoQW5pbWF0aW9uKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVl
KQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBsYXllci0+
c2V0UGxheVN0YXRlKEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblBsYXlTdGF0ZSgpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgRUFuaW1Q
bGF5U3RhdGUgcGxheVN0YXRlID0gKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlUGF1c2VkKSA/IEFuaW1QbGF5U3RhdGVQYXVzZWQgOiBBbmltUGxheVN0YXRlUGxheWluZzsK
LSAgICBsYXllci0+c2V0UGxheVN0YXRlKHBsYXlTdGF0ZSk7Ci19Ci0KLXZvaWQgU3R5bGVSZXNv
bHZlcjo6bWFwQW5pbWF0aW9uUHJvcGVydHkoQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVl
KiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKLSAgICAgICAg
YW5pbWF0aW9uLT5zZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0ZUFsbCk7Ci0gICAg
ICAgIGFuaW1hdGlvbi0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJbnZhbGlkKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQWxsKSB7Ci0gICAgICAgIGFuaW1hdGlvbi0+
c2V0QW5pbWF0aW9uTW9kZShBbmltYXRpb246OkFuaW1hdGVBbGwpOwotICAgICAgICBhbmltYXRp
b24tPnNldFByb3BlcnR5KENTU1Byb3BlcnR5SW52YWxpZCk7Ci0gICAgfSBlbHNlIGlmIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKLSAgICAgICAgYW5pbWF0
aW9uLT5zZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0ZU5vbmUpOwotICAgICAgICBh
bmltYXRpb24tPnNldFByb3BlcnR5KENTU1Byb3BlcnR5SW52YWxpZCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgYW5pbWF0aW9uLT5zZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0ZVNp
bmdsZVByb3BlcnR5KTsKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRQcm9wZXJ0eShzdGF0aWNfY2Fz
dDxDU1NQcm9wZXJ0eUlEPihwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkpOwotICAgIH0KLX0K
LQotdm9pZCBTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbihBbmltYXRp
b24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0
aWFsVmFsdWUoKSkgewotICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEFuaW1h
dGlvbjo6aW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkpIHsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZUxpbmVhcjoKLSAgICAgICAgICAgIGFuaW1h
dGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oTGluZWFyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlRWFzZToKLSAgICAgICAg
ICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjo6Y3JlYXRlKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVF
YXNlSW46Ci0gICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgwLjQyLCAwLjAsIDEuMCwgMS4wKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZUVhc2VPdXQ6Ci0gICAgICAgICAgICBh
bmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNy
ZWF0ZSgwLjAsIDAuMCwgMC41OCwgMS4wKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDU1NWYWx1ZUVhc2VJbk91dDoKLSAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5n
RnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKDAuNDIsIDAuMCwgMC41
OCwgMS4wKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZVN0ZXBT
dGFydDoKLSAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oU3RlcHNUaW1p
bmdGdW5jdGlvbjo6Y3JlYXRlKDEsIHRydWUpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIENTU1ZhbHVlU3RlcEVuZDoKLSAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5n
RnVuY3Rpb24oU3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKDEsIGZhbHNlKSk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KHZhbHVlLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSgpKSB7Ci0gICAgICAgIENT
U0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSogY3ViaWNUaW1pbmdGdW5jdGlvbiA9IHN0
YXRpY19jYXN0PENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSo+KHZhbHVlKTsKLSAg
ICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uOjpjcmVhdGUoY3ViaWNUaW1pbmdGdW5jdGlvbi0+eDEoKSwgY3ViaWNUaW1pbmdGdW5jdGlv
bi0+eTEoKSwgY3ViaWNUaW1pbmdGdW5jdGlvbi0+eDIoKSwgY3ViaWNUaW1pbmdGdW5jdGlvbi0+
eTIoKSkpOwotICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVl
KCkpIHsKLSAgICAgICAgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKiBzdGVwc1RpbWluZ0Z1
bmN0aW9uID0gc3RhdGljX2Nhc3Q8Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKj4odmFsdWUp
OwotICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKFN0ZXBzVGltaW5nRnVuY3Rp
b246OmNyZWF0ZShzdGVwc1RpbWluZ0Z1bmN0aW9uLT5udW1iZXJPZlN0ZXBzKCksIHN0ZXBzVGlt
aW5nRnVuY3Rpb24tPnN0ZXBBdFN0YXJ0KCkpKTsKLSAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc0xp
bmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUoKSkKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdG
dW5jdGlvbihMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCkpOwotfQotCi12b2lkIFN0eWxl
UmVzb2x2ZXI6Om1hcE5pbmVQaWVjZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1Zh
bHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQotewotICAgIC8vIElmIHdlJ3JlIG5v
dCBhIHZhbHVlIGxpc3QsIHRoZW4gd2UgYXJlICJub25lIiBhbmQgZG9uJ3QgbmVlZCB0byBhbHRl
ciB0aGUgZW1wdHkgaW1hZ2UgYXQgYWxsLgotICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLT5pc1Zh
bHVlTGlzdCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBSZXRyaWV2ZSB0aGUgYm9yZGVy
IGltYWdlIHZhbHVlLgotICAgIENTU1ZhbHVlTGlzdCogYm9yZGVySW1hZ2UgPSBzdGF0aWNfY2Fz
dDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7Ci0KLSAgICAvLyBTZXQgdGhlIGltYWdlICh0aGlzIGtp
Y2tzIG9mZiB0aGUgbG9hZCkuCi0gICAgQ1NTUHJvcGVydHlJRCBpbWFnZVByb3BlcnR5OwotICAg
IGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlKQotICAgICAgICBp
bWFnZVByb3BlcnR5ID0gQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZTsKLSAgICBlbHNlIGlm
IChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSkKLSAgICAgICAgaW1h
Z2VQcm9wZXJ0eSA9IENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlOwotICAgIGVs
c2UKLSAgICAgICAgaW1hZ2VQcm9wZXJ0eSA9IHByb3BlcnR5OwotCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMCA7IGkgPCBib3JkZXJJbWFnZS0+bGVuZ3RoKCkgOyArK2kpIHsKLSAgICAgICAgQ1NT
VmFsdWUqIGN1cnJlbnQgPSBib3JkZXJJbWFnZS0+aXRlbShpKTsKLQotICAgICAgICBpZiAoY3Vy
cmVudC0+aXNJbWFnZVZhbHVlKCkgfHwgY3VycmVudC0+aXNJbWFnZUdlbmVyYXRvclZhbHVlKCkK
LSNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKLSAgICAgICAgICAgIHx8IGN1cnJlbnQtPmlzSW1h
Z2VTZXRWYWx1ZSgpCi0jZW5kaWYKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGltYWdlLnNl
dEltYWdlKHN0eWxlSW1hZ2UoaW1hZ2VQcm9wZXJ0eSwgY3VycmVudCkpOwotICAgICAgICBlbHNl
IGlmIChjdXJyZW50LT5pc0JvcmRlckltYWdlU2xpY2VWYWx1ZSgpKQotICAgICAgICAgICAgbWFw
TmluZVBpZWNlSW1hZ2VTbGljZShjdXJyZW50LCBpbWFnZSk7Ci0gICAgICAgIGVsc2UgaWYgKGN1
cnJlbnQtPmlzVmFsdWVMaXN0KCkpIHsKLSAgICAgICAgICAgIENTU1ZhbHVlTGlzdCogc2xhc2hM
aXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4oY3VycmVudCk7Ci0gICAgICAgICAgICAv
LyBNYXAgaW4gdGhlIGltYWdlIHNsaWNlcy4KLSAgICAgICAgICAgIGlmIChzbGFzaExpc3QtPml0
ZW0oMCkgJiYgc2xhc2hMaXN0LT5pdGVtKDApLT5pc0JvcmRlckltYWdlU2xpY2VWYWx1ZSgpKQot
ICAgICAgICAgICAgICAgIG1hcE5pbmVQaWVjZUltYWdlU2xpY2Uoc2xhc2hMaXN0LT5pdGVtKDAp
LCBpbWFnZSk7Ci0KLSAgICAgICAgICAgIC8vIE1hcCBpbiB0aGUgYm9yZGVyIHNsaWNlcy4KLSAg
ICAgICAgICAgIGlmIChzbGFzaExpc3QtPml0ZW0oMSkpCi0gICAgICAgICAgICAgICAgaW1hZ2Uu
c2V0Qm9yZGVyU2xpY2VzKG1hcE5pbmVQaWVjZUltYWdlUXVhZChzbGFzaExpc3QtPml0ZW0oMSkp
KTsKLQotICAgICAgICAgICAgLy8gTWFwIGluIHRoZSBvdXRzZXQuCi0gICAgICAgICAgICBpZiAo
c2xhc2hMaXN0LT5pdGVtKDIpKQotICAgICAgICAgICAgICAgIGltYWdlLnNldE91dHNldChtYXBO
aW5lUGllY2VJbWFnZVF1YWQoc2xhc2hMaXN0LT5pdGVtKDIpKSk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoY3VycmVudC0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgICAgICAvLyBTZXQgdGhl
IGFwcHJvcHJpYXRlIHJ1bGVzIGZvciBzdHJldGNoL3JvdW5kL3JlcGVhdCBvZiB0aGUgc2xpY2Vz
LgotICAgICAgICAgICAgbWFwTmluZVBpZWNlSW1hZ2VSZXBlYXQoY3VycmVudCwgaW1hZ2UpOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVySW1hZ2UpIHsKLSAgICAgICAgLy8gV2UgaGF2ZSB0byBwcmVzZXJ2ZSB0aGUgbGVnYWN5
IGJlaGF2aW9yIG9mIC13ZWJraXQtYm9yZGVyLWltYWdlIGFuZCBtYWtlIHRoZSBib3JkZXIgc2xp
Y2VzCi0gICAgICAgIC8vIGFsc28gc2V0IHRoZSBib3JkZXIgd2lkdGhzLiBXZSBkb24ndCBuZWVk
IHRvIHdvcnJ5IGFib3V0IHBlcmNlbnRhZ2VzLCBzaW5jZSB3ZSBkb24ndCBldmVuIHN1cHBvcnQK
LSAgICAgICAgLy8gdGhvc2Ugb24gcmVhbCBib3JkZXJzIHlldC4KLSAgICAgICAgaWYgKGltYWdl
LmJvcmRlclNsaWNlcygpLnRvcCgpLmlzRml4ZWQoKSkKLSAgICAgICAgICAgIHN0eWxlKCktPnNl
dEJvcmRlclRvcFdpZHRoKGltYWdlLmJvcmRlclNsaWNlcygpLnRvcCgpLnZhbHVlKCkpOwotICAg
ICAgICBpZiAoaW1hZ2UuYm9yZGVyU2xpY2VzKCkucmlnaHQoKS5pc0ZpeGVkKCkpCi0gICAgICAg
ICAgICBzdHlsZSgpLT5zZXRCb3JkZXJSaWdodFdpZHRoKGltYWdlLmJvcmRlclNsaWNlcygpLnJp
Z2h0KCkudmFsdWUoKSk7Ci0gICAgICAgIGlmIChpbWFnZS5ib3JkZXJTbGljZXMoKS5ib3R0b20o
KS5pc0ZpeGVkKCkpCi0gICAgICAgICAgICBzdHlsZSgpLT5zZXRCb3JkZXJCb3R0b21XaWR0aChp
bWFnZS5ib3JkZXJTbGljZXMoKS5ib3R0b20oKS52YWx1ZSgpKTsKLSAgICAgICAgaWYgKGltYWdl
LmJvcmRlclNsaWNlcygpLmxlZnQoKS5pc0ZpeGVkKCkpCi0gICAgICAgICAgICBzdHlsZSgpLT5z
ZXRCb3JkZXJMZWZ0V2lkdGgoaW1hZ2UuYm9yZGVyU2xpY2VzKCkubGVmdCgpLnZhbHVlKCkpOwot
ICAgIH0KLX0KLQotdm9pZCBTdHlsZVJlc29sdmVyOjptYXBOaW5lUGllY2VJbWFnZVNsaWNlKENT
U1ZhbHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQotewotICAgIGlmICghdmFsdWUg
fHwgIXZhbHVlLT5pc0JvcmRlckltYWdlU2xpY2VWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBSZXRyaWV2ZSB0aGUgYm9yZGVyIGltYWdlIHZhbHVlLgotICAgIENTU0JvcmRlcklt
YWdlU2xpY2VWYWx1ZSogYm9yZGVySW1hZ2VTbGljZSA9IHN0YXRpY19jYXN0PENTU0JvcmRlcklt
YWdlU2xpY2VWYWx1ZSo+KHZhbHVlKTsKLQotICAgIC8vIFNldCB1cCBhIGxlbmd0aCBib3ggdG8g
cmVwcmVzZW50IG91ciBpbWFnZSBzbGljZXMuCi0gICAgTGVuZ3RoQm94IGJveDsKLSAgICBRdWFk
KiBzbGljZXMgPSBib3JkZXJJbWFnZVNsaWNlLT5zbGljZXMoKTsKLSAgICBpZiAoc2xpY2VzLT50
b3AoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX3RvcCA9IExlbmd0aChzbGljZXMt
PnRvcCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICBlbHNlCi0gICAgICAgIGJv
eC5tX3RvcCA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKLSAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQ
ZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRv
bSgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICBlbHNlCi0gICAgICAgIGJveC5t
X2JvdHRvbSA9IExlbmd0aCgoaW50KXNsaWNlcy0+Ym90dG9tKCktPmdldEZsb2F0VmFsdWUoQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7Ci0gICAgaWYgKHNsaWNlcy0+bGVm
dCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMt
PmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgZWxzZQotICAgICAgICBi
b3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKLSAgICBpZiAoc2xpY2VzLT5yaWdodCgpLT5p
c1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBMZW5ndGgoc2xpY2VzLT5yaWdo
dCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICBlbHNlCi0gICAgICAgIGJveC5t
X3JpZ2h0ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0SW50VmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7Ci0gICAgaW1hZ2Uuc2V0SW1hZ2VTbGljZXMoYm94
KTsKLQotICAgIC8vIFNldCBvdXIgZmlsbCBtb2RlLgotICAgIGltYWdlLnNldEZpbGwoYm9yZGVy
SW1hZ2VTbGljZS0+bV9maWxsKTsKLX0KLQotTGVuZ3RoQm94IFN0eWxlUmVzb2x2ZXI6Om1hcE5p
bmVQaWVjZUltYWdlUXVhZChDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZSB8fCAh
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIExlbmd0aEJveCgpOwot
Ci0gICAgLy8gR2V0IG91ciB6b29tIHZhbHVlLgotICAgIGZsb2F0IHpvb20gPSB1c2VTVkdab29t
UnVsZXMoKSA/IDEuMGYgOiBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7Ci0KLSAgICAvLyBSZXRy
aWV2ZSB0aGUgcHJpbWl0aXZlIHZhbHVlLgotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBib3JkZXJX
aWR0aHMgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLQotICAgIC8v
IFNldCB1cCBhIGxlbmd0aCBib3ggdG8gcmVwcmVzZW50IG91ciBpbWFnZSBzbGljZXMuCi0gICAg
TGVuZ3RoQm94IGJveDsgLy8gRGVmYXVsdHMgdG8gJ2F1dG8nIHNvIHdlIGRvbid0IGhhdmUgdG8g
aGFuZGxlIHRoYXQgZXhwbGljaXRseSBiZWxvdy4KLSAgICBRdWFkKiBzbGljZXMgPSBib3JkZXJX
aWR0aHMtPmdldFF1YWRWYWx1ZSgpOwotICAgIGlmIChzbGljZXMtPnRvcCgpLT5pc051bWJlcigp
KQotICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50VmFsdWUo
KSwgUmVsYXRpdmUpOwotICAgIGVsc2UgaWYgKHNsaWNlcy0+dG9wKCktPmlzUGVyY2VudGFnZSgp
KQotICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7Ci0gICAgZWxz
ZSBpZiAoc2xpY2VzLT50b3AoKS0+Z2V0SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pCi0gICAgICAg
IGJveC5tX3RvcCA9IHNsaWNlcy0+dG9wKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZSgp
LCByb290RWxlbWVudFN0eWxlKCksIHpvb20pOwotCi0gICAgaWYgKHNsaWNlcy0+cmlnaHQoKS0+
aXNOdW1iZXIoKSkKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBMZW5ndGgoc2xpY2VzLT5yaWdodCgp
LT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7Ci0gICAgZWxzZSBpZiAoc2xpY2VzLT5yaWdodCgp
LT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBMZW5ndGgoc2xpY2VzLT5y
aWdodCgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0Up
LCBQZXJjZW50KTsKLSAgICBlbHNlIGlmIChzbGljZXMtPnJpZ2h0KCktPmdldElkZW50KCkgIT0g
Q1NTVmFsdWVBdXRvKQotICAgICAgICBib3gubV9yaWdodCA9IHNsaWNlcy0+cmlnaHQoKS0+Y29t
cHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9vbSk7Ci0K
LSAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNOdW1iZXIoKSkKLSAgICAgICAgYm94Lm1fYm90
dG9tID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsK
LSAgICBlbHNlIGlmIChzbGljZXMtPmJvdHRvbSgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAg
Ym94Lm1fYm90dG9tID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwotICAgIGVsc2UgaWYg
KHNsaWNlcy0+Ym90dG9tKCktPmdldElkZW50KCkgIT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICBi
b3gubV9ib3R0b20gPSBzbGljZXMtPmJvdHRvbSgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5
bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tKTsKLQotICAgIGlmIChzbGljZXMtPmxlZnQo
KS0+aXNOdW1iZXIoKSkKLSAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxlZnQo
KS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOwotICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgp
LT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxl
ZnQoKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwg
UGVyY2VudCk7Ci0gICAgZWxzZSBpZiAoc2xpY2VzLT5sZWZ0KCktPmdldElkZW50KCkgIT0gQ1NT
VmFsdWVBdXRvKQotICAgICAgICBib3gubV9sZWZ0ID0gc2xpY2VzLT5sZWZ0KCktPmNvbXB1dGVM
ZW5ndGg8TGVuZ3RoPihzdHlsZSgpLCByb290RWxlbWVudFN0eWxlKCksIHpvb20pOwotCi0gICAg
cmV0dXJuIGJveDsKLX0KLQotdm9pZCBTdHlsZVJlc29sdmVyOjptYXBOaW5lUGllY2VJbWFnZVJl
cGVhdChDU1NWYWx1ZSogdmFsdWUsIE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKLXsKLSAgICBpZiAo
IXZhbHVlIHx8ICF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUt
PmdldFBhaXJWYWx1ZSgpOwotICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFp
ci0+c2Vjb25kKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGludCBmaXJzdElkZW50aWZpZXIg
PSBwYWlyLT5maXJzdCgpLT5nZXRJZGVudCgpOwotICAgIGludCBzZWNvbmRJZGVudGlmaWVyID0g
cGFpci0+c2Vjb25kKCktPmdldElkZW50KCk7Ci0KLSAgICBFTmluZVBpZWNlSW1hZ2VSdWxlIGhv
cml6b250YWxSdWxlOwotICAgIHN3aXRjaCAoZmlyc3RJZGVudGlmaWVyKSB7Ci0gICAgY2FzZSBD
U1NWYWx1ZVN0cmV0Y2g6Ci0gICAgICAgIGhvcml6b250YWxSdWxlID0gU3RyZXRjaEltYWdlUnVs
ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZVJvdW5kOgotICAgICAgICBob3Jp
em9udGFsUnVsZSA9IFJvdW5kSW1hZ2VSdWxlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENT
U1ZhbHVlU3BhY2U6Ci0gICAgICAgIGhvcml6b250YWxSdWxlID0gU3BhY2VJbWFnZVJ1bGU7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6IC8vIENTU1ZhbHVlUmVwZWF0Ci0gICAgICAgIGhv
cml6b250YWxSdWxlID0gUmVwZWF0SW1hZ2VSdWxlOwotICAgICAgICBicmVhazsKLSAgICB9Ci0g
ICAgaW1hZ2Uuc2V0SG9yaXpvbnRhbFJ1bGUoaG9yaXpvbnRhbFJ1bGUpOwotCi0gICAgRU5pbmVQ
aWVjZUltYWdlUnVsZSB2ZXJ0aWNhbFJ1bGU7Ci0gICAgc3dpdGNoIChzZWNvbmRJZGVudGlmaWVy
KSB7Ci0gICAgY2FzZSBDU1NWYWx1ZVN0cmV0Y2g6Ci0gICAgICAgIHZlcnRpY2FsUnVsZSA9IFN0
cmV0Y2hJbWFnZVJ1bGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVSb3VuZDoK
LSAgICAgICAgdmVydGljYWxSdWxlID0gUm91bmRJbWFnZVJ1bGU7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTVmFsdWVTcGFjZToKLSAgICAgICAgdmVydGljYWxSdWxlID0gU3BhY2VJbWFn
ZVJ1bGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6IC8vIENTU1ZhbHVlUmVwZWF0Ci0g
ICAgICAgIHZlcnRpY2FsUnVsZSA9IFJlcGVhdEltYWdlUnVsZTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIGltYWdlLnNldFZlcnRpY2FsUnVsZSh2ZXJ0aWNhbFJ1bGUpOwotfQotCiB2b2lk
IFN0eWxlUmVzb2x2ZXI6OmNoZWNrRm9yVGV4dFNpemVBZGp1c3QoKQogewogICAgIGlmIChtX3N0
eWxlLT50ZXh0U2l6ZUFkanVzdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXgg
MjlmODAwZTBjNmVjNzA1MmUzNmZjMjU5YThiMjFjOThiNjViMDlkNi4uYzY2MjhmZDcyM2VlMjU4
NmI1ZGQ5NWUwMWUwNTIzYzVjYzc5NDBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5o
CkBAIC0yMyw2ICsyMyw3IEBACiAjZGVmaW5lIFN0eWxlUmVzb2x2ZXJfaAogCiAjaW5jbHVkZSAi
Q1NTUnVsZS5oIgorI2luY2x1ZGUgIkNTU1RvU3R5bGVNYXAuaCIKICNpbmNsdWRlICJDU1NWYWx1
ZUxpc3QuaCIKICNpbmNsdWRlICJMaW5rSGFzaC5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHAu
aCIKQEAgLTQxMSw2ICs0MTIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExlbmd0aCBjb252ZXJ0
VG9JbnRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxl
KiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSk7CiAgICAgc3RhdGljIExlbmd0aCBj
b252ZXJ0VG9GbG9hdExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSosIFJlbmRlclN0eWxlKiwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxKTsKIAorICAgIENTU1Rv
U3R5bGVNYXAqIHN0eWxlTWFwKCkgeyByZXR1cm4gJm1fc3R5bGVNYXA7IH0KKyAgICAKIHByaXZh
dGU6CiAgICAgc3RhdGljIFJlbmRlclN0eWxlKiBzX3N0eWxlTm90WWV0QXZhaWxhYmxlOwogCkBA
IC00MTksMzIgKzQyMiw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNhY2hlQm9yZGVyQW5kQmFj
a2dyb3VuZCgpOwogCi0gICAgdm9pZCBtYXBGaWxsQXR0YWNobWVudChDU1NQcm9wZXJ0eUlELCBG
aWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwRmlsbENsaXAoQ1NTUHJvcGVydHlJ
RCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKLSAgICB2b2lkIG1hcEZpbGxDb21wb3NpdGUoQ1NT
UHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKLSAgICB2b2lkIG1hcEZpbGxPcmln
aW4oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKLSAgICB2b2lkIG1hcEZp
bGxJbWFnZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwotICAgIHZvaWQg
bWFwRmlsbFJlcGVhdFgoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKLSAg
ICB2b2lkIG1hcEZpbGxSZXBlYXRZKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVl
Kik7Ci0gICAgdm9pZCBtYXBGaWxsU2l6ZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NW
YWx1ZSopOwotICAgIHZvaWQgbWFwRmlsbFhQb3NpdGlvbihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5
ZXIqLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwRmlsbFlQb3NpdGlvbihDU1NQcm9wZXJ0eUlE
LCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwotCi0gICAgdm9pZCBtYXBBbmltYXRpb25EZWxheShB
bmltYXRpb24qLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwQW5pbWF0aW9uRGlyZWN0aW9uKEFu
aW1hdGlvbiosIENTU1ZhbHVlKik7Ci0gICAgdm9pZCBtYXBBbmltYXRpb25EdXJhdGlvbihBbmlt
YXRpb24qLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwQW5pbWF0aW9uRmlsbE1vZGUoQW5pbWF0
aW9uKiwgQ1NTVmFsdWUqKTsKLSAgICB2b2lkIG1hcEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KEFu
aW1hdGlvbiosIENTU1ZhbHVlKik7Ci0gICAgdm9pZCBtYXBBbmltYXRpb25OYW1lKEFuaW1hdGlv
biosIENTU1ZhbHVlKik7Ci0gICAgdm9pZCBtYXBBbmltYXRpb25QbGF5U3RhdGUoQW5pbWF0aW9u
KiwgQ1NTVmFsdWUqKTsKLSAgICB2b2lkIG1hcEFuaW1hdGlvblByb3BlcnR5KEFuaW1hdGlvbios
IENTU1ZhbHVlKik7Ci0gICAgdm9pZCBtYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbihBbmltYXRp
b24qLCBDU1NWYWx1ZSopOwotCi1wdWJsaWM6Ci0gICAgdm9pZCBtYXBOaW5lUGllY2VJbWFnZShD
U1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSosIE5pbmVQaWVjZUltYWdlJik7Ci0gICAgdm9pZCBtYXBO
aW5lUGllY2VJbWFnZVNsaWNlKENTU1ZhbHVlKiwgTmluZVBpZWNlSW1hZ2UmKTsKLSAgICBMZW5n
dGhCb3ggbWFwTmluZVBpZWNlSW1hZ2VRdWFkKENTU1ZhbHVlKik7Ci0gICAgdm9pZCBtYXBOaW5l
UGllY2VJbWFnZVJlcGVhdChDU1NWYWx1ZSosIE5pbmVQaWVjZUltYWdlJik7CiBwcml2YXRlOgog
ICAgIGJvb2wgY2FuU2hhcmVTdHlsZVdpdGhDb250cm9sKFN0eWxlZEVsZW1lbnQqKSBjb25zdDsK
IApAQCAtNTE0LDYgKzQ5MSw4IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHlsZVJ1bGUqLCBS
ZWZQdHI8Q1NTU3R5bGVSdWxlPiA+IG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXA7CiAgICAg
SGFzaFNldDxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJT
ZXQ7CiAKKyAgICBDU1NUb1N0eWxlTWFwIG1fc3R5bGVNYXA7CisKICNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpCiAgICAgYm9vbCBtX2hhc1BlbmRpbmdTaGFkZXJzOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149299</attachid>
            <date>2012-06-25 09:01:49 -0700</date>
            <delta_ts>2012-06-25 09:06:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89881-20120625090148.patch</filename>
            <type>text/plain</type>
            <size>100464</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ1YWI0NjlmZDYzODY2
ODRlYmNiYWFlNjgzOGUzOTJmYWYzOWExMy4uYTYzYTIxYzM5YTZmMTQwYTQ2MWEzZWY2YjczMWVm
ZTY4Yzk4OWQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA2LTI1ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBTcGxpdCBtYXAqIGZ1bmN0aW9u
cyBvdXQgb2YgU3R5bGVSZXNvbHZlciBpbnRvIGEgaGVscGVyIG9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk4ODEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSBtYXAqIGZ1bmN0aW9ucyBh
cmUgY29tcGxldGVseSBpbmRlcGVuZGVudCBvZiB0aGUgcmVzdCBvZiBTdHlsZVJlc29sdmVyCisg
ICAgICAgIGFuZCBvbmx5IGV4aXN0IHRvIHNlcnZlIFN0eWxlQnVpbGRlci4KKyAgICAgICAgQ1NT
VG9TdHlsZU1hcCBkb2Vzbid0IGV2ZW4gd2FudCB0byBoYXZlIGEgU3R5bGVSZXNvbHZlciBwb2lu
dGVyLCBidXQKKyAgICAgICAgY3VycmVudGx5IG5lZWRzIG9uZSB0byBhY2Nlc3MgdGhlIHJlc29s
dmUtbGlmZXRpbWUgY2FjaGVzIGZvciB0aGUKKyAgICAgICAgY3VycmVudCByZXNvbHZlLiAgT25j
ZSB3ZSBzcGxpdCBvdXQgdGhhdCBwZXItcmVzb2x2ZSBzdGF0ZSBpbnRvCisgICAgICAgIHNvbWUg
c29ydCBvZiBSZXNvbHZlU3RhdGUvUmVzb2x2ZUluZm8gb2JqZWN0IChha2luIHRvIFBhaW50SW5m
by9MYXlvdXRTdGF0ZSkKKyAgICAgICAgdGhlbiB0aGlzIG9iamVjdCB3aWxsIGJlIGV2ZW4gc2lt
cGxlci4KKworICAgICAgICBObyBiZWhhdmlvcmFsIGNoYW5nZSwgdGh1cyBubyB0ZXN0cy4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBjc3MvQ1NTVG9TdHlsZU1hcC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpzdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpyb290RWxlbWVudFN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1RvU3R5bGVNYXA6OnVzZVNWR1pvb21SdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb1N0eWxlTWFwOjpzdHlsZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVN
YXA6Om1hcEZpbGxBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6
Om1hcEZpbGxDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxD
b21wb3NpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbE9yaWdp
bik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFgpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFkpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9T
dHlsZU1hcDo6bWFwRmlsbFhQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxl
TWFwOjptYXBGaWxsWVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6
Om1hcEFuaW1hdGlvbkRlbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1h
cEFuaW1hdGlvbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25EdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25GaWxsTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25JdGVyYXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxl
TWFwOjptYXBBbmltYXRpb25OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6
Om1hcEFuaW1hdGlvblBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBBbmltYXRpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0
eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxl
TWFwOjptYXBOaW5lUGllY2VJbWFnZVNsaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5
bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0
eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVJlcGVhdCk6CisgICAgICAgICogY3NzL0NTU1RvU3R5
bGVNYXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENTU1RvU3R5bGVN
YXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6Q1NTVG9TdHlsZU1hcCk6Cisg
ICAgICAgICogY3NzL1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5RmlsbExheWVyOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJv
cGVydHlCb3JkZXJJbWFnZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBbmltYXRpb246Om1hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcik6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3R5
bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZU1hcCk6CisgICAgICAgIChTdHlsZVJl
c29sdmVyKToKKwogMjAxMi0wNi0yNSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55
MTAwLm5ldD4KIAogICAgICAgICBBZGQgc3RhdGljIHF1YWxpZmllciB0byBHcmFwaGljc0NvbnRl
eHQzRDo6ZXh0cmFjdEltYWdlRGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZmNkZWFiYTkz
M2JkMTM3M2Y4ZjI0NDJmMzMyZGRhMDVkYTg1NzI5Zi4uNmQzZGE3ZjhjMjRiNDYyN2M1ZjEyMzM5
OThkZjM3MGU1MTM0NDNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUwMyw2ICs1MDMsNyBA
QCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL0NTU1N0eWxlUnVsZS5jcHAKICAgICBjc3Mv
Q1NTU3R5bGVTaGVldC5jcHAKICAgICBjc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKKyAg
ICBjc3MvQ1NTVG9TdHlsZU1hcC5jcHAKICAgICBjc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3Bw
CiAgICAgY3NzL0NTU1ZhbHVlLmNwcAogICAgIGNzcy9DU1NWYWx1ZUxpc3QuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA0ODYxZjgyYWRkM2FkMTg3ZjAxM2UxOTZlZjFkNzEz
NDE0NjcxOGQxLi4yYTE0MzE2NjM0NTQ3ZjA0MmUzMjEyNTllMGRiNTJlYjQ5ZDM1MmNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE2NzksNiArMTY3OSw4IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBcCiAJU291
cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVG9TdHlsZU1hcC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NXcmFwU2hhcGVzLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvY3NzL0NTU1dyYXBTaGFwZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVS
YW5nZVZhbHVlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDczZTY3MGVhZTI1ZTg1NTgxOWI1
M2I4ZWIxYjU3ZDg1NzM0MmI4Ni4uZTllYmQ2YzFmNGUzOGRkODI1MDQ0ZWUxNDEwOWM0MWMzOWFl
OWI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjUwNSw2ICsyNTA1LDggQEAKICAgICAgICAgICAg
ICdjc3MvQ1NTU3R5bGVTaGVldC5oJywKICAgICAgICAgICAgICdjc3MvQ1NTVGltaW5nRnVuY3Rp
b25WYWx1ZS5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgn
LAorICAgICAgICAgICAgJ2Nzcy9DU1NUb1N0eWxlTWFwLmNwcCcsCisgICAgICAgICAgICAnY3Nz
L0NTU1RvU3R5bGVNYXAuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVl
LmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgnLAogICAgICAg
ICAgICAgJ2Nzcy9DU1NVbmtub3duUnVsZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYTAwMmUyOWRhNDdiNjk4NWZiN2ViNmNkZDRiNTZm
MmMwYTA3NDY2MC4uZDEyZGI1NjZjOGMzOTU5NmZkMGYxMjU0OGUwNzExNTY4NmMxMjdlOSAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTM2NjM1
LDYgKzM2NjM1LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGNzc1xDU1NUb1N0eWxlTWFwLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1RvU3R5bGVNYXAuaCIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1VuaWNvZGVS
YW5nZVZhbHVlLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDdmOTI5
MjM2ZDM3ZmI0NjU5YThiNjEwYmFkNGM5ZjM5MzkwNDJmMC4uY2M4MzQ0MTM0NTdhMzQwOTNkYzBj
NmUyMTI1YTBkODk5ZjFjYzc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDE4Nyw2ICs0MTg3LDggQEAKIAkJQTg3MURGRTQw
QTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlcldpZGdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg3MURGRTAwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRl
cldpZGdldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUE4NzFERkU1MEExNTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJXaWRnZXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg3MURGRTEwQTE1Mzc2QjAw
QjEyQTY4IC8qIFJlbmRlcldpZGdldC5jcHAgKi87IH07CiAJCUE4NzQ4QkUwMTJDQkYyREMwMDFG
QkE0MSAvKiBIYXNoVG9vbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4NzQ4QkRGMTJDQkYyREMwMDFGQkE0MSAvKiBIYXNoVG9vbHMuaCAqLzsgfTsK
KwkJQTg4MkRBMjAxNTkzODQ2QTAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg4MkRBMUYxNTkzODQ2QTAw
MDExNUVEIC8qIENTU1RvU3R5bGVNYXAuY3BwICovOyB9OworCQlBODgyREEyMzE1OTM4NDhEMDAw
MTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTg4MkRBMjIxNTkzODQ4RDAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAu
aCAqLzsgfTsKIAkJQTg4M0RGMjcwRjNEMDQ1RDAwRjE5QkY2IC8qIFZpc2libGVTZWxlY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg4M0RG
MjUwRjNEMDQ1RDAwRjE5QkY2IC8qIFZpc2libGVTZWxlY3Rpb24uY3BwICovOyB9OwogCQlBODgz
REYyODBGM0QwNDVEMDBGMTlCRjYgLyogVmlzaWJsZVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg4M0RGMjYwRjNEMDQ1RDAwRjE5QkY2
IC8qIFZpc2libGVTZWxlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBODhBRDUyRjA5NTI0QjkyMDAxREQxOTYgLyogUXVhcnR6Q29yZS5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBODVEN0EyRjA4NzlFQkE5MDA2QTkxNzIgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgKi87IH07
CkBAIC0xMTE5Nyw2ICsxMTE5OSw4IEBACiAJCUE4NzQ4QkRGMTJDQkYyREMwMDFGQkE0MSAvKiBI
YXNoVG9vbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFzaFRvb2xzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAv
KiBJbWFnZU9yaWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElt
YWdlT3JpZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg3NDhENzQx
MkNDM0Y4OTAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VPcmllbnRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE4ODJEQTFGMTU5Mzg0NkEwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFw
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1RvU3R5bGVNYXAu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBODgyREEyMjE1OTM4NDhEMDAwMTE1
RUQgLyogQ1NTVG9TdHlsZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
U1NUb1N0eWxlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4ODNERjI1MEYz
RDA0NUQwMEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFZpc2libGVTZWxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBODgzREYyNjBGM0QwNDVEMDBGMTlCRjYgLyogVmlzaWJsZVNlbGVjdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpYmxlU2VsZWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4ODZDREMyMTRGQkJBQTMwMEQyNzlGNCAv
KiBXb3JrZXJDb250ZXh0V2ViU29ja2V0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXb3Jr
ZXJDb250ZXh0V2ViU29ja2V0LmlkbDsgcGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJD
b250ZXh0V2ViU29ja2V0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwOTk3
LDYgKzIxMDAxLDggQEAKIAkJCQlCQzlBREQ3RjBDQzQwOTIyMDAwOThDNEMgLyogV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUuY3BwICovLAogCQkJCUJDOUFERDIyMENDNDAzMjYwMDA5OEM0QyAvKiBX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oICovLAogCQkJCTMxNjExRTU0MEUxQzRENEEwMEY2QTU3
OSAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5pZGwgKi8sCisJCQkJQTg4MkRBMUYxNTkzODQ2
QTAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAuY3BwICovLAorCQkJCUE4ODJEQTIyMTU5Mzg0OEQw
MDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNzczsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNTE0OCw2ICsyNTE1NCw3IEBACiAJCQkJQ0U3
QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTA5ODdDMjcxNTdENjc2RDAwQkRBODM1IC8qIEN1c3RvbUZpbHRlckds
b2JhbENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGMzJCQjFCMTRGQTg1RTgwMEY2QzFB
MyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUE4ODJEQTIz
MTU5Mzg0OEQwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI4
MjAwLDYgKzI4MjA3LDcgQEAKIAkJCQlDRTdCMkRCNDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U3QjJEQjYxNTg2
QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUwOTg3QzI2MTU3RDY3NkQwMEJEQTgzNSAvKiBDdXN0b21GaWx0ZXJHbG9iYWxDb250
ZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE4ODJEQTIwMTU5Mzg0NkEwMDAxMTVFRCAvKiBD
U1NUb1N0eWxlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVN
YXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUxNTRjZWNkM2U4YTA1Y2U2NDQ2NDFjY2E5NTNhOTg3M2U1Nzg0
ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5j
cHAKQEAgLTAsMCArMSw2NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNC0yMDA1IEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NyBOaWNob2xhcyBTaGFua3MgKHdlYmtpdEBuaWNrc2hhbmtzLmNvbSkKKyAqIENvcHlyaWdodCAo
QykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFBy
b3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5
IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNo
bW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIENvZGUgQXVyb3JhIEZvcnVtLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQ1NTVG9TdHlsZU1hcC5oIgorCisjaW5jbHVkZSAiQW5pbWF0aW9uLmgiCisjaW5j
bHVkZSAiQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZl
VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVk
ZSAiQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMu
aCIKKyNpbmNsdWRlICJGaWxsTGF5ZXIuaCIKKyNpbmNsdWRlICJQYWlyLmgiCisjaW5jbHVkZSAi
UmVjdC5oIgorI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitSZW5kZXJTdHlsZSogQ1NTVG9TdHlsZU1hcDo6c3R5bGUoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3Jlc29sdmVyLT5zdHlsZSgpOworfQorICAgIAorUmVuZGVyU3R5bGUqIENTU1RvU3R5
bGVNYXA6OnJvb3RFbGVtZW50U3R5bGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc29sdmVy
LT5yb290RWxlbWVudFN0eWxlKCk7Cit9CisKK2Jvb2wgQ1NTVG9TdHlsZU1hcDo6dXNlU1ZHWm9v
bVJ1bGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvbHZlci0+dXNlU1ZHWm9vbVJ1bGVz
KCk7Cit9CisgICAgCitQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IENTU1RvU3R5bGVNYXA6OnN0eWxl
SW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBDU1NWYWx1ZSogdmFsdWUpCit7CisgICAg
cmV0dXJuIG1fcmVzb2x2ZXItPnN0eWxlSW1hZ2UocHJvcGVydHlJZCwgdmFsdWUpOworfQorCit2
b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxBdHRhY2htZW50KENTU1Byb3BlcnR5SUQsIEZpbGxM
YXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlh
bFZhbHVlKCkpIHsKKyAgICAgICAgbGF5ZXItPnNldEF0dGFjaG1lbnQoRmlsbExheWVyOjppbml0
aWFsRmlsbEF0dGFjaG1lbnQobGF5ZXItPnR5cGUoKSkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZUZpeGVkOgorICAgICAgICBsYXllci0+c2V0
QXR0YWNobWVudChGaXhlZEJhY2tncm91bmRBdHRhY2htZW50KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDU1NWYWx1ZVNjcm9sbDoKKyAgICAgICAgbGF5ZXItPnNldEF0dGFjaG1lbnQoU2Ny
b2xsQmFja2dyb3VuZEF0dGFjaG1lbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Zh
bHVlTG9jYWw6CisgICAgICAgIGxheWVyLT5zZXRBdHRhY2htZW50KExvY2FsQmFja2dyb3VuZEF0
dGFjaG1lbnQpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm47
CisgICAgfQorfQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxDbGlwKENTU1Byb3BlcnR5
SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUt
PmlzSW5pdGlhbFZhbHVlKCkpIHsKKyAgICAgICAgbGF5ZXItPnNldENsaXAoRmlsbExheWVyOjpp
bml0aWFsRmlsbENsaXAobGF5ZXItPnR5cGUoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBsYXllci0+c2V0Q2xpcCgqcHJpbWl0aXZlVmFs
dWUpOworfQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxDb21wb3NpdGUoQ1NTUHJvcGVy
dHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1
ZS0+aXNJbml0aWFsVmFsdWUoKSkgeworICAgICAgICBsYXllci0+c2V0Q29tcG9zaXRlKEZpbGxM
YXllcjo6aW5pdGlhbEZpbGxDb21wb3NpdGUobGF5ZXItPnR5cGUoKSkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBsYXllci0+c2V0Q29tcG9z
aXRlKCpwcmltaXRpdmVWYWx1ZSk7Cit9CisKK3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbE9y
aWdpbihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit7
CisgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CisgICAgICAgIGxheWVyLT5zZXRP
cmlnaW4oRmlsbExheWVyOjppbml0aWFsRmlsbE9yaWdpbihsYXllci0+dHlwZSgpKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIGxheWVyLT5z
ZXRPcmlnaW4oKnByaW1pdGl2ZVZhbHVlKTsKK30KKworCit2b2lkIENTU1RvU3R5bGVNYXA6Om1h
cEZpbGxJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NW
YWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CisgICAg
ICAgIGxheWVyLT5zZXRJbWFnZShGaWxsTGF5ZXI6OmluaXRpYWxGaWxsSW1hZ2UobGF5ZXItPnR5
cGUoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF5ZXItPnNldEltYWdlKHN0
eWxlSW1hZ2UocHJvcGVydHksIHZhbHVlKSk7Cit9CisKK3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFw
RmlsbFJlcGVhdFgoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZh
bHVlKQoreworICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgeworICAgICAgICBsYXll
ci0+c2V0UmVwZWF0WChGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WChsYXllci0+dHlwZSgp
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAg
IGxheWVyLT5zZXRSZXBlYXRYKCpwcmltaXRpdmVWYWx1ZSk7Cit9CisKK3ZvaWQgQ1NTVG9TdHls
ZU1hcDo6bWFwRmlsbFJlcGVhdFkoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NT
VmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgeworICAg
ICAgICBsYXllci0+c2V0UmVwZWF0WShGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WShsYXll
ci0+dHlwZSgpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOworICAgIGxheWVyLT5zZXRSZXBlYXRZKCpwcmltaXRpdmVWYWx1ZSk7Cit9CisKK3ZvaWQg
Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXll
ciwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkgeworICAgICAgICBsYXllci0+c2V0U2l6ZVR5cGUoU2l6ZU5vbmUpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ29udGFpbikKKyAgICAgICAgbGF5ZXItPnNldFNp
emVUeXBlKENvbnRhaW4pOworICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlQ292ZXIpCisgICAgICAgIGxheWVyLT5zZXRTaXplVHlwZShDb3Zlcik7Cisg
ICAgZWxzZQorICAgICAgICBsYXllci0+c2V0U2l6ZVR5cGUoU2l6ZUxlbmd0aCk7CisKKyAgICBM
ZW5ndGhTaXplIGIgPSBGaWxsTGF5ZXI6OmluaXRpYWxGaWxsU2l6ZUxlbmd0aChsYXllci0+dHlw
ZSgpKTsKKworICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSB8fCBwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUNvbnRhaW4gfHwgcHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkgPT0gQ1NTVmFsdWVDb3ZlcikgeworICAgICAgICBsYXllci0+c2V0U2l6ZUxlbmd0aChi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdHls
ZSgpLT5lZmZlY3RpdmVab29tKCk7CisKKyAgICBMZW5ndGggZmlyc3RMZW5ndGg7CisgICAgTGVu
Z3RoIHNlY29uZExlbmd0aDsKKworICAgIGlmIChQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUt
PmdldFBhaXJWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmaXJzdCA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+Zmlyc3QoKSk7CisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmQgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHBhaXItPnNlY29uZCgpKTsKKyAgICAgICAgZmlyc3RMZW5ndGggPSBmaXJzdC0+Y29udmVydFRv
TGVuZ3RoPEFueUNvbnZlcnNpb24+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZh
Y3Rvcik7CisgICAgICAgIHNlY29uZExlbmd0aCA9IHNlY29uZC0+Y29udmVydFRvTGVuZ3RoPEFu
eUNvbnZlcnNpb24+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3Rvcik7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZmlyc3RMZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29udmVy
dFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9v
bUZhY3Rvcik7CisgICAgICAgIHNlY29uZExlbmd0aCA9IExlbmd0aCgpOworICAgIH0KKworICAg
IGlmIChmaXJzdExlbmd0aC5pc1VuZGVmaW5lZCgpIHx8IHNlY29uZExlbmd0aC5pc1VuZGVmaW5l
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBiLnNldFdpZHRoKGZpcnN0TGVuZ3RoKTsKKyAg
ICBiLnNldEhlaWdodChzZWNvbmRMZW5ndGgpOworICAgIGxheWVyLT5zZXRTaXplTGVuZ3RoKGIp
OworfQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxYUG9zaXRpb24oQ1NTUHJvcGVydHlJ
RCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+
aXNJbml0aWFsVmFsdWUoKSkgeworICAgICAgICBsYXllci0+c2V0WFBvc2l0aW9uKEZpbGxMYXll
cjo6aW5pdGlhbEZpbGxYUG9zaXRpb24obGF5ZXItPnR5cGUoKSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBmbG9hdCB6b29tRmFjdG9yID0gc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgp
OworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgTGVuZ3RoIGxlbmd0aDsKKyAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkpCisgICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZh
bHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgpLCB6
b29tRmFjdG9yKTsKKyAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50YWdlKCkp
CisgICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUo
KSwgUGVyY2VudCk7CisgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzQ2FsY3VsYXRlZFBl
cmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCisgICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRpdmVW
YWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPnRvQ2FsY1ZhbHVlKHN0eWxlKCksIHJvb3RFbGVtZW50U3R5
bGUoKSwgem9vbUZhY3RvcikpOworICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1ZpZXdw
b3J0UGVyY2VudGFnZUxlbmd0aCgpKQorICAgICAgICBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+
dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm47Cisg
ICAgbGF5ZXItPnNldFhQb3NpdGlvbihsZW5ndGgpOworfQorCit2b2lkIENTU1RvU3R5bGVNYXA6
Om1hcEZpbGxZUG9zaXRpb24oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFs
dWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgeworICAgICAg
ICBsYXllci0+c2V0WVBvc2l0aW9uKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxZUG9zaXRpb24obGF5
ZXItPnR5cGUoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB6b29tRmFj
dG9yID0gc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7
CisgICAgTGVuZ3RoIGxlbmd0aDsKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkp
CisgICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4o
c3R5bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKKyAgICBlbHNlIGlmIChw
cmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50YWdlKCkpCisgICAgICAgIGxlbmd0aCA9IExlbmd0aChw
cmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgZWxzZSBpZiAo
cHJpbWl0aXZlVmFsdWUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCisgICAg
ICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPnRvQ2Fs
Y1ZhbHVlKHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3RvcikpOworICAgIGVs
c2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpKQorICAg
ICAgICBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCk7
CisgICAgZWxzZQorICAgICAgICByZXR1cm47CisgICAgbGF5ZXItPnNldFlQb3NpdGlvbihsZW5n
dGgpOworfQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkRlbGF5KEFuaW1hdGlv
biogYW5pbWF0aW9uLCBDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLT5pc0luaXRp
YWxWYWx1ZSgpKSB7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0RGVsYXkoQW5pbWF0aW9uOjppbml0
aWFsQW5pbWF0aW9uRGVsYXkoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
IXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOworICAgIGFuaW1hdGlvbi0+c2V0RGVsYXkocHJpbWl0aXZlVmFsdWUtPmNv
bXB1dGVUaW1lPGZsb2F0LCBDU1NQcmltaXRpdmVWYWx1ZTo6U2Vjb25kcz4oKSk7Cit9CisKK3Zv
aWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRGlyZWN0aW9uKEFuaW1hdGlvbiogbGF5ZXIs
IENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsK
KyAgICAgICAgbGF5ZXItPnNldERpcmVjdGlvbihBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25E
aXJlY3Rpb24oKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOworICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICBjYXNl
IENTU1ZhbHVlTm9ybWFsOgorICAgICAgICBsYXllci0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6
QW5pbWF0aW9uRGlyZWN0aW9uTm9ybWFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NW
YWx1ZUFsdGVybmF0ZToKKyAgICAgICAgbGF5ZXItPnNldERpcmVjdGlvbihBbmltYXRpb246OkFu
aW1hdGlvbkRpcmVjdGlvbkFsdGVybmF0ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
VmFsdWVSZXZlcnNlOgorICAgICAgICBsYXllci0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6QW5p
bWF0aW9uRGlyZWN0aW9uUmV2ZXJzZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFs
dWVBbHRlcm5hdGVSZXZlcnNlOgorICAgICAgICBsYXllci0+c2V0RGlyZWN0aW9uKEFuaW1hdGlv
bjo6QW5pbWF0aW9uRGlyZWN0aW9uQWx0ZXJuYXRlUmV2ZXJzZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25EdXJhdGlvbihBbmlt
YXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+aXNJ
bml0aWFsVmFsdWUoKSkgeworICAgICAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKEFuaW1hdGlv
bjo6aW5pdGlhbEFuaW1hdGlvbkR1cmF0aW9uKCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKHByaW1p
dGl2ZVZhbHVlLT5jb21wdXRlVGltZTxmbG9hdCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlNlY29uZHM+
KCkpOworfQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkZpbGxNb2RlKEFuaW1h
dGlvbiogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlh
bFZhbHVlKCkpIHsKKyAgICAgICAgbGF5ZXItPnNldEZpbGxNb2RlKEFuaW1hdGlvbjo6aW5pdGlh
bEFuaW1hdGlvbkZpbGxNb2RlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7
CisgICAgY2FzZSBDU1NWYWx1ZU5vbmU6CisgICAgICAgIGxheWVyLT5zZXRGaWxsTW9kZShBbmlt
YXRpb25GaWxsTW9kZU5vbmUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlRm9y
d2FyZHM6CisgICAgICAgIGxheWVyLT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZUZvcndh
cmRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUJhY2t3YXJkczoKKyAgICAg
ICAgbGF5ZXItPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlQmFja3dhcmRzKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUJvdGg6CisgICAgICAgIGxheWVyLT5zZXRGaWxs
TW9kZShBbmltYXRpb25GaWxsTW9kZUJvdGgpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisK
K3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoQW5pbWF0aW9u
KiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlh
bFZhbHVlKCkpIHsKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRJdGVyYXRpb25Db3VudChBbmltYXRp
b246OmluaXRpYWxBbmltYXRpb25JdGVyYXRpb25Db3VudCgpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlSW5maW5pdGUpCisgICAgICAgIGFuaW1hdGlvbi0+c2V0SXRl
cmF0aW9uQ291bnQoLTEpOworICAgIGVsc2UKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRJdGVyYXRp
b25Db3VudChwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKTsKK30KKwordm9pZCBDU1NU
b1N0eWxlTWFwOjptYXBBbmltYXRpb25OYW1lKEFuaW1hdGlvbiogbGF5ZXIsIENTU1ZhbHVlKiB2
YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKKyAgICAgICAgbGF5
ZXItPnNldE5hbWUoQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uTmFtZSgpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgbGF5ZXItPnNldElz
Tm9uZUFuaW1hdGlvbih0cnVlKTsKKyAgICBlbHNlCisgICAgICAgIGxheWVyLT5zZXROYW1lKHBy
aW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKK30KKwordm9pZCBDU1NUb1N0eWxlTWFw
OjptYXBBbmltYXRpb25QbGF5U3RhdGUoQW5pbWF0aW9uKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVl
KQoreworICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgeworICAgICAgICBsYXllci0+
c2V0UGxheVN0YXRlKEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblBsYXlTdGF0ZSgpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgRUFuaW1Q
bGF5U3RhdGUgcGxheVN0YXRlID0gKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlUGF1c2VkKSA/IEFuaW1QbGF5U3RhdGVQYXVzZWQgOiBBbmltUGxheVN0YXRlUGxheWluZzsK
KyAgICBsYXllci0+c2V0UGxheVN0YXRlKHBsYXlTdGF0ZSk7Cit9CisKK3ZvaWQgQ1NTVG9TdHls
ZU1hcDo6bWFwQW5pbWF0aW9uUHJvcGVydHkoQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVl
KiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKKyAgICAgICAg
YW5pbWF0aW9uLT5zZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0ZUFsbCk7CisgICAg
ICAgIGFuaW1hdGlvbi0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJbnZhbGlkKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQWxsKSB7CisgICAgICAgIGFuaW1hdGlvbi0+
c2V0QW5pbWF0aW9uTW9kZShBbmltYXRpb246OkFuaW1hdGVBbGwpOworICAgICAgICBhbmltYXRp
b24tPnNldFByb3BlcnR5KENTU1Byb3BlcnR5SW52YWxpZCk7CisgICAgfSBlbHNlIGlmIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAgYW5pbWF0
aW9uLT5zZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0ZU5vbmUpOworICAgICAgICBh
bmltYXRpb24tPnNldFByb3BlcnR5KENTU1Byb3BlcnR5SW52YWxpZCk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgYW5pbWF0aW9uLT5zZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0ZVNp
bmdsZVByb3BlcnR5KTsKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRQcm9wZXJ0eShzdGF0aWNfY2Fz
dDxDU1NQcm9wZXJ0eUlEPihwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkpOworICAgIH0KK30K
Kwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbihBbmltYXRp
b24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+aXNJbml0
aWFsVmFsdWUoKSkgeworICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEFuaW1h
dGlvbjo6aW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxpbmVhcjoKKyAgICAgICAgICAgIGFuaW1h
dGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oTGluZWFyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlRWFzZToKKyAgICAgICAg
ICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjo6Y3JlYXRlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVF
YXNlSW46CisgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgwLjQyLCAwLjAsIDEuMCwgMS4wKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUVhc2VPdXQ6CisgICAgICAgICAgICBh
bmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNy
ZWF0ZSgwLjAsIDAuMCwgMC41OCwgMS4wKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBDU1NWYWx1ZUVhc2VJbk91dDoKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5n
RnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKDAuNDIsIDAuMCwgMC41
OCwgMS4wKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVN0ZXBT
dGFydDoKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oU3RlcHNUaW1p
bmdGdW5jdGlvbjo6Y3JlYXRlKDEsIHRydWUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENTU1ZhbHVlU3RlcEVuZDoKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5n
RnVuY3Rpb24oU3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKDEsIGZhbHNlKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KHZhbHVlLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSgpKSB7CisgICAgICAgIENT
U0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSogY3ViaWNUaW1pbmdGdW5jdGlvbiA9IHN0
YXRpY19jYXN0PENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSo+KHZhbHVlKTsKKyAg
ICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uOjpjcmVhdGUoY3ViaWNUaW1pbmdGdW5jdGlvbi0+eDEoKSwgY3ViaWNUaW1pbmdGdW5jdGlv
bi0+eTEoKSwgY3ViaWNUaW1pbmdGdW5jdGlvbi0+eDIoKSwgY3ViaWNUaW1pbmdGdW5jdGlvbi0+
eTIoKSkpOworICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVl
KCkpIHsKKyAgICAgICAgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKiBzdGVwc1RpbWluZ0Z1
bmN0aW9uID0gc3RhdGljX2Nhc3Q8Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKj4odmFsdWUp
OworICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKFN0ZXBzVGltaW5nRnVuY3Rp
b246OmNyZWF0ZShzdGVwc1RpbWluZ0Z1bmN0aW9uLT5udW1iZXJPZlN0ZXBzKCksIHN0ZXBzVGlt
aW5nRnVuY3Rpb24tPnN0ZXBBdFN0YXJ0KCkpKTsKKyAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc0xp
bmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUoKSkKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdG
dW5jdGlvbihMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCkpOworfQorCit2b2lkIENTU1Rv
U3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1Zh
bHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQoreworICAgIC8vIElmIHdlJ3JlIG5v
dCBhIHZhbHVlIGxpc3QsIHRoZW4gd2UgYXJlICJub25lIiBhbmQgZG9uJ3QgbmVlZCB0byBhbHRl
ciB0aGUgZW1wdHkgaW1hZ2UgYXQgYWxsLgorICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLT5pc1Zh
bHVlTGlzdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBSZXRyaWV2ZSB0aGUgYm9yZGVy
IGltYWdlIHZhbHVlLgorICAgIENTU1ZhbHVlTGlzdCogYm9yZGVySW1hZ2UgPSBzdGF0aWNfY2Fz
dDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisKKyAgICAvLyBTZXQgdGhlIGltYWdlICh0aGlzIGtp
Y2tzIG9mZiB0aGUgbG9hZCkuCisgICAgQ1NTUHJvcGVydHlJRCBpbWFnZVByb3BlcnR5OworICAg
IGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlKQorICAgICAgICBp
bWFnZVByb3BlcnR5ID0gQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZTsKKyAgICBlbHNlIGlm
IChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSkKKyAgICAgICAgaW1h
Z2VQcm9wZXJ0eSA9IENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlOworICAgIGVs
c2UKKyAgICAgICAgaW1hZ2VQcm9wZXJ0eSA9IHByb3BlcnR5OworCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMCA7IGkgPCBib3JkZXJJbWFnZS0+bGVuZ3RoKCkgOyArK2kpIHsKKyAgICAgICAgQ1NT
VmFsdWUqIGN1cnJlbnQgPSBib3JkZXJJbWFnZS0+aXRlbShpKTsKKworICAgICAgICBpZiAoY3Vy
cmVudC0+aXNJbWFnZVZhbHVlKCkgfHwgY3VycmVudC0+aXNJbWFnZUdlbmVyYXRvclZhbHVlKCkK
KyNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKKyAgICAgICAgICAgIHx8IGN1cnJlbnQtPmlzSW1h
Z2VTZXRWYWx1ZSgpCisjZW5kaWYKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGltYWdlLnNl
dEltYWdlKHN0eWxlSW1hZ2UoaW1hZ2VQcm9wZXJ0eSwgY3VycmVudCkpOworICAgICAgICBlbHNl
IGlmIChjdXJyZW50LT5pc0JvcmRlckltYWdlU2xpY2VWYWx1ZSgpKQorICAgICAgICAgICAgbWFw
TmluZVBpZWNlSW1hZ2VTbGljZShjdXJyZW50LCBpbWFnZSk7CisgICAgICAgIGVsc2UgaWYgKGN1
cnJlbnQtPmlzVmFsdWVMaXN0KCkpIHsKKyAgICAgICAgICAgIENTU1ZhbHVlTGlzdCogc2xhc2hM
aXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4oY3VycmVudCk7CisgICAgICAgICAgICAv
LyBNYXAgaW4gdGhlIGltYWdlIHNsaWNlcy4KKyAgICAgICAgICAgIGlmIChzbGFzaExpc3QtPml0
ZW0oMCkgJiYgc2xhc2hMaXN0LT5pdGVtKDApLT5pc0JvcmRlckltYWdlU2xpY2VWYWx1ZSgpKQor
ICAgICAgICAgICAgICAgIG1hcE5pbmVQaWVjZUltYWdlU2xpY2Uoc2xhc2hMaXN0LT5pdGVtKDAp
LCBpbWFnZSk7CisKKyAgICAgICAgICAgIC8vIE1hcCBpbiB0aGUgYm9yZGVyIHNsaWNlcy4KKyAg
ICAgICAgICAgIGlmIChzbGFzaExpc3QtPml0ZW0oMSkpCisgICAgICAgICAgICAgICAgaW1hZ2Uu
c2V0Qm9yZGVyU2xpY2VzKG1hcE5pbmVQaWVjZUltYWdlUXVhZChzbGFzaExpc3QtPml0ZW0oMSkp
KTsKKworICAgICAgICAgICAgLy8gTWFwIGluIHRoZSBvdXRzZXQuCisgICAgICAgICAgICBpZiAo
c2xhc2hMaXN0LT5pdGVtKDIpKQorICAgICAgICAgICAgICAgIGltYWdlLnNldE91dHNldChtYXBO
aW5lUGllY2VJbWFnZVF1YWQoc2xhc2hMaXN0LT5pdGVtKDIpKSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoY3VycmVudC0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgICAgICAvLyBTZXQgdGhl
IGFwcHJvcHJpYXRlIHJ1bGVzIGZvciBzdHJldGNoL3JvdW5kL3JlcGVhdCBvZiB0aGUgc2xpY2Vz
LgorICAgICAgICAgICAgbWFwTmluZVBpZWNlSW1hZ2VSZXBlYXQoY3VycmVudCwgaW1hZ2UpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVySW1hZ2UpIHsKKyAgICAgICAgLy8gV2UgaGF2ZSB0byBwcmVzZXJ2ZSB0aGUgbGVnYWN5
IGJlaGF2aW9yIG9mIC13ZWJraXQtYm9yZGVyLWltYWdlIGFuZCBtYWtlIHRoZSBib3JkZXIgc2xp
Y2VzCisgICAgICAgIC8vIGFsc28gc2V0IHRoZSBib3JkZXIgd2lkdGhzLiBXZSBkb24ndCBuZWVk
IHRvIHdvcnJ5IGFib3V0IHBlcmNlbnRhZ2VzLCBzaW5jZSB3ZSBkb24ndCBldmVuIHN1cHBvcnQK
KyAgICAgICAgLy8gdGhvc2Ugb24gcmVhbCBib3JkZXJzIHlldC4KKyAgICAgICAgaWYgKGltYWdl
LmJvcmRlclNsaWNlcygpLnRvcCgpLmlzRml4ZWQoKSkKKyAgICAgICAgICAgIHN0eWxlKCktPnNl
dEJvcmRlclRvcFdpZHRoKGltYWdlLmJvcmRlclNsaWNlcygpLnRvcCgpLnZhbHVlKCkpOworICAg
ICAgICBpZiAoaW1hZ2UuYm9yZGVyU2xpY2VzKCkucmlnaHQoKS5pc0ZpeGVkKCkpCisgICAgICAg
ICAgICBzdHlsZSgpLT5zZXRCb3JkZXJSaWdodFdpZHRoKGltYWdlLmJvcmRlclNsaWNlcygpLnJp
Z2h0KCkudmFsdWUoKSk7CisgICAgICAgIGlmIChpbWFnZS5ib3JkZXJTbGljZXMoKS5ib3R0b20o
KS5pc0ZpeGVkKCkpCisgICAgICAgICAgICBzdHlsZSgpLT5zZXRCb3JkZXJCb3R0b21XaWR0aChp
bWFnZS5ib3JkZXJTbGljZXMoKS5ib3R0b20oKS52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGltYWdl
LmJvcmRlclNsaWNlcygpLmxlZnQoKS5pc0ZpeGVkKCkpCisgICAgICAgICAgICBzdHlsZSgpLT5z
ZXRCb3JkZXJMZWZ0V2lkdGgoaW1hZ2UuYm9yZGVyU2xpY2VzKCkubGVmdCgpLnZhbHVlKCkpOwor
ICAgIH0KK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVNsaWNlKENT
U1ZhbHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQoreworICAgIGlmICghdmFsdWUg
fHwgIXZhbHVlLT5pc0JvcmRlckltYWdlU2xpY2VWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBSZXRyaWV2ZSB0aGUgYm9yZGVyIGltYWdlIHZhbHVlLgorICAgIENTU0JvcmRlcklt
YWdlU2xpY2VWYWx1ZSogYm9yZGVySW1hZ2VTbGljZSA9IHN0YXRpY19jYXN0PENTU0JvcmRlcklt
YWdlU2xpY2VWYWx1ZSo+KHZhbHVlKTsKKworICAgIC8vIFNldCB1cCBhIGxlbmd0aCBib3ggdG8g
cmVwcmVzZW50IG91ciBpbWFnZSBzbGljZXMuCisgICAgTGVuZ3RoQm94IGJveDsKKyAgICBRdWFk
KiBzbGljZXMgPSBib3JkZXJJbWFnZVNsaWNlLT5zbGljZXMoKTsKKyAgICBpZiAoc2xpY2VzLT50
b3AoKS0+aXNQZXJjZW50YWdlKCkpCisgICAgICAgIGJveC5tX3RvcCA9IExlbmd0aChzbGljZXMt
PnRvcCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICBlbHNlCisgICAgICAgIGJv
eC5tX3RvcCA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQ
ZXJjZW50YWdlKCkpCisgICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRv
bSgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICBlbHNlCisgICAgICAgIGJveC5t
X2JvdHRvbSA9IExlbmd0aCgoaW50KXNsaWNlcy0+Ym90dG9tKCktPmdldEZsb2F0VmFsdWUoQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgaWYgKHNsaWNlcy0+bGVm
dCgpLT5pc1BlcmNlbnRhZ2UoKSkKKyAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMt
PmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgZWxzZQorICAgICAgICBi
b3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICBpZiAoc2xpY2VzLT5yaWdodCgpLT5p
c1BlcmNlbnRhZ2UoKSkKKyAgICAgICAgYm94Lm1fcmlnaHQgPSBMZW5ndGgoc2xpY2VzLT5yaWdo
dCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICBlbHNlCisgICAgICAgIGJveC5t
X3JpZ2h0ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0SW50VmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgaW1hZ2Uuc2V0SW1hZ2VTbGljZXMoYm94
KTsKKworICAgIC8vIFNldCBvdXIgZmlsbCBtb2RlLgorICAgIGltYWdlLnNldEZpbGwoYm9yZGVy
SW1hZ2VTbGljZS0+bV9maWxsKTsKK30KKworTGVuZ3RoQm94IENTU1RvU3R5bGVNYXA6Om1hcE5p
bmVQaWVjZUltYWdlUXVhZChDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZSB8fCAh
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIExlbmd0aEJveCgpOwor
CisgICAgLy8gR2V0IG91ciB6b29tIHZhbHVlLgorICAgIGZsb2F0IHpvb20gPSB1c2VTVkdab29t
UnVsZXMoKSA/IDEuMGYgOiBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7CisKKyAgICAvLyBSZXRy
aWV2ZSB0aGUgcHJpbWl0aXZlIHZhbHVlLgorICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBib3JkZXJX
aWR0aHMgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKworICAgIC8v
IFNldCB1cCBhIGxlbmd0aCBib3ggdG8gcmVwcmVzZW50IG91ciBpbWFnZSBzbGljZXMuCisgICAg
TGVuZ3RoQm94IGJveDsgLy8gRGVmYXVsdHMgdG8gJ2F1dG8nIHNvIHdlIGRvbid0IGhhdmUgdG8g
aGFuZGxlIHRoYXQgZXhwbGljaXRseSBiZWxvdy4KKyAgICBRdWFkKiBzbGljZXMgPSBib3JkZXJX
aWR0aHMtPmdldFF1YWRWYWx1ZSgpOworICAgIGlmIChzbGljZXMtPnRvcCgpLT5pc051bWJlcigp
KQorICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50VmFsdWUo
KSwgUmVsYXRpdmUpOworICAgIGVsc2UgaWYgKHNsaWNlcy0+dG9wKCktPmlzUGVyY2VudGFnZSgp
KQorICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CisgICAgZWxz
ZSBpZiAoc2xpY2VzLT50b3AoKS0+Z2V0SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pCisgICAgICAg
IGJveC5tX3RvcCA9IHNsaWNlcy0+dG9wKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZSgp
LCByb290RWxlbWVudFN0eWxlKCksIHpvb20pOworCisgICAgaWYgKHNsaWNlcy0+cmlnaHQoKS0+
aXNOdW1iZXIoKSkKKyAgICAgICAgYm94Lm1fcmlnaHQgPSBMZW5ndGgoc2xpY2VzLT5yaWdodCgp
LT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CisgICAgZWxzZSBpZiAoc2xpY2VzLT5yaWdodCgp
LT5pc1BlcmNlbnRhZ2UoKSkKKyAgICAgICAgYm94Lm1fcmlnaHQgPSBMZW5ndGgoc2xpY2VzLT5y
aWdodCgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0Up
LCBQZXJjZW50KTsKKyAgICBlbHNlIGlmIChzbGljZXMtPnJpZ2h0KCktPmdldElkZW50KCkgIT0g
Q1NTVmFsdWVBdXRvKQorICAgICAgICBib3gubV9yaWdodCA9IHNsaWNlcy0+cmlnaHQoKS0+Y29t
cHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9vbSk7CisK
KyAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNOdW1iZXIoKSkKKyAgICAgICAgYm94Lm1fYm90
dG9tID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsK
KyAgICBlbHNlIGlmIChzbGljZXMtPmJvdHRvbSgpLT5pc1BlcmNlbnRhZ2UoKSkKKyAgICAgICAg
Ym94Lm1fYm90dG9tID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgIGVsc2UgaWYg
KHNsaWNlcy0+Ym90dG9tKCktPmdldElkZW50KCkgIT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICBi
b3gubV9ib3R0b20gPSBzbGljZXMtPmJvdHRvbSgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5
bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tKTsKKworICAgIGlmIChzbGljZXMtPmxlZnQo
KS0+aXNOdW1iZXIoKSkKKyAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxlZnQo
KS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgp
LT5pc1BlcmNlbnRhZ2UoKSkKKyAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxl
ZnQoKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwg
UGVyY2VudCk7CisgICAgZWxzZSBpZiAoc2xpY2VzLT5sZWZ0KCktPmdldElkZW50KCkgIT0gQ1NT
VmFsdWVBdXRvKQorICAgICAgICBib3gubV9sZWZ0ID0gc2xpY2VzLT5sZWZ0KCktPmNvbXB1dGVM
ZW5ndGg8TGVuZ3RoPihzdHlsZSgpLCByb290RWxlbWVudFN0eWxlKCksIHpvb20pOworCisgICAg
cmV0dXJuIGJveDsKK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVJl
cGVhdChDU1NWYWx1ZSogdmFsdWUsIE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKK3sKKyAgICBpZiAo
IXZhbHVlIHx8ICF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUt
PmdldFBhaXJWYWx1ZSgpOworICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFp
ci0+c2Vjb25kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBmaXJzdElkZW50aWZpZXIg
PSBwYWlyLT5maXJzdCgpLT5nZXRJZGVudCgpOworICAgIGludCBzZWNvbmRJZGVudGlmaWVyID0g
cGFpci0+c2Vjb25kKCktPmdldElkZW50KCk7CisKKyAgICBFTmluZVBpZWNlSW1hZ2VSdWxlIGhv
cml6b250YWxSdWxlOworICAgIHN3aXRjaCAoZmlyc3RJZGVudGlmaWVyKSB7CisgICAgY2FzZSBD
U1NWYWx1ZVN0cmV0Y2g6CisgICAgICAgIGhvcml6b250YWxSdWxlID0gU3RyZXRjaEltYWdlUnVs
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZVJvdW5kOgorICAgICAgICBob3Jp
em9udGFsUnVsZSA9IFJvdW5kSW1hZ2VSdWxlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1ZhbHVlU3BhY2U6CisgICAgICAgIGhvcml6b250YWxSdWxlID0gU3BhY2VJbWFnZVJ1bGU7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6IC8vIENTU1ZhbHVlUmVwZWF0CisgICAgICAgIGhv
cml6b250YWxSdWxlID0gUmVwZWF0SW1hZ2VSdWxlOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgaW1hZ2Uuc2V0SG9yaXpvbnRhbFJ1bGUoaG9yaXpvbnRhbFJ1bGUpOworCisgICAgRU5pbmVQ
aWVjZUltYWdlUnVsZSB2ZXJ0aWNhbFJ1bGU7CisgICAgc3dpdGNoIChzZWNvbmRJZGVudGlmaWVy
KSB7CisgICAgY2FzZSBDU1NWYWx1ZVN0cmV0Y2g6CisgICAgICAgIHZlcnRpY2FsUnVsZSA9IFN0
cmV0Y2hJbWFnZVJ1bGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVSb3VuZDoK
KyAgICAgICAgdmVydGljYWxSdWxlID0gUm91bmRJbWFnZVJ1bGU7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTVmFsdWVTcGFjZToKKyAgICAgICAgdmVydGljYWxSdWxlID0gU3BhY2VJbWFn
ZVJ1bGU7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6IC8vIENTU1ZhbHVlUmVwZWF0Cisg
ICAgICAgIHZlcnRpY2FsUnVsZSA9IFJlcGVhdEltYWdlUnVsZTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGltYWdlLnNldFZlcnRpY2FsUnVsZSh2ZXJ0aWNhbFJ1bGUpOworfQorCit9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUwZmM5NTNkMDRjNDcxNWJk
YjI5YWFkNmQzYjczN2ExY2MxZTg4MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NUb1N0eWxlTWFwLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENTU1RvU3R5bGVNYXBfaAorI2RlZmluZSBD
U1NUb1N0eWxlTWFwX2gKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRl
ICJMZW5ndGhCb3guaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGaWxsTGF5ZXI7
CitjbGFzcyBDU1NWYWx1ZTsKK2NsYXNzIEFuaW1hdGlvbjsKK2NsYXNzIFN0eWxlSW1hZ2U7Citj
bGFzcyBTdHlsZVJlc29sdmVyOworY2xhc3MgTmluZVBpZWNlSW1hZ2U7CisKK2NsYXNzIENTU1Rv
U3R5bGVNYXAgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENTU1RvU3R5bGVNYXApOworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgQ1NTVG9TdHlsZU1hcChT
dHlsZVJlc29sdmVyKiByZXNvbHZlcikgOiBtX3Jlc29sdmVyKHJlc29sdmVyKSB7IH0KKworICAg
IHZvaWQgbWFwRmlsbEF0dGFjaG1lbnQoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFs
dWUqKTsKKyAgICB2b2lkIG1hcEZpbGxDbGlwKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENT
U1ZhbHVlKik7CisgICAgdm9pZCBtYXBGaWxsQ29tcG9zaXRlKENTU1Byb3BlcnR5SUQsIEZpbGxM
YXllciosIENTU1ZhbHVlKik7CisgICAgdm9pZCBtYXBGaWxsT3JpZ2luKENTU1Byb3BlcnR5SUQs
IEZpbGxMYXllciosIENTU1ZhbHVlKik7CisgICAgdm9pZCBtYXBGaWxsSW1hZ2UoQ1NTUHJvcGVy
dHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKKyAgICB2b2lkIG1hcEZpbGxSZXBlYXRYKENT
U1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7CisgICAgdm9pZCBtYXBGaWxsUmVw
ZWF0WShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOworICAgIHZvaWQgbWFw
RmlsbFNpemUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKKyAgICB2b2lk
IG1hcEZpbGxYUG9zaXRpb24oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsK
KyAgICB2b2lkIG1hcEZpbGxZUG9zaXRpb24oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NT
VmFsdWUqKTsKKworICAgIHZvaWQgbWFwQW5pbWF0aW9uRGVsYXkoQW5pbWF0aW9uKiwgQ1NTVmFs
dWUqKTsKKyAgICB2b2lkIG1hcEFuaW1hdGlvbkRpcmVjdGlvbihBbmltYXRpb24qLCBDU1NWYWx1
ZSopOworICAgIHZvaWQgbWFwQW5pbWF0aW9uRHVyYXRpb24oQW5pbWF0aW9uKiwgQ1NTVmFsdWUq
KTsKKyAgICB2b2lkIG1hcEFuaW1hdGlvbkZpbGxNb2RlKEFuaW1hdGlvbiosIENTU1ZhbHVlKik7
CisgICAgdm9pZCBtYXBBbmltYXRpb25JdGVyYXRpb25Db3VudChBbmltYXRpb24qLCBDU1NWYWx1
ZSopOworICAgIHZvaWQgbWFwQW5pbWF0aW9uTmFtZShBbmltYXRpb24qLCBDU1NWYWx1ZSopOwor
ICAgIHZvaWQgbWFwQW5pbWF0aW9uUGxheVN0YXRlKEFuaW1hdGlvbiosIENTU1ZhbHVlKik7Cisg
ICAgdm9pZCBtYXBBbmltYXRpb25Qcm9wZXJ0eShBbmltYXRpb24qLCBDU1NWYWx1ZSopOworICAg
IHZvaWQgbWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oQW5pbWF0aW9uKiwgQ1NTVmFsdWUqKTsK
KworICAgIHZvaWQgbWFwTmluZVBpZWNlSW1hZ2UoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUqLCBO
aW5lUGllY2VJbWFnZSYpOworICAgIHZvaWQgbWFwTmluZVBpZWNlSW1hZ2VTbGljZShDU1NWYWx1
ZSosIE5pbmVQaWVjZUltYWdlJik7CisgICAgTGVuZ3RoQm94IG1hcE5pbmVQaWVjZUltYWdlUXVh
ZChDU1NWYWx1ZSopOworICAgIHZvaWQgbWFwTmluZVBpZWNlSW1hZ2VSZXBlYXQoQ1NTVmFsdWUq
LCBOaW5lUGllY2VJbWFnZSYpOworCitwcml2YXRlOgorICAgIC8vIEZJWE1FOiBUaGVzZSBhY2Nl
c3NvcnMgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGEgUmVzb2x2ZVN0YXRlIG9iamVjdAorICAgIC8v
IHNpbWlsYXIgdG8gaG93IFBhaW50SW5mby9MYXlvdXRTdGF0ZSBjYWNoZSB2YWx1ZXMgbmVlZGVk
IGZvcgorICAgIC8vIHRoZSBjdXJyZW50IHBhaW50L2xheW91dC4KKyAgICBSZW5kZXJTdHlsZSog
c3R5bGUoKSBjb25zdDsKKyAgICBSZW5kZXJTdHlsZSogcm9vdEVsZW1lbnRTdHlsZSgpIGNvbnN0
OworICAgIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzKCkgY29uc3Q7CisKKyAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgcGFydCBvZiBzb21lIHNvcnQgb2YgU3R5bGVJbWFnZUNhY2hlIG9iamVjdCB3
aGljaAorICAgIC8vIGlzIGhlbGQgYnkgdGhlIFN0eWxlUmVzb2x2ZXIsIGFuZCBsaWtlbHkgcHJv
dmlkZWQgdG8gdGhpcyBvYmplY3QKKyAgICAvLyBkdXJpbmcgdGhlIHJlc29sdmUuCisgICAgUGFz
c1JlZlB0cjxTdHlsZUltYWdlPiBzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKik7
CisKKyAgICBTdHlsZVJlc29sdmVyKiBtX3Jlc29sdmVyOworfTsKKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAKaW5kZXggMjEzOTk5NmJkMWQ4OGRiNjRkNjMzNjFk
NWI5YmQ1MmJlODc3ZDdkYS4uMjBkMDJjYzE1YjFjNzAzNTY0YjczMTdjZWE1ZjdhODUyNzQ1ZWI2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRl
ICJDU1NUb1N0eWxlTWFwLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAi
Q3Vyc29yTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkBAIC00OTYsNyArNDk3LDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQsCiAgICAgICAgICAgdm9pZCAoRmlsbExheWVyOjoqc2V0RnVu
Y3Rpb24pKHR5cGVuYW1lIEZpbGxMYXllckFjY2Vzc29yVHlwZXM8VD46OlNldHRlciksCiAgICAg
ICAgICAgdm9pZCAoRmlsbExheWVyOjoqY2xlYXJGdW5jdGlvbikoKSwKICAgICAgICAgICB0eXBl
bmFtZSBGaWxsTGF5ZXJBY2Nlc3NvclR5cGVzPFQ+OjpHZXR0ZXIgKCppbml0aWFsRnVuY3Rpb24p
KEVGaWxsTGF5ZXJUeXBlKSwKLSAgICAgICAgICB2b2lkIChTdHlsZVJlc29sdmVyOjoqbWFwRmls
bEZ1bmN0aW9uKShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopPgorICAgICAg
ICAgIHZvaWQgKENTU1RvU3R5bGVNYXA6OiptYXBGaWxsRnVuY3Rpb24pKENTU1Byb3BlcnR5SUQs
IEZpbGxMYXllciosIENTU1ZhbHVlKik+CiBjbGFzcyBBcHBseVByb3BlcnR5RmlsbExheWVyIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVy
KiBzdHlsZVJlc29sdmVyKQpAQCAtNTQ4LDEyICs1NDksMTIgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICBjdXJyQ2hpbGQgPSBuZXcgRmlsbExheWVyKGZpbGxMYXllclR5cGUpOwogICAg
ICAgICAgICAgICAgICAgICBwcmV2Q2hpbGQtPnNldE5leHQoY3VyckNoaWxkKTsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKHN0eWxlUmVzb2x2ZXItPiptYXBGaWxsRnVuY3Rp
b24pKHByb3BlcnR5SWQsIGN1cnJDaGlsZCwgdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKGkpKTsKKyAgICAgICAgICAgICAgICAoc3R5bGVSZXNvbHZlci0+c3R5bGVNYXAoKS0+Km1h
cEZpbGxGdW5jdGlvbikocHJvcGVydHlJZCwgY3VyckNoaWxkLCB2YWx1ZUxpc3QtPml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soaSkpOwogICAgICAgICAgICAgICAgIHByZXZDaGlsZCA9IGN1cnJDaGls
ZDsKICAgICAgICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIChzdHlsZVJlc29sdmVyLT4q
bWFwRmlsbEZ1bmN0aW9uKShwcm9wZXJ0eUlkLCBjdXJyQ2hpbGQsIHZhbHVlKTsKKyAgICAgICAg
ICAgIChzdHlsZVJlc29sdmVyLT5zdHlsZU1hcCgpLT4qbWFwRmlsbEZ1bmN0aW9uKShwcm9wZXJ0
eUlkLCBjdXJyQ2hpbGQsIHZhbHVlKTsKICAgICAgICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGls
ZC0+bmV4dCgpOwogICAgICAgICB9CiAgICAgICAgIHdoaWxlIChjdXJyQ2hpbGQpIHsKQEAgLTg4
Niw3ICs4ODcsNyBAQCBwdWJsaWM6CiAgICAgICAgIE5pbmVQaWVjZUltYWdlIGltYWdlOwogICAg
ICAgICBpZiAoYm9yZGVySW1hZ2VUeXBlID09IE1hc2spCiAgICAgICAgICAgICBpbWFnZS5zZXRN
YXNrRGVmYXVsdHMoKTsKLSAgICAgICAgc3R5bGVSZXNvbHZlci0+bWFwTmluZVBpZWNlSW1hZ2Uo
cHJvcGVydHksIHZhbHVlLCBpbWFnZSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlTWFw
KCktPm1hcE5pbmVQaWVjZUltYWdlKHByb3BlcnR5LCB2YWx1ZSwgaW1hZ2UpOwogICAgICAgICAo
c3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+KnNldHRlckZ1bmN0aW9uKShpbWFnZSk7CiAgICAgfQog
CkBAIC05NTMsMTYgKzk1NCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIE5pbmVQaWVjZUltYWdlIGlt
YWdlKGdldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkpKTsKICAgICAgICAgc3dpdGNoICht
b2RpZmllcikgewogICAgICAgICBjYXNlIE91dHNldDoKLSAgICAgICAgICAgIGltYWdlLnNldE91
dHNldChzdHlsZVJlc29sdmVyLT5tYXBOaW5lUGllY2VJbWFnZVF1YWQodmFsdWUpKTsKKyAgICAg
ICAgICAgIGltYWdlLnNldE91dHNldChzdHlsZVJlc29sdmVyLT5zdHlsZU1hcCgpLT5tYXBOaW5l
UGllY2VJbWFnZVF1YWQodmFsdWUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFJlcGVhdDoKLSAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPm1hcE5pbmVQaWVjZUltYWdlUmVw
ZWF0KHZhbHVlLCBpbWFnZSk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZU1hcCgp
LT5tYXBOaW5lUGllY2VJbWFnZVJlcGVhdCh2YWx1ZSwgaW1hZ2UpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgU2xpY2U6Ci0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5tYXBO
aW5lUGllY2VJbWFnZVNsaWNlKHZhbHVlLCBpbWFnZSk7CisgICAgICAgICAgICBzdHlsZVJlc29s
dmVyLT5zdHlsZU1hcCgpLT5tYXBOaW5lUGllY2VJbWFnZVNsaWNlKHZhbHVlLCBpbWFnZSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXaWR0aDoKLSAgICAgICAgICAgIGltYWdl
LnNldEJvcmRlclNsaWNlcyhzdHlsZVJlc29sdmVyLT5tYXBOaW5lUGllY2VJbWFnZVF1YWQodmFs
dWUpKTsKKyAgICAgICAgICAgIGltYWdlLnNldEJvcmRlclNsaWNlcyhzdHlsZVJlc29sdmVyLT5z
dHlsZU1hcCgpLT5tYXBOaW5lUGllY2VJbWFnZVF1YWQodmFsdWUpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCks
IGltYWdlKTsKQEAgLTE0MzcsNyArMTQzOCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULAogICAg
ICAgICAgIGJvb2wgKEFuaW1hdGlvbjo6KnRlc3RGdW5jdGlvbikoKSBjb25zdCwKICAgICAgICAg
ICB2b2lkIChBbmltYXRpb246OipjbGVhckZ1bmN0aW9uKSgpLAogICAgICAgICAgIFQgKCppbml0
aWFsRnVuY3Rpb24pKCksCi0gICAgICAgICAgdm9pZCAoU3R5bGVSZXNvbHZlcjo6Km1hcEZ1bmN0
aW9uKShBbmltYXRpb24qLCBDU1NWYWx1ZSopLAorICAgICAgICAgIHZvaWQgKENTU1RvU3R5bGVN
YXA6OiptYXBGdW5jdGlvbikoQW5pbWF0aW9uKiwgQ1NTVmFsdWUqKSwKICAgICAgICAgICBBbmlt
YXRpb25MaXN0KiAoUmVuZGVyU3R5bGU6OiphbmltYXRpb25HZXR0ZXJGdW5jdGlvbikoKSwKICAg
ICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiAoUmVuZGVyU3R5bGU6OippbW11dGFibGVBbmlt
YXRpb25HZXR0ZXJGdW5jdGlvbikoKSBjb25zdD4KIGNsYXNzIEFwcGx5UHJvcGVydHlBbmltYXRp
b24gewpAQCAtMTQ0Nyw3ICsxNDQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHRlc3Qo
Y29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24pIHsgcmV0dXJuIChhbmltYXRpb24tPip0ZXN0RnVu
Y3Rpb24pKCk7IH0KICAgICBzdGF0aWMgdm9pZCBjbGVhcihBbmltYXRpb24qIGFuaW1hdGlvbikg
eyAoYW5pbWF0aW9uLT4qY2xlYXJGdW5jdGlvbikoKTsgfQogICAgIHN0YXRpYyBUIGluaXRpYWwo
KSB7IHJldHVybiAoKmluaXRpYWxGdW5jdGlvbikoKTsgfQotICAgIHN0YXRpYyB2b2lkIG1hcChT
dHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFs
dWUqIHZhbHVlKSB7IChzdHlsZVJlc29sdmVyLT4qbWFwRnVuY3Rpb24pKGFuaW1hdGlvbiwgdmFs
dWUpOyB9CisgICAgc3RhdGljIHZvaWQgbWFwKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIs
IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBDU1NWYWx1ZSogdmFsdWUpIHsgKHN0eWxlUmVzb2x2ZXIt
PnN0eWxlTWFwKCktPiptYXBGdW5jdGlvbikoYW5pbWF0aW9uLCB2YWx1ZSk7IH0KICAgICBzdGF0
aWMgQW5pbWF0aW9uTGlzdCogYWNjZXNzQW5pbWF0aW9ucyhSZW5kZXJTdHlsZSogc3R5bGUpIHsg
cmV0dXJuIChzdHlsZS0+KmFuaW1hdGlvbkdldHRlckZ1bmN0aW9uKSgpOyB9CiAgICAgc3RhdGlj
IGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1hdGlvbnMoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJl
dHVybiAoc3R5bGUtPippbW11dGFibGVBbmltYXRpb25HZXR0ZXJGdW5jdGlvbikoKTsgfQogCkBA
IC0xODQwLDE4ICsxODQxLDE4IEBAIFN0eWxlQnVpbGRlcjo6U3R5bGVCdWlsZGVyKCkKICAgICAg
ICAgbV9wcm9wZXJ0eU1hcFtpXSA9IFByb3BlcnR5SGFuZGxlcigpOwogCiAgICAgLy8gUGxlYXNl
IGtlZXAgQ1NTIHByb3BlcnR5IGxpc3QgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgotICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBBcHBseVByb3Bl
cnR5RmlsbExheWVyPEVGaWxsQXR0YWNobWVudCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNo
bWVudCwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5k
TGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzQXR0
YWNobWVudFNldCwgJkZpbGxMYXllcjo6YXR0YWNobWVudCwgJkZpbGxMYXllcjo6c2V0QXR0YWNo
bWVudCwgJkZpbGxMYXllcjo6Y2xlYXJBdHRhY2htZW50LCAmRmlsbExheWVyOjppbml0aWFsRmls
bEF0dGFjaG1lbnQsICZTdHlsZVJlc29sdmVyOjptYXBGaWxsQXR0YWNobWVudD46OmNyZWF0ZUhh
bmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENs
aXAsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxCb3gsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENsaXAsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3Vu
ZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0Ns
aXBTZXQsICZGaWxsTGF5ZXI6OmNsaXAsICZGaWxsTGF5ZXI6OnNldENsaXAsICZGaWxsTGF5ZXI6
OmNsZWFyQ2xpcCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxDbGlwLCAmU3R5bGVSZXNvbHZlcjo6
bWFwRmlsbENsaXA+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVG
aWxsQXR0YWNobWVudCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgQmFja2dyb3Vu
ZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVy
U3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzQXR0YWNobWVudFNldCwgJkZp
bGxMYXllcjo6YXR0YWNobWVudCwgJkZpbGxMYXllcjo6c2V0QXR0YWNobWVudCwgJkZpbGxMYXll
cjo6Y2xlYXJBdHRhY2htZW50LCAmRmlsbExheWVyOjppbml0aWFsRmlsbEF0dGFjaG1lbnQsICZD
U1NUb1N0eWxlTWFwOjptYXBGaWxsQXR0YWNobWVudD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAsIEFwcGx5UHJvcGVy
dHlGaWxsTGF5ZXI8RUZpbGxCb3gsIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAsIEJhY2tncm91
bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRl
clN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0NsaXBTZXQsICZGaWxsTGF5
ZXI6OmNsaXAsICZGaWxsTGF5ZXI6OnNldENsaXAsICZGaWxsTGF5ZXI6OmNsZWFyQ2xpcCwgJkZp
bGxMYXllcjo6aW5pdGlhbEZpbGxDbGlwLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbENsaXA+Ojpj
cmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvciwgQXBwbHlQcm9wZXJ0eUNvbG9yPE5vSW5oZXJpdEZyb21QYXJlbnQsICZSZW5k
ZXJTdHlsZTo6YmFja2dyb3VuZENvbG9yLCAmUmVuZGVyU3R5bGU6OnNldEJhY2tncm91bmRDb2xv
ciwgJlJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0JhY2tncm91bmRDb2xvciwgJlJlbmRlclN0
eWxlOjppbnZhbGlkQ29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxT
dHlsZUltYWdlKiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIEJhY2tncm91bmRGaWxsTGF5
ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpi
YWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0ltYWdlU2V0LCAmRmlsbExheWVyOjppbWFn
ZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2UsICZGaWxsTGF5ZXI6OmNsZWFySW1hZ2UsICZGaWxsTGF5
ZXI6OmluaXRpYWxGaWxsSW1hZ2UsICZTdHlsZVJlc29sdmVyOjptYXBGaWxsSW1hZ2U+OjpjcmVh
dGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRPcmlnaW4sIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxCb3gsIENTU1Byb3BlcnR5QmFj
a2dyb3VuZE9yaWdpbiwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NC
YWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5
ZXI6OmlzT3JpZ2luU2V0LCAmRmlsbExheWVyOjpvcmlnaW4sICZGaWxsTGF5ZXI6OnNldE9yaWdp
biwgJkZpbGxMYXllcjo6Y2xlYXJPcmlnaW4sICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsT3JpZ2lu
LCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbE9yaWdpbj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBBcHBseVByb3Bl
cnR5RmlsbExheWVyPFN0eWxlSW1hZ2UqLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgQmFj
a2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAm
UmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzSW1hZ2VTZXQsICZG
aWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpzZXRJbWFnZSwgJkZpbGxMYXllcjo6Y2xlYXJJ
bWFnZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxJbWFnZSwgJkNTU1RvU3R5bGVNYXA6Om1hcEZp
bGxJbWFnZT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5QmFja2dyb3VuZE9yaWdpbiwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbEJveCwg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVy
U3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExh
eWVycywgJkZpbGxMYXllcjo6aXNPcmlnaW5TZXQsICZGaWxsTGF5ZXI6Om9yaWdpbiwgJkZpbGxM
YXllcjo6c2V0T3JpZ2luLCAmRmlsbExheWVyOjpjbGVhck9yaWdpbiwgJkZpbGxMYXllcjo6aW5p
dGlhbEZpbGxPcmlnaW4sICZDU1NUb1N0eWxlTWFwOjptYXBGaWxsT3JpZ2luPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb24sIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk+OjpjcmVh
dGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRQb3NpdGlvblgsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblgsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNj
ZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmls
bExheWVyOjppc1hQb3NpdGlvblNldCwgJkZpbGxMYXllcjo6eFBvc2l0aW9uLCAmRmlsbExheWVy
OjpzZXRYUG9zaXRpb24sICZGaWxsTGF5ZXI6OmNsZWFyWFBvc2l0aW9uLCAmRmlsbExheWVyOjpp
bml0aWFsRmlsbFhQb3NpdGlvbiwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxYUG9zaXRpb24+Ojpj
cmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvblksIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblksIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6
YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAm
RmlsbExheWVyOjppc1lQb3NpdGlvblNldCwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExh
eWVyOjpzZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmNsZWFyWVBvc2l0aW9uLCAmRmlsbExheWVy
Ojppbml0aWFsRmlsbFlQb3NpdGlvbiwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxZUG9zaXRpb24+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblgsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHls
ZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJz
LCAmRmlsbExheWVyOjppc1hQb3NpdGlvblNldCwgJkZpbGxMYXllcjo6eFBvc2l0aW9uLCAmRmls
bExheWVyOjpzZXRYUG9zaXRpb24sICZGaWxsTGF5ZXI6OmNsZWFyWFBvc2l0aW9uLCAmRmlsbExh
eWVyOjppbml0aWFsRmlsbFhQb3NpdGlvbiwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxYUG9zaXRp
b24+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblksIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblksIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJT
dHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5
ZXJzLCAmRmlsbExheWVyOjppc1lQb3NpdGlvblNldCwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAm
RmlsbExheWVyOjpzZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmNsZWFyWVBvc2l0aW9uLCAmRmls
bExheWVyOjppbml0aWFsRmlsbFlQb3NpdGlvbiwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxZUG9z
aXRpb24+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXQsIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1
ZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVw
ZWF0WT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5QmFja2dyb3VuZFJlcGVhdFgsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxSZXBlYXQs
IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5k
ZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5k
TGF5ZXJzLCAmRmlsbExheWVyOjppc1JlcGVhdFhTZXQsICZGaWxsTGF5ZXI6OnJlcGVhdFgsICZG
aWxsTGF5ZXI6OnNldFJlcGVhdFgsICZGaWxsTGF5ZXI6OmNsZWFyUmVwZWF0WCwgJkZpbGxMYXll
cjo6aW5pdGlhbEZpbGxSZXBlYXRYLCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbFJlcGVhdFg+Ojpj
cmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXRZLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVwZWF0LCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXRZLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6
OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywg
JkZpbGxMYXllcjo6aXNSZXBlYXRZU2V0LCAmRmlsbExheWVyOjpyZXBlYXRZLCAmRmlsbExheWVy
OjpzZXRSZXBlYXRZLCAmRmlsbExheWVyOjpjbGVhclJlcGVhdFksICZGaWxsTGF5ZXI6OmluaXRp
YWxGaWxsUmVwZWF0WSwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxSZXBlYXRZPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6
ZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxGaWxsU2l6ZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
U2l6ZSwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5k
TGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzU2l6
ZVNldCwgJkZpbGxMYXllcjo6c2l6ZSwgJkZpbGxMYXllcjo6c2V0U2l6ZSwgJkZpbGxMYXllcjo6
Y2xlYXJTaXplLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFNpemUsICZTdHlsZVJlc29sdmVyOjpt
YXBGaWxsU2l6ZT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxS
ZXBlYXQsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIEJhY2tncm91bmRGaWxsTGF5ZXIs
ICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNr
Z3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc1JlcGVhdFhTZXQsICZGaWxsTGF5ZXI6OnJlcGVh
dFgsICZGaWxsTGF5ZXI6OnNldFJlcGVhdFgsICZGaWxsTGF5ZXI6OmNsZWFyUmVwZWF0WCwgJkZp
bGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRYLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVh
dFg+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXRZLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVwZWF0LCBD
U1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVy
U3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExh
eWVycywgJkZpbGxMYXllcjo6aXNSZXBlYXRZU2V0LCAmRmlsbExheWVyOjpyZXBlYXRZLCAmRmls
bExheWVyOjpzZXRSZXBlYXRZLCAmRmlsbExheWVyOjpjbGVhclJlcGVhdFksICZGaWxsTGF5ZXI6
OmluaXRpYWxGaWxsUmVwZWF0WSwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRZPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kU2l6ZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxGaWxsU2l6ZSwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kU2l6ZSwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNr
Z3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6
OmlzU2l6ZVNldCwgJkZpbGxMYXllcjo6c2l6ZSwgJkZpbGxMYXllcjo6c2V0U2l6ZSwgJkZpbGxM
YXllcjo6Y2xlYXJTaXplLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFNpemUsICZDU1NUb1N0eWxl
TWFwOjptYXBGaWxsU2l6ZT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5Qm9yZGVyLCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFs
dWUsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIENTU1By
b3BlcnR5Qm9yZGVyQ29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSwgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBw
cmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoPjo6Y3JlYXRlSGFuZGxl
cigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xv
ciwgQXBwbHlQcm9wZXJ0eUNvbG9yPE5vSW5oZXJpdEZyb21QYXJlbnQsICZSZW5kZXJTdHlsZTo6
Ym9yZGVyQm90dG9tQ29sb3IsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tQ29sb3IsICZS
ZW5kZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvciwgJlJlbmRlclN0eWxl
Ojpjb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CkBAIC0xOTU3LDE5ICsxOTU4LDE5IEBAIFN0eWxl
QnVpbGRlcjo6U3R5bGVCdWlsZGVyKCkKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlVbmljb2RlQmlkaSwgQXBwbHlQcm9wZXJ0eVVuaWNvZGVCaWRpOjpjcmVhdGVIYW5kbGVyKCkp
OwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIEFwcGx5
UHJvcGVydHlWZXJ0aWNhbEFsaWduOjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVZpc2liaWxpdHksIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVWaXNp
YmlsaXR5LCAmUmVuZGVyU3R5bGU6OnZpc2liaWxpdHksIEVWaXNpYmlsaXR5LCAmUmVuZGVyU3R5
bGU6OnNldFZpc2liaWxpdHksIEVWaXNpYmlsaXR5LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxWaXNp
YmlsaXR5Pjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25EZWxheSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUs
ICZBbmltYXRpb246OmRlbGF5LCAmQW5pbWF0aW9uOjpzZXREZWxheSwgJkFuaW1hdGlvbjo6aXNE
ZWxheVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEZWxheSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1h
dGlvbkRlbGF5LCAmU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uRGVsYXksICZSZW5kZXJTdHls
ZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25EaXJlY3Rpb24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248QW5pbWF0aW9uOjpBbmltYXRpb25E
aXJlY3Rpb24sICZBbmltYXRpb246OmRpcmVjdGlvbiwgJkFuaW1hdGlvbjo6c2V0RGlyZWN0aW9u
LCAmQW5pbWF0aW9uOjppc0RpcmVjdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEaXJlY3Rpb24s
ICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EaXJlY3Rpb24sICZTdHlsZVJlc29sdmVyOjpt
YXBBbmltYXRpb25EaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJl
bmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbiwgQXBwbHlQcm9wZXJ0
eUFuaW1hdGlvbjxkb3VibGUsICZBbmltYXRpb246OmR1cmF0aW9uLCAmQW5pbWF0aW9uOjpzZXRE
dXJhdGlvbiwgJkFuaW1hdGlvbjo6aXNEdXJhdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEdXJh
dGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkR1cmF0aW9uLCAmU3R5bGVSZXNvbHZl
cjo6bWFwQW5pbWF0aW9uRHVyYXRpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywg
JlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZSwgQXBwbHlQcm9w
ZXJ0eUFuaW1hdGlvbjx1bnNpZ25lZCwgJkFuaW1hdGlvbjo6ZmlsbE1vZGUsICZBbmltYXRpb246
OnNldEZpbGxNb2RlLCAmQW5pbWF0aW9uOjppc0ZpbGxNb2RlU2V0LCAmQW5pbWF0aW9uOjpjbGVh
ckZpbGxNb2RlLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRmlsbE1vZGUsICZTdHlsZVJl
c29sdmVyOjptYXBBbmltYXRpb25GaWxsTW9kZSwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRp
b25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
LCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6aXRlcmF0aW9uQ291
bnQsICZBbmltYXRpb246OnNldEl0ZXJhdGlvbkNvdW50LCAmQW5pbWF0aW9uOjppc0l0ZXJhdGlv
bkNvdW50U2V0LCAmQW5pbWF0aW9uOjpjbGVhckl0ZXJhdGlvbkNvdW50LCAmQW5pbWF0aW9uOjpp
bml0aWFsQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsICZTdHlsZVJlc29sdmVyOjptYXBBbmltYXRp
b25JdGVyYXRpb25Db3VudCwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVy
U3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWUsIEFwcGx5UHJvcGVydHlBbmltYXRp
b248Y29uc3QgU3RyaW5nJiwgJkFuaW1hdGlvbjo6bmFtZSwgJkFuaW1hdGlvbjo6c2V0TmFtZSwg
JkFuaW1hdGlvbjo6aXNOYW1lU2V0LCAmQW5pbWF0aW9uOjpjbGVhck5hbWUsICZBbmltYXRpb246
OmluaXRpYWxBbmltYXRpb25OYW1lLCAmU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uTmFtZSwg
JlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+
OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvblBsYXlTdGF0ZSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxFQW5pbVBsYXlT
dGF0ZSwgJkFuaW1hdGlvbjo6cGxheVN0YXRlLCAmQW5pbWF0aW9uOjpzZXRQbGF5U3RhdGUsICZB
bmltYXRpb246OmlzUGxheVN0YXRlU2V0LCAmQW5pbWF0aW9uOjpjbGVhclBsYXlTdGF0ZSwgJkFu
aW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblBsYXlTdGF0ZSwgJlN0eWxlUmVzb2x2ZXI6Om1hcEFu
aW1hdGlvblBsYXlTdGF0ZSwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVy
U3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCBBcHBseVByb3Bl
cnR5QW5pbWF0aW9uPGNvbnN0IFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+LCAmQW5pbWF0aW9u
Ojp0aW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6c2V0VGltaW5nRnVuY3Rpb24sICZBbmltYXRp
b246OmlzVGltaW5nRnVuY3Rpb25TZXQsICZBbmltYXRpb246OmNsZWFyVGltaW5nRnVuY3Rpb24s
ICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgJlN0eWxlUmVzb2x2
ZXI6Om1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1h
dGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXksIEFwcGx5
UHJvcGVydHlBbmltYXRpb248ZG91YmxlLCAmQW5pbWF0aW9uOjpkZWxheSwgJkFuaW1hdGlvbjo6
c2V0RGVsYXksICZBbmltYXRpb246OmlzRGVsYXlTZXQsICZBbmltYXRpb246OmNsZWFyRGVsYXks
ICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EZWxheSwgJkNTU1RvU3R5bGVNYXA6Om1hcEFu
aW1hdGlvbkRlbGF5LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHls
ZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uLCBBcHBseVByb3BlcnR5QW5pbWF0
aW9uPEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uLCAmQW5pbWF0aW9uOjpkaXJlY3Rpb24s
ICZBbmltYXRpb246OnNldERpcmVjdGlvbiwgJkFuaW1hdGlvbjo6aXNEaXJlY3Rpb25TZXQsICZB
bmltYXRpb246OmNsZWFyRGlyZWN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRGly
ZWN0aW9uLCAmQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRGlyZWN0aW9uLCAmUmVuZGVyU3R5
bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhh
bmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uRHVyYXRpb24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248ZG91YmxlLCAmQW5pbWF0aW9uOjpk
dXJhdGlvbiwgJkFuaW1hdGlvbjo6c2V0RHVyYXRpb24sICZBbmltYXRpb246OmlzRHVyYXRpb25T
ZXQsICZBbmltYXRpb246OmNsZWFyRHVyYXRpb24sICZBbmltYXRpb246OmluaXRpYWxBbmltYXRp
b25EdXJhdGlvbiwgJkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkR1cmF0aW9uLCAmUmVuZGVy
U3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0
ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uRmlsbE1vZGUsIEFwcGx5UHJvcGVydHlBbmltYXRpb248dW5zaWduZWQsICZBbmltYXRp
b246OmZpbGxNb2RlLCAmQW5pbWF0aW9uOjpzZXRGaWxsTW9kZSwgJkFuaW1hdGlvbjo6aXNGaWxs
TW9kZVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJGaWxsTW9kZSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFu
aW1hdGlvbkZpbGxNb2RlLCAmQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRmlsbE1vZGUsICZS
ZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6
Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUs
ICZBbmltYXRpb246Oml0ZXJhdGlvbkNvdW50LCAmQW5pbWF0aW9uOjpzZXRJdGVyYXRpb25Db3Vu
dCwgJkFuaW1hdGlvbjo6aXNJdGVyYXRpb25Db3VudFNldCwgJkFuaW1hdGlvbjo6Y2xlYXJJdGVy
YXRpb25Db3VudCwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LCAm
Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsICZSZW5kZXJTdHlsZTo6
YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxl
cigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25O
YW1lLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGNvbnN0IFN0cmluZyYsICZBbmltYXRpb246Om5h
bWUsICZBbmltYXRpb246OnNldE5hbWUsICZBbmltYXRpb246OmlzTmFtZVNldCwgJkFuaW1hdGlv
bjo6Y2xlYXJOYW1lLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uTmFtZSwgJkNTU1RvU3R5
bGVNYXA6Om1hcEFuaW1hdGlvbk5hbWUsICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywg
JlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25QbGF5U3RhdGUsIEFwcGx5UHJv
cGVydHlBbmltYXRpb248RUFuaW1QbGF5U3RhdGUsICZBbmltYXRpb246OnBsYXlTdGF0ZSwgJkFu
aW1hdGlvbjo6c2V0UGxheVN0YXRlLCAmQW5pbWF0aW9uOjppc1BsYXlTdGF0ZVNldCwgJkFuaW1h
dGlvbjo6Y2xlYXJQbGF5U3RhdGUsICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25QbGF5U3Rh
dGUsICZDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25QbGF5U3RhdGUsICZSZW5kZXJTdHlsZTo6
YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxl
cigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25U
aW1pbmdGdW5jdGlvbiwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxjb25zdCBQYXNzUmVmUHRyPFRp
bWluZ0Z1bmN0aW9uPiwgJkFuaW1hdGlvbjo6dGltaW5nRnVuY3Rpb24sICZBbmltYXRpb246OnNl
dFRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppc1RpbWluZ0Z1bmN0aW9uU2V0LCAmQW5pbWF0
aW9uOjpjbGVhclRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uVGlt
aW5nRnVuY3Rpb24sICZDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwg
JlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+
OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdEFwcGVhcmFuY2UsIEFwcGx5UHJvcGVydHlEZWZhdWx0PENvbnRyb2xQYXJ0LCAmUmVuZGVy
U3R5bGU6OmFwcGVhcmFuY2UsIENvbnRyb2xQYXJ0LCAmUmVuZGVyU3R5bGU6OnNldEFwcGVhcmFu
Y2UsIENvbnRyb2xQYXJ0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxBcHBlYXJhbmNlPjo6Y3JlYXRl
SGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBc3Bl
Y3RSYXRpbywgQXBwbHlQcm9wZXJ0eUFzcGVjdFJhdGlvOjpjcmVhdGVIYW5kbGVyKCkpOwogICAg
IHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSwg
QXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJhY2tmYWNlVmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjpi
YWNrZmFjZVZpc2liaWxpdHksIEVCYWNrZmFjZVZpc2liaWxpdHksICZSZW5kZXJTdHlsZTo6c2V0
QmFja2ZhY2VWaXNpYmlsaXR5LCBFQmFja2ZhY2VWaXNpYmlsaXR5LCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxCYWNrZmFjZVZpc2liaWxpdHk+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwLCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDbGlwKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRC
YWNrZ3JvdW5kQ29tcG9zaXRlLCBBcHBseVByb3BlcnR5RmlsbExheWVyPENvbXBvc2l0ZU9wZXJh
dG9yLCBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIEJhY2tncm91bmRGaWxs
TGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxl
OjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0NvbXBvc2l0ZVNldCwgJkZpbGxMYXll
cjo6Y29tcG9zaXRlLCAmRmlsbExheWVyOjpzZXRDb21wb3NpdGUsICZGaWxsTGF5ZXI6OmNsZWFy
Q29tcG9zaXRlLCAmRmlsbExheWVyOjppbml0aWFsRmlsbENvbXBvc2l0ZSwgJlN0eWxlUmVzb2x2
ZXI6Om1hcEZpbGxDb21wb3NpdGU+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIEFwcGx5UHJvcGVy
dHlGaWxsTGF5ZXI8Q29tcG9zaXRlT3BlcmF0b3IsIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3Vu
ZENvbXBvc2l0ZSwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNr
Z3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6
OmlzQ29tcG9zaXRlU2V0LCAmRmlsbExheWVyOjpjb21wb3NpdGUsICZGaWxsTGF5ZXI6OnNldENv
bXBvc2l0ZSwgJkZpbGxMYXllcjo6Y2xlYXJDb21wb3NpdGUsICZGaWxsTGF5ZXI6OmluaXRpYWxG
aWxsQ29tcG9zaXRlLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbENvbXBvc2l0ZT46OmNyZWF0ZUhh
bmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QmFja2dy
b3VuZE9yaWdpbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luKTsKICAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZSwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kU2l6ZSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRml0LCBBcHBseVByb3BlcnR5RGVmYXVsdDxFQm9yZGVyRml0LCAmUmVuZGVyU3R5bGU6OmJv
cmRlckZpdCwgRUJvcmRlckZpdCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJGaXQsIEVCb3JkZXJG
aXQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlckZpdD46OmNyZWF0ZUhhbmRsZXIoKSk7CkBA
IC0yMDM3LDI0ICsyMDM4LDI0IEBAIFN0eWxlQnVpbGRlcjo6U3R5bGVCdWlsZGVyKCkKICAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSwgQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSk7CiAgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwgQXBwbHlQcm9wZXJ0eURlZmF1
bHQ8RU1hcnF1ZWVEaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6bWFycXVlZURpcmVjdGlvbiwgRU1h
cnF1ZWVEaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6c2V0TWFycXVlZURpcmVjdGlvbiwgRU1hcnF1
ZWVEaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6aW5pdGlhbE1hcnF1ZWVEaXJlY3Rpb24+OjpjcmVh
dGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1h
cnF1ZWVTdHlsZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RU1hcnF1ZWVCZWhhdmlvciwgJlJlbmRl
clN0eWxlOjptYXJxdWVlQmVoYXZpb3IsIEVNYXJxdWVlQmVoYXZpb3IsICZSZW5kZXJTdHlsZTo6
c2V0TWFycXVlZUJlaGF2aW9yLCBFTWFycXVlZUJlaGF2aW9yLCAmUmVuZGVyU3R5bGU6OmluaXRp
YWxNYXJxdWVlQmVoYXZpb3I+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBBcHBseVByb3BlcnR5RmlsbExh
eWVyPEVGaWxsQXR0YWNobWVudCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgTWFz
a0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6
Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzQXR0YWNobWVudFNldCwgJkZpbGxMYXllcjo6YXR0
YWNobWVudCwgJkZpbGxMYXllcjo6c2V0QXR0YWNobWVudCwgJkZpbGxMYXllcjo6Y2xlYXJBdHRh
Y2htZW50LCAmRmlsbExheWVyOjppbml0aWFsRmlsbEF0dGFjaG1lbnQsICZTdHlsZVJlc29sdmVy
OjptYXBGaWxsQXR0YWNobWVudD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQsIEFwcGx5UHJvcGVydHlGaWxs
TGF5ZXI8RUZpbGxBdHRhY2htZW50LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBN
YXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHls
ZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNBdHRhY2htZW50U2V0LCAmRmlsbExheWVyOjph
dHRhY2htZW50LCAmRmlsbExheWVyOjpzZXRBdHRhY2htZW50LCAmRmlsbExheWVyOjpjbGVhckF0
dGFjaG1lbnQsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQXR0YWNobWVudCwgJkNTU1RvU3R5bGVN
YXA6Om1hcEZpbGxBdHRhY2htZW50Pjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UsIEFwcGx5UHJvcGVydHlCb3Jk
ZXJJbWFnZTxNYXNrLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgJlJlbmRlclN0eWxl
OjptYXNrQm94SW1hZ2UsICZSZW5kZXJTdHlsZTo6c2V0TWFza0JveEltYWdlPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94
SW1hZ2VPdXRzZXQsIEFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlmaWVyPE1hc2ssIE91dHNl
dD46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0TWFza0JveEltYWdlUmVwZWF0LCBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmll
cjxNYXNrLCBSZXBlYXQ+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNsaWNlLCBBcHBseVByb3BlcnR5Qm9yZGVy
SW1hZ2VNb2RpZmllcjxNYXNrLCBTbGljZT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlLCBBcHBseVBy
b3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2U8Q1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3Vy
Y2UsICZSZW5kZXJTdHlsZTo6bWFza0JveEltYWdlU291cmNlLCAmUmVuZGVyU3R5bGU6OnNldE1h
c2tCb3hJbWFnZVNvdXJjZSwgJlJlbmRlclN0eWxlOjppbml0aWFsTWFza0JveEltYWdlU291cmNl
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrQm94SW1hZ2VXaWR0aCwgQXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI8
TWFzaywgV2lkdGg+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQm94
LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6
OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6
aXNDbGlwU2V0LCAmRmlsbExheWVyOjpjbGlwLCAmRmlsbExheWVyOjpzZXRDbGlwLCAmRmlsbExh
eWVyOjpjbGVhckNsaXAsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ2xpcCwgJlN0eWxlUmVzb2x2
ZXI6Om1hcEZpbGxDbGlwPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlLCBBcHBseVByb3BlcnR5RmlsbExheWVy
PENvbXBvc2l0ZU9wZXJhdG9yLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUsIE1hc2tG
aWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjpt
YXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc0NvbXBvc2l0ZVNldCwgJkZpbGxMYXllcjo6Y29tcG9z
aXRlLCAmRmlsbExheWVyOjpzZXRDb21wb3NpdGUsICZGaWxsTGF5ZXI6OmNsZWFyQ29tcG9zaXRl
LCAmRmlsbExheWVyOjppbml0aWFsRmlsbENvbXBvc2l0ZSwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZp
bGxDb21wb3NpdGU+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxTdHlsZUlt
YWdlKiwgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJT
dHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExh
eWVyOjppc0ltYWdlU2V0LCAmRmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2Us
ICZGaWxsTGF5ZXI6OmNsZWFySW1hZ2UsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsSW1hZ2UsICZT
dHlsZVJlc29sdmVyOjptYXBGaWxsSW1hZ2U+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIEFwcGx5UHJvcGVydHlG
aWxsTGF5ZXI8RUZpbGxCb3gsIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwgTWFza0ZpbGxM
YXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tM
YXllcnMsICZGaWxsTGF5ZXI6OmlzT3JpZ2luU2V0LCAmRmlsbExheWVyOjpvcmlnaW4sICZGaWxs
TGF5ZXI6OnNldE9yaWdpbiwgJkZpbGxMYXllcjo6Y2xlYXJPcmlnaW4sICZGaWxsTGF5ZXI6Omlu
aXRpYWxGaWxsT3JpZ2luLCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbE9yaWdpbj46OmNyZWF0ZUhh
bmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0Ns
aXAsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxCb3gsIENTU1Byb3BlcnR5V2Via2l0TWFz
a0NsaXAsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJl
bmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc0NsaXBTZXQsICZGaWxsTGF5ZXI6
OmNsaXAsICZGaWxsTGF5ZXI6OnNldENsaXAsICZGaWxsTGF5ZXI6OmNsZWFyQ2xpcCwgJkZpbGxM
YXllcjo6aW5pdGlhbEZpbGxDbGlwLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbENsaXA+OjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tDb21wb3NpdGUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8Q29tcG9zaXRlT3BlcmF0b3IsIENT
U1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZSwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxl
OjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6
OmlzQ29tcG9zaXRlU2V0LCAmRmlsbExheWVyOjpjb21wb3NpdGUsICZGaWxsTGF5ZXI6OnNldENv
bXBvc2l0ZSwgJkZpbGxMYXllcjo6Y2xlYXJDb21wb3NpdGUsICZGaWxsTGF5ZXI6OmluaXRpYWxG
aWxsQ29tcG9zaXRlLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbENvbXBvc2l0ZT46OmNyZWF0ZUhh
bmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0lt
YWdlLCBBcHBseVByb3BlcnR5RmlsbExheWVyPFN0eWxlSW1hZ2UqLCBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tJbWFnZSwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJz
LCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzSW1hZ2VTZXQsICZGaWxs
TGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpzZXRJbWFnZSwgJkZpbGxMYXllcjo6Y2xlYXJJbWFn
ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxJbWFnZSwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxJ
bWFnZT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0TWFza09yaWdpbiwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbEJveCwgQ1NT
UHJvcGVydHlXZWJraXRNYXNrT3JpZ2luLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFj
Y2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNP
cmlnaW5TZXQsICZGaWxsTGF5ZXI6Om9yaWdpbiwgJkZpbGxMYXllcjo6c2V0T3JpZ2luLCAmRmls
bExheWVyOjpjbGVhck9yaWdpbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxPcmlnaW4sICZDU1NU
b1N0eWxlTWFwOjptYXBGaWxsT3JpZ2luPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24sIEFwcGx5UHJvcGVydHlF
eHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblk+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIEFwcGx5UHJv
cGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIE1h
c2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxl
OjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1hQb3NpdGlvblNldCwgJkZpbGxMYXllcjo6eFBv
c2l0aW9uLCAmRmlsbExheWVyOjpzZXRYUG9zaXRpb24sICZGaWxsTGF5ZXI6OmNsZWFyWFBvc2l0
aW9uLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFhQb3NpdGlvbiwgJlN0eWxlUmVzb2x2ZXI6Om1h
cEZpbGxYUG9zaXRpb24+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8
TGVuZ3RoLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIE1hc2tGaWxsTGF5ZXIsICZS
ZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAm
RmlsbExheWVyOjppc1lQb3NpdGlvblNldCwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExh
eWVyOjpzZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmNsZWFyWVBvc2l0aW9uLCAmRmlsbExheWVy
Ojppbml0aWFsRmlsbFlQb3NpdGlvbiwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxZUG9zaXRpb24+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tQb3NpdGlvblgsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNj
ZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1hQ
b3NpdGlvblNldCwgJkZpbGxMYXllcjo6eFBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRYUG9zaXRp
b24sICZGaWxsTGF5ZXI6OmNsZWFyWFBvc2l0aW9uLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFhQ
b3NpdGlvbiwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxYUG9zaXRpb24+OjpjcmVhdGVIYW5kbGVy
KCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
blksIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQ
b3NpdGlvblksIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywg
JlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1lQb3NpdGlvblNldCwgJkZp
bGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6
OmNsZWFyWVBvc2l0aW9uLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFlQb3NpdGlvbiwgJkNTU1Rv
U3R5bGVNYXA6Om1hcEZpbGxZUG9zaXRpb24+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsIEFwcGx5UHJvcGVydHlF
eHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIEFwcGx5UHJvcGVydHlG
aWxsTGF5ZXI8RUZpbGxSZXBlYXQsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIE1hc2tG
aWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjpt
YXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1JlcGVhdFhTZXQsICZGaWxsTGF5ZXI6OnJlcGVhdFgs
ICZGaWxsTGF5ZXI6OnNldFJlcGVhdFgsICZGaWxsTGF5ZXI6OmNsZWFyUmVwZWF0WCwgJkZpbGxM
YXllcjo6aW5pdGlhbEZpbGxSZXBlYXRYLCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbFJlcGVhdFg+
OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXRZLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVwZWF0LCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFj
Y2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNS
ZXBlYXRZU2V0LCAmRmlsbExheWVyOjpyZXBlYXRZLCAmRmlsbExheWVyOjpzZXRSZXBlYXRZLCAm
RmlsbExheWVyOjpjbGVhclJlcGVhdFksICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WSwg
JlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxSZXBlYXRZPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwgQXBwbHlQcm9wZXJ0
eUZpbGxMYXllcjxGaWxsU2l6ZSwgQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwgTWFza0ZpbGxM
YXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tM
YXllcnMsICZGaWxsTGF5ZXI6OmlzU2l6ZVNldCwgJkZpbGxMYXllcjo6c2l6ZSwgJkZpbGxMYXll
cjo6c2V0U2l6ZSwgJkZpbGxMYXllcjo6Y2xlYXJTaXplLCAmRmlsbExheWVyOjppbml0aWFsRmls
bFNpemUsICZTdHlsZVJlc29sdmVyOjptYXBGaWxsU2l6ZT46OmNyZWF0ZUhhbmRsZXIoKSk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIEFwcGx5
UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxSZXBlYXQsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dFgsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRl
clN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1JlcGVhdFhTZXQsICZGaWxsTGF5ZXI6
OnJlcGVhdFgsICZGaWxsTGF5ZXI6OnNldFJlcGVhdFgsICZGaWxsTGF5ZXI6OmNsZWFyUmVwZWF0
WCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRYLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmls
bFJlcGVhdFg+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVw
ZWF0LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBNYXNrRmlsbExheWVyLCAmUmVuZGVy
U3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxM
YXllcjo6aXNSZXBlYXRZU2V0LCAmRmlsbExheWVyOjpyZXBlYXRZLCAmRmlsbExheWVyOjpzZXRS
ZXBlYXRZLCAmRmlsbExheWVyOjpjbGVhclJlcGVhdFksICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxs
UmVwZWF0WSwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRZPjo6Y3JlYXRlSGFuZGxlcigp
KTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwgQXBw
bHlQcm9wZXJ0eUZpbGxMYXllcjxGaWxsU2l6ZSwgQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwg
TWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5
bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzU2l6ZVNldCwgJkZpbGxMYXllcjo6c2l6ZSwg
JkZpbGxMYXllcjo6c2V0U2l6ZSwgJkZpbGxMYXllcjo6Y2xlYXJTaXplLCAmRmlsbExheWVyOjpp
bml0aWFsRmlsbFNpemUsICZDU1NUb1N0eWxlTWFwOjptYXBGaWxsU2l6ZT46OmNyZWF0ZUhhbmRs
ZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUs
IEFwcGx5UHJvcGVydHlEZWZhdWx0PEVOQlNQTW9kZSwgJlJlbmRlclN0eWxlOjpuYnNwTW9kZSwg
RU5CU1BNb2RlLCAmUmVuZGVyU3R5bGU6OnNldE5CU1BNb2RlLCBFTkJTUE1vZGUsICZSZW5kZXJT
dHlsZTo6aW5pdGlhbE5CU1BNb2RlPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiwgQXBwbHlQcm9wZXJ0
eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3Jp
Z2luWCwgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblk+OjpjcmVhdGVIYW5kbGVy
KCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZl
T3JpZ2luWCwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6OnBlcnNwZWN0aXZlT3Jp
Z2luWCwgJlJlbmRlclN0eWxlOjpzZXRQZXJzcGVjdGl2ZU9yaWdpblgsICZSZW5kZXJTdHlsZTo6
aW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWD46OmNyZWF0ZUhhbmRsZXIoKSk7CkBAIC0yMDgwLDEw
ICsyMDgxLDEwIEBAIFN0eWxlQnVpbGRlcjo6U3R5bGVCdWlsZGVyKCkKICAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCBBcHBseVByb3BlcnR5
TGVuZ3RoPCZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtT3JpZ2luWSwgJlJlbmRlclN0eWxlOjpzZXRU
cmFuc2Zvcm1PcmlnaW5ZLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5ZPjo6
Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm1PcmlnaW5aLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDxmbG9hdCwgJlJl
bmRlclN0eWxlOjp0cmFuc2Zvcm1PcmlnaW5aLCAmUmVuZGVyU3R5bGU6OnNldFRyYW5zZm9ybU9y
aWdpblosICZSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zZm9ybU9yaWdpblo+OjpjcmVhdGVIYW5k
bGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bVN0eWxlLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFVHJhbnNmb3JtU3R5bGUzRCwgJlJlbmRlclN0
eWxlOjp0cmFuc2Zvcm1TdHlsZTNELCBFVHJhbnNmb3JtU3R5bGUzRCwgJlJlbmRlclN0eWxlOjpz
ZXRUcmFuc2Zvcm1TdHlsZTNELCBFVHJhbnNmb3JtU3R5bGUzRCwgJlJlbmRlclN0eWxlOjppbml0
aWFsVHJhbnNmb3JtU3R5bGUzRD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5LCBBcHBseVByb3BlcnR5QW5p
bWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6ZGVsYXksICZBbmltYXRpb246OnNldERlbGF5LCAm
QW5pbWF0aW9uOjppc0RlbGF5U2V0LCAmQW5pbWF0aW9uOjpjbGVhckRlbGF5LCAmQW5pbWF0aW9u
Ojppbml0aWFsQW5pbWF0aW9uRGVsYXksICZTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25EZWxh
eSwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0
aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJs
ZSwgJkFuaW1hdGlvbjo6ZHVyYXRpb24sICZBbmltYXRpb246OnNldER1cmF0aW9uLCAmQW5pbWF0
aW9uOjppc0R1cmF0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVhckR1cmF0aW9uLCAmQW5pbWF0aW9u
Ojppbml0aWFsQW5pbWF0aW9uRHVyYXRpb24sICZTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25E
dXJhdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0
cmFuc2l0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBBcHBseVByb3BlcnR5QW5pbWF0aW9u
PENTU1Byb3BlcnR5SUQsICZBbmltYXRpb246OnByb3BlcnR5LCAmQW5pbWF0aW9uOjpzZXRQcm9w
ZXJ0eSwgJkFuaW1hdGlvbjo6aXNQcm9wZXJ0eVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJQcm9wZXJ0
eSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblByb3BlcnR5LCAmU3R5bGVSZXNvbHZlcjo6
bWFwQW5pbWF0aW9uUHJvcGVydHksICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZS
ZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwgQXBw
bHlQcm9wZXJ0eUFuaW1hdGlvbjxjb25zdCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiwgJkFu
aW1hdGlvbjo6dGltaW5nRnVuY3Rpb24sICZBbmltYXRpb246OnNldFRpbWluZ0Z1bmN0aW9uLCAm
QW5pbWF0aW9uOjppc1RpbWluZ0Z1bmN0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVhclRpbWluZ0Z1
bmN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sICZTdHls
ZVJlc29sdmVyOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nl
c3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0aW9ucz46OmNyZWF0ZUhhbmRsZXIo
KSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRl
bGF5LCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6ZGVsYXksICZB
bmltYXRpb246OnNldERlbGF5LCAmQW5pbWF0aW9uOjppc0RlbGF5U2V0LCAmQW5pbWF0aW9uOjpj
bGVhckRlbGF5LCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRGVsYXksICZDU1NUb1N0eWxl
TWFwOjptYXBBbmltYXRpb25EZWxheSwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywg
JlJlbmRlclN0eWxlOjp0cmFuc2l0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLCBBcHBseVBy
b3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6ZHVyYXRpb24sICZBbmltYXRpb246
OnNldER1cmF0aW9uLCAmQW5pbWF0aW9uOjppc0R1cmF0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVh
ckR1cmF0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRHVyYXRpb24sICZDU1NUb1N0
eWxlTWFwOjptYXBBbmltYXRpb25EdXJhdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0
aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBB
cHBseVByb3BlcnR5QW5pbWF0aW9uPENTU1Byb3BlcnR5SUQsICZBbmltYXRpb246OnByb3BlcnR5
LCAmQW5pbWF0aW9uOjpzZXRQcm9wZXJ0eSwgJkFuaW1hdGlvbjo6aXNQcm9wZXJ0eVNldCwgJkFu
aW1hdGlvbjo6Y2xlYXJQcm9wZXJ0eSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblByb3Bl
cnR5LCAmQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUHJvcGVydHksICZSZW5kZXJTdHlsZTo6
YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5k
bGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRp
b25UaW1pbmdGdW5jdGlvbiwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxjb25zdCBQYXNzUmVmUHRy
PFRpbWluZ0Z1bmN0aW9uPiwgJkFuaW1hdGlvbjo6dGltaW5nRnVuY3Rpb24sICZBbmltYXRpb246
OnNldFRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppc1RpbWluZ0Z1bmN0aW9uU2V0LCAmQW5p
bWF0aW9uOjpjbGVhclRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9u
VGltaW5nRnVuY3Rpb24sICZDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlv
biwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0
aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0VXNlckRyYWcsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVVc2VyRHJhZywgJlJlbmRl
clN0eWxlOjp1c2VyRHJhZywgRVVzZXJEcmFnLCAmUmVuZGVyU3R5bGU6OnNldFVzZXJEcmFnLCBF
VXNlckRyYWcsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFVzZXJEcmFnPjo6Y3JlYXRlSGFuZGxlcigp
KTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBB
cHBseVByb3BlcnR5RGVmYXVsdDxFVXNlck1vZGlmeSwgJlJlbmRlclN0eWxlOjp1c2VyTW9kaWZ5
LCBFVXNlck1vZGlmeSwgJlJlbmRlclN0eWxlOjpzZXRVc2VyTW9kaWZ5LCBFVXNlck1vZGlmeSwg
JlJlbmRlclN0eWxlOjppbml0aWFsVXNlck1vZGlmeT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQXBwbHlQcm9w
ZXJ0eURlZmF1bHQ8RVVzZXJTZWxlY3QsICZSZW5kZXJTdHlsZTo6dXNlclNlbGVjdCwgRVVzZXJT
ZWxlY3QsICZSZW5kZXJTdHlsZTo6c2V0VXNlclNlbGVjdCwgRVVzZXJTZWxlY3QsICZSZW5kZXJT
dHlsZTo6aW5pdGlhbFVzZXJTZWxlY3Q+OjpjcmVhdGVIYW5kbGVyKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDI1MjI5OGZjNTM2YTBjNzE2OGQ5OWQ4OWYxYjhiYWFl
Mjk1ZTlmZTQuLjU1ZGJmZTlmYzYyN2Q2ZDAzZGMxNzJmYjlmNDAzNmYwZGJiM2IzZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTgsNiArOCw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
KGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqIENvcHlyaWdodCAoYykgMjAxMSwgQ29k
ZSBBdXJvcmEgRm9ydW0uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMzc0LDYgKzM3NSw3IEBAIFN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVz
b2x2ZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykK
ICAgICAsIG1fc2NvcGVTdGFja1BhcmVudCgwKQogICAgICwgbV9zY29wZVN0YWNrUGFyZW50Qm91
bmRzSW5kZXgoMCkKICNlbmRpZgorICAgICwgbV9zdHlsZU1hcCh0aGlzKQogewogICAgIEVsZW1l
bnQqIHJvb3QgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CiAKQEAgLTM3NDAsNyArMzc0
Miw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlk
LCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQocmVm
bGVjdFZhbHVlLT5vZmZzZXQoKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNp
b24gfCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uPihzdHlsZSgpLCBt
X3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKTsKICAgICAgICAgTmluZVBpZWNlSW1hZ2Ug
bWFzazsKICAgICAgICAgbWFzay5zZXRNYXNrRGVmYXVsdHMoKTsKLSAgICAgICAgbWFwTmluZVBp
ZWNlSW1hZ2UoaWQsIHJlZmxlY3RWYWx1ZS0+bWFzaygpLCBtYXNrKTsKKyAgICAgICAgbV9zdHls
ZU1hcC5tYXBOaW5lUGllY2VJbWFnZShpZCwgcmVmbGVjdFZhbHVlLT5tYXNrKCksIG1hc2spOwog
ICAgICAgICByZWZsZWN0aW9uLT5zZXRNYXNrKG1hc2spOwogCiAgICAgICAgIG1fc3R5bGUtPnNl
dEJveFJlZmxlY3QocmVmbGVjdGlvbi5yZWxlYXNlKCkpOwpAQCAtNDQyOCw3NCArNDQzMCw2IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NW
YWx1ZSogdmFsdWUpCiAgICAgfQogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxBdHRh
Y2htZW50KENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkK
LXsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKLSAgICAgICAgbGF5ZXItPnNl
dEF0dGFjaG1lbnQoRmlsbExheWVyOjppbml0aWFsRmlsbEF0dGFjaG1lbnQobGF5ZXItPnR5cGUo
KSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAg
ICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgY2FzZSBDU1NWYWx1
ZUZpeGVkOgotICAgICAgICBsYXllci0+c2V0QXR0YWNobWVudChGaXhlZEJhY2tncm91bmRBdHRh
Y2htZW50KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZVNjcm9sbDoKLSAgICAg
ICAgbGF5ZXItPnNldEF0dGFjaG1lbnQoU2Nyb2xsQmFja2dyb3VuZEF0dGFjaG1lbnQpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVlTG9jYWw6Ci0gICAgICAgIGxheWVyLT5zZXRB
dHRhY2htZW50KExvY2FsQmFja2dyb3VuZEF0dGFjaG1lbnQpOwotICAgICAgICBicmVhazsKLSAg
ICBkZWZhdWx0OgotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIFN0eWxlUmVzb2x2
ZXI6Om1hcEZpbGxDbGlwKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVl
KiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKLSAgICAgICAg
bGF5ZXItPnNldENsaXAoRmlsbExheWVyOjppbml0aWFsRmlsbENsaXAobGF5ZXItPnR5cGUoKSkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBs
YXllci0+c2V0Q2xpcCgqcHJpbWl0aXZlVmFsdWUpOwotfQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6
Om1hcEZpbGxDb21wb3NpdGUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFs
dWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAg
ICBsYXllci0+c2V0Q29tcG9zaXRlKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxDb21wb3NpdGUobGF5
ZXItPnR5cGUoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKLSAgICBsYXllci0+c2V0Q29tcG9zaXRlKCpwcmltaXRpdmVWYWx1ZSk7Ci19Ci0KLXZv
aWQgU3R5bGVSZXNvbHZlcjo6bWFwRmlsbE9yaWdpbihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIq
IGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1
ZSgpKSB7Ci0gICAgICAgIGxheWVyLT5zZXRPcmlnaW4oRmlsbExheWVyOjppbml0aWFsRmlsbE9y
aWdpbihsYXllci0+dHlwZSgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
IXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOwotICAgIGxheWVyLT5zZXRPcmlnaW4oKnByaW1pdGl2ZVZhbHVlKTsKLX0K
LQogUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUltYWdlKENTU1By
b3BlcnR5SUQgcHJvcGVydHksIENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmlz
SW1hZ2VWYWx1ZSgpKQpAQCAtNDUzOSw1MzIgKzQ0NzMsNiBAQCBQYXNzUmVmUHRyPFN0eWxlSW1h
Z2U+IFN0eWxlUmVzb2x2ZXI6OnNldE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BlcgogfQogI2VuZGlmCiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwRmlsbEltYWdlKENTU1By
b3BlcnR5SUQgcHJvcGVydHksIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKLXsK
LSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKLSAgICAgICAgbGF5ZXItPnNldElt
YWdlKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxJbWFnZShsYXllci0+dHlwZSgpKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBsYXllci0+c2V0SW1hZ2Uoc3R5bGVJbWFnZShwcm9wZXJ0
eSwgdmFsdWUpKTsKLX0KLQotdm9pZCBTdHlsZVJlc29sdmVyOjptYXBGaWxsUmVwZWF0WChDU1NQ
cm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYg
KHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7Ci0gICAgICAgIGxheWVyLT5zZXRSZXBlYXRYKEZp
bGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRYKGxheWVyLT50eXBlKCkpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgbGF5ZXItPnNldFJlcGVh
dFgoKnByaW1pdGl2ZVZhbHVlKTsKLX0KLQotdm9pZCBTdHlsZVJlc29sdmVyOjptYXBGaWxsUmVw
ZWF0WShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCi17
Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7Ci0gICAgICAgIGxheWVyLT5zZXRS
ZXBlYXRZKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRZKGxheWVyLT50eXBlKCkpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgbGF5ZXIt
PnNldFJlcGVhdFkoKnByaW1pdGl2ZVZhbHVlKTsKLX0KLQotdm9pZCBTdHlsZVJlc29sdmVyOjpt
YXBGaWxsU2l6ZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFs
dWUpCi17Ci0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgIGxh
eWVyLT5zZXRTaXplVHlwZShTaXplTm9uZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVDb250YWluKQotICAgICAgICBsYXllci0+c2V0U2l6ZVR5cGUoQ29udGFpbik7
Ci0gICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVDb3Zl
cikKLSAgICAgICAgbGF5ZXItPnNldFNpemVUeXBlKENvdmVyKTsKLSAgICBlbHNlCi0gICAgICAg
IGxheWVyLT5zZXRTaXplVHlwZShTaXplTGVuZ3RoKTsKLQotICAgIExlbmd0aFNpemUgYiA9IEZp
bGxMYXllcjo6aW5pdGlhbEZpbGxTaXplTGVuZ3RoKGxheWVyLT50eXBlKCkpOwotCi0gICAgaWYg
KHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpIHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlQ29udGFpbiB8fCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1
ZUNvdmVyKSB7Ci0gICAgICAgIGxheWVyLT5zZXRTaXplTGVuZ3RoKGIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgZmxvYXQgem9vbUZhY3RvciA9IG1fc3R5bGUtPmVmZmVjdGl2ZVpv
b20oKTsKLQotICAgIExlbmd0aCBmaXJzdExlbmd0aDsKLSAgICBMZW5ndGggc2Vjb25kTGVuZ3Ro
OwotCi0gICAgaWYgKFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCkp
IHsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0ID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihwYWlyLT5maXJzdCgpKTsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHNlY29uZCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+c2Vjb25kKCkp
OwotICAgICAgICBmaXJzdExlbmd0aCA9IGZpcnN0LT5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVy
c2lvbj4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAg
c2Vjb25kTGVuZ3RoID0gc2Vjb25kLT5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVyc2lvbj4oc3R5
bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBmaXJzdExlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8QW55Q29u
dmVyc2lvbj4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAg
ICAgc2Vjb25kTGVuZ3RoID0gTGVuZ3RoKCk7Ci0gICAgfQotCi0gICAgaWYgKGZpcnN0TGVuZ3Ro
LmlzVW5kZWZpbmVkKCkgfHwgc2Vjb25kTGVuZ3RoLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGIuc2V0V2lkdGgoZmlyc3RMZW5ndGgpOwotICAgIGIuc2V0SGVpZ2h0KHNl
Y29uZExlbmd0aCk7Ci0gICAgbGF5ZXItPnNldFNpemVMZW5ndGgoYik7Ci19Ci0KLXZvaWQgU3R5
bGVSZXNvbHZlcjo6bWFwRmlsbFhQb3NpdGlvbihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxh
eWVyLCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgp
KSB7Ci0gICAgICAgIGxheWVyLT5zZXRYUG9zaXRpb24oRmlsbExheWVyOjppbml0aWFsRmlsbFhQ
b3NpdGlvbihsYXllci0+dHlwZSgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZs
b2F0IHpvb21GYWN0b3IgPSBtX3N0eWxlLT5lZmZlY3RpdmVab29tKCk7Ci0KLSAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKLSAgICBMZW5ndGggbGVuZ3RoOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
aXNMZW5ndGgoKSkKLSAgICAgICAgbGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5n
dGg8TGVuZ3RoPihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAg
IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgbGVuZ3Ro
ID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAg
ICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5n
dGgoKSkKLSAgICAgICAgbGVuZ3RoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jc3NDYWxjVmFs
dWUoKS0+dG9DYWxjVmFsdWUoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9y
KSk7Ci0gICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzVmlld3BvcnRQZXJjZW50YWdlTGVu
Z3RoKCkpCi0gICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT52aWV3cG9ydFBlcmNlbnRh
Z2VMZW5ndGgoKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybjsKLSAgICBsYXllci0+c2V0WFBv
c2l0aW9uKGxlbmd0aCk7Ci19Ci0KLXZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwRmlsbFlQb3NpdGlv
bihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0g
ICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7Ci0gICAgICAgIGxheWVyLT5zZXRZUG9z
aXRpb24oRmlsbExheWVyOjppbml0aWFsRmlsbFlQb3NpdGlvbihsYXllci0+dHlwZSgpKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZsb2F0IHpvb21GYWN0b3IgPSBtX3N0eWxlLT5l
ZmZlY3RpdmVab29tKCk7Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBMZW5ndGggbGVu
Z3RoOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNMZW5ndGgoKSkKLSAgICAgICAgbGVuZ3Ro
ID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZSgpLCBtX3Jvb3RF
bGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5p
c1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgbGVuZ3RoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5n
ZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+
aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKLSAgICAgICAgbGVuZ3RoID0gTGVu
Z3RoKHByaW1pdGl2ZVZhbHVlLT5jc3NDYWxjVmFsdWUoKS0+dG9DYWxjVmFsdWUoc3R5bGUoKSwg
bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSk7Ci0gICAgZWxzZSBpZiAocHJpbWl0aXZl
VmFsdWUtPmlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkpCi0gICAgICAgIGxlbmd0aCA9IHBy
aW1pdGl2ZVZhbHVlLT52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKTsKLSAgICBlbHNlCi0gICAg
ICAgIHJldHVybjsKLSAgICBsYXllci0+c2V0WVBvc2l0aW9uKGxlbmd0aCk7Ci19Ci0KLXZvaWQg
U3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uRGVsYXkoQW5pbWF0aW9uKiBhbmltYXRpb24sIENT
U1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKLSAg
ICAgICAgYW5pbWF0aW9uLT5zZXREZWxheShBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EZWxh
eSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0g
ICAgYW5pbWF0aW9uLT5zZXREZWxheShwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZVRpbWU8ZmxvYXQs
IENTU1ByaW1pdGl2ZVZhbHVlOjpTZWNvbmRzPigpKTsKLX0KLQotdm9pZCBTdHlsZVJlc29sdmVy
OjptYXBBbmltYXRpb25EaXJlY3Rpb24oQW5pbWF0aW9uKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVl
KQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBsYXllci0+
c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkRpcmVjdGlvbigpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgc3dpdGNo
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6
Ci0gICAgICAgIGxheWVyLT5zZXREaXJlY3Rpb24oQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rp
b25Ob3JtYWwpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVlQWx0ZXJuYXRlOgot
ICAgICAgICBsYXllci0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9u
QWx0ZXJuYXRlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZVJldmVyc2U6Ci0g
ICAgICAgIGxheWVyLT5zZXREaXJlY3Rpb24oQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25S
ZXZlcnNlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUFsdGVybmF0ZVJldmVy
c2U6Ci0gICAgICAgIGxheWVyLT5zZXREaXJlY3Rpb24oQW5pbWF0aW9uOjpBbmltYXRpb25EaXJl
Y3Rpb25BbHRlcm5hdGVSZXZlcnNlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lk
IFN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvbkR1cmF0aW9uKEFuaW1hdGlvbiogYW5pbWF0aW9u
LCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7
Ci0gICAgICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0
aW9uRHVyYXRpb24oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOwotICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24ocHJpbWl0aXZlVmFsdWUtPmNvbXB1
dGVUaW1lPGZsb2F0LCBDU1NQcmltaXRpdmVWYWx1ZTo6U2Vjb25kcz4oKSk7Ci19Ci0KLXZvaWQg
U3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uRmlsbE1vZGUoQW5pbWF0aW9uKiBsYXllciwgQ1NT
VmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAg
ICAgICBsYXllci0+c2V0RmlsbE1vZGUoQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRmlsbE1v
ZGUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwot
ICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICBjYXNlIENTU1Zh
bHVlTm9uZToKLSAgICAgICAgbGF5ZXItPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlTm9u
ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVGb3J3YXJkczoKLSAgICAgICAg
bGF5ZXItPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlRm9yd2FyZHMpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1ZhbHVlQmFja3dhcmRzOgotICAgICAgICBsYXllci0+c2V0Rmls
bE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVCYWNrd2FyZHMpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIENTU1ZhbHVlQm90aDoKLSAgICAgICAgbGF5ZXItPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZp
bGxNb2RlQm90aCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBTdHlsZVJlc29s
dmVyOjptYXBBbmltYXRpb25JdGVyYXRpb25Db3VudChBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NT
VmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAg
ICAgICBhbmltYXRpb24tPnNldEl0ZXJhdGlvbkNvdW50KEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1h
dGlvbkl0ZXJhdGlvbkNvdW50KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NT
VmFsdWVJbmZpbml0ZSkKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRJdGVyYXRpb25Db3VudCgtMSk7
Ci0gICAgZWxzZQotICAgICAgICBhbmltYXRpb24tPnNldEl0ZXJhdGlvbkNvdW50KHByaW1pdGl2
ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpOwotfQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEFu
aW1hdGlvbk5hbWUoQW5pbWF0aW9uKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlm
ICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBsYXllci0+c2V0TmFtZShBbmlt
YXRpb246OmluaXRpYWxBbmltYXRpb25OYW1lKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICBsYXllci0+c2V0SXNOb25lQW5pbWF0aW9uKHRy
dWUpOwotICAgIGVsc2UKLSAgICAgICAgbGF5ZXItPnNldE5hbWUocHJpbWl0aXZlVmFsdWUtPmdl
dFN0cmluZ1ZhbHVlKCkpOwotfQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvblBs
YXlTdGF0ZShBbmltYXRpb24qIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZh
bHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7Ci0gICAgICAgIGxheWVyLT5zZXRQbGF5U3RhdGUoQW5p
bWF0aW9uOjppbml0aWFsQW5pbWF0aW9uUGxheVN0YXRlKCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBFQW5pbVBsYXlTdGF0ZSBwbGF5U3Rh
dGUgPSAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVQYXVzZWQpID8gQW5p
bVBsYXlTdGF0ZVBhdXNlZCA6IEFuaW1QbGF5U3RhdGVQbGF5aW5nOwotICAgIGxheWVyLT5zZXRQ
bGF5U3RhdGUocGxheVN0YXRlKTsKLX0KLQotdm9pZCBTdHlsZVJlc29sdmVyOjptYXBBbmltYXRp
b25Qcm9wZXJ0eShBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQotewotICAg
IGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBhbmltYXRpb24tPnNldEFu
aW1hdGlvbk1vZGUoQW5pbWF0aW9uOjpBbmltYXRlQWxsKTsKLSAgICAgICAgYW5pbWF0aW9uLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUludmFsaWQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkgPT0gQ1NTVmFsdWVBbGwpIHsKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRBbmltYXRpb25Nb2Rl
KEFuaW1hdGlvbjo6QW5pbWF0ZUFsbCk7Ci0gICAgICAgIGFuaW1hdGlvbi0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlJbnZhbGlkKTsKLSAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlTm9uZSkgewotICAgICAgICBhbmltYXRpb24tPnNldEFuaW1hdGlv
bk1vZGUoQW5pbWF0aW9uOjpBbmltYXRlTm9uZSk7Ci0gICAgICAgIGFuaW1hdGlvbi0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlJbnZhbGlkKTsKLSAgICB9IGVsc2UgewotICAgICAgICBhbmltYXRp
b24tPnNldEFuaW1hdGlvbk1vZGUoQW5pbWF0aW9uOjpBbmltYXRlU2luZ2xlUHJvcGVydHkpOwot
ICAgICAgICBhbmltYXRpb24tPnNldFByb3BlcnR5KHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSk7Ci0gICAgfQotfQotCi12b2lkIFN0eWxlUmVz
b2x2ZXI6Om1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKEFuaW1hdGlvbiogYW5pbWF0aW9uLCBD
U1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7Ci0g
ICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQW5pbWF0aW9uOjppbml0aWFsQW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVl
KTsKLSAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAg
ICBjYXNlIENTU1ZhbHVlTGluZWFyOgotICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdG
dW5jdGlvbihMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCkpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVFYXNlOgotICAgICAgICAgICAgYW5pbWF0aW9uLT5z
ZXRUaW1pbmdGdW5jdGlvbihDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZUVhc2VJbjoKLSAgICAgICAg
ICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjo6Y3JlYXRlKDAuNDIsIDAuMCwgMS4wLCAxLjApKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIENTU1ZhbHVlRWFzZU91dDoKLSAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGlt
aW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKDAuMCwgMC4wLCAw
LjU4LCAxLjApKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlRWFz
ZUluT3V0OgotICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoMC40MiwgMC4wLCAwLjU4LCAxLjApKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlU3RlcFN0YXJ0OgotICAgICAgICAg
ICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihTdGVwc1RpbWluZ0Z1bmN0aW9uOjpjcmVh
dGUoMSwgdHJ1ZSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVT
dGVwRW5kOgotICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihTdGVwc1Rp
bWluZ0Z1bmN0aW9uOjpjcmVhdGUoMSwgZmFsc2UpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAodmFsdWUtPmlzQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKCkpIHsKLSAgICAgICAgQ1NTQ3ViaWNCZXppZXJUaW1p
bmdGdW5jdGlvblZhbHVlKiBjdWJpY1RpbWluZ0Z1bmN0aW9uID0gc3RhdGljX2Nhc3Q8Q1NTQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKj4odmFsdWUpOwotICAgICAgICBhbmltYXRpb24t
PnNldFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZShjdWJp
Y1RpbWluZ0Z1bmN0aW9uLT54MSgpLCBjdWJpY1RpbWluZ0Z1bmN0aW9uLT55MSgpLCBjdWJpY1Rp
bWluZ0Z1bmN0aW9uLT54MigpLCBjdWJpY1RpbWluZ0Z1bmN0aW9uLT55MigpKSk7Ci0gICAgfSBl
bHNlIGlmICh2YWx1ZS0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUoKSkgewotICAgICAgICBD
U1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUqIHN0ZXBzVGltaW5nRnVuY3Rpb24gPSBzdGF0aWNf
Y2FzdDxDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgIGFuaW1h
dGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oU3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKHN0ZXBz
VGltaW5nRnVuY3Rpb24tPm51bWJlck9mU3RlcHMoKSwgc3RlcHNUaW1pbmdGdW5jdGlvbi0+c3Rl
cEF0U3RhcnQoKSkpOwotICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzTGluZWFyVGltaW5nRnVuY3Rp
b25WYWx1ZSgpKQotICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKExpbmVhclRp
bWluZ0Z1bmN0aW9uOjpjcmVhdGUoKSk7Ci19Ci0KLXZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwTmlu
ZVBpZWNlSW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTVmFsdWUqIHZhbHVlLCBOaW5l
UGllY2VJbWFnZSYgaW1hZ2UpCi17Ci0gICAgLy8gSWYgd2UncmUgbm90IGEgdmFsdWUgbGlzdCwg
dGhlbiB3ZSBhcmUgIm5vbmUiIGFuZCBkb24ndCBuZWVkIHRvIGFsdGVyIHRoZSBlbXB0eSBpbWFn
ZSBhdCBhbGwuCi0gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUtPmlzVmFsdWVMaXN0KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIC8vIFJldHJpZXZlIHRoZSBib3JkZXIgaW1hZ2UgdmFsdWUuCi0g
ICAgQ1NTVmFsdWVMaXN0KiBib3JkZXJJbWFnZSA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+
KHZhbHVlKTsKLQotICAgIC8vIFNldCB0aGUgaW1hZ2UgKHRoaXMga2lja3Mgb2ZmIHRoZSBsb2Fk
KS4KLSAgICBDU1NQcm9wZXJ0eUlEIGltYWdlUHJvcGVydHk7Ci0gICAgaWYgKHByb3BlcnR5ID09
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UpCi0gICAgICAgIGltYWdlUHJvcGVydHkgPSBD
U1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlOwotICAgIGVsc2UgaWYgKHByb3BlcnR5ID09IENT
U1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlKQotICAgICAgICBpbWFnZVByb3BlcnR5ID0gQ1NT
UHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2U7Ci0gICAgZWxzZQotICAgICAgICBpbWFn
ZVByb3BlcnR5ID0gcHJvcGVydHk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwIDsgaSA8IGJv
cmRlckltYWdlLT5sZW5ndGgoKSA7ICsraSkgewotICAgICAgICBDU1NWYWx1ZSogY3VycmVudCA9
IGJvcmRlckltYWdlLT5pdGVtKGkpOwotCi0gICAgICAgIGlmIChjdXJyZW50LT5pc0ltYWdlVmFs
dWUoKSB8fCBjdXJyZW50LT5pc0ltYWdlR2VuZXJhdG9yVmFsdWUoKQotI2lmIEVOQUJMRShDU1Nf
SU1BR0VfU0VUKQotICAgICAgICAgICAgfHwgY3VycmVudC0+aXNJbWFnZVNldFZhbHVlKCkKLSNl
bmRpZgotICAgICAgICAgICAgKQotICAgICAgICAgICAgaW1hZ2Uuc2V0SW1hZ2Uoc3R5bGVJbWFn
ZShpbWFnZVByb3BlcnR5LCBjdXJyZW50KSk7Ci0gICAgICAgIGVsc2UgaWYgKGN1cnJlbnQtPmlz
Qm9yZGVySW1hZ2VTbGljZVZhbHVlKCkpCi0gICAgICAgICAgICBtYXBOaW5lUGllY2VJbWFnZVNs
aWNlKGN1cnJlbnQsIGltYWdlKTsKLSAgICAgICAgZWxzZSBpZiAoY3VycmVudC0+aXNWYWx1ZUxp
c3QoKSkgewotICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBzbGFzaExpc3QgPSBzdGF0aWNfY2Fz
dDxDU1NWYWx1ZUxpc3QqPihjdXJyZW50KTsKLSAgICAgICAgICAgIC8vIE1hcCBpbiB0aGUgaW1h
Z2Ugc2xpY2VzLgotICAgICAgICAgICAgaWYgKHNsYXNoTGlzdC0+aXRlbSgwKSAmJiBzbGFzaExp
c3QtPml0ZW0oMCktPmlzQm9yZGVySW1hZ2VTbGljZVZhbHVlKCkpCi0gICAgICAgICAgICAgICAg
bWFwTmluZVBpZWNlSW1hZ2VTbGljZShzbGFzaExpc3QtPml0ZW0oMCksIGltYWdlKTsKLQotICAg
ICAgICAgICAgLy8gTWFwIGluIHRoZSBib3JkZXIgc2xpY2VzLgotICAgICAgICAgICAgaWYgKHNs
YXNoTGlzdC0+aXRlbSgxKSkKLSAgICAgICAgICAgICAgICBpbWFnZS5zZXRCb3JkZXJTbGljZXMo
bWFwTmluZVBpZWNlSW1hZ2VRdWFkKHNsYXNoTGlzdC0+aXRlbSgxKSkpOwotCi0gICAgICAgICAg
ICAvLyBNYXAgaW4gdGhlIG91dHNldC4KLSAgICAgICAgICAgIGlmIChzbGFzaExpc3QtPml0ZW0o
MikpCi0gICAgICAgICAgICAgICAgaW1hZ2Uuc2V0T3V0c2V0KG1hcE5pbmVQaWVjZUltYWdlUXVh
ZChzbGFzaExpc3QtPml0ZW0oMikpKTsKLSAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50LT5pc1By
aW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgICAgIC8vIFNldCB0aGUgYXBwcm9wcmlhdGUgcnVs
ZXMgZm9yIHN0cmV0Y2gvcm91bmQvcmVwZWF0IG9mIHRoZSBzbGljZXMuCi0gICAgICAgICAgICBt
YXBOaW5lUGllY2VJbWFnZVJlcGVhdChjdXJyZW50LCBpbWFnZSk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZSkgewot
ICAgICAgICAvLyBXZSBoYXZlIHRvIHByZXNlcnZlIHRoZSBsZWdhY3kgYmVoYXZpb3Igb2YgLXdl
YmtpdC1ib3JkZXItaW1hZ2UgYW5kIG1ha2UgdGhlIGJvcmRlciBzbGljZXMKLSAgICAgICAgLy8g
YWxzbyBzZXQgdGhlIGJvcmRlciB3aWR0aHMuIFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQg
cGVyY2VudGFnZXMsIHNpbmNlIHdlIGRvbid0IGV2ZW4gc3VwcG9ydAotICAgICAgICAvLyB0aG9z
ZSBvbiByZWFsIGJvcmRlcnMgeWV0LgotICAgICAgICBpZiAoaW1hZ2UuYm9yZGVyU2xpY2VzKCku
dG9wKCkuaXNGaXhlZCgpKQotICAgICAgICAgICAgc3R5bGUoKS0+c2V0Qm9yZGVyVG9wV2lkdGgo
aW1hZ2UuYm9yZGVyU2xpY2VzKCkudG9wKCkudmFsdWUoKSk7Ci0gICAgICAgIGlmIChpbWFnZS5i
b3JkZXJTbGljZXMoKS5yaWdodCgpLmlzRml4ZWQoKSkKLSAgICAgICAgICAgIHN0eWxlKCktPnNl
dEJvcmRlclJpZ2h0V2lkdGgoaW1hZ2UuYm9yZGVyU2xpY2VzKCkucmlnaHQoKS52YWx1ZSgpKTsK
LSAgICAgICAgaWYgKGltYWdlLmJvcmRlclNsaWNlcygpLmJvdHRvbSgpLmlzRml4ZWQoKSkKLSAg
ICAgICAgICAgIHN0eWxlKCktPnNldEJvcmRlckJvdHRvbVdpZHRoKGltYWdlLmJvcmRlclNsaWNl
cygpLmJvdHRvbSgpLnZhbHVlKCkpOwotICAgICAgICBpZiAoaW1hZ2UuYm9yZGVyU2xpY2VzKCku
bGVmdCgpLmlzRml4ZWQoKSkKLSAgICAgICAgICAgIHN0eWxlKCktPnNldEJvcmRlckxlZnRXaWR0
aChpbWFnZS5ib3JkZXJTbGljZXMoKS5sZWZ0KCkudmFsdWUoKSk7Ci0gICAgfQotfQotCi12b2lk
IFN0eWxlUmVzb2x2ZXI6Om1hcE5pbmVQaWVjZUltYWdlU2xpY2UoQ1NTVmFsdWUqIHZhbHVlLCBO
aW5lUGllY2VJbWFnZSYgaW1hZ2UpCi17Ci0gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUtPmlzQm9y
ZGVySW1hZ2VTbGljZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFJldHJpZXZl
IHRoZSBib3JkZXIgaW1hZ2UgdmFsdWUuCi0gICAgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlKiBi
b3JkZXJJbWFnZVNsaWNlID0gc3RhdGljX2Nhc3Q8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlKj4o
dmFsdWUpOwotCi0gICAgLy8gU2V0IHVwIGEgbGVuZ3RoIGJveCB0byByZXByZXNlbnQgb3VyIGlt
YWdlIHNsaWNlcy4KLSAgICBMZW5ndGhCb3ggYm94OwotICAgIFF1YWQqIHNsaWNlcyA9IGJvcmRl
ckltYWdlU2xpY2UtPnNsaWNlcygpOwotICAgIGlmIChzbGljZXMtPnRvcCgpLT5pc1BlcmNlbnRh
Z2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldERvdWJs
ZVZhbHVlKCksIFBlcmNlbnQpOwotICAgIGVsc2UKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3Ro
KHNsaWNlcy0+dG9wKCktPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
KSwgRml4ZWQpOwotICAgIGlmIChzbGljZXMtPmJvdHRvbSgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAg
ICAgICAgYm94Lm1fYm90dG9tID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldERvdWJsZVZh
bHVlKCksIFBlcmNlbnQpOwotICAgIGVsc2UKLSAgICAgICAgYm94Lm1fYm90dG9tID0gTGVuZ3Ro
KChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUiksIEZpeGVkKTsKLSAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzUGVyY2VudGFn
ZSgpKQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXREb3Vi
bGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICBlbHNlCi0gICAgICAgIGJveC5tX2xlZnQgPSBMZW5n
dGgoc2xpY2VzLT5sZWZ0KCktPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKSwgRml4ZWQpOwotICAgIGlmIChzbGljZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQot
ICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZh
bHVlKCksIFBlcmNlbnQpOwotICAgIGVsc2UKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBMZW5ndGgo
c2xpY2VzLT5yaWdodCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
UiksIEZpeGVkKTsKLSAgICBpbWFnZS5zZXRJbWFnZVNsaWNlcyhib3gpOwotCi0gICAgLy8gU2V0
IG91ciBmaWxsIG1vZGUuCi0gICAgaW1hZ2Uuc2V0RmlsbChib3JkZXJJbWFnZVNsaWNlLT5tX2Zp
bGwpOwotfQotCi1MZW5ndGhCb3ggU3R5bGVSZXNvbHZlcjo6bWFwTmluZVBpZWNlSW1hZ2VRdWFk
KENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQotICAgICAgICByZXR1cm4gTGVuZ3RoQm94KCk7Ci0KLSAgICAvLyBHZXQgb3Vy
IHpvb20gdmFsdWUuCi0gICAgZmxvYXQgem9vbSA9IHVzZVNWR1pvb21SdWxlcygpID8gMS4wZiA6
IHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKLQotICAgIC8vIFJldHJpZXZlIHRoZSBwcmltaXRp
dmUgdmFsdWUuCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJvcmRlcldpZHRocyA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotCi0gICAgLy8gU2V0IHVwIGEgbGVuZ3Ro
IGJveCB0byByZXByZXNlbnQgb3VyIGltYWdlIHNsaWNlcy4KLSAgICBMZW5ndGhCb3ggYm94OyAv
LyBEZWZhdWx0cyB0byAnYXV0bycgc28gd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUgdGhhdCBleHBs
aWNpdGx5IGJlbG93LgotICAgIFF1YWQqIHNsaWNlcyA9IGJvcmRlcldpZHRocy0+Z2V0UXVhZFZh
bHVlKCk7Ci0gICAgaWYgKHNsaWNlcy0+dG9wKCktPmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5t
X3RvcCA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7Ci0g
ICAgZWxzZSBpZiAoc2xpY2VzLT50b3AoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5t
X3RvcCA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BFUkNFTlRBR0UpLCBQZXJjZW50KTsKLSAgICBlbHNlIGlmIChzbGljZXMtPnRv
cCgpLT5nZXRJZGVudCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAgICAgYm94Lm1fdG9wID0gc2xp
Y2VzLT50b3AoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5
bGUoKSwgem9vbSk7Ci0KLSAgICBpZiAoc2xpY2VzLT5yaWdodCgpLT5pc051bWJlcigpKQotICAg
ICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKCks
IFJlbGF0aXZlKTsKLSAgICBlbHNlIGlmIChzbGljZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgp
KQotICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJs
ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwotICAg
IGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQoKS0+Z2V0SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pCi0g
ICAgICAgIGJveC5tX3JpZ2h0ID0gc2xpY2VzLT5yaWdodCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0
aD4oc3R5bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tKTsKLQotICAgIGlmIChzbGljZXMt
PmJvdHRvbSgpLT5pc051bWJlcigpKQotICAgICAgICBib3gubV9ib3R0b20gPSBMZW5ndGgoc2xp
Y2VzLT5ib3R0b20oKS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOwotICAgIGVsc2UgaWYgKHNs
aWNlcy0+Ym90dG9tKCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9ib3R0b20gPSBM
ZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7Ci0gICAgZWxzZSBpZiAoc2xpY2VzLT5ib3R0b20o
KS0+Z2V0SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IHNs
aWNlcy0+Ym90dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZSgpLCByb290RWxlbWVu
dFN0eWxlKCksIHpvb20pOwotCi0gICAgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc051bWJlcigpKQot
ICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXRJbnRWYWx1ZSgp
LCBSZWxhdGl2ZSk7Ci0gICAgZWxzZSBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzUGVyY2VudGFnZSgp
KQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXREb3VibGVW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpLCBQZXJjZW50KTsKLSAgICBl
bHNlIGlmIChzbGljZXMtPmxlZnQoKS0+Z2V0SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pCi0gICAg
ICAgIGJveC5tX2xlZnQgPSBzbGljZXMtPmxlZnQoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0
eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9vbSk7Ci0KLSAgICByZXR1cm4gYm94OwotfQot
Ci12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcE5pbmVQaWVjZUltYWdlUmVwZWF0KENTU1ZhbHVlKiB2
YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQotewotICAgIGlmICghdmFsdWUgfHwgIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOwotICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7
Ci0gICAgaWYgKCFwYWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8ICFwYWlyLT5zZWNvbmQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaW50IGZpcnN0SWRlbnRpZmllciA9IHBhaXItPmZpcnN0KCkt
PmdldElkZW50KCk7Ci0gICAgaW50IHNlY29uZElkZW50aWZpZXIgPSBwYWlyLT5zZWNvbmQoKS0+
Z2V0SWRlbnQoKTsKLQotICAgIEVOaW5lUGllY2VJbWFnZVJ1bGUgaG9yaXpvbnRhbFJ1bGU7Ci0g
ICAgc3dpdGNoIChmaXJzdElkZW50aWZpZXIpIHsKLSAgICBjYXNlIENTU1ZhbHVlU3RyZXRjaDoK
LSAgICAgICAgaG9yaXpvbnRhbFJ1bGUgPSBTdHJldGNoSW1hZ2VSdWxlOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIENTU1ZhbHVlUm91bmQ6Ci0gICAgICAgIGhvcml6b250YWxSdWxlID0gUm91
bmRJbWFnZVJ1bGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVTcGFjZToKLSAg
ICAgICAgaG9yaXpvbnRhbFJ1bGUgPSBTcGFjZUltYWdlUnVsZTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgZGVmYXVsdDogLy8gQ1NTVmFsdWVSZXBlYXQKLSAgICAgICAgaG9yaXpvbnRhbFJ1bGUgPSBS
ZXBlYXRJbWFnZVJ1bGU7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpbWFnZS5zZXRIb3Jp
em9udGFsUnVsZShob3Jpem9udGFsUnVsZSk7Ci0KLSAgICBFTmluZVBpZWNlSW1hZ2VSdWxlIHZl
cnRpY2FsUnVsZTsKLSAgICBzd2l0Y2ggKHNlY29uZElkZW50aWZpZXIpIHsKLSAgICBjYXNlIENT
U1ZhbHVlU3RyZXRjaDoKLSAgICAgICAgdmVydGljYWxSdWxlID0gU3RyZXRjaEltYWdlUnVsZTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZVJvdW5kOgotICAgICAgICB2ZXJ0aWNh
bFJ1bGUgPSBSb3VuZEltYWdlUnVsZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1
ZVNwYWNlOgotICAgICAgICB2ZXJ0aWNhbFJ1bGUgPSBTcGFjZUltYWdlUnVsZTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgZGVmYXVsdDogLy8gQ1NTVmFsdWVSZXBlYXQKLSAgICAgICAgdmVydGljYWxS
dWxlID0gUmVwZWF0SW1hZ2VSdWxlOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaW1hZ2Uu
c2V0VmVydGljYWxSdWxlKHZlcnRpY2FsUnVsZSk7Ci19Ci0KIHZvaWQgU3R5bGVSZXNvbHZlcjo6
Y2hlY2tGb3JUZXh0U2l6ZUFkanVzdCgpCiB7CiAgICAgaWYgKG1fc3R5bGUtPnRleHRTaXplQWRq
dXN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCAyOWY4MDBlMGM2ZWM3MDUy
ZTM2ZmMyNTlhOGIyMWM5OGI2NWIwOWQ2Li5jNjYyOGZkNzIzZWUyNTg2YjVkZDk1ZTAxZTA1MjNj
NWNjNzk0MGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTIzLDYgKzIzLDcg
QEAKICNkZWZpbmUgU3R5bGVSZXNvbHZlcl9oCiAKICNpbmNsdWRlICJDU1NSdWxlLmgiCisjaW5j
bHVkZSAiQ1NTVG9TdHlsZU1hcC5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1
ZGUgIkxpbmtIYXNoLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgpAQCAtNDExLDYgKzQx
Miw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0ludExlbmd0aChDU1NQ
cmltaXRpdmVWYWx1ZSosIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91
YmxlIG11bHRpcGxpZXIgPSAxKTsKICAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0Zsb2F0TGVu
Z3RoKENTU1ByaW1pdGl2ZVZhbHVlKiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogcm9vdFN0
eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEpOwogCisgICAgQ1NTVG9TdHlsZU1hcCogc3R5bGVN
YXAoKSB7IHJldHVybiAmbV9zdHlsZU1hcDsgfQorICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
UmVuZGVyU3R5bGUqIHNfc3R5bGVOb3RZZXRBdmFpbGFibGU7CiAKQEAgLTQxOSwzMiArNDIyLDYg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2FjaGVCb3JkZXJBbmRCYWNrZ3JvdW5kKCk7CiAKLSAg
ICB2b2lkIG1hcEZpbGxBdHRhY2htZW50KENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1Zh
bHVlKik7Ci0gICAgdm9pZCBtYXBGaWxsQ2xpcChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBD
U1NWYWx1ZSopOwotICAgIHZvaWQgbWFwRmlsbENvbXBvc2l0ZShDU1NQcm9wZXJ0eUlELCBGaWxs
TGF5ZXIqLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwRmlsbE9yaWdpbihDU1NQcm9wZXJ0eUlE
LCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwRmlsbEltYWdlKENTU1Byb3Bl
cnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7Ci0gICAgdm9pZCBtYXBGaWxsUmVwZWF0WChD
U1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwRmlsbFJl
cGVhdFkoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKLSAgICB2b2lkIG1h
cEZpbGxTaXplKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7Ci0gICAgdm9p
ZCBtYXBGaWxsWFBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7
Ci0gICAgdm9pZCBtYXBGaWxsWVBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENT
U1ZhbHVlKik7Ci0KLSAgICB2b2lkIG1hcEFuaW1hdGlvbkRlbGF5KEFuaW1hdGlvbiosIENTU1Zh
bHVlKik7Ci0gICAgdm9pZCBtYXBBbmltYXRpb25EaXJlY3Rpb24oQW5pbWF0aW9uKiwgQ1NTVmFs
dWUqKTsKLSAgICB2b2lkIG1hcEFuaW1hdGlvbkR1cmF0aW9uKEFuaW1hdGlvbiosIENTU1ZhbHVl
Kik7Ci0gICAgdm9pZCBtYXBBbmltYXRpb25GaWxsTW9kZShBbmltYXRpb24qLCBDU1NWYWx1ZSop
OwotICAgIHZvaWQgbWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoQW5pbWF0aW9uKiwgQ1NTVmFs
dWUqKTsKLSAgICB2b2lkIG1hcEFuaW1hdGlvbk5hbWUoQW5pbWF0aW9uKiwgQ1NTVmFsdWUqKTsK
LSAgICB2b2lkIG1hcEFuaW1hdGlvblBsYXlTdGF0ZShBbmltYXRpb24qLCBDU1NWYWx1ZSopOwot
ICAgIHZvaWQgbWFwQW5pbWF0aW9uUHJvcGVydHkoQW5pbWF0aW9uKiwgQ1NTVmFsdWUqKTsKLSAg
ICB2b2lkIG1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKEFuaW1hdGlvbiosIENTU1ZhbHVlKik7
Ci0KLXB1YmxpYzoKLSAgICB2b2lkIG1hcE5pbmVQaWVjZUltYWdlKENTU1Byb3BlcnR5SUQsIENT
U1ZhbHVlKiwgTmluZVBpZWNlSW1hZ2UmKTsKLSAgICB2b2lkIG1hcE5pbmVQaWVjZUltYWdlU2xp
Y2UoQ1NTVmFsdWUqLCBOaW5lUGllY2VJbWFnZSYpOwotICAgIExlbmd0aEJveCBtYXBOaW5lUGll
Y2VJbWFnZVF1YWQoQ1NTVmFsdWUqKTsKLSAgICB2b2lkIG1hcE5pbmVQaWVjZUltYWdlUmVwZWF0
KENTU1ZhbHVlKiwgTmluZVBpZWNlSW1hZ2UmKTsKIHByaXZhdGU6CiAgICAgYm9vbCBjYW5TaGFy
ZVN0eWxlV2l0aENvbnRyb2woU3R5bGVkRWxlbWVudCopIGNvbnN0OwogCkBAIC01MTQsNiArNDkx
LDggQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0eWxlUnVsZSosIFJlZlB0cjxDU1NTdHlsZVJ1
bGU+ID4gbV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcDsKICAgICBIYXNoU2V0PFJlZlB0cjxD
U1NTdHlsZVNoZWV0PiA+IG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldDsKIAorICAgIENTU1Rv
U3R5bGVNYXAgbV9zdHlsZU1hcDsKKwogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKICAgICBib29s
IG1faGFzUGVuZGluZ1NoYWRlcnM7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149304</attachid>
            <date>2012-06-25 09:12:31 -0700</date>
            <delta_ts>2012-06-25 09:26:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89881-20120625091231.patch</filename>
            <type>text/plain</type>
            <size>100498</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ1YWI0NjlmZDYzODY2
ODRlYmNiYWFlNjgzOGUzOTJmYWYzOWExMy4uYTYzYTIxYzM5YTZmMTQwYTQ2MWEzZWY2YjczMWVm
ZTY4Yzk4OWQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA2LTI1ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBTcGxpdCBtYXAqIGZ1bmN0aW9u
cyBvdXQgb2YgU3R5bGVSZXNvbHZlciBpbnRvIGEgaGVscGVyIG9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk4ODEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSBtYXAqIGZ1bmN0aW9ucyBh
cmUgY29tcGxldGVseSBpbmRlcGVuZGVudCBvZiB0aGUgcmVzdCBvZiBTdHlsZVJlc29sdmVyCisg
ICAgICAgIGFuZCBvbmx5IGV4aXN0IHRvIHNlcnZlIFN0eWxlQnVpbGRlci4KKyAgICAgICAgQ1NT
VG9TdHlsZU1hcCBkb2Vzbid0IGV2ZW4gd2FudCB0byBoYXZlIGEgU3R5bGVSZXNvbHZlciBwb2lu
dGVyLCBidXQKKyAgICAgICAgY3VycmVudGx5IG5lZWRzIG9uZSB0byBhY2Nlc3MgdGhlIHJlc29s
dmUtbGlmZXRpbWUgY2FjaGVzIGZvciB0aGUKKyAgICAgICAgY3VycmVudCByZXNvbHZlLiAgT25j
ZSB3ZSBzcGxpdCBvdXQgdGhhdCBwZXItcmVzb2x2ZSBzdGF0ZSBpbnRvCisgICAgICAgIHNvbWUg
c29ydCBvZiBSZXNvbHZlU3RhdGUvUmVzb2x2ZUluZm8gb2JqZWN0IChha2luIHRvIFBhaW50SW5m
by9MYXlvdXRTdGF0ZSkKKyAgICAgICAgdGhlbiB0aGlzIG9iamVjdCB3aWxsIGJlIGV2ZW4gc2lt
cGxlci4KKworICAgICAgICBObyBiZWhhdmlvcmFsIGNoYW5nZSwgdGh1cyBubyB0ZXN0cy4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBjc3MvQ1NTVG9TdHlsZU1hcC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpzdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpyb290RWxlbWVudFN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1RvU3R5bGVNYXA6OnVzZVNWR1pvb21SdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb1N0eWxlTWFwOjpzdHlsZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVN
YXA6Om1hcEZpbGxBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6
Om1hcEZpbGxDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxD
b21wb3NpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbE9yaWdp
bik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFgpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFkpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9T
dHlsZU1hcDo6bWFwRmlsbFhQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxl
TWFwOjptYXBGaWxsWVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6
Om1hcEFuaW1hdGlvbkRlbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1h
cEFuaW1hdGlvbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25EdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25GaWxsTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25JdGVyYXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxl
TWFwOjptYXBBbmltYXRpb25OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6
Om1hcEFuaW1hdGlvblBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBBbmltYXRpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0
eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxl
TWFwOjptYXBOaW5lUGllY2VJbWFnZVNsaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5
bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0
eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVJlcGVhdCk6CisgICAgICAgICogY3NzL0NTU1RvU3R5
bGVNYXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENTU1RvU3R5bGVN
YXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6Q1NTVG9TdHlsZU1hcCk6Cisg
ICAgICAgICogY3NzL1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5RmlsbExheWVyOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJv
cGVydHlCb3JkZXJJbWFnZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBbmltYXRpb246Om1hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcik6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3R5
bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZU1hcCk6CisgICAgICAgIChTdHlsZVJl
c29sdmVyKToKKwogMjAxMi0wNi0yNSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55
MTAwLm5ldD4KIAogICAgICAgICBBZGQgc3RhdGljIHF1YWxpZmllciB0byBHcmFwaGljc0NvbnRl
eHQzRDo6ZXh0cmFjdEltYWdlRGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZmNkZWFiYTkz
M2JkMTM3M2Y4ZjI0NDJmMzMyZGRhMDVkYTg1NzI5Zi4uNmQzZGE3ZjhjMjRiNDYyN2M1ZjEyMzM5
OThkZjM3MGU1MTM0NDNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUwMyw2ICs1MDMsNyBA
QCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL0NTU1N0eWxlUnVsZS5jcHAKICAgICBjc3Mv
Q1NTU3R5bGVTaGVldC5jcHAKICAgICBjc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKKyAg
ICBjc3MvQ1NTVG9TdHlsZU1hcC5jcHAKICAgICBjc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3Bw
CiAgICAgY3NzL0NTU1ZhbHVlLmNwcAogICAgIGNzcy9DU1NWYWx1ZUxpc3QuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA0ODYxZjgyYWRkM2FkMTg3ZjAxM2UxOTZlZjFkNzEz
NDE0NjcxOGQxLi4yYTE0MzE2NjM0NTQ3ZjA0MmUzMjEyNTllMGRiNTJlYjQ5ZDM1MmNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE2NzksNiArMTY3OSw4IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBcCiAJU291
cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVG9TdHlsZU1hcC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NXcmFwU2hhcGVzLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvY3NzL0NTU1dyYXBTaGFwZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVS
YW5nZVZhbHVlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDczZTY3MGVhZTI1ZTg1NTgxOWI1
M2I4ZWIxYjU3ZDg1NzM0MmI4Ni4uZTllYmQ2YzFmNGUzOGRkODI1MDQ0ZWUxNDEwOWM0MWMzOWFl
OWI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjUwNSw2ICsyNTA1LDggQEAKICAgICAgICAgICAg
ICdjc3MvQ1NTU3R5bGVTaGVldC5oJywKICAgICAgICAgICAgICdjc3MvQ1NTVGltaW5nRnVuY3Rp
b25WYWx1ZS5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgn
LAorICAgICAgICAgICAgJ2Nzcy9DU1NUb1N0eWxlTWFwLmNwcCcsCisgICAgICAgICAgICAnY3Nz
L0NTU1RvU3R5bGVNYXAuaCcsCiAgICAgICAgICAgICAnY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVl
LmNwcCcsCiAgICAgICAgICAgICAnY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgnLAogICAgICAg
ICAgICAgJ2Nzcy9DU1NVbmtub3duUnVsZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYTAwMmUyOWRhNDdiNjk4NWZiN2ViNmNkZDRiNTZm
MmMwYTA3NDY2MC4uZDEyZGI1NjZjOGMzOTU5NmZkMGYxMjU0OGUwNzExNTY4NmMxMjdlOSAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTM2NjM1
LDYgKzM2NjM1LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGNzc1xDU1NUb1N0eWxlTWFwLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1RvU3R5bGVNYXAuaCIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXENTU1VuaWNvZGVS
YW5nZVZhbHVlLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDdmOTI5
MjM2ZDM3ZmI0NjU5YThiNjEwYmFkNGM5ZjM5MzkwNDJmMC4uY2M4MzQ0MTM0NTdhMzQwOTNkYzBj
NmUyMTI1YTBkODk5ZjFjYzc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDE4Nyw2ICs0MTg3LDggQEAKIAkJQTg3MURGRTQw
QTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRlcldpZGdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg3MURGRTAwQTE1Mzc2QjAwQjEyQTY4IC8qIFJlbmRl
cldpZGdldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUE4NzFERkU1MEExNTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJXaWRnZXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg3MURGRTEwQTE1Mzc2QjAw
QjEyQTY4IC8qIFJlbmRlcldpZGdldC5jcHAgKi87IH07CiAJCUE4NzQ4QkUwMTJDQkYyREMwMDFG
QkE0MSAvKiBIYXNoVG9vbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4NzQ4QkRGMTJDQkYyREMwMDFGQkE0MSAvKiBIYXNoVG9vbHMuaCAqLzsgfTsK
KwkJQTg4MkRBMjAxNTkzODQ2QTAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg4MkRBMUYxNTkzODQ2QTAw
MDExNUVEIC8qIENTU1RvU3R5bGVNYXAuY3BwICovOyB9OworCQlBODgyREEyMzE1OTM4NDhEMDAw
MTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTg4MkRBMjIxNTkzODQ4RDAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAu
aCAqLzsgfTsKIAkJQTg4M0RGMjcwRjNEMDQ1RDAwRjE5QkY2IC8qIFZpc2libGVTZWxlY3Rpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg4M0RG
MjUwRjNEMDQ1RDAwRjE5QkY2IC8qIFZpc2libGVTZWxlY3Rpb24uY3BwICovOyB9OwogCQlBODgz
REYyODBGM0QwNDVEMDBGMTlCRjYgLyogVmlzaWJsZVNlbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg4M0RGMjYwRjNEMDQ1RDAwRjE5QkY2
IC8qIFZpc2libGVTZWxlY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBODhBRDUyRjA5NTI0QjkyMDAxREQxOTYgLyogUXVhcnR6Q29yZS5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBODVEN0EyRjA4NzlFQkE5MDA2QTkxNzIgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgKi87IH07
CkBAIC0xMTE5Nyw2ICsxMTE5OSw4IEBACiAJCUE4NzQ4QkRGMTJDQkYyREMwMDFGQkE0MSAvKiBI
YXNoVG9vbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFzaFRvb2xzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAv
KiBJbWFnZU9yaWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElt
YWdlT3JpZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg3NDhENzQx
MkNDM0Y4OTAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VPcmllbnRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE4ODJEQTFGMTU5Mzg0NkEwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFw
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1RvU3R5bGVNYXAu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBODgyREEyMjE1OTM4NDhEMDAwMTE1
RUQgLyogQ1NTVG9TdHlsZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
U1NUb1N0eWxlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4ODNERjI1MEYz
RDA0NUQwMEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFZpc2libGVTZWxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBODgzREYyNjBGM0QwNDVEMDBGMTlCRjYgLyogVmlzaWJsZVNlbGVjdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXNpYmxlU2VsZWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4ODZDREMyMTRGQkJBQTMwMEQyNzlGNCAv
KiBXb3JrZXJDb250ZXh0V2ViU29ja2V0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXb3Jr
ZXJDb250ZXh0V2ViU29ja2V0LmlkbDsgcGF0aCA9IE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJD
b250ZXh0V2ViU29ja2V0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwOTk3
LDYgKzIxMDAxLDggQEAKIAkJCQlCQzlBREQ3RjBDQzQwOTIyMDAwOThDNEMgLyogV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUuY3BwICovLAogCQkJCUJDOUFERDIyMENDNDAzMjYwMDA5OEM0QyAvKiBX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oICovLAogCQkJCTMxNjExRTU0MEUxQzRENEEwMEY2QTU3
OSAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5pZGwgKi8sCisJCQkJQTg4MkRBMUYxNTkzODQ2
QTAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAuY3BwICovLAorCQkJCUE4ODJEQTIyMTU5Mzg0OEQw
MDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNzczsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNTE0OCw2ICsyNTE1NCw3IEBACiAJCQkJQ0U3
QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTA5ODdDMjcxNTdENjc2RDAwQkRBODM1IC8qIEN1c3RvbUZpbHRlckds
b2JhbENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGMzJCQjFCMTRGQTg1RTgwMEY2QzFB
MyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUE4ODJEQTIz
MTU5Mzg0OEQwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI4
MjAwLDYgKzI4MjA3LDcgQEAKIAkJCQlDRTdCMkRCNDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJu
YXRpdmVUZXh0VUlDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U3QjJEQjYxNTg2
QUJBRDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUwOTg3QzI2MTU3RDY3NkQwMEJEQTgzNSAvKiBDdXN0b21GaWx0ZXJHbG9iYWxDb250
ZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE4ODJEQTIwMTU5Mzg0NkEwMDAxMTVFRCAvKiBD
U1NUb1N0eWxlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVN
YXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUxNTRjZWNkM2U4YTA1Y2U2NDQ2NDFjY2E5NTNhOTg3M2U1Nzg0
ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5j
cHAKQEAgLTAsMCArMSw2NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNC0yMDA1IEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NyBOaWNob2xhcyBTaGFua3MgKHdlYmtpdEBuaWNrc2hhbmtzLmNvbSkKKyAqIENvcHlyaWdodCAo
QykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxleGV5IFBy
b3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5
IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNo
bW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIENvZGUgQXVyb3JhIEZvcnVtLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24g
TGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQ1NTVG9TdHlsZU1hcC5oIgorCisjaW5jbHVkZSAiQW5pbWF0aW9uLmgiCisjaW5j
bHVkZSAiQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZl
VmFsdWUuaCIKKyNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCisjaW5jbHVk
ZSAiQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMu
aCIKKyNpbmNsdWRlICJGaWxsTGF5ZXIuaCIKKyNpbmNsdWRlICJQYWlyLmgiCisjaW5jbHVkZSAi
UmVjdC5oIgorI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitSZW5kZXJTdHlsZSogQ1NTVG9TdHlsZU1hcDo6c3R5bGUoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3Jlc29sdmVyLT5zdHlsZSgpOworfQorICAgIAorUmVuZGVyU3R5bGUqIENTU1RvU3R5
bGVNYXA6OnJvb3RFbGVtZW50U3R5bGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc29sdmVy
LT5yb290RWxlbWVudFN0eWxlKCk7Cit9CisKK2Jvb2wgQ1NTVG9TdHlsZU1hcDo6dXNlU1ZHWm9v
bVJ1bGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvbHZlci0+dXNlU1ZHWm9vbVJ1bGVz
KCk7Cit9CisgICAgCitQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IENTU1RvU3R5bGVNYXA6OnN0eWxl
SW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBDU1NWYWx1ZSogdmFsdWUpCit7CisgICAg
cmV0dXJuIG1fcmVzb2x2ZXItPnN0eWxlSW1hZ2UocHJvcGVydHlJZCwgdmFsdWUpOworfQorCit2
b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxBdHRhY2htZW50KENTU1Byb3BlcnR5SUQsIEZpbGxM
YXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlh
bFZhbHVlKCkpIHsKKyAgICAgICAgbGF5ZXItPnNldEF0dGFjaG1lbnQoRmlsbExheWVyOjppbml0
aWFsRmlsbEF0dGFjaG1lbnQobGF5ZXItPnR5cGUoKSkpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZUZpeGVkOgorICAgICAgICBsYXllci0+c2V0
QXR0YWNobWVudChGaXhlZEJhY2tncm91bmRBdHRhY2htZW50KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDU1NWYWx1ZVNjcm9sbDoKKyAgICAgICAgbGF5ZXItPnNldEF0dGFjaG1lbnQoU2Ny
b2xsQmFja2dyb3VuZEF0dGFjaG1lbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1Zh
bHVlTG9jYWw6CisgICAgICAgIGxheWVyLT5zZXRBdHRhY2htZW50KExvY2FsQmFja2dyb3VuZEF0
dGFjaG1lbnQpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm47
CisgICAgfQorfQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxDbGlwKENTU1Byb3BlcnR5
SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUt
PmlzSW5pdGlhbFZhbHVlKCkpIHsKKyAgICAgICAgbGF5ZXItPnNldENsaXAoRmlsbExheWVyOjpp
bml0aWFsRmlsbENsaXAobGF5ZXItPnR5cGUoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBsYXllci0+c2V0Q2xpcCgqcHJpbWl0aXZlVmFs
dWUpOworfQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxDb21wb3NpdGUoQ1NTUHJvcGVy
dHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1
ZS0+aXNJbml0aWFsVmFsdWUoKSkgeworICAgICAgICBsYXllci0+c2V0Q29tcG9zaXRlKEZpbGxM
YXllcjo6aW5pdGlhbEZpbGxDb21wb3NpdGUobGF5ZXItPnR5cGUoKSkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBsYXllci0+c2V0Q29tcG9z
aXRlKCpwcmltaXRpdmVWYWx1ZSk7Cit9CisKK3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbE9y
aWdpbihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit7
CisgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CisgICAgICAgIGxheWVyLT5zZXRP
cmlnaW4oRmlsbExheWVyOjppbml0aWFsRmlsbE9yaWdpbihsYXllci0+dHlwZSgpKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1
ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIGxheWVyLT5z
ZXRPcmlnaW4oKnByaW1pdGl2ZVZhbHVlKTsKK30KKworCit2b2lkIENTU1RvU3R5bGVNYXA6Om1h
cEZpbGxJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NW
YWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CisgICAg
ICAgIGxheWVyLT5zZXRJbWFnZShGaWxsTGF5ZXI6OmluaXRpYWxGaWxsSW1hZ2UobGF5ZXItPnR5
cGUoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbGF5ZXItPnNldEltYWdlKHN0
eWxlSW1hZ2UocHJvcGVydHksIHZhbHVlKSk7Cit9CisKK3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFw
RmlsbFJlcGVhdFgoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZh
bHVlKQoreworICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgeworICAgICAgICBsYXll
ci0+c2V0UmVwZWF0WChGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WChsYXllci0+dHlwZSgp
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAg
IGxheWVyLT5zZXRSZXBlYXRYKCpwcmltaXRpdmVWYWx1ZSk7Cit9CisKK3ZvaWQgQ1NTVG9TdHls
ZU1hcDo6bWFwRmlsbFJlcGVhdFkoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NT
VmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgeworICAg
ICAgICBsYXllci0+c2V0UmVwZWF0WShGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WShsYXll
ci0+dHlwZSgpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOworICAgIGxheWVyLT5zZXRSZXBlYXRZKCpwcmltaXRpdmVWYWx1ZSk7Cit9CisKK3ZvaWQg
Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXll
ciwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkgeworICAgICAgICBsYXllci0+c2V0U2l6ZVR5cGUoU2l6ZU5vbmUpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ29udGFpbikKKyAgICAgICAgbGF5ZXItPnNldFNp
emVUeXBlKENvbnRhaW4pOworICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlQ292ZXIpCisgICAgICAgIGxheWVyLT5zZXRTaXplVHlwZShDb3Zlcik7Cisg
ICAgZWxzZQorICAgICAgICBsYXllci0+c2V0U2l6ZVR5cGUoU2l6ZUxlbmd0aCk7CisKKyAgICBM
ZW5ndGhTaXplIGIgPSBGaWxsTGF5ZXI6OmluaXRpYWxGaWxsU2l6ZUxlbmd0aChsYXllci0+dHlw
ZSgpKTsKKworICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSB8fCBwcmltaXRpdmVWYWx1
ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUNvbnRhaW4gfHwgcHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkgPT0gQ1NTVmFsdWVDb3ZlcikgeworICAgICAgICBsYXllci0+c2V0U2l6ZUxlbmd0aChi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZsb2F0IHpvb21GYWN0b3IgPSBzdHls
ZSgpLT5lZmZlY3RpdmVab29tKCk7CisKKyAgICBMZW5ndGggZmlyc3RMZW5ndGg7CisgICAgTGVu
Z3RoIHNlY29uZExlbmd0aDsKKworICAgIGlmIChQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUt
PmdldFBhaXJWYWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmaXJzdCA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+Zmlyc3QoKSk7CisgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmQgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHBhaXItPnNlY29uZCgpKTsKKyAgICAgICAgZmlyc3RMZW5ndGggPSBmaXJzdC0+Y29udmVydFRv
TGVuZ3RoPEFueUNvbnZlcnNpb24+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZh
Y3Rvcik7CisgICAgICAgIHNlY29uZExlbmd0aCA9IHNlY29uZC0+Y29udmVydFRvTGVuZ3RoPEFu
eUNvbnZlcnNpb24+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3Rvcik7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZmlyc3RMZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29udmVy
dFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9v
bUZhY3Rvcik7CisgICAgICAgIHNlY29uZExlbmd0aCA9IExlbmd0aCgpOworICAgIH0KKworICAg
IGlmIChmaXJzdExlbmd0aC5pc1VuZGVmaW5lZCgpIHx8IHNlY29uZExlbmd0aC5pc1VuZGVmaW5l
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBiLnNldFdpZHRoKGZpcnN0TGVuZ3RoKTsKKyAg
ICBiLnNldEhlaWdodChzZWNvbmRMZW5ndGgpOworICAgIGxheWVyLT5zZXRTaXplTGVuZ3RoKGIp
OworfQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxYUG9zaXRpb24oQ1NTUHJvcGVydHlJ
RCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+
aXNJbml0aWFsVmFsdWUoKSkgeworICAgICAgICBsYXllci0+c2V0WFBvc2l0aW9uKEZpbGxMYXll
cjo6aW5pdGlhbEZpbGxYUG9zaXRpb24obGF5ZXItPnR5cGUoKSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBmbG9hdCB6b29tRmFjdG9yID0gc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgp
OworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgTGVuZ3RoIGxlbmd0aDsKKyAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkpCisgICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZh
bHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgpLCB6
b29tRmFjdG9yKTsKKyAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50YWdlKCkp
CisgICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUo
KSwgUGVyY2VudCk7CisgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzQ2FsY3VsYXRlZFBl
cmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCisgICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRpdmVW
YWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPnRvQ2FsY1ZhbHVlKHN0eWxlKCksIHJvb3RFbGVtZW50U3R5
bGUoKSwgem9vbUZhY3RvcikpOworICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1ZpZXdw
b3J0UGVyY2VudGFnZUxlbmd0aCgpKQorICAgICAgICBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+
dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm47Cisg
ICAgbGF5ZXItPnNldFhQb3NpdGlvbihsZW5ndGgpOworfQorCit2b2lkIENTU1RvU3R5bGVNYXA6
Om1hcEZpbGxZUG9zaXRpb24oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFs
dWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgeworICAgICAg
ICBsYXllci0+c2V0WVBvc2l0aW9uKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxZUG9zaXRpb24obGF5
ZXItPnR5cGUoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB6b29tRmFj
dG9yID0gc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7
CisgICAgTGVuZ3RoIGxlbmd0aDsKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkp
CisgICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4o
c3R5bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tRmFjdG9yKTsKKyAgICBlbHNlIGlmIChw
cmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50YWdlKCkpCisgICAgICAgIGxlbmd0aCA9IExlbmd0aChw
cmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgZWxzZSBpZiAo
cHJpbWl0aXZlVmFsdWUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCisgICAg
ICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPnRvQ2Fs
Y1ZhbHVlKHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3RvcikpOworICAgIGVs
c2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpKQorICAg
ICAgICBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCk7
CisgICAgZWxzZQorICAgICAgICByZXR1cm47CisgICAgbGF5ZXItPnNldFlQb3NpdGlvbihsZW5n
dGgpOworfQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkRlbGF5KEFuaW1hdGlv
biogYW5pbWF0aW9uLCBDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLT5pc0luaXRp
YWxWYWx1ZSgpKSB7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0RGVsYXkoQW5pbWF0aW9uOjppbml0
aWFsQW5pbWF0aW9uRGVsYXkoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
IXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOworICAgIGFuaW1hdGlvbi0+c2V0RGVsYXkocHJpbWl0aXZlVmFsdWUtPmNv
bXB1dGVUaW1lPGZsb2F0LCBDU1NQcmltaXRpdmVWYWx1ZTo6U2Vjb25kcz4oKSk7Cit9CisKK3Zv
aWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRGlyZWN0aW9uKEFuaW1hdGlvbiogbGF5ZXIs
IENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsK
KyAgICAgICAgbGF5ZXItPnNldERpcmVjdGlvbihBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25E
aXJlY3Rpb24oKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlLT5p
c1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
dWUpOworICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICBjYXNl
IENTU1ZhbHVlTm9ybWFsOgorICAgICAgICBsYXllci0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6
QW5pbWF0aW9uRGlyZWN0aW9uTm9ybWFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NW
YWx1ZUFsdGVybmF0ZToKKyAgICAgICAgbGF5ZXItPnNldERpcmVjdGlvbihBbmltYXRpb246OkFu
aW1hdGlvbkRpcmVjdGlvbkFsdGVybmF0ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NT
VmFsdWVSZXZlcnNlOgorICAgICAgICBsYXllci0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6QW5p
bWF0aW9uRGlyZWN0aW9uUmV2ZXJzZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFs
dWVBbHRlcm5hdGVSZXZlcnNlOgorICAgICAgICBsYXllci0+c2V0RGlyZWN0aW9uKEFuaW1hdGlv
bjo6QW5pbWF0aW9uRGlyZWN0aW9uQWx0ZXJuYXRlUmV2ZXJzZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25EdXJhdGlvbihBbmlt
YXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+aXNJ
bml0aWFsVmFsdWUoKSkgeworICAgICAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKEFuaW1hdGlv
bjo6aW5pdGlhbEFuaW1hdGlvbkR1cmF0aW9uKCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKHByaW1p
dGl2ZVZhbHVlLT5jb21wdXRlVGltZTxmbG9hdCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlNlY29uZHM+
KCkpOworfQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkZpbGxNb2RlKEFuaW1h
dGlvbiogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlh
bFZhbHVlKCkpIHsKKyAgICAgICAgbGF5ZXItPnNldEZpbGxNb2RlKEFuaW1hdGlvbjo6aW5pdGlh
bEFuaW1hdGlvbkZpbGxNb2RlKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7
CisgICAgY2FzZSBDU1NWYWx1ZU5vbmU6CisgICAgICAgIGxheWVyLT5zZXRGaWxsTW9kZShBbmlt
YXRpb25GaWxsTW9kZU5vbmUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlRm9y
d2FyZHM6CisgICAgICAgIGxheWVyLT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZUZvcndh
cmRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUJhY2t3YXJkczoKKyAgICAg
ICAgbGF5ZXItPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlQmFja3dhcmRzKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZUJvdGg6CisgICAgICAgIGxheWVyLT5zZXRGaWxs
TW9kZShBbmltYXRpb25GaWxsTW9kZUJvdGgpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisK
K3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoQW5pbWF0aW9u
KiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlh
bFZhbHVlKCkpIHsKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRJdGVyYXRpb25Db3VudChBbmltYXRp
b246OmluaXRpYWxBbmltYXRpb25JdGVyYXRpb25Db3VudCgpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlSW5maW5pdGUpCisgICAgICAgIGFuaW1hdGlvbi0+c2V0SXRl
cmF0aW9uQ291bnQoLTEpOworICAgIGVsc2UKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRJdGVyYXRp
b25Db3VudChwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKTsKK30KKwordm9pZCBDU1NU
b1N0eWxlTWFwOjptYXBBbmltYXRpb25OYW1lKEFuaW1hdGlvbiogbGF5ZXIsIENTU1ZhbHVlKiB2
YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKKyAgICAgICAgbGF5
ZXItPnNldE5hbWUoQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uTmFtZSgpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgbGF5ZXItPnNldElz
Tm9uZUFuaW1hdGlvbih0cnVlKTsKKyAgICBlbHNlCisgICAgICAgIGxheWVyLT5zZXROYW1lKHBy
aW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKK30KKwordm9pZCBDU1NUb1N0eWxlTWFw
OjptYXBBbmltYXRpb25QbGF5U3RhdGUoQW5pbWF0aW9uKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVl
KQoreworICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgeworICAgICAgICBsYXllci0+
c2V0UGxheVN0YXRlKEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblBsYXlTdGF0ZSgpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgRUFuaW1Q
bGF5U3RhdGUgcGxheVN0YXRlID0gKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlUGF1c2VkKSA/IEFuaW1QbGF5U3RhdGVQYXVzZWQgOiBBbmltUGxheVN0YXRlUGxheWluZzsK
KyAgICBsYXllci0+c2V0UGxheVN0YXRlKHBsYXlTdGF0ZSk7Cit9CisKK3ZvaWQgQ1NTVG9TdHls
ZU1hcDo6bWFwQW5pbWF0aW9uUHJvcGVydHkoQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVl
KiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKKyAgICAgICAg
YW5pbWF0aW9uLT5zZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0ZUFsbCk7CisgICAg
ICAgIGFuaW1hdGlvbi0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJbnZhbGlkKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQWxsKSB7CisgICAgICAgIGFuaW1hdGlvbi0+
c2V0QW5pbWF0aW9uTW9kZShBbmltYXRpb246OkFuaW1hdGVBbGwpOworICAgICAgICBhbmltYXRp
b24tPnNldFByb3BlcnR5KENTU1Byb3BlcnR5SW52YWxpZCk7CisgICAgfSBlbHNlIGlmIChwcmlt
aXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICAgICAgYW5pbWF0
aW9uLT5zZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0ZU5vbmUpOworICAgICAgICBh
bmltYXRpb24tPnNldFByb3BlcnR5KENTU1Byb3BlcnR5SW52YWxpZCk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgYW5pbWF0aW9uLT5zZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0ZVNp
bmdsZVByb3BlcnR5KTsKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRQcm9wZXJ0eShzdGF0aWNfY2Fz
dDxDU1NQcm9wZXJ0eUlEPihwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkpOworICAgIH0KK30K
Kwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbihBbmltYXRp
b24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+aXNJbml0
aWFsVmFsdWUoKSkgeworICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEFuaW1h
dGlvbjo6aW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxpbmVhcjoKKyAgICAgICAgICAgIGFuaW1h
dGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oTGluZWFyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlRWFzZToKKyAgICAgICAg
ICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjo6Y3JlYXRlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVF
YXNlSW46CisgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgwLjQyLCAwLjAsIDEuMCwgMS4wKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUVhc2VPdXQ6CisgICAgICAgICAgICBh
bmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNy
ZWF0ZSgwLjAsIDAuMCwgMC41OCwgMS4wKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBDU1NWYWx1ZUVhc2VJbk91dDoKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5n
RnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKDAuNDIsIDAuMCwgMC41
OCwgMS4wKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVN0ZXBT
dGFydDoKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oU3RlcHNUaW1p
bmdGdW5jdGlvbjo6Y3JlYXRlKDEsIHRydWUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIENTU1ZhbHVlU3RlcEVuZDoKKyAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5n
RnVuY3Rpb24oU3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKDEsIGZhbHNlKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KHZhbHVlLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSgpKSB7CisgICAgICAgIENT
U0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSogY3ViaWNUaW1pbmdGdW5jdGlvbiA9IHN0
YXRpY19jYXN0PENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSo+KHZhbHVlKTsKKyAg
ICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uOjpjcmVhdGUoY3ViaWNUaW1pbmdGdW5jdGlvbi0+eDEoKSwgY3ViaWNUaW1pbmdGdW5jdGlv
bi0+eTEoKSwgY3ViaWNUaW1pbmdGdW5jdGlvbi0+eDIoKSwgY3ViaWNUaW1pbmdGdW5jdGlvbi0+
eTIoKSkpOworICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVl
KCkpIHsKKyAgICAgICAgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKiBzdGVwc1RpbWluZ0Z1
bmN0aW9uID0gc3RhdGljX2Nhc3Q8Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKj4odmFsdWUp
OworICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKFN0ZXBzVGltaW5nRnVuY3Rp
b246OmNyZWF0ZShzdGVwc1RpbWluZ0Z1bmN0aW9uLT5udW1iZXJPZlN0ZXBzKCksIHN0ZXBzVGlt
aW5nRnVuY3Rpb24tPnN0ZXBBdFN0YXJ0KCkpKTsKKyAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc0xp
bmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUoKSkKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdG
dW5jdGlvbihMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCkpOworfQorCit2b2lkIENTU1Rv
U3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1Zh
bHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQoreworICAgIC8vIElmIHdlJ3JlIG5v
dCBhIHZhbHVlIGxpc3QsIHRoZW4gd2UgYXJlICJub25lIiBhbmQgZG9uJ3QgbmVlZCB0byBhbHRl
ciB0aGUgZW1wdHkgaW1hZ2UgYXQgYWxsLgorICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLT5pc1Zh
bHVlTGlzdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBSZXRyaWV2ZSB0aGUgYm9yZGVy
IGltYWdlIHZhbHVlLgorICAgIENTU1ZhbHVlTGlzdCogYm9yZGVySW1hZ2UgPSBzdGF0aWNfY2Fz
dDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7CisKKyAgICAvLyBTZXQgdGhlIGltYWdlICh0aGlzIGtp
Y2tzIG9mZiB0aGUgbG9hZCkuCisgICAgQ1NTUHJvcGVydHlJRCBpbWFnZVByb3BlcnR5OworICAg
IGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlKQorICAgICAgICBp
bWFnZVByb3BlcnR5ID0gQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZTsKKyAgICBlbHNlIGlm
IChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSkKKyAgICAgICAgaW1h
Z2VQcm9wZXJ0eSA9IENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlOworICAgIGVs
c2UKKyAgICAgICAgaW1hZ2VQcm9wZXJ0eSA9IHByb3BlcnR5OworCisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMCA7IGkgPCBib3JkZXJJbWFnZS0+bGVuZ3RoKCkgOyArK2kpIHsKKyAgICAgICAgQ1NT
VmFsdWUqIGN1cnJlbnQgPSBib3JkZXJJbWFnZS0+aXRlbShpKTsKKworICAgICAgICBpZiAoY3Vy
cmVudC0+aXNJbWFnZVZhbHVlKCkgfHwgY3VycmVudC0+aXNJbWFnZUdlbmVyYXRvclZhbHVlKCkK
KyNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKKyAgICAgICAgICAgIHx8IGN1cnJlbnQtPmlzSW1h
Z2VTZXRWYWx1ZSgpCisjZW5kaWYKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGltYWdlLnNl
dEltYWdlKHN0eWxlSW1hZ2UoaW1hZ2VQcm9wZXJ0eSwgY3VycmVudCkpOworICAgICAgICBlbHNl
IGlmIChjdXJyZW50LT5pc0JvcmRlckltYWdlU2xpY2VWYWx1ZSgpKQorICAgICAgICAgICAgbWFw
TmluZVBpZWNlSW1hZ2VTbGljZShjdXJyZW50LCBpbWFnZSk7CisgICAgICAgIGVsc2UgaWYgKGN1
cnJlbnQtPmlzVmFsdWVMaXN0KCkpIHsKKyAgICAgICAgICAgIENTU1ZhbHVlTGlzdCogc2xhc2hM
aXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4oY3VycmVudCk7CisgICAgICAgICAgICAv
LyBNYXAgaW4gdGhlIGltYWdlIHNsaWNlcy4KKyAgICAgICAgICAgIGlmIChzbGFzaExpc3QtPml0
ZW0oMCkgJiYgc2xhc2hMaXN0LT5pdGVtKDApLT5pc0JvcmRlckltYWdlU2xpY2VWYWx1ZSgpKQor
ICAgICAgICAgICAgICAgIG1hcE5pbmVQaWVjZUltYWdlU2xpY2Uoc2xhc2hMaXN0LT5pdGVtKDAp
LCBpbWFnZSk7CisKKyAgICAgICAgICAgIC8vIE1hcCBpbiB0aGUgYm9yZGVyIHNsaWNlcy4KKyAg
ICAgICAgICAgIGlmIChzbGFzaExpc3QtPml0ZW0oMSkpCisgICAgICAgICAgICAgICAgaW1hZ2Uu
c2V0Qm9yZGVyU2xpY2VzKG1hcE5pbmVQaWVjZUltYWdlUXVhZChzbGFzaExpc3QtPml0ZW0oMSkp
KTsKKworICAgICAgICAgICAgLy8gTWFwIGluIHRoZSBvdXRzZXQuCisgICAgICAgICAgICBpZiAo
c2xhc2hMaXN0LT5pdGVtKDIpKQorICAgICAgICAgICAgICAgIGltYWdlLnNldE91dHNldChtYXBO
aW5lUGllY2VJbWFnZVF1YWQoc2xhc2hMaXN0LT5pdGVtKDIpKSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoY3VycmVudC0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgICAgICAvLyBTZXQgdGhl
IGFwcHJvcHJpYXRlIHJ1bGVzIGZvciBzdHJldGNoL3JvdW5kL3JlcGVhdCBvZiB0aGUgc2xpY2Vz
LgorICAgICAgICAgICAgbWFwTmluZVBpZWNlSW1hZ2VSZXBlYXQoY3VycmVudCwgaW1hZ2UpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVySW1hZ2UpIHsKKyAgICAgICAgLy8gV2UgaGF2ZSB0byBwcmVzZXJ2ZSB0aGUgbGVnYWN5
IGJlaGF2aW9yIG9mIC13ZWJraXQtYm9yZGVyLWltYWdlIGFuZCBtYWtlIHRoZSBib3JkZXIgc2xp
Y2VzCisgICAgICAgIC8vIGFsc28gc2V0IHRoZSBib3JkZXIgd2lkdGhzLiBXZSBkb24ndCBuZWVk
IHRvIHdvcnJ5IGFib3V0IHBlcmNlbnRhZ2VzLCBzaW5jZSB3ZSBkb24ndCBldmVuIHN1cHBvcnQK
KyAgICAgICAgLy8gdGhvc2Ugb24gcmVhbCBib3JkZXJzIHlldC4KKyAgICAgICAgaWYgKGltYWdl
LmJvcmRlclNsaWNlcygpLnRvcCgpLmlzRml4ZWQoKSkKKyAgICAgICAgICAgIHN0eWxlKCktPnNl
dEJvcmRlclRvcFdpZHRoKGltYWdlLmJvcmRlclNsaWNlcygpLnRvcCgpLnZhbHVlKCkpOworICAg
ICAgICBpZiAoaW1hZ2UuYm9yZGVyU2xpY2VzKCkucmlnaHQoKS5pc0ZpeGVkKCkpCisgICAgICAg
ICAgICBzdHlsZSgpLT5zZXRCb3JkZXJSaWdodFdpZHRoKGltYWdlLmJvcmRlclNsaWNlcygpLnJp
Z2h0KCkudmFsdWUoKSk7CisgICAgICAgIGlmIChpbWFnZS5ib3JkZXJTbGljZXMoKS5ib3R0b20o
KS5pc0ZpeGVkKCkpCisgICAgICAgICAgICBzdHlsZSgpLT5zZXRCb3JkZXJCb3R0b21XaWR0aChp
bWFnZS5ib3JkZXJTbGljZXMoKS5ib3R0b20oKS52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGltYWdl
LmJvcmRlclNsaWNlcygpLmxlZnQoKS5pc0ZpeGVkKCkpCisgICAgICAgICAgICBzdHlsZSgpLT5z
ZXRCb3JkZXJMZWZ0V2lkdGgoaW1hZ2UuYm9yZGVyU2xpY2VzKCkubGVmdCgpLnZhbHVlKCkpOwor
ICAgIH0KK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVNsaWNlKENT
U1ZhbHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQoreworICAgIGlmICghdmFsdWUg
fHwgIXZhbHVlLT5pc0JvcmRlckltYWdlU2xpY2VWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBSZXRyaWV2ZSB0aGUgYm9yZGVyIGltYWdlIHZhbHVlLgorICAgIENTU0JvcmRlcklt
YWdlU2xpY2VWYWx1ZSogYm9yZGVySW1hZ2VTbGljZSA9IHN0YXRpY19jYXN0PENTU0JvcmRlcklt
YWdlU2xpY2VWYWx1ZSo+KHZhbHVlKTsKKworICAgIC8vIFNldCB1cCBhIGxlbmd0aCBib3ggdG8g
cmVwcmVzZW50IG91ciBpbWFnZSBzbGljZXMuCisgICAgTGVuZ3RoQm94IGJveDsKKyAgICBRdWFk
KiBzbGljZXMgPSBib3JkZXJJbWFnZVNsaWNlLT5zbGljZXMoKTsKKyAgICBpZiAoc2xpY2VzLT50
b3AoKS0+aXNQZXJjZW50YWdlKCkpCisgICAgICAgIGJveC5tX3RvcCA9IExlbmd0aChzbGljZXMt
PnRvcCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICBlbHNlCisgICAgICAgIGJv
eC5tX3RvcCA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQ
ZXJjZW50YWdlKCkpCisgICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRv
bSgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICBlbHNlCisgICAgICAgIGJveC5t
X2JvdHRvbSA9IExlbmd0aCgoaW50KXNsaWNlcy0+Ym90dG9tKCktPmdldEZsb2F0VmFsdWUoQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgaWYgKHNsaWNlcy0+bGVm
dCgpLT5pc1BlcmNlbnRhZ2UoKSkKKyAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMt
PmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgZWxzZQorICAgICAgICBi
b3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICBpZiAoc2xpY2VzLT5yaWdodCgpLT5p
c1BlcmNlbnRhZ2UoKSkKKyAgICAgICAgYm94Lm1fcmlnaHQgPSBMZW5ndGgoc2xpY2VzLT5yaWdo
dCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICBlbHNlCisgICAgICAgIGJveC5t
X3JpZ2h0ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0SW50VmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgaW1hZ2Uuc2V0SW1hZ2VTbGljZXMoYm94
KTsKKworICAgIC8vIFNldCBvdXIgZmlsbCBtb2RlLgorICAgIGltYWdlLnNldEZpbGwoYm9yZGVy
SW1hZ2VTbGljZS0+bV9maWxsKTsKK30KKworTGVuZ3RoQm94IENTU1RvU3R5bGVNYXA6Om1hcE5p
bmVQaWVjZUltYWdlUXVhZChDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZSB8fCAh
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIExlbmd0aEJveCgpOwor
CisgICAgLy8gR2V0IG91ciB6b29tIHZhbHVlLgorICAgIGZsb2F0IHpvb20gPSB1c2VTVkdab29t
UnVsZXMoKSA/IDEuMGYgOiBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7CisKKyAgICAvLyBSZXRy
aWV2ZSB0aGUgcHJpbWl0aXZlIHZhbHVlLgorICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBib3JkZXJX
aWR0aHMgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKworICAgIC8v
IFNldCB1cCBhIGxlbmd0aCBib3ggdG8gcmVwcmVzZW50IG91ciBpbWFnZSBzbGljZXMuCisgICAg
TGVuZ3RoQm94IGJveDsgLy8gRGVmYXVsdHMgdG8gJ2F1dG8nIHNvIHdlIGRvbid0IGhhdmUgdG8g
aGFuZGxlIHRoYXQgZXhwbGljaXRseSBiZWxvdy4KKyAgICBRdWFkKiBzbGljZXMgPSBib3JkZXJX
aWR0aHMtPmdldFF1YWRWYWx1ZSgpOworICAgIGlmIChzbGljZXMtPnRvcCgpLT5pc051bWJlcigp
KQorICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50VmFsdWUo
KSwgUmVsYXRpdmUpOworICAgIGVsc2UgaWYgKHNsaWNlcy0+dG9wKCktPmlzUGVyY2VudGFnZSgp
KQorICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CisgICAgZWxz
ZSBpZiAoc2xpY2VzLT50b3AoKS0+Z2V0SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pCisgICAgICAg
IGJveC5tX3RvcCA9IHNsaWNlcy0+dG9wKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZSgp
LCByb290RWxlbWVudFN0eWxlKCksIHpvb20pOworCisgICAgaWYgKHNsaWNlcy0+cmlnaHQoKS0+
aXNOdW1iZXIoKSkKKyAgICAgICAgYm94Lm1fcmlnaHQgPSBMZW5ndGgoc2xpY2VzLT5yaWdodCgp
LT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CisgICAgZWxzZSBpZiAoc2xpY2VzLT5yaWdodCgp
LT5pc1BlcmNlbnRhZ2UoKSkKKyAgICAgICAgYm94Lm1fcmlnaHQgPSBMZW5ndGgoc2xpY2VzLT5y
aWdodCgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0Up
LCBQZXJjZW50KTsKKyAgICBlbHNlIGlmIChzbGljZXMtPnJpZ2h0KCktPmdldElkZW50KCkgIT0g
Q1NTVmFsdWVBdXRvKQorICAgICAgICBib3gubV9yaWdodCA9IHNsaWNlcy0+cmlnaHQoKS0+Y29t
cHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9vbSk7CisK
KyAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNOdW1iZXIoKSkKKyAgICAgICAgYm94Lm1fYm90
dG9tID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsK
KyAgICBlbHNlIGlmIChzbGljZXMtPmJvdHRvbSgpLT5pc1BlcmNlbnRhZ2UoKSkKKyAgICAgICAg
Ym94Lm1fYm90dG9tID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgIGVsc2UgaWYg
KHNsaWNlcy0+Ym90dG9tKCktPmdldElkZW50KCkgIT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICBi
b3gubV9ib3R0b20gPSBzbGljZXMtPmJvdHRvbSgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5
bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tKTsKKworICAgIGlmIChzbGljZXMtPmxlZnQo
KS0+aXNOdW1iZXIoKSkKKyAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxlZnQo
KS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgp
LT5pc1BlcmNlbnRhZ2UoKSkKKyAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxl
ZnQoKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwg
UGVyY2VudCk7CisgICAgZWxzZSBpZiAoc2xpY2VzLT5sZWZ0KCktPmdldElkZW50KCkgIT0gQ1NT
VmFsdWVBdXRvKQorICAgICAgICBib3gubV9sZWZ0ID0gc2xpY2VzLT5sZWZ0KCktPmNvbXB1dGVM
ZW5ndGg8TGVuZ3RoPihzdHlsZSgpLCByb290RWxlbWVudFN0eWxlKCksIHpvb20pOworCisgICAg
cmV0dXJuIGJveDsKK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVJl
cGVhdChDU1NWYWx1ZSogdmFsdWUsIE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKK3sKKyAgICBpZiAo
IXZhbHVlIHx8ICF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUt
PmdldFBhaXJWYWx1ZSgpOworICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFp
ci0+c2Vjb25kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBmaXJzdElkZW50aWZpZXIg
PSBwYWlyLT5maXJzdCgpLT5nZXRJZGVudCgpOworICAgIGludCBzZWNvbmRJZGVudGlmaWVyID0g
cGFpci0+c2Vjb25kKCktPmdldElkZW50KCk7CisKKyAgICBFTmluZVBpZWNlSW1hZ2VSdWxlIGhv
cml6b250YWxSdWxlOworICAgIHN3aXRjaCAoZmlyc3RJZGVudGlmaWVyKSB7CisgICAgY2FzZSBD
U1NWYWx1ZVN0cmV0Y2g6CisgICAgICAgIGhvcml6b250YWxSdWxlID0gU3RyZXRjaEltYWdlUnVs
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZVJvdW5kOgorICAgICAgICBob3Jp
em9udGFsUnVsZSA9IFJvdW5kSW1hZ2VSdWxlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENT
U1ZhbHVlU3BhY2U6CisgICAgICAgIGhvcml6b250YWxSdWxlID0gU3BhY2VJbWFnZVJ1bGU7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6IC8vIENTU1ZhbHVlUmVwZWF0CisgICAgICAgIGhv
cml6b250YWxSdWxlID0gUmVwZWF0SW1hZ2VSdWxlOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgaW1hZ2Uuc2V0SG9yaXpvbnRhbFJ1bGUoaG9yaXpvbnRhbFJ1bGUpOworCisgICAgRU5pbmVQ
aWVjZUltYWdlUnVsZSB2ZXJ0aWNhbFJ1bGU7CisgICAgc3dpdGNoIChzZWNvbmRJZGVudGlmaWVy
KSB7CisgICAgY2FzZSBDU1NWYWx1ZVN0cmV0Y2g6CisgICAgICAgIHZlcnRpY2FsUnVsZSA9IFN0
cmV0Y2hJbWFnZVJ1bGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVSb3VuZDoK
KyAgICAgICAgdmVydGljYWxSdWxlID0gUm91bmRJbWFnZVJ1bGU7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTVmFsdWVTcGFjZToKKyAgICAgICAgdmVydGljYWxSdWxlID0gU3BhY2VJbWFn
ZVJ1bGU7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6IC8vIENTU1ZhbHVlUmVwZWF0Cisg
ICAgICAgIHZlcnRpY2FsUnVsZSA9IFJlcGVhdEltYWdlUnVsZTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGltYWdlLnNldFZlcnRpY2FsUnVsZSh2ZXJ0aWNhbFJ1bGUpOworfQorCit9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUwZmM5NTNkMDRjNDcxNWJk
YjI5YWFkNmQzYjczN2ExY2MxZTg4MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NUb1N0eWxlTWFwLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIENTU1RvU3R5bGVNYXBfaAorI2RlZmluZSBD
U1NUb1N0eWxlTWFwX2gKKworI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRl
ICJMZW5ndGhCb3guaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGaWxsTGF5ZXI7
CitjbGFzcyBDU1NWYWx1ZTsKK2NsYXNzIEFuaW1hdGlvbjsKK2NsYXNzIFN0eWxlSW1hZ2U7Citj
bGFzcyBTdHlsZVJlc29sdmVyOworY2xhc3MgTmluZVBpZWNlSW1hZ2U7CisKK2NsYXNzIENTU1Rv
U3R5bGVNYXAgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENTU1RvU3R5bGVNYXApOworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCitwdWJsaWM6CisgICAgQ1NTVG9TdHlsZU1hcChT
dHlsZVJlc29sdmVyKiByZXNvbHZlcikgOiBtX3Jlc29sdmVyKHJlc29sdmVyKSB7IH0KKworICAg
IHZvaWQgbWFwRmlsbEF0dGFjaG1lbnQoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFs
dWUqKTsKKyAgICB2b2lkIG1hcEZpbGxDbGlwKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENT
U1ZhbHVlKik7CisgICAgdm9pZCBtYXBGaWxsQ29tcG9zaXRlKENTU1Byb3BlcnR5SUQsIEZpbGxM
YXllciosIENTU1ZhbHVlKik7CisgICAgdm9pZCBtYXBGaWxsT3JpZ2luKENTU1Byb3BlcnR5SUQs
IEZpbGxMYXllciosIENTU1ZhbHVlKik7CisgICAgdm9pZCBtYXBGaWxsSW1hZ2UoQ1NTUHJvcGVy
dHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKKyAgICB2b2lkIG1hcEZpbGxSZXBlYXRYKENT
U1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7CisgICAgdm9pZCBtYXBGaWxsUmVw
ZWF0WShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOworICAgIHZvaWQgbWFw
RmlsbFNpemUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKKyAgICB2b2lk
IG1hcEZpbGxYUG9zaXRpb24oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsK
KyAgICB2b2lkIG1hcEZpbGxZUG9zaXRpb24oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NT
VmFsdWUqKTsKKworICAgIHZvaWQgbWFwQW5pbWF0aW9uRGVsYXkoQW5pbWF0aW9uKiwgQ1NTVmFs
dWUqKTsKKyAgICB2b2lkIG1hcEFuaW1hdGlvbkRpcmVjdGlvbihBbmltYXRpb24qLCBDU1NWYWx1
ZSopOworICAgIHZvaWQgbWFwQW5pbWF0aW9uRHVyYXRpb24oQW5pbWF0aW9uKiwgQ1NTVmFsdWUq
KTsKKyAgICB2b2lkIG1hcEFuaW1hdGlvbkZpbGxNb2RlKEFuaW1hdGlvbiosIENTU1ZhbHVlKik7
CisgICAgdm9pZCBtYXBBbmltYXRpb25JdGVyYXRpb25Db3VudChBbmltYXRpb24qLCBDU1NWYWx1
ZSopOworICAgIHZvaWQgbWFwQW5pbWF0aW9uTmFtZShBbmltYXRpb24qLCBDU1NWYWx1ZSopOwor
ICAgIHZvaWQgbWFwQW5pbWF0aW9uUGxheVN0YXRlKEFuaW1hdGlvbiosIENTU1ZhbHVlKik7Cisg
ICAgdm9pZCBtYXBBbmltYXRpb25Qcm9wZXJ0eShBbmltYXRpb24qLCBDU1NWYWx1ZSopOworICAg
IHZvaWQgbWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oQW5pbWF0aW9uKiwgQ1NTVmFsdWUqKTsK
KworICAgIHZvaWQgbWFwTmluZVBpZWNlSW1hZ2UoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUqLCBO
aW5lUGllY2VJbWFnZSYpOworICAgIHZvaWQgbWFwTmluZVBpZWNlSW1hZ2VTbGljZShDU1NWYWx1
ZSosIE5pbmVQaWVjZUltYWdlJik7CisgICAgTGVuZ3RoQm94IG1hcE5pbmVQaWVjZUltYWdlUXVh
ZChDU1NWYWx1ZSopOworICAgIHZvaWQgbWFwTmluZVBpZWNlSW1hZ2VSZXBlYXQoQ1NTVmFsdWUq
LCBOaW5lUGllY2VJbWFnZSYpOworCitwcml2YXRlOgorICAgIC8vIEZJWE1FOiBUaGVzZSBhY2Nl
c3NvcnMgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGEgUmVzb2x2ZVN0YXRlIG9iamVjdAorICAgIC8v
IHNpbWlsYXIgdG8gaG93IFBhaW50SW5mby9MYXlvdXRTdGF0ZSBjYWNoZSB2YWx1ZXMgbmVlZGVk
IGZvcgorICAgIC8vIHRoZSBjdXJyZW50IHBhaW50L2xheW91dC4KKyAgICBSZW5kZXJTdHlsZSog
c3R5bGUoKSBjb25zdDsKKyAgICBSZW5kZXJTdHlsZSogcm9vdEVsZW1lbnRTdHlsZSgpIGNvbnN0
OworICAgIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzKCkgY29uc3Q7CisKKyAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgcGFydCBvZiBzb21lIHNvcnQgb2YgU3R5bGVJbWFnZUNhY2hlIG9iamVjdCB3
aGljaAorICAgIC8vIGlzIGhlbGQgYnkgdGhlIFN0eWxlUmVzb2x2ZXIsIGFuZCBsaWtlbHkgcHJv
dmlkZWQgdG8gdGhpcyBvYmplY3QKKyAgICAvLyBkdXJpbmcgdGhlIHJlc29sdmUuCisgICAgUGFz
c1JlZlB0cjxTdHlsZUltYWdlPiBzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKik7
CisKKyAgICBTdHlsZVJlc29sdmVyKiBtX3Jlc29sdmVyOworfTsKKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAKaW5kZXggMjEzOTk5NmJkMWQ4OGRiNjRkNjMzNjFk
NWI5YmQ1MmJlODc3ZDdkYS4uMjBkMDJjYzE1YjFjNzAzNTY0YjczMTdjZWE1ZjdhODUyNzQ1ZWI2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCIKKyNpbmNsdWRl
ICJDU1NUb1N0eWxlTWFwLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAi
Q3Vyc29yTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkBAIC00OTYsNyArNDk3LDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQsCiAgICAgICAgICAgdm9pZCAoRmlsbExheWVyOjoqc2V0RnVu
Y3Rpb24pKHR5cGVuYW1lIEZpbGxMYXllckFjY2Vzc29yVHlwZXM8VD46OlNldHRlciksCiAgICAg
ICAgICAgdm9pZCAoRmlsbExheWVyOjoqY2xlYXJGdW5jdGlvbikoKSwKICAgICAgICAgICB0eXBl
bmFtZSBGaWxsTGF5ZXJBY2Nlc3NvclR5cGVzPFQ+OjpHZXR0ZXIgKCppbml0aWFsRnVuY3Rpb24p
KEVGaWxsTGF5ZXJUeXBlKSwKLSAgICAgICAgICB2b2lkIChTdHlsZVJlc29sdmVyOjoqbWFwRmls
bEZ1bmN0aW9uKShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopPgorICAgICAg
ICAgIHZvaWQgKENTU1RvU3R5bGVNYXA6OiptYXBGaWxsRnVuY3Rpb24pKENTU1Byb3BlcnR5SUQs
IEZpbGxMYXllciosIENTU1ZhbHVlKik+CiBjbGFzcyBBcHBseVByb3BlcnR5RmlsbExheWVyIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhcHBseUluaGVyaXRWYWx1ZShTdHlsZVJlc29sdmVy
KiBzdHlsZVJlc29sdmVyKQpAQCAtNTQ4LDEyICs1NDksMTIgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICBjdXJyQ2hpbGQgPSBuZXcgRmlsbExheWVyKGZpbGxMYXllclR5cGUpOwogICAg
ICAgICAgICAgICAgICAgICBwcmV2Q2hpbGQtPnNldE5leHQoY3VyckNoaWxkKTsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKHN0eWxlUmVzb2x2ZXItPiptYXBGaWxsRnVuY3Rp
b24pKHByb3BlcnR5SWQsIGN1cnJDaGlsZCwgdmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKGkpKTsKKyAgICAgICAgICAgICAgICAoc3R5bGVSZXNvbHZlci0+c3R5bGVNYXAoKS0+Km1h
cEZpbGxGdW5jdGlvbikocHJvcGVydHlJZCwgY3VyckNoaWxkLCB2YWx1ZUxpc3QtPml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soaSkpOwogICAgICAgICAgICAgICAgIHByZXZDaGlsZCA9IGN1cnJDaGls
ZDsKICAgICAgICAgICAgICAgICBjdXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIChzdHlsZVJlc29sdmVyLT4q
bWFwRmlsbEZ1bmN0aW9uKShwcm9wZXJ0eUlkLCBjdXJyQ2hpbGQsIHZhbHVlKTsKKyAgICAgICAg
ICAgIChzdHlsZVJlc29sdmVyLT5zdHlsZU1hcCgpLT4qbWFwRmlsbEZ1bmN0aW9uKShwcm9wZXJ0
eUlkLCBjdXJyQ2hpbGQsIHZhbHVlKTsKICAgICAgICAgICAgIGN1cnJDaGlsZCA9IGN1cnJDaGls
ZC0+bmV4dCgpOwogICAgICAgICB9CiAgICAgICAgIHdoaWxlIChjdXJyQ2hpbGQpIHsKQEAgLTg4
Niw3ICs4ODcsNyBAQCBwdWJsaWM6CiAgICAgICAgIE5pbmVQaWVjZUltYWdlIGltYWdlOwogICAg
ICAgICBpZiAoYm9yZGVySW1hZ2VUeXBlID09IE1hc2spCiAgICAgICAgICAgICBpbWFnZS5zZXRN
YXNrRGVmYXVsdHMoKTsKLSAgICAgICAgc3R5bGVSZXNvbHZlci0+bWFwTmluZVBpZWNlSW1hZ2Uo
cHJvcGVydHksIHZhbHVlLCBpbWFnZSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnN0eWxlTWFw
KCktPm1hcE5pbmVQaWVjZUltYWdlKHByb3BlcnR5LCB2YWx1ZSwgaW1hZ2UpOwogICAgICAgICAo
c3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+KnNldHRlckZ1bmN0aW9uKShpbWFnZSk7CiAgICAgfQog
CkBAIC05NTMsMTYgKzk1NCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIE5pbmVQaWVjZUltYWdlIGlt
YWdlKGdldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCkpKTsKICAgICAgICAgc3dpdGNoICht
b2RpZmllcikgewogICAgICAgICBjYXNlIE91dHNldDoKLSAgICAgICAgICAgIGltYWdlLnNldE91
dHNldChzdHlsZVJlc29sdmVyLT5tYXBOaW5lUGllY2VJbWFnZVF1YWQodmFsdWUpKTsKKyAgICAg
ICAgICAgIGltYWdlLnNldE91dHNldChzdHlsZVJlc29sdmVyLT5zdHlsZU1hcCgpLT5tYXBOaW5l
UGllY2VJbWFnZVF1YWQodmFsdWUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFJlcGVhdDoKLSAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPm1hcE5pbmVQaWVjZUltYWdlUmVw
ZWF0KHZhbHVlLCBpbWFnZSk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5zdHlsZU1hcCgp
LT5tYXBOaW5lUGllY2VJbWFnZVJlcGVhdCh2YWx1ZSwgaW1hZ2UpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgU2xpY2U6Ci0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5tYXBO
aW5lUGllY2VJbWFnZVNsaWNlKHZhbHVlLCBpbWFnZSk7CisgICAgICAgICAgICBzdHlsZVJlc29s
dmVyLT5zdHlsZU1hcCgpLT5tYXBOaW5lUGllY2VJbWFnZVNsaWNlKHZhbHVlLCBpbWFnZSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXaWR0aDoKLSAgICAgICAgICAgIGltYWdl
LnNldEJvcmRlclNsaWNlcyhzdHlsZVJlc29sdmVyLT5tYXBOaW5lUGllY2VJbWFnZVF1YWQodmFs
dWUpKTsKKyAgICAgICAgICAgIGltYWdlLnNldEJvcmRlclNsaWNlcyhzdHlsZVJlc29sdmVyLT5z
dHlsZU1hcCgpLT5tYXBOaW5lUGllY2VJbWFnZVF1YWQodmFsdWUpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIHNldFZhbHVlKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCks
IGltYWdlKTsKQEAgLTE0MzcsNyArMTQzOCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULAogICAg
ICAgICAgIGJvb2wgKEFuaW1hdGlvbjo6KnRlc3RGdW5jdGlvbikoKSBjb25zdCwKICAgICAgICAg
ICB2b2lkIChBbmltYXRpb246OipjbGVhckZ1bmN0aW9uKSgpLAogICAgICAgICAgIFQgKCppbml0
aWFsRnVuY3Rpb24pKCksCi0gICAgICAgICAgdm9pZCAoU3R5bGVSZXNvbHZlcjo6Km1hcEZ1bmN0
aW9uKShBbmltYXRpb24qLCBDU1NWYWx1ZSopLAorICAgICAgICAgIHZvaWQgKENTU1RvU3R5bGVN
YXA6OiptYXBGdW5jdGlvbikoQW5pbWF0aW9uKiwgQ1NTVmFsdWUqKSwKICAgICAgICAgICBBbmlt
YXRpb25MaXN0KiAoUmVuZGVyU3R5bGU6OiphbmltYXRpb25HZXR0ZXJGdW5jdGlvbikoKSwKICAg
ICAgICAgICBjb25zdCBBbmltYXRpb25MaXN0KiAoUmVuZGVyU3R5bGU6OippbW11dGFibGVBbmlt
YXRpb25HZXR0ZXJGdW5jdGlvbikoKSBjb25zdD4KIGNsYXNzIEFwcGx5UHJvcGVydHlBbmltYXRp
b24gewpAQCAtMTQ0Nyw3ICsxNDQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHRlc3Qo
Y29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24pIHsgcmV0dXJuIChhbmltYXRpb24tPip0ZXN0RnVu
Y3Rpb24pKCk7IH0KICAgICBzdGF0aWMgdm9pZCBjbGVhcihBbmltYXRpb24qIGFuaW1hdGlvbikg
eyAoYW5pbWF0aW9uLT4qY2xlYXJGdW5jdGlvbikoKTsgfQogICAgIHN0YXRpYyBUIGluaXRpYWwo
KSB7IHJldHVybiAoKmluaXRpYWxGdW5jdGlvbikoKTsgfQotICAgIHN0YXRpYyB2b2lkIG1hcChT
dHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFs
dWUqIHZhbHVlKSB7IChzdHlsZVJlc29sdmVyLT4qbWFwRnVuY3Rpb24pKGFuaW1hdGlvbiwgdmFs
dWUpOyB9CisgICAgc3RhdGljIHZvaWQgbWFwKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIs
IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBDU1NWYWx1ZSogdmFsdWUpIHsgKHN0eWxlUmVzb2x2ZXIt
PnN0eWxlTWFwKCktPiptYXBGdW5jdGlvbikoYW5pbWF0aW9uLCB2YWx1ZSk7IH0KICAgICBzdGF0
aWMgQW5pbWF0aW9uTGlzdCogYWNjZXNzQW5pbWF0aW9ucyhSZW5kZXJTdHlsZSogc3R5bGUpIHsg
cmV0dXJuIChzdHlsZS0+KmFuaW1hdGlvbkdldHRlckZ1bmN0aW9uKSgpOyB9CiAgICAgc3RhdGlj
IGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1hdGlvbnMoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJl
dHVybiAoc3R5bGUtPippbW11dGFibGVBbmltYXRpb25HZXR0ZXJGdW5jdGlvbikoKTsgfQogCkBA
IC0xODQwLDE4ICsxODQxLDE4IEBAIFN0eWxlQnVpbGRlcjo6U3R5bGVCdWlsZGVyKCkKICAgICAg
ICAgbV9wcm9wZXJ0eU1hcFtpXSA9IFByb3BlcnR5SGFuZGxlcigpOwogCiAgICAgLy8gUGxlYXNl
IGtlZXAgQ1NTIHByb3BlcnR5IGxpc3QgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgotICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBBcHBseVByb3Bl
cnR5RmlsbExheWVyPEVGaWxsQXR0YWNobWVudCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNo
bWVudCwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5k
TGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzQXR0
YWNobWVudFNldCwgJkZpbGxMYXllcjo6YXR0YWNobWVudCwgJkZpbGxMYXllcjo6c2V0QXR0YWNo
bWVudCwgJkZpbGxMYXllcjo6Y2xlYXJBdHRhY2htZW50LCAmRmlsbExheWVyOjppbml0aWFsRmls
bEF0dGFjaG1lbnQsICZTdHlsZVJlc29sdmVyOjptYXBGaWxsQXR0YWNobWVudD46OmNyZWF0ZUhh
bmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENs
aXAsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxCb3gsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENsaXAsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3Vu
ZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0Ns
aXBTZXQsICZGaWxsTGF5ZXI6OmNsaXAsICZGaWxsTGF5ZXI6OnNldENsaXAsICZGaWxsTGF5ZXI6
OmNsZWFyQ2xpcCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxDbGlwLCAmU3R5bGVSZXNvbHZlcjo6
bWFwRmlsbENsaXA+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVG
aWxsQXR0YWNobWVudCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgQmFja2dyb3Vu
ZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVy
U3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzQXR0YWNobWVudFNldCwgJkZp
bGxMYXllcjo6YXR0YWNobWVudCwgJkZpbGxMYXllcjo6c2V0QXR0YWNobWVudCwgJkZpbGxMYXll
cjo6Y2xlYXJBdHRhY2htZW50LCAmRmlsbExheWVyOjppbml0aWFsRmlsbEF0dGFjaG1lbnQsICZD
U1NUb1N0eWxlTWFwOjptYXBGaWxsQXR0YWNobWVudD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAsIEFwcGx5UHJvcGVy
dHlGaWxsTGF5ZXI8RUZpbGxCb3gsIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAsIEJhY2tncm91
bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRl
clN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0NsaXBTZXQsICZGaWxsTGF5
ZXI6OmNsaXAsICZGaWxsTGF5ZXI6OnNldENsaXAsICZGaWxsTGF5ZXI6OmNsZWFyQ2xpcCwgJkZp
bGxMYXllcjo6aW5pdGlhbEZpbGxDbGlwLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbENsaXA+Ojpj
cmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvciwgQXBwbHlQcm9wZXJ0eUNvbG9yPE5vSW5oZXJpdEZyb21QYXJlbnQsICZSZW5k
ZXJTdHlsZTo6YmFja2dyb3VuZENvbG9yLCAmUmVuZGVyU3R5bGU6OnNldEJhY2tncm91bmRDb2xv
ciwgJlJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0JhY2tncm91bmRDb2xvciwgJlJlbmRlclN0
eWxlOjppbnZhbGlkQ29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxT
dHlsZUltYWdlKiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIEJhY2tncm91bmRGaWxsTGF5
ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpi
YWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0ltYWdlU2V0LCAmRmlsbExheWVyOjppbWFn
ZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2UsICZGaWxsTGF5ZXI6OmNsZWFySW1hZ2UsICZGaWxsTGF5
ZXI6OmluaXRpYWxGaWxsSW1hZ2UsICZTdHlsZVJlc29sdmVyOjptYXBGaWxsSW1hZ2U+OjpjcmVh
dGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRPcmlnaW4sIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxCb3gsIENTU1Byb3BlcnR5QmFj
a2dyb3VuZE9yaWdpbiwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NC
YWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5
ZXI6OmlzT3JpZ2luU2V0LCAmRmlsbExheWVyOjpvcmlnaW4sICZGaWxsTGF5ZXI6OnNldE9yaWdp
biwgJkZpbGxMYXllcjo6Y2xlYXJPcmlnaW4sICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsT3JpZ2lu
LCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbE9yaWdpbj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBBcHBseVByb3Bl
cnR5RmlsbExheWVyPFN0eWxlSW1hZ2UqLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgQmFj
a2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAm
UmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzSW1hZ2VTZXQsICZG
aWxsTGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpzZXRJbWFnZSwgJkZpbGxMYXllcjo6Y2xlYXJJ
bWFnZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxJbWFnZSwgJkNTU1RvU3R5bGVNYXA6Om1hcEZp
bGxJbWFnZT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5QmFja2dyb3VuZE9yaWdpbiwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbEJveCwg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVy
U3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExh
eWVycywgJkZpbGxMYXllcjo6aXNPcmlnaW5TZXQsICZGaWxsTGF5ZXI6Om9yaWdpbiwgJkZpbGxM
YXllcjo6c2V0T3JpZ2luLCAmRmlsbExheWVyOjpjbGVhck9yaWdpbiwgJkZpbGxMYXllcjo6aW5p
dGlhbEZpbGxPcmlnaW4sICZDU1NUb1N0eWxlTWFwOjptYXBGaWxsT3JpZ2luPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9z
aXRpb24sIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblk+OjpjcmVh
dGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRQb3NpdGlvblgsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblgsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNj
ZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmls
bExheWVyOjppc1hQb3NpdGlvblNldCwgJkZpbGxMYXllcjo6eFBvc2l0aW9uLCAmRmlsbExheWVy
OjpzZXRYUG9zaXRpb24sICZGaWxsTGF5ZXI6OmNsZWFyWFBvc2l0aW9uLCAmRmlsbExheWVyOjpp
bml0aWFsRmlsbFhQb3NpdGlvbiwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxYUG9zaXRpb24+Ojpj
cmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvblksIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblksIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6
YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAm
RmlsbExheWVyOjppc1lQb3NpdGlvblNldCwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExh
eWVyOjpzZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmNsZWFyWVBvc2l0aW9uLCAmRmlsbExheWVy
Ojppbml0aWFsRmlsbFlQb3NpdGlvbiwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxZUG9zaXRpb24+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblgsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHls
ZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJz
LCAmRmlsbExheWVyOjppc1hQb3NpdGlvblNldCwgJkZpbGxMYXllcjo6eFBvc2l0aW9uLCAmRmls
bExheWVyOjpzZXRYUG9zaXRpb24sICZGaWxsTGF5ZXI6OmNsZWFyWFBvc2l0aW9uLCAmRmlsbExh
eWVyOjppbml0aWFsRmlsbFhQb3NpdGlvbiwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxYUG9zaXRp
b24+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvblksIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblksIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJT
dHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5
ZXJzLCAmRmlsbExheWVyOjppc1lQb3NpdGlvblNldCwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAm
RmlsbExheWVyOjpzZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmNsZWFyWVBvc2l0aW9uLCAmRmls
bExheWVyOjppbml0aWFsRmlsbFlQb3NpdGlvbiwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxZUG9z
aXRpb24+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXQsIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1
ZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVw
ZWF0WT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5QmFja2dyb3VuZFJlcGVhdFgsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxSZXBlYXQs
IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5k
ZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5k
TGF5ZXJzLCAmRmlsbExheWVyOjppc1JlcGVhdFhTZXQsICZGaWxsTGF5ZXI6OnJlcGVhdFgsICZG
aWxsTGF5ZXI6OnNldFJlcGVhdFgsICZGaWxsTGF5ZXI6OmNsZWFyUmVwZWF0WCwgJkZpbGxMYXll
cjo6aW5pdGlhbEZpbGxSZXBlYXRYLCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbFJlcGVhdFg+Ojpj
cmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXRZLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVwZWF0LCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXRZLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6
OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywg
JkZpbGxMYXllcjo6aXNSZXBlYXRZU2V0LCAmRmlsbExheWVyOjpyZXBlYXRZLCAmRmlsbExheWVy
OjpzZXRSZXBlYXRZLCAmRmlsbExheWVyOjpjbGVhclJlcGVhdFksICZGaWxsTGF5ZXI6OmluaXRp
YWxGaWxsUmVwZWF0WSwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxSZXBlYXRZPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6
ZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxGaWxsU2l6ZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
U2l6ZSwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5k
TGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzU2l6
ZVNldCwgJkZpbGxMYXllcjo6c2l6ZSwgJkZpbGxMYXllcjo6c2V0U2l6ZSwgJkZpbGxMYXllcjo6
Y2xlYXJTaXplLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFNpemUsICZTdHlsZVJlc29sdmVyOjpt
YXBGaWxsU2l6ZT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxS
ZXBlYXQsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIEJhY2tncm91bmRGaWxsTGF5ZXIs
ICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNr
Z3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc1JlcGVhdFhTZXQsICZGaWxsTGF5ZXI6OnJlcGVh
dFgsICZGaWxsTGF5ZXI6OnNldFJlcGVhdFgsICZGaWxsTGF5ZXI6OmNsZWFyUmVwZWF0WCwgJkZp
bGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRYLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVh
dFg+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eUJhY2tncm91bmRSZXBlYXRZLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVwZWF0LCBD
U1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVy
U3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExh
eWVycywgJkZpbGxMYXllcjo6aXNSZXBlYXRZU2V0LCAmRmlsbExheWVyOjpyZXBlYXRZLCAmRmls
bExheWVyOjpzZXRSZXBlYXRZLCAmRmlsbExheWVyOjpjbGVhclJlcGVhdFksICZGaWxsTGF5ZXI6
OmluaXRpYWxGaWxsUmVwZWF0WSwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRZPjo6Y3Jl
YXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kU2l6ZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxGaWxsU2l6ZSwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kU2l6ZSwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNr
Z3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6
OmlzU2l6ZVNldCwgJkZpbGxMYXllcjo6c2l6ZSwgJkZpbGxMYXllcjo6c2V0U2l6ZSwgJkZpbGxM
YXllcjo6Y2xlYXJTaXplLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFNpemUsICZDU1NUb1N0eWxl
TWFwOjptYXBGaWxsU2l6ZT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5Qm9yZGVyLCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFs
dWUsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIENTU1By
b3BlcnR5Qm9yZGVyQ29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSwgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBw
cmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoPjo6Y3JlYXRlSGFuZGxl
cigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xv
ciwgQXBwbHlQcm9wZXJ0eUNvbG9yPE5vSW5oZXJpdEZyb21QYXJlbnQsICZSZW5kZXJTdHlsZTo6
Ym9yZGVyQm90dG9tQ29sb3IsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tQ29sb3IsICZS
ZW5kZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvciwgJlJlbmRlclN0eWxl
Ojpjb2xvcj46OmNyZWF0ZUhhbmRsZXIoKSk7CkBAIC0xOTU3LDE5ICsxOTU4LDE5IEBAIFN0eWxl
QnVpbGRlcjo6U3R5bGVCdWlsZGVyKCkKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlVbmljb2RlQmlkaSwgQXBwbHlQcm9wZXJ0eVVuaWNvZGVCaWRpOjpjcmVhdGVIYW5kbGVyKCkp
OwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIEFwcGx5
UHJvcGVydHlWZXJ0aWNhbEFsaWduOjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVZpc2liaWxpdHksIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVWaXNp
YmlsaXR5LCAmUmVuZGVyU3R5bGU6OnZpc2liaWxpdHksIEVWaXNpYmlsaXR5LCAmUmVuZGVyU3R5
bGU6OnNldFZpc2liaWxpdHksIEVWaXNpYmlsaXR5LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxWaXNp
YmlsaXR5Pjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25EZWxheSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUs
ICZBbmltYXRpb246OmRlbGF5LCAmQW5pbWF0aW9uOjpzZXREZWxheSwgJkFuaW1hdGlvbjo6aXNE
ZWxheVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEZWxheSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1h
dGlvbkRlbGF5LCAmU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uRGVsYXksICZSZW5kZXJTdHls
ZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25EaXJlY3Rpb24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248QW5pbWF0aW9uOjpBbmltYXRpb25E
aXJlY3Rpb24sICZBbmltYXRpb246OmRpcmVjdGlvbiwgJkFuaW1hdGlvbjo6c2V0RGlyZWN0aW9u
LCAmQW5pbWF0aW9uOjppc0RpcmVjdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEaXJlY3Rpb24s
ICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EaXJlY3Rpb24sICZTdHlsZVJlc29sdmVyOjpt
YXBBbmltYXRpb25EaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJl
bmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbiwgQXBwbHlQcm9wZXJ0
eUFuaW1hdGlvbjxkb3VibGUsICZBbmltYXRpb246OmR1cmF0aW9uLCAmQW5pbWF0aW9uOjpzZXRE
dXJhdGlvbiwgJkFuaW1hdGlvbjo6aXNEdXJhdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEdXJh
dGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkR1cmF0aW9uLCAmU3R5bGVSZXNvbHZl
cjo6bWFwQW5pbWF0aW9uRHVyYXRpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywg
JlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZSwgQXBwbHlQcm9w
ZXJ0eUFuaW1hdGlvbjx1bnNpZ25lZCwgJkFuaW1hdGlvbjo6ZmlsbE1vZGUsICZBbmltYXRpb246
OnNldEZpbGxNb2RlLCAmQW5pbWF0aW9uOjppc0ZpbGxNb2RlU2V0LCAmQW5pbWF0aW9uOjpjbGVh
ckZpbGxNb2RlLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRmlsbE1vZGUsICZTdHlsZVJl
c29sdmVyOjptYXBBbmltYXRpb25GaWxsTW9kZSwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRp
b25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
LCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6aXRlcmF0aW9uQ291
bnQsICZBbmltYXRpb246OnNldEl0ZXJhdGlvbkNvdW50LCAmQW5pbWF0aW9uOjppc0l0ZXJhdGlv
bkNvdW50U2V0LCAmQW5pbWF0aW9uOjpjbGVhckl0ZXJhdGlvbkNvdW50LCAmQW5pbWF0aW9uOjpp
bml0aWFsQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsICZTdHlsZVJlc29sdmVyOjptYXBBbmltYXRp
b25JdGVyYXRpb25Db3VudCwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVy
U3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWUsIEFwcGx5UHJvcGVydHlBbmltYXRp
b248Y29uc3QgU3RyaW5nJiwgJkFuaW1hdGlvbjo6bmFtZSwgJkFuaW1hdGlvbjo6c2V0TmFtZSwg
JkFuaW1hdGlvbjo6aXNOYW1lU2V0LCAmQW5pbWF0aW9uOjpjbGVhck5hbWUsICZBbmltYXRpb246
OmluaXRpYWxBbmltYXRpb25OYW1lLCAmU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uTmFtZSwg
JlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+
OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvblBsYXlTdGF0ZSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxFQW5pbVBsYXlT
dGF0ZSwgJkFuaW1hdGlvbjo6cGxheVN0YXRlLCAmQW5pbWF0aW9uOjpzZXRQbGF5U3RhdGUsICZB
bmltYXRpb246OmlzUGxheVN0YXRlU2V0LCAmQW5pbWF0aW9uOjpjbGVhclBsYXlTdGF0ZSwgJkFu
aW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblBsYXlTdGF0ZSwgJlN0eWxlUmVzb2x2ZXI6Om1hcEFu
aW1hdGlvblBsYXlTdGF0ZSwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVy
U3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCBBcHBseVByb3Bl
cnR5QW5pbWF0aW9uPGNvbnN0IFBhc3NSZWZQdHI8VGltaW5nRnVuY3Rpb24+LCAmQW5pbWF0aW9u
Ojp0aW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6c2V0VGltaW5nRnVuY3Rpb24sICZBbmltYXRp
b246OmlzVGltaW5nRnVuY3Rpb25TZXQsICZBbmltYXRpb246OmNsZWFyVGltaW5nRnVuY3Rpb24s
ICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgJlN0eWxlUmVzb2x2
ZXI6Om1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1h
dGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXksIEFwcGx5
UHJvcGVydHlBbmltYXRpb248ZG91YmxlLCAmQW5pbWF0aW9uOjpkZWxheSwgJkFuaW1hdGlvbjo6
c2V0RGVsYXksICZBbmltYXRpb246OmlzRGVsYXlTZXQsICZBbmltYXRpb246OmNsZWFyRGVsYXks
ICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EZWxheSwgJkNTU1RvU3R5bGVNYXA6Om1hcEFu
aW1hdGlvbkRlbGF5LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHls
ZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uLCBBcHBseVByb3BlcnR5QW5pbWF0
aW9uPEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uLCAmQW5pbWF0aW9uOjpkaXJlY3Rpb24s
ICZBbmltYXRpb246OnNldERpcmVjdGlvbiwgJkFuaW1hdGlvbjo6aXNEaXJlY3Rpb25TZXQsICZB
bmltYXRpb246OmNsZWFyRGlyZWN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRGly
ZWN0aW9uLCAmQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRGlyZWN0aW9uLCAmUmVuZGVyU3R5
bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhh
bmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uRHVyYXRpb24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248ZG91YmxlLCAmQW5pbWF0aW9uOjpk
dXJhdGlvbiwgJkFuaW1hdGlvbjo6c2V0RHVyYXRpb24sICZBbmltYXRpb246OmlzRHVyYXRpb25T
ZXQsICZBbmltYXRpb246OmNsZWFyRHVyYXRpb24sICZBbmltYXRpb246OmluaXRpYWxBbmltYXRp
b25EdXJhdGlvbiwgJkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkR1cmF0aW9uLCAmUmVuZGVy
U3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0
ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uRmlsbE1vZGUsIEFwcGx5UHJvcGVydHlBbmltYXRpb248dW5zaWduZWQsICZBbmltYXRp
b246OmZpbGxNb2RlLCAmQW5pbWF0aW9uOjpzZXRGaWxsTW9kZSwgJkFuaW1hdGlvbjo6aXNGaWxs
TW9kZVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJGaWxsTW9kZSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFu
aW1hdGlvbkZpbGxNb2RlLCAmQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRmlsbE1vZGUsICZS
ZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6
Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUs
ICZBbmltYXRpb246Oml0ZXJhdGlvbkNvdW50LCAmQW5pbWF0aW9uOjpzZXRJdGVyYXRpb25Db3Vu
dCwgJkFuaW1hdGlvbjo6aXNJdGVyYXRpb25Db3VudFNldCwgJkFuaW1hdGlvbjo6Y2xlYXJJdGVy
YXRpb25Db3VudCwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LCAm
Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsICZSZW5kZXJTdHlsZTo6
YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxl
cigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25O
YW1lLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGNvbnN0IFN0cmluZyYsICZBbmltYXRpb246Om5h
bWUsICZBbmltYXRpb246OnNldE5hbWUsICZBbmltYXRpb246OmlzTmFtZVNldCwgJkFuaW1hdGlv
bjo6Y2xlYXJOYW1lLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uTmFtZSwgJkNTU1RvU3R5
bGVNYXA6Om1hcEFuaW1hdGlvbk5hbWUsICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywg
JlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25QbGF5U3RhdGUsIEFwcGx5UHJv
cGVydHlBbmltYXRpb248RUFuaW1QbGF5U3RhdGUsICZBbmltYXRpb246OnBsYXlTdGF0ZSwgJkFu
aW1hdGlvbjo6c2V0UGxheVN0YXRlLCAmQW5pbWF0aW9uOjppc1BsYXlTdGF0ZVNldCwgJkFuaW1h
dGlvbjo6Y2xlYXJQbGF5U3RhdGUsICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25QbGF5U3Rh
dGUsICZDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25QbGF5U3RhdGUsICZSZW5kZXJTdHlsZTo6
YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxl
cigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25U
aW1pbmdGdW5jdGlvbiwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxjb25zdCBQYXNzUmVmUHRyPFRp
bWluZ0Z1bmN0aW9uPiwgJkFuaW1hdGlvbjo6dGltaW5nRnVuY3Rpb24sICZBbmltYXRpb246OnNl
dFRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppc1RpbWluZ0Z1bmN0aW9uU2V0LCAmQW5pbWF0
aW9uOjpjbGVhclRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uVGlt
aW5nRnVuY3Rpb24sICZDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwg
JlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+
OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdEFwcGVhcmFuY2UsIEFwcGx5UHJvcGVydHlEZWZhdWx0PENvbnRyb2xQYXJ0LCAmUmVuZGVy
U3R5bGU6OmFwcGVhcmFuY2UsIENvbnRyb2xQYXJ0LCAmUmVuZGVyU3R5bGU6OnNldEFwcGVhcmFu
Y2UsIENvbnRyb2xQYXJ0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxBcHBlYXJhbmNlPjo6Y3JlYXRl
SGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBc3Bl
Y3RSYXRpbywgQXBwbHlQcm9wZXJ0eUFzcGVjdFJhdGlvOjpjcmVhdGVIYW5kbGVyKCkpOwogICAg
IHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJhY2tmYWNlVmlzaWJpbGl0eSwg
QXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJhY2tmYWNlVmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjpi
YWNrZmFjZVZpc2liaWxpdHksIEVCYWNrZmFjZVZpc2liaWxpdHksICZSZW5kZXJTdHlsZTo6c2V0
QmFja2ZhY2VWaXNpYmlsaXR5LCBFQmFja2ZhY2VWaXNpYmlsaXR5LCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxCYWNrZmFjZVZpc2liaWxpdHk+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwLCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDbGlwKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRC
YWNrZ3JvdW5kQ29tcG9zaXRlLCBBcHBseVByb3BlcnR5RmlsbExheWVyPENvbXBvc2l0ZU9wZXJh
dG9yLCBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIEJhY2tncm91bmRGaWxs
TGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxl
OjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc0NvbXBvc2l0ZVNldCwgJkZpbGxMYXll
cjo6Y29tcG9zaXRlLCAmRmlsbExheWVyOjpzZXRDb21wb3NpdGUsICZGaWxsTGF5ZXI6OmNsZWFy
Q29tcG9zaXRlLCAmRmlsbExheWVyOjppbml0aWFsRmlsbENvbXBvc2l0ZSwgJlN0eWxlUmVzb2x2
ZXI6Om1hcEZpbGxDb21wb3NpdGU+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIEFwcGx5UHJvcGVy
dHlGaWxsTGF5ZXI8Q29tcG9zaXRlT3BlcmF0b3IsIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3Vu
ZENvbXBvc2l0ZSwgQmFja2dyb3VuZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNr
Z3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6
OmlzQ29tcG9zaXRlU2V0LCAmRmlsbExheWVyOjpjb21wb3NpdGUsICZGaWxsTGF5ZXI6OnNldENv
bXBvc2l0ZSwgJkZpbGxMYXllcjo6Y2xlYXJDb21wb3NpdGUsICZGaWxsTGF5ZXI6OmluaXRpYWxG
aWxsQ29tcG9zaXRlLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbENvbXBvc2l0ZT46OmNyZWF0ZUhh
bmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QmFja2dy
b3VuZE9yaWdpbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luKTsKICAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kU2l6ZSwgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kU2l6ZSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRml0LCBBcHBseVByb3BlcnR5RGVmYXVsdDxFQm9yZGVyRml0LCAmUmVuZGVyU3R5bGU6OmJv
cmRlckZpdCwgRUJvcmRlckZpdCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJGaXQsIEVCb3JkZXJG
aXQsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlckZpdD46OmNyZWF0ZUhhbmRsZXIoKSk7CkBA
IC0yMDM3LDI0ICsyMDM4LDI0IEBAIFN0eWxlQnVpbGRlcjo6U3R5bGVCdWlsZGVyKCkKICAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Ub3BDb2xsYXBzZSwgQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSk7CiAgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwgQXBwbHlQcm9wZXJ0eURlZmF1
bHQ8RU1hcnF1ZWVEaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6bWFycXVlZURpcmVjdGlvbiwgRU1h
cnF1ZWVEaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6c2V0TWFycXVlZURpcmVjdGlvbiwgRU1hcnF1
ZWVEaXJlY3Rpb24sICZSZW5kZXJTdHlsZTo6aW5pdGlhbE1hcnF1ZWVEaXJlY3Rpb24+OjpjcmVh
dGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1h
cnF1ZWVTdHlsZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RU1hcnF1ZWVCZWhhdmlvciwgJlJlbmRl
clN0eWxlOjptYXJxdWVlQmVoYXZpb3IsIEVNYXJxdWVlQmVoYXZpb3IsICZSZW5kZXJTdHlsZTo6
c2V0TWFycXVlZUJlaGF2aW9yLCBFTWFycXVlZUJlaGF2aW9yLCAmUmVuZGVyU3R5bGU6OmluaXRp
YWxNYXJxdWVlQmVoYXZpb3I+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBBcHBseVByb3BlcnR5RmlsbExh
eWVyPEVGaWxsQXR0YWNobWVudCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwgTWFz
a0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6
Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzQXR0YWNobWVudFNldCwgJkZpbGxMYXllcjo6YXR0
YWNobWVudCwgJkZpbGxMYXllcjo6c2V0QXR0YWNobWVudCwgJkZpbGxMYXllcjo6Y2xlYXJBdHRh
Y2htZW50LCAmRmlsbExheWVyOjppbml0aWFsRmlsbEF0dGFjaG1lbnQsICZTdHlsZVJlc29sdmVy
OjptYXBGaWxsQXR0YWNobWVudD46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQsIEFwcGx5UHJvcGVydHlGaWxs
TGF5ZXI8RUZpbGxBdHRhY2htZW50LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LCBN
YXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHls
ZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNBdHRhY2htZW50U2V0LCAmRmlsbExheWVyOjph
dHRhY2htZW50LCAmRmlsbExheWVyOjpzZXRBdHRhY2htZW50LCAmRmlsbExheWVyOjpjbGVhckF0
dGFjaG1lbnQsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQXR0YWNobWVudCwgJkNTU1RvU3R5bGVN
YXA6Om1hcEZpbGxBdHRhY2htZW50Pjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2UsIEFwcGx5UHJvcGVydHlCb3Jk
ZXJJbWFnZTxNYXNrLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSwgJlJlbmRlclN0eWxl
OjptYXNrQm94SW1hZ2UsICZSZW5kZXJTdHlsZTo6c2V0TWFza0JveEltYWdlPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94
SW1hZ2VPdXRzZXQsIEFwcGx5UHJvcGVydHlCb3JkZXJJbWFnZU1vZGlmaWVyPE1hc2ssIE91dHNl
dD46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0TWFza0JveEltYWdlUmVwZWF0LCBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmll
cjxNYXNrLCBSZXBlYXQ+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVNsaWNlLCBBcHBseVByb3BlcnR5Qm9yZGVy
SW1hZ2VNb2RpZmllcjxNYXNrLCBTbGljZT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlLCBBcHBseVBy
b3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2U8Q1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3Vy
Y2UsICZSZW5kZXJTdHlsZTo6bWFza0JveEltYWdlU291cmNlLCAmUmVuZGVyU3R5bGU6OnNldE1h
c2tCb3hJbWFnZVNvdXJjZSwgJlJlbmRlclN0eWxlOjppbml0aWFsTWFza0JveEltYWdlU291cmNl
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlX
ZWJraXRNYXNrQm94SW1hZ2VXaWR0aCwgQXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI8
TWFzaywgV2lkdGg+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQm94
LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6
OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6
aXNDbGlwU2V0LCAmRmlsbExheWVyOjpjbGlwLCAmRmlsbExheWVyOjpzZXRDbGlwLCAmRmlsbExh
eWVyOjpjbGVhckNsaXAsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ2xpcCwgJlN0eWxlUmVzb2x2
ZXI6Om1hcEZpbGxDbGlwPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlLCBBcHBseVByb3BlcnR5RmlsbExheWVy
PENvbXBvc2l0ZU9wZXJhdG9yLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUsIE1hc2tG
aWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjpt
YXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc0NvbXBvc2l0ZVNldCwgJkZpbGxMYXllcjo6Y29tcG9z
aXRlLCAmRmlsbExheWVyOjpzZXRDb21wb3NpdGUsICZGaWxsTGF5ZXI6OmNsZWFyQ29tcG9zaXRl
LCAmRmlsbExheWVyOjppbml0aWFsRmlsbENvbXBvc2l0ZSwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZp
bGxDb21wb3NpdGU+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxTdHlsZUlt
YWdlKiwgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJT
dHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExh
eWVyOjppc0ltYWdlU2V0LCAmRmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2Us
ICZGaWxsTGF5ZXI6OmNsZWFySW1hZ2UsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsSW1hZ2UsICZT
dHlsZVJlc29sdmVyOjptYXBGaWxsSW1hZ2U+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIEFwcGx5UHJvcGVydHlG
aWxsTGF5ZXI8RUZpbGxCb3gsIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwgTWFza0ZpbGxM
YXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tM
YXllcnMsICZGaWxsTGF5ZXI6OmlzT3JpZ2luU2V0LCAmRmlsbExheWVyOjpvcmlnaW4sICZGaWxs
TGF5ZXI6OnNldE9yaWdpbiwgJkZpbGxMYXllcjo6Y2xlYXJPcmlnaW4sICZGaWxsTGF5ZXI6Omlu
aXRpYWxGaWxsT3JpZ2luLCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbE9yaWdpbj46OmNyZWF0ZUhh
bmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0Ns
aXAsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxCb3gsIENTU1Byb3BlcnR5V2Via2l0TWFz
a0NsaXAsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJl
bmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc0NsaXBTZXQsICZGaWxsTGF5ZXI6
OmNsaXAsICZGaWxsTGF5ZXI6OnNldENsaXAsICZGaWxsTGF5ZXI6OmNsZWFyQ2xpcCwgJkZpbGxM
YXllcjo6aW5pdGlhbEZpbGxDbGlwLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbENsaXA+OjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tDb21wb3NpdGUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8Q29tcG9zaXRlT3BlcmF0b3IsIENT
U1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZSwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxl
OjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6
OmlzQ29tcG9zaXRlU2V0LCAmRmlsbExheWVyOjpjb21wb3NpdGUsICZGaWxsTGF5ZXI6OnNldENv
bXBvc2l0ZSwgJkZpbGxMYXllcjo6Y2xlYXJDb21wb3NpdGUsICZGaWxsTGF5ZXI6OmluaXRpYWxG
aWxsQ29tcG9zaXRlLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbENvbXBvc2l0ZT46OmNyZWF0ZUhh
bmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0lt
YWdlLCBBcHBseVByb3BlcnR5RmlsbExheWVyPFN0eWxlSW1hZ2UqLCBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tJbWFnZSwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJz
LCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzSW1hZ2VTZXQsICZGaWxs
TGF5ZXI6OmltYWdlLCAmRmlsbExheWVyOjpzZXRJbWFnZSwgJkZpbGxMYXllcjo6Y2xlYXJJbWFn
ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxJbWFnZSwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxJ
bWFnZT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0TWFza09yaWdpbiwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbEJveCwgQ1NT
UHJvcGVydHlXZWJraXRNYXNrT3JpZ2luLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFj
Y2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNP
cmlnaW5TZXQsICZGaWxsTGF5ZXI6Om9yaWdpbiwgJkZpbGxMYXllcjo6c2V0T3JpZ2luLCAmRmls
bExheWVyOjpjbGVhck9yaWdpbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxPcmlnaW4sICZDU1NU
b1N0eWxlTWFwOjptYXBGaWxsT3JpZ2luPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24sIEFwcGx5UHJvcGVydHlF
eHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblk+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIEFwcGx5UHJv
cGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIE1h
c2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxl
OjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1hQb3NpdGlvblNldCwgJkZpbGxMYXllcjo6eFBv
c2l0aW9uLCAmRmlsbExheWVyOjpzZXRYUG9zaXRpb24sICZGaWxsTGF5ZXI6OmNsZWFyWFBvc2l0
aW9uLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFhQb3NpdGlvbiwgJlN0eWxlUmVzb2x2ZXI6Om1h
cEZpbGxYUG9zaXRpb24+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8
TGVuZ3RoLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblksIE1hc2tGaWxsTGF5ZXIsICZS
ZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAm
RmlsbExheWVyOjppc1lQb3NpdGlvblNldCwgJkZpbGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExh
eWVyOjpzZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6OmNsZWFyWVBvc2l0aW9uLCAmRmlsbExheWVy
Ojppbml0aWFsRmlsbFlQb3NpdGlvbiwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxZUG9zaXRpb24+
OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tQb3NpdGlvblgsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNj
ZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1hQ
b3NpdGlvblNldCwgJkZpbGxMYXllcjo6eFBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRYUG9zaXRp
b24sICZGaWxsTGF5ZXI6OmNsZWFyWFBvc2l0aW9uLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFhQ
b3NpdGlvbiwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxYUG9zaXRpb24+OjpjcmVhdGVIYW5kbGVy
KCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlv
blksIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8TGVuZ3RoLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQ
b3NpdGlvblksIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywg
JlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1lQb3NpdGlvblNldCwgJkZp
bGxMYXllcjo6eVBvc2l0aW9uLCAmRmlsbExheWVyOjpzZXRZUG9zaXRpb24sICZGaWxsTGF5ZXI6
OmNsZWFyWVBvc2l0aW9uLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFlQb3NpdGlvbiwgJkNTU1Rv
U3R5bGVNYXA6Om1hcEZpbGxZUG9zaXRpb24+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsIEFwcGx5UHJvcGVydHlF
eHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIEFwcGx5UHJvcGVydHlG
aWxsTGF5ZXI8RUZpbGxSZXBlYXQsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIE1hc2tG
aWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjpt
YXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1JlcGVhdFhTZXQsICZGaWxsTGF5ZXI6OnJlcGVhdFgs
ICZGaWxsTGF5ZXI6OnNldFJlcGVhdFgsICZGaWxsTGF5ZXI6OmNsZWFyUmVwZWF0WCwgJkZpbGxM
YXllcjo6aW5pdGlhbEZpbGxSZXBlYXRYLCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbFJlcGVhdFg+
OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXRZLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVwZWF0LCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFj
Y2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNS
ZXBlYXRZU2V0LCAmRmlsbExheWVyOjpyZXBlYXRZLCAmRmlsbExheWVyOjpzZXRSZXBlYXRZLCAm
RmlsbExheWVyOjpjbGVhclJlcGVhdFksICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WSwg
JlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxSZXBlYXRZPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwgQXBwbHlQcm9wZXJ0
eUZpbGxMYXllcjxGaWxsU2l6ZSwgQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwgTWFza0ZpbGxM
YXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tM
YXllcnMsICZGaWxsTGF5ZXI6OmlzU2l6ZVNldCwgJkZpbGxMYXllcjo6c2l6ZSwgJkZpbGxMYXll
cjo6c2V0U2l6ZSwgJkZpbGxMYXllcjo6Y2xlYXJTaXplLCAmRmlsbExheWVyOjppbml0aWFsRmls
bFNpemUsICZTdHlsZVJlc29sdmVyOjptYXBGaWxsU2l6ZT46OmNyZWF0ZUhhbmRsZXIoKSk7Cisg
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIEFwcGx5
UHJvcGVydHlGaWxsTGF5ZXI8RUZpbGxSZXBlYXQsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dFgsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRl
clN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1JlcGVhdFhTZXQsICZGaWxsTGF5ZXI6
OnJlcGVhdFgsICZGaWxsTGF5ZXI6OnNldFJlcGVhdFgsICZGaWxsTGF5ZXI6OmNsZWFyUmVwZWF0
WCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRYLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmls
bFJlcGVhdFg+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVw
ZWF0LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZLCBNYXNrRmlsbExheWVyLCAmUmVuZGVy
U3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxM
YXllcjo6aXNSZXBlYXRZU2V0LCAmRmlsbExheWVyOjpyZXBlYXRZLCAmRmlsbExheWVyOjpzZXRS
ZXBlYXRZLCAmRmlsbExheWVyOjpjbGVhclJlcGVhdFksICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxs
UmVwZWF0WSwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRZPjo6Y3JlYXRlSGFuZGxlcigp
KTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwgQXBw
bHlQcm9wZXJ0eUZpbGxMYXllcjxGaWxsU2l6ZSwgQ1NTUHJvcGVydHlXZWJraXRNYXNrU2l6ZSwg
TWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5
bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzU2l6ZVNldCwgJkZpbGxMYXllcjo6c2l6ZSwg
JkZpbGxMYXllcjo6c2V0U2l6ZSwgJkZpbGxMYXllcjo6Y2xlYXJTaXplLCAmRmlsbExheWVyOjpp
bml0aWFsRmlsbFNpemUsICZDU1NUb1N0eWxlTWFwOjptYXBGaWxsU2l6ZT46OmNyZWF0ZUhhbmRs
ZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUs
IEFwcGx5UHJvcGVydHlEZWZhdWx0PEVOQlNQTW9kZSwgJlJlbmRlclN0eWxlOjpuYnNwTW9kZSwg
RU5CU1BNb2RlLCAmUmVuZGVyU3R5bGU6OnNldE5CU1BNb2RlLCBFTkJTUE1vZGUsICZSZW5kZXJT
dHlsZTo6aW5pdGlhbE5CU1BNb2RlPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiwgQXBwbHlQcm9wZXJ0
eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3Jp
Z2luWCwgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblk+OjpjcmVhdGVIYW5kbGVy
KCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZl
T3JpZ2luWCwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6OnBlcnNwZWN0aXZlT3Jp
Z2luWCwgJlJlbmRlclN0eWxlOjpzZXRQZXJzcGVjdGl2ZU9yaWdpblgsICZSZW5kZXJTdHlsZTo6
aW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWD46OmNyZWF0ZUhhbmRsZXIoKSk7CkBAIC0yMDgwLDEw
ICsyMDgxLDEwIEBAIFN0eWxlQnVpbGRlcjo6U3R5bGVCdWlsZGVyKCkKICAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZLCBBcHBseVByb3BlcnR5
TGVuZ3RoPCZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtT3JpZ2luWSwgJlJlbmRlclN0eWxlOjpzZXRU
cmFuc2Zvcm1PcmlnaW5ZLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1PcmlnaW5ZPjo6
Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm1PcmlnaW5aLCBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDxmbG9hdCwgJlJl
bmRlclN0eWxlOjp0cmFuc2Zvcm1PcmlnaW5aLCAmUmVuZGVyU3R5bGU6OnNldFRyYW5zZm9ybU9y
aWdpblosICZSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zZm9ybU9yaWdpblo+OjpjcmVhdGVIYW5k
bGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bVN0eWxlLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFVHJhbnNmb3JtU3R5bGUzRCwgJlJlbmRlclN0
eWxlOjp0cmFuc2Zvcm1TdHlsZTNELCBFVHJhbnNmb3JtU3R5bGUzRCwgJlJlbmRlclN0eWxlOjpz
ZXRUcmFuc2Zvcm1TdHlsZTNELCBFVHJhbnNmb3JtU3R5bGUzRCwgJlJlbmRlclN0eWxlOjppbml0
aWFsVHJhbnNmb3JtU3R5bGUzRD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5LCBBcHBseVByb3BlcnR5QW5p
bWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6ZGVsYXksICZBbmltYXRpb246OnNldERlbGF5LCAm
QW5pbWF0aW9uOjppc0RlbGF5U2V0LCAmQW5pbWF0aW9uOjpjbGVhckRlbGF5LCAmQW5pbWF0aW9u
Ojppbml0aWFsQW5pbWF0aW9uRGVsYXksICZTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25EZWxh
eSwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0
aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJs
ZSwgJkFuaW1hdGlvbjo6ZHVyYXRpb24sICZBbmltYXRpb246OnNldER1cmF0aW9uLCAmQW5pbWF0
aW9uOjppc0R1cmF0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVhckR1cmF0aW9uLCAmQW5pbWF0aW9u
Ojppbml0aWFsQW5pbWF0aW9uRHVyYXRpb24sICZTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25E
dXJhdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0
cmFuc2l0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBBcHBseVByb3BlcnR5QW5pbWF0aW9u
PENTU1Byb3BlcnR5SUQsICZBbmltYXRpb246OnByb3BlcnR5LCAmQW5pbWF0aW9uOjpzZXRQcm9w
ZXJ0eSwgJkFuaW1hdGlvbjo6aXNQcm9wZXJ0eVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJQcm9wZXJ0
eSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblByb3BlcnR5LCAmU3R5bGVSZXNvbHZlcjo6
bWFwQW5pbWF0aW9uUHJvcGVydHksICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZS
ZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwgQXBw
bHlQcm9wZXJ0eUFuaW1hdGlvbjxjb25zdCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiwgJkFu
aW1hdGlvbjo6dGltaW5nRnVuY3Rpb24sICZBbmltYXRpb246OnNldFRpbWluZ0Z1bmN0aW9uLCAm
QW5pbWF0aW9uOjppc1RpbWluZ0Z1bmN0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVhclRpbWluZ0Z1
bmN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sICZTdHls
ZVJlc29sdmVyOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nl
c3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0aW9ucz46OmNyZWF0ZUhhbmRsZXIo
KSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRl
bGF5LCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6ZGVsYXksICZB
bmltYXRpb246OnNldERlbGF5LCAmQW5pbWF0aW9uOjppc0RlbGF5U2V0LCAmQW5pbWF0aW9uOjpj
bGVhckRlbGF5LCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRGVsYXksICZDU1NUb1N0eWxl
TWFwOjptYXBBbmltYXRpb25EZWxheSwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywg
JlJlbmRlclN0eWxlOjp0cmFuc2l0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLCBBcHBseVBy
b3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6ZHVyYXRpb24sICZBbmltYXRpb246
OnNldER1cmF0aW9uLCAmQW5pbWF0aW9uOjppc0R1cmF0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVh
ckR1cmF0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRHVyYXRpb24sICZDU1NUb1N0
eWxlTWFwOjptYXBBbmltYXRpb25EdXJhdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0
aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LCBB
cHBseVByb3BlcnR5QW5pbWF0aW9uPENTU1Byb3BlcnR5SUQsICZBbmltYXRpb246OnByb3BlcnR5
LCAmQW5pbWF0aW9uOjpzZXRQcm9wZXJ0eSwgJkFuaW1hdGlvbjo6aXNQcm9wZXJ0eVNldCwgJkFu
aW1hdGlvbjo6Y2xlYXJQcm9wZXJ0eSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblByb3Bl
cnR5LCAmQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUHJvcGVydHksICZSZW5kZXJTdHlsZTo6
YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5k
bGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRp
b25UaW1pbmdGdW5jdGlvbiwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxjb25zdCBQYXNzUmVmUHRy
PFRpbWluZ0Z1bmN0aW9uPiwgJkFuaW1hdGlvbjo6dGltaW5nRnVuY3Rpb24sICZBbmltYXRpb246
OnNldFRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppc1RpbWluZ0Z1bmN0aW9uU2V0LCAmQW5p
bWF0aW9uOjpjbGVhclRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9u
VGltaW5nRnVuY3Rpb24sICZDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlv
biwgJlJlbmRlclN0eWxlOjphY2Nlc3NUcmFuc2l0aW9ucywgJlJlbmRlclN0eWxlOjp0cmFuc2l0
aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0VXNlckRyYWcsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVVc2VyRHJhZywgJlJlbmRl
clN0eWxlOjp1c2VyRHJhZywgRVVzZXJEcmFnLCAmUmVuZGVyU3R5bGU6OnNldFVzZXJEcmFnLCBF
VXNlckRyYWcsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFVzZXJEcmFnPjo6Y3JlYXRlSGFuZGxlcigp
KTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5LCBB
cHBseVByb3BlcnR5RGVmYXVsdDxFVXNlck1vZGlmeSwgJlJlbmRlclN0eWxlOjp1c2VyTW9kaWZ5
LCBFVXNlck1vZGlmeSwgJlJlbmRlclN0eWxlOjpzZXRVc2VyTW9kaWZ5LCBFVXNlck1vZGlmeSwg
JlJlbmRlclN0eWxlOjppbml0aWFsVXNlck1vZGlmeT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAg
c2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwgQXBwbHlQcm9w
ZXJ0eURlZmF1bHQ8RVVzZXJTZWxlY3QsICZSZW5kZXJTdHlsZTo6dXNlclNlbGVjdCwgRVVzZXJT
ZWxlY3QsICZSZW5kZXJTdHlsZTo6c2V0VXNlclNlbGVjdCwgRVVzZXJTZWxlY3QsICZSZW5kZXJT
dHlsZTo6aW5pdGlhbFVzZXJTZWxlY3Q+OjpjcmVhdGVIYW5kbGVyKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDI1MjI5OGZjNTM2YTBjNzE2OGQ5OWQ4OWYxYjhiYWFl
Mjk1ZTlmZTQuLjU1ZGJmZTlmYzYyN2Q2ZDAzZGMxNzJmYjlmNDAzNmYwZGJiM2IzZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTgsNiArOCw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4g
KGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKICAqIENvcHlyaWdodCAoYykgMjAxMSwgQ29k
ZSBBdXJvcmEgRm9ydW0uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMzc0LDYgKzM3NSw3IEBAIFN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVz
b2x2ZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykK
ICAgICAsIG1fc2NvcGVTdGFja1BhcmVudCgwKQogICAgICwgbV9zY29wZVN0YWNrUGFyZW50Qm91
bmRzSW5kZXgoMCkKICNlbmRpZgorICAgICwgbV9zdHlsZU1hcCh0aGlzKQogewogICAgIEVsZW1l
bnQqIHJvb3QgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CiAKQEAgLTM3NDAsNyArMzc0
Miw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlk
LCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQocmVm
bGVjdFZhbHVlLT5vZmZzZXQoKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNp
b24gfCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uPihzdHlsZSgpLCBt
X3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKTsKICAgICAgICAgTmluZVBpZWNlSW1hZ2Ug
bWFzazsKICAgICAgICAgbWFzay5zZXRNYXNrRGVmYXVsdHMoKTsKLSAgICAgICAgbWFwTmluZVBp
ZWNlSW1hZ2UoaWQsIHJlZmxlY3RWYWx1ZS0+bWFzaygpLCBtYXNrKTsKKyAgICAgICAgbV9zdHls
ZU1hcC5tYXBOaW5lUGllY2VJbWFnZShpZCwgcmVmbGVjdFZhbHVlLT5tYXNrKCksIG1hc2spOwog
ICAgICAgICByZWZsZWN0aW9uLT5zZXRNYXNrKG1hc2spOwogCiAgICAgICAgIG1fc3R5bGUtPnNl
dEJveFJlZmxlY3QocmVmbGVjdGlvbi5yZWxlYXNlKCkpOwpAQCAtNDQyOCw3NCArNDQzMCw2IEBA
IHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NW
YWx1ZSogdmFsdWUpCiAgICAgfQogfQogCi12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxBdHRh
Y2htZW50KENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkK
LXsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKLSAgICAgICAgbGF5ZXItPnNl
dEF0dGFjaG1lbnQoRmlsbExheWVyOjppbml0aWFsRmlsbEF0dGFjaG1lbnQobGF5ZXItPnR5cGUo
KSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAg
ICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgY2FzZSBDU1NWYWx1
ZUZpeGVkOgotICAgICAgICBsYXllci0+c2V0QXR0YWNobWVudChGaXhlZEJhY2tncm91bmRBdHRh
Y2htZW50KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZVNjcm9sbDoKLSAgICAg
ICAgbGF5ZXItPnNldEF0dGFjaG1lbnQoU2Nyb2xsQmFja2dyb3VuZEF0dGFjaG1lbnQpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVlTG9jYWw6Ci0gICAgICAgIGxheWVyLT5zZXRB
dHRhY2htZW50KExvY2FsQmFja2dyb3VuZEF0dGFjaG1lbnQpOwotICAgICAgICBicmVhazsKLSAg
ICBkZWZhdWx0OgotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi12b2lkIFN0eWxlUmVzb2x2
ZXI6Om1hcEZpbGxDbGlwKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVl
KiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKLSAgICAgICAg
bGF5ZXItPnNldENsaXAoRmlsbExheWVyOjppbml0aWFsRmlsbENsaXAobGF5ZXItPnR5cGUoKSkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBs
YXllci0+c2V0Q2xpcCgqcHJpbWl0aXZlVmFsdWUpOwotfQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6
Om1hcEZpbGxDb21wb3NpdGUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFs
dWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAg
ICBsYXllci0+c2V0Q29tcG9zaXRlKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxDb21wb3NpdGUobGF5
ZXItPnR5cGUoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKLSAgICBsYXllci0+c2V0Q29tcG9zaXRlKCpwcmltaXRpdmVWYWx1ZSk7Ci19Ci0KLXZv
aWQgU3R5bGVSZXNvbHZlcjo6bWFwRmlsbE9yaWdpbihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIq
IGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1
ZSgpKSB7Ci0gICAgICAgIGxheWVyLT5zZXRPcmlnaW4oRmlsbExheWVyOjppbml0aWFsRmlsbE9y
aWdpbihsYXllci0+dHlwZSgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
IXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpOwotICAgIGxheWVyLT5zZXRPcmlnaW4oKnByaW1pdGl2ZVZhbHVlKTsKLX0K
LQogUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpzdHlsZUltYWdlKENTU1By
b3BlcnR5SUQgcHJvcGVydHksIENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUtPmlz
SW1hZ2VWYWx1ZSgpKQpAQCAtNDUzOSw1MzIgKzQ0NzMsNiBAQCBQYXNzUmVmUHRyPFN0eWxlSW1h
Z2U+IFN0eWxlUmVzb2x2ZXI6OnNldE9yUGVuZGluZ0Zyb21WYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BlcgogfQogI2VuZGlmCiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwRmlsbEltYWdlKENTU1By
b3BlcnR5SUQgcHJvcGVydHksIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKLXsK
LSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKLSAgICAgICAgbGF5ZXItPnNldElt
YWdlKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxJbWFnZShsYXllci0+dHlwZSgpKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBsYXllci0+c2V0SW1hZ2Uoc3R5bGVJbWFnZShwcm9wZXJ0
eSwgdmFsdWUpKTsKLX0KLQotdm9pZCBTdHlsZVJlc29sdmVyOjptYXBGaWxsUmVwZWF0WChDU1NQ
cm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYg
KHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7Ci0gICAgICAgIGxheWVyLT5zZXRSZXBlYXRYKEZp
bGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRYKGxheWVyLT50eXBlKCkpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgbGF5ZXItPnNldFJlcGVh
dFgoKnByaW1pdGl2ZVZhbHVlKTsKLX0KLQotdm9pZCBTdHlsZVJlc29sdmVyOjptYXBGaWxsUmVw
ZWF0WShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCi17
Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7Ci0gICAgICAgIGxheWVyLT5zZXRS
ZXBlYXRZKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRZKGxheWVyLT50eXBlKCkpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgbGF5ZXIt
PnNldFJlcGVhdFkoKnByaW1pdGl2ZVZhbHVlKTsKLX0KLQotdm9pZCBTdHlsZVJlc29sdmVyOjpt
YXBGaWxsU2l6ZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFs
dWUpCi17Ci0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgIGxh
eWVyLT5zZXRTaXplVHlwZShTaXplTm9uZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVDb250YWluKQotICAgICAgICBsYXllci0+c2V0U2l6ZVR5cGUoQ29udGFpbik7
Ci0gICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVDb3Zl
cikKLSAgICAgICAgbGF5ZXItPnNldFNpemVUeXBlKENvdmVyKTsKLSAgICBlbHNlCi0gICAgICAg
IGxheWVyLT5zZXRTaXplVHlwZShTaXplTGVuZ3RoKTsKLQotICAgIExlbmd0aFNpemUgYiA9IEZp
bGxMYXllcjo6aW5pdGlhbEZpbGxTaXplTGVuZ3RoKGxheWVyLT50eXBlKCkpOwotCi0gICAgaWYg
KHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpIHx8IHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlQ29udGFpbiB8fCBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1
ZUNvdmVyKSB7Ci0gICAgICAgIGxheWVyLT5zZXRTaXplTGVuZ3RoKGIpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgZmxvYXQgem9vbUZhY3RvciA9IG1fc3R5bGUtPmVmZmVjdGl2ZVpv
b20oKTsKLQotICAgIExlbmd0aCBmaXJzdExlbmd0aDsKLSAgICBMZW5ndGggc2Vjb25kTGVuZ3Ro
OwotCi0gICAgaWYgKFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCkp
IHsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0ID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihwYWlyLT5maXJzdCgpKTsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHNlY29uZCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+c2Vjb25kKCkp
OwotICAgICAgICBmaXJzdExlbmd0aCA9IGZpcnN0LT5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVy
c2lvbj4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAg
c2Vjb25kTGVuZ3RoID0gc2Vjb25kLT5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVyc2lvbj4oc3R5
bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBmaXJzdExlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb252ZXJ0VG9MZW5ndGg8QW55Q29u
dmVyc2lvbj4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAg
ICAgc2Vjb25kTGVuZ3RoID0gTGVuZ3RoKCk7Ci0gICAgfQotCi0gICAgaWYgKGZpcnN0TGVuZ3Ro
LmlzVW5kZWZpbmVkKCkgfHwgc2Vjb25kTGVuZ3RoLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGIuc2V0V2lkdGgoZmlyc3RMZW5ndGgpOwotICAgIGIuc2V0SGVpZ2h0KHNl
Y29uZExlbmd0aCk7Ci0gICAgbGF5ZXItPnNldFNpemVMZW5ndGgoYik7Ci19Ci0KLXZvaWQgU3R5
bGVSZXNvbHZlcjo6bWFwRmlsbFhQb3NpdGlvbihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxh
eWVyLCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgp
KSB7Ci0gICAgICAgIGxheWVyLT5zZXRYUG9zaXRpb24oRmlsbExheWVyOjppbml0aWFsRmlsbFhQ
b3NpdGlvbihsYXllci0+dHlwZSgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZs
b2F0IHpvb21GYWN0b3IgPSBtX3N0eWxlLT5lZmZlY3RpdmVab29tKCk7Ci0KLSAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbHVlKTsKLSAgICBMZW5ndGggbGVuZ3RoOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
aXNMZW5ndGgoKSkKLSAgICAgICAgbGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5n
dGg8TGVuZ3RoPihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAg
IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgbGVuZ3Ro
ID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAg
ICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5n
dGgoKSkKLSAgICAgICAgbGVuZ3RoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jc3NDYWxjVmFs
dWUoKS0+dG9DYWxjVmFsdWUoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9y
KSk7Ci0gICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzVmlld3BvcnRQZXJjZW50YWdlTGVu
Z3RoKCkpCi0gICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT52aWV3cG9ydFBlcmNlbnRh
Z2VMZW5ndGgoKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybjsKLSAgICBsYXllci0+c2V0WFBv
c2l0aW9uKGxlbmd0aCk7Ci19Ci0KLXZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwRmlsbFlQb3NpdGlv
bihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0g
ICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7Ci0gICAgICAgIGxheWVyLT5zZXRZUG9z
aXRpb24oRmlsbExheWVyOjppbml0aWFsRmlsbFlQb3NpdGlvbihsYXllci0+dHlwZSgpKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZsb2F0IHpvb21GYWN0b3IgPSBtX3N0eWxlLT5l
ZmZlY3RpdmVab29tKCk7Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBMZW5ndGggbGVu
Z3RoOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNMZW5ndGgoKSkKLSAgICAgICAgbGVuZ3Ro
ID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZSgpLCBtX3Jvb3RF
bGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5p
c1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgbGVuZ3RoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5n
ZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+
aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKLSAgICAgICAgbGVuZ3RoID0gTGVu
Z3RoKHByaW1pdGl2ZVZhbHVlLT5jc3NDYWxjVmFsdWUoKS0+dG9DYWxjVmFsdWUoc3R5bGUoKSwg
bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSk7Ci0gICAgZWxzZSBpZiAocHJpbWl0aXZl
VmFsdWUtPmlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkpCi0gICAgICAgIGxlbmd0aCA9IHBy
aW1pdGl2ZVZhbHVlLT52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKTsKLSAgICBlbHNlCi0gICAg
ICAgIHJldHVybjsKLSAgICBsYXllci0+c2V0WVBvc2l0aW9uKGxlbmd0aCk7Ci19Ci0KLXZvaWQg
U3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uRGVsYXkoQW5pbWF0aW9uKiBhbmltYXRpb24sIENT
U1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKLSAg
ICAgICAgYW5pbWF0aW9uLT5zZXREZWxheShBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EZWxh
eSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0g
ICAgYW5pbWF0aW9uLT5zZXREZWxheShwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZVRpbWU8ZmxvYXQs
IENTU1ByaW1pdGl2ZVZhbHVlOjpTZWNvbmRzPigpKTsKLX0KLQotdm9pZCBTdHlsZVJlc29sdmVy
OjptYXBBbmltYXRpb25EaXJlY3Rpb24oQW5pbWF0aW9uKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVl
KQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBsYXllci0+
c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkRpcmVjdGlvbigpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgc3dpdGNo
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6
Ci0gICAgICAgIGxheWVyLT5zZXREaXJlY3Rpb24oQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rp
b25Ob3JtYWwpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVlQWx0ZXJuYXRlOgot
ICAgICAgICBsYXllci0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9u
QWx0ZXJuYXRlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZVJldmVyc2U6Ci0g
ICAgICAgIGxheWVyLT5zZXREaXJlY3Rpb24oQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25S
ZXZlcnNlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUFsdGVybmF0ZVJldmVy
c2U6Ci0gICAgICAgIGxheWVyLT5zZXREaXJlY3Rpb24oQW5pbWF0aW9uOjpBbmltYXRpb25EaXJl
Y3Rpb25BbHRlcm5hdGVSZXZlcnNlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lk
IFN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvbkR1cmF0aW9uKEFuaW1hdGlvbiogYW5pbWF0aW9u
LCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7
Ci0gICAgICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0
aW9uRHVyYXRpb24oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOwotICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24ocHJpbWl0aXZlVmFsdWUtPmNvbXB1
dGVUaW1lPGZsb2F0LCBDU1NQcmltaXRpdmVWYWx1ZTo6U2Vjb25kcz4oKSk7Ci19Ci0KLXZvaWQg
U3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uRmlsbE1vZGUoQW5pbWF0aW9uKiBsYXllciwgQ1NT
VmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAg
ICAgICBsYXllci0+c2V0RmlsbE1vZGUoQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRmlsbE1v
ZGUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwot
ICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICBjYXNlIENTU1Zh
bHVlTm9uZToKLSAgICAgICAgbGF5ZXItPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlTm9u
ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVGb3J3YXJkczoKLSAgICAgICAg
bGF5ZXItPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlRm9yd2FyZHMpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1ZhbHVlQmFja3dhcmRzOgotICAgICAgICBsYXllci0+c2V0Rmls
bE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVCYWNrd2FyZHMpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIENTU1ZhbHVlQm90aDoKLSAgICAgICAgbGF5ZXItPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZp
bGxNb2RlQm90aCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotdm9pZCBTdHlsZVJlc29s
dmVyOjptYXBBbmltYXRpb25JdGVyYXRpb25Db3VudChBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NT
VmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAg
ICAgICBhbmltYXRpb24tPnNldEl0ZXJhdGlvbkNvdW50KEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1h
dGlvbkl0ZXJhdGlvbkNvdW50KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NT
VmFsdWVJbmZpbml0ZSkKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRJdGVyYXRpb25Db3VudCgtMSk7
Ci0gICAgZWxzZQotICAgICAgICBhbmltYXRpb24tPnNldEl0ZXJhdGlvbkNvdW50KHByaW1pdGl2
ZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpOwotfQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEFu
aW1hdGlvbk5hbWUoQW5pbWF0aW9uKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlm
ICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBsYXllci0+c2V0TmFtZShBbmlt
YXRpb246OmluaXRpYWxBbmltYXRpb25OYW1lKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkgPT0gQ1NTVmFsdWVOb25lKQotICAgICAgICBsYXllci0+c2V0SXNOb25lQW5pbWF0aW9uKHRy
dWUpOwotICAgIGVsc2UKLSAgICAgICAgbGF5ZXItPnNldE5hbWUocHJpbWl0aXZlVmFsdWUtPmdl
dFN0cmluZ1ZhbHVlKCkpOwotfQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvblBs
YXlTdGF0ZShBbmltYXRpb24qIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZh
bHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7Ci0gICAgICAgIGxheWVyLT5zZXRQbGF5U3RhdGUoQW5p
bWF0aW9uOjppbml0aWFsQW5pbWF0aW9uUGxheVN0YXRlKCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBFQW5pbVBsYXlTdGF0ZSBwbGF5U3Rh
dGUgPSAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVQYXVzZWQpID8gQW5p
bVBsYXlTdGF0ZVBhdXNlZCA6IEFuaW1QbGF5U3RhdGVQbGF5aW5nOwotICAgIGxheWVyLT5zZXRQ
bGF5U3RhdGUocGxheVN0YXRlKTsKLX0KLQotdm9pZCBTdHlsZVJlc29sdmVyOjptYXBBbmltYXRp
b25Qcm9wZXJ0eShBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQotewotICAg
IGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBhbmltYXRpb24tPnNldEFu
aW1hdGlvbk1vZGUoQW5pbWF0aW9uOjpBbmltYXRlQWxsKTsKLSAgICAgICAgYW5pbWF0aW9uLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUludmFsaWQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkgPT0gQ1NTVmFsdWVBbGwpIHsKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRBbmltYXRpb25Nb2Rl
KEFuaW1hdGlvbjo6QW5pbWF0ZUFsbCk7Ci0gICAgICAgIGFuaW1hdGlvbi0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlJbnZhbGlkKTsKLSAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlTm9uZSkgewotICAgICAgICBhbmltYXRpb24tPnNldEFuaW1hdGlv
bk1vZGUoQW5pbWF0aW9uOjpBbmltYXRlTm9uZSk7Ci0gICAgICAgIGFuaW1hdGlvbi0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlJbnZhbGlkKTsKLSAgICB9IGVsc2UgewotICAgICAgICBhbmltYXRp
b24tPnNldEFuaW1hdGlvbk1vZGUoQW5pbWF0aW9uOjpBbmltYXRlU2luZ2xlUHJvcGVydHkpOwot
ICAgICAgICBhbmltYXRpb24tPnNldFByb3BlcnR5KHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+
KHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSk7Ci0gICAgfQotfQotCi12b2lkIFN0eWxlUmVz
b2x2ZXI6Om1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKEFuaW1hdGlvbiogYW5pbWF0aW9uLCBD
U1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7Ci0g
ICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQW5pbWF0aW9uOjppbml0aWFsQW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgewotICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVl
KTsKLSAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgewotICAgICAg
ICBjYXNlIENTU1ZhbHVlTGluZWFyOgotICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdG
dW5jdGlvbihMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCkpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVFYXNlOgotICAgICAgICAgICAgYW5pbWF0aW9uLT5z
ZXRUaW1pbmdGdW5jdGlvbihDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZUVhc2VJbjoKLSAgICAgICAg
ICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjo6Y3JlYXRlKDAuNDIsIDAuMCwgMS4wLCAxLjApKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIENTU1ZhbHVlRWFzZU91dDoKLSAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGlt
aW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKDAuMCwgMC4wLCAw
LjU4LCAxLjApKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlRWFz
ZUluT3V0OgotICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoMC40MiwgMC4wLCAwLjU4LCAxLjApKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlU3RlcFN0YXJ0OgotICAgICAgICAg
ICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihTdGVwc1RpbWluZ0Z1bmN0aW9uOjpjcmVh
dGUoMSwgdHJ1ZSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVT
dGVwRW5kOgotICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihTdGVwc1Rp
bWluZ0Z1bmN0aW9uOjpjcmVhdGUoMSwgZmFsc2UpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAodmFsdWUtPmlzQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKCkpIHsKLSAgICAgICAgQ1NTQ3ViaWNCZXppZXJUaW1p
bmdGdW5jdGlvblZhbHVlKiBjdWJpY1RpbWluZ0Z1bmN0aW9uID0gc3RhdGljX2Nhc3Q8Q1NTQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKj4odmFsdWUpOwotICAgICAgICBhbmltYXRpb24t
PnNldFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZShjdWJp
Y1RpbWluZ0Z1bmN0aW9uLT54MSgpLCBjdWJpY1RpbWluZ0Z1bmN0aW9uLT55MSgpLCBjdWJpY1Rp
bWluZ0Z1bmN0aW9uLT54MigpLCBjdWJpY1RpbWluZ0Z1bmN0aW9uLT55MigpKSk7Ci0gICAgfSBl
bHNlIGlmICh2YWx1ZS0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUoKSkgewotICAgICAgICBD
U1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUqIHN0ZXBzVGltaW5nRnVuY3Rpb24gPSBzdGF0aWNf
Y2FzdDxDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgIGFuaW1h
dGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oU3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKHN0ZXBz
VGltaW5nRnVuY3Rpb24tPm51bWJlck9mU3RlcHMoKSwgc3RlcHNUaW1pbmdGdW5jdGlvbi0+c3Rl
cEF0U3RhcnQoKSkpOwotICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzTGluZWFyVGltaW5nRnVuY3Rp
b25WYWx1ZSgpKQotICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKExpbmVhclRp
bWluZ0Z1bmN0aW9uOjpjcmVhdGUoKSk7Ci19Ci0KLXZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwTmlu
ZVBpZWNlSW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTVmFsdWUqIHZhbHVlLCBOaW5l
UGllY2VJbWFnZSYgaW1hZ2UpCi17Ci0gICAgLy8gSWYgd2UncmUgbm90IGEgdmFsdWUgbGlzdCwg
dGhlbiB3ZSBhcmUgIm5vbmUiIGFuZCBkb24ndCBuZWVkIHRvIGFsdGVyIHRoZSBlbXB0eSBpbWFn
ZSBhdCBhbGwuCi0gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUtPmlzVmFsdWVMaXN0KCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIC8vIFJldHJpZXZlIHRoZSBib3JkZXIgaW1hZ2UgdmFsdWUuCi0g
ICAgQ1NTVmFsdWVMaXN0KiBib3JkZXJJbWFnZSA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+
KHZhbHVlKTsKLQotICAgIC8vIFNldCB0aGUgaW1hZ2UgKHRoaXMga2lja3Mgb2ZmIHRoZSBsb2Fk
KS4KLSAgICBDU1NQcm9wZXJ0eUlEIGltYWdlUHJvcGVydHk7Ci0gICAgaWYgKHByb3BlcnR5ID09
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2UpCi0gICAgICAgIGltYWdlUHJvcGVydHkgPSBD
U1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlOwotICAgIGVsc2UgaWYgKHByb3BlcnR5ID09IENT
U1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlKQotICAgICAgICBpbWFnZVByb3BlcnR5ID0gQ1NT
UHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTb3VyY2U7Ci0gICAgZWxzZQotICAgICAgICBpbWFn
ZVByb3BlcnR5ID0gcHJvcGVydHk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwIDsgaSA8IGJv
cmRlckltYWdlLT5sZW5ndGgoKSA7ICsraSkgewotICAgICAgICBDU1NWYWx1ZSogY3VycmVudCA9
IGJvcmRlckltYWdlLT5pdGVtKGkpOwotCi0gICAgICAgIGlmIChjdXJyZW50LT5pc0ltYWdlVmFs
dWUoKSB8fCBjdXJyZW50LT5pc0ltYWdlR2VuZXJhdG9yVmFsdWUoKQotI2lmIEVOQUJMRShDU1Nf
SU1BR0VfU0VUKQotICAgICAgICAgICAgfHwgY3VycmVudC0+aXNJbWFnZVNldFZhbHVlKCkKLSNl
bmRpZgotICAgICAgICAgICAgKQotICAgICAgICAgICAgaW1hZ2Uuc2V0SW1hZ2Uoc3R5bGVJbWFn
ZShpbWFnZVByb3BlcnR5LCBjdXJyZW50KSk7Ci0gICAgICAgIGVsc2UgaWYgKGN1cnJlbnQtPmlz
Qm9yZGVySW1hZ2VTbGljZVZhbHVlKCkpCi0gICAgICAgICAgICBtYXBOaW5lUGllY2VJbWFnZVNs
aWNlKGN1cnJlbnQsIGltYWdlKTsKLSAgICAgICAgZWxzZSBpZiAoY3VycmVudC0+aXNWYWx1ZUxp
c3QoKSkgewotICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBzbGFzaExpc3QgPSBzdGF0aWNfY2Fz
dDxDU1NWYWx1ZUxpc3QqPihjdXJyZW50KTsKLSAgICAgICAgICAgIC8vIE1hcCBpbiB0aGUgaW1h
Z2Ugc2xpY2VzLgotICAgICAgICAgICAgaWYgKHNsYXNoTGlzdC0+aXRlbSgwKSAmJiBzbGFzaExp
c3QtPml0ZW0oMCktPmlzQm9yZGVySW1hZ2VTbGljZVZhbHVlKCkpCi0gICAgICAgICAgICAgICAg
bWFwTmluZVBpZWNlSW1hZ2VTbGljZShzbGFzaExpc3QtPml0ZW0oMCksIGltYWdlKTsKLQotICAg
ICAgICAgICAgLy8gTWFwIGluIHRoZSBib3JkZXIgc2xpY2VzLgotICAgICAgICAgICAgaWYgKHNs
YXNoTGlzdC0+aXRlbSgxKSkKLSAgICAgICAgICAgICAgICBpbWFnZS5zZXRCb3JkZXJTbGljZXMo
bWFwTmluZVBpZWNlSW1hZ2VRdWFkKHNsYXNoTGlzdC0+aXRlbSgxKSkpOwotCi0gICAgICAgICAg
ICAvLyBNYXAgaW4gdGhlIG91dHNldC4KLSAgICAgICAgICAgIGlmIChzbGFzaExpc3QtPml0ZW0o
MikpCi0gICAgICAgICAgICAgICAgaW1hZ2Uuc2V0T3V0c2V0KG1hcE5pbmVQaWVjZUltYWdlUXVh
ZChzbGFzaExpc3QtPml0ZW0oMikpKTsKLSAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50LT5pc1By
aW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgICAgIC8vIFNldCB0aGUgYXBwcm9wcmlhdGUgcnVs
ZXMgZm9yIHN0cmV0Y2gvcm91bmQvcmVwZWF0IG9mIHRoZSBzbGljZXMuCi0gICAgICAgICAgICBt
YXBOaW5lUGllY2VJbWFnZVJlcGVhdChjdXJyZW50LCBpbWFnZSk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZSkgewot
ICAgICAgICAvLyBXZSBoYXZlIHRvIHByZXNlcnZlIHRoZSBsZWdhY3kgYmVoYXZpb3Igb2YgLXdl
YmtpdC1ib3JkZXItaW1hZ2UgYW5kIG1ha2UgdGhlIGJvcmRlciBzbGljZXMKLSAgICAgICAgLy8g
YWxzbyBzZXQgdGhlIGJvcmRlciB3aWR0aHMuIFdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQg
cGVyY2VudGFnZXMsIHNpbmNlIHdlIGRvbid0IGV2ZW4gc3VwcG9ydAotICAgICAgICAvLyB0aG9z
ZSBvbiByZWFsIGJvcmRlcnMgeWV0LgotICAgICAgICBpZiAoaW1hZ2UuYm9yZGVyU2xpY2VzKCku
dG9wKCkuaXNGaXhlZCgpKQotICAgICAgICAgICAgc3R5bGUoKS0+c2V0Qm9yZGVyVG9wV2lkdGgo
aW1hZ2UuYm9yZGVyU2xpY2VzKCkudG9wKCkudmFsdWUoKSk7Ci0gICAgICAgIGlmIChpbWFnZS5i
b3JkZXJTbGljZXMoKS5yaWdodCgpLmlzRml4ZWQoKSkKLSAgICAgICAgICAgIHN0eWxlKCktPnNl
dEJvcmRlclJpZ2h0V2lkdGgoaW1hZ2UuYm9yZGVyU2xpY2VzKCkucmlnaHQoKS52YWx1ZSgpKTsK
LSAgICAgICAgaWYgKGltYWdlLmJvcmRlclNsaWNlcygpLmJvdHRvbSgpLmlzRml4ZWQoKSkKLSAg
ICAgICAgICAgIHN0eWxlKCktPnNldEJvcmRlckJvdHRvbVdpZHRoKGltYWdlLmJvcmRlclNsaWNl
cygpLmJvdHRvbSgpLnZhbHVlKCkpOwotICAgICAgICBpZiAoaW1hZ2UuYm9yZGVyU2xpY2VzKCku
bGVmdCgpLmlzRml4ZWQoKSkKLSAgICAgICAgICAgIHN0eWxlKCktPnNldEJvcmRlckxlZnRXaWR0
aChpbWFnZS5ib3JkZXJTbGljZXMoKS5sZWZ0KCkudmFsdWUoKSk7Ci0gICAgfQotfQotCi12b2lk
IFN0eWxlUmVzb2x2ZXI6Om1hcE5pbmVQaWVjZUltYWdlU2xpY2UoQ1NTVmFsdWUqIHZhbHVlLCBO
aW5lUGllY2VJbWFnZSYgaW1hZ2UpCi17Ci0gICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUtPmlzQm9y
ZGVySW1hZ2VTbGljZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFJldHJpZXZl
IHRoZSBib3JkZXIgaW1hZ2UgdmFsdWUuCi0gICAgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlKiBi
b3JkZXJJbWFnZVNsaWNlID0gc3RhdGljX2Nhc3Q8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlKj4o
dmFsdWUpOwotCi0gICAgLy8gU2V0IHVwIGEgbGVuZ3RoIGJveCB0byByZXByZXNlbnQgb3VyIGlt
YWdlIHNsaWNlcy4KLSAgICBMZW5ndGhCb3ggYm94OwotICAgIFF1YWQqIHNsaWNlcyA9IGJvcmRl
ckltYWdlU2xpY2UtPnNsaWNlcygpOwotICAgIGlmIChzbGljZXMtPnRvcCgpLT5pc1BlcmNlbnRh
Z2UoKSkKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldERvdWJs
ZVZhbHVlKCksIFBlcmNlbnQpOwotICAgIGVsc2UKLSAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3Ro
KHNsaWNlcy0+dG9wKCktPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
KSwgRml4ZWQpOwotICAgIGlmIChzbGljZXMtPmJvdHRvbSgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAg
ICAgICAgYm94Lm1fYm90dG9tID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldERvdWJsZVZh
bHVlKCksIFBlcmNlbnQpOwotICAgIGVsc2UKLSAgICAgICAgYm94Lm1fYm90dG9tID0gTGVuZ3Ro
KChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUiksIEZpeGVkKTsKLSAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzUGVyY2VudGFn
ZSgpKQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXREb3Vi
bGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICBlbHNlCi0gICAgICAgIGJveC5tX2xlZnQgPSBMZW5n
dGgoc2xpY2VzLT5sZWZ0KCktPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKSwgRml4ZWQpOwotICAgIGlmIChzbGljZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQot
ICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZh
bHVlKCksIFBlcmNlbnQpOwotICAgIGVsc2UKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBMZW5ndGgo
c2xpY2VzLT5yaWdodCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
UiksIEZpeGVkKTsKLSAgICBpbWFnZS5zZXRJbWFnZVNsaWNlcyhib3gpOwotCi0gICAgLy8gU2V0
IG91ciBmaWxsIG1vZGUuCi0gICAgaW1hZ2Uuc2V0RmlsbChib3JkZXJJbWFnZVNsaWNlLT5tX2Zp
bGwpOwotfQotCi1MZW5ndGhCb3ggU3R5bGVSZXNvbHZlcjo6bWFwTmluZVBpZWNlSW1hZ2VRdWFk
KENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQotICAgICAgICByZXR1cm4gTGVuZ3RoQm94KCk7Ci0KLSAgICAvLyBHZXQgb3Vy
IHpvb20gdmFsdWUuCi0gICAgZmxvYXQgem9vbSA9IHVzZVNWR1pvb21SdWxlcygpID8gMS4wZiA6
IHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKLQotICAgIC8vIFJldHJpZXZlIHRoZSBwcmltaXRp
dmUgdmFsdWUuCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGJvcmRlcldpZHRocyA9IHN0YXRpY19j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotCi0gICAgLy8gU2V0IHVwIGEgbGVuZ3Ro
IGJveCB0byByZXByZXNlbnQgb3VyIGltYWdlIHNsaWNlcy4KLSAgICBMZW5ndGhCb3ggYm94OyAv
LyBEZWZhdWx0cyB0byAnYXV0bycgc28gd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUgdGhhdCBleHBs
aWNpdGx5IGJlbG93LgotICAgIFF1YWQqIHNsaWNlcyA9IGJvcmRlcldpZHRocy0+Z2V0UXVhZFZh
bHVlKCk7Ci0gICAgaWYgKHNsaWNlcy0+dG9wKCktPmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5t
X3RvcCA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7Ci0g
ICAgZWxzZSBpZiAoc2xpY2VzLT50b3AoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5t
X3RvcCA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BFUkNFTlRBR0UpLCBQZXJjZW50KTsKLSAgICBlbHNlIGlmIChzbGljZXMtPnRv
cCgpLT5nZXRJZGVudCgpICE9IENTU1ZhbHVlQXV0bykKLSAgICAgICAgYm94Lm1fdG9wID0gc2xp
Y2VzLT50b3AoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5
bGUoKSwgem9vbSk7Ci0KLSAgICBpZiAoc2xpY2VzLT5yaWdodCgpLT5pc051bWJlcigpKQotICAg
ICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKCks
IFJlbGF0aXZlKTsKLSAgICBlbHNlIGlmIChzbGljZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgp
KQotICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJs
ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwotICAg
IGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQoKS0+Z2V0SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pCi0g
ICAgICAgIGJveC5tX3JpZ2h0ID0gc2xpY2VzLT5yaWdodCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0
aD4oc3R5bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tKTsKLQotICAgIGlmIChzbGljZXMt
PmJvdHRvbSgpLT5pc051bWJlcigpKQotICAgICAgICBib3gubV9ib3R0b20gPSBMZW5ndGgoc2xp
Y2VzLT5ib3R0b20oKS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOwotICAgIGVsc2UgaWYgKHNs
aWNlcy0+Ym90dG9tKCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gubV9ib3R0b20gPSBM
ZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7Ci0gICAgZWxzZSBpZiAoc2xpY2VzLT5ib3R0b20o
KS0+Z2V0SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IHNs
aWNlcy0+Ym90dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZSgpLCByb290RWxlbWVu
dFN0eWxlKCksIHpvb20pOwotCi0gICAgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc051bWJlcigpKQot
ICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXRJbnRWYWx1ZSgp
LCBSZWxhdGl2ZSk7Ci0gICAgZWxzZSBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzUGVyY2VudGFnZSgp
KQotICAgICAgICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXREb3VibGVW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpLCBQZXJjZW50KTsKLSAgICBl
bHNlIGlmIChzbGljZXMtPmxlZnQoKS0+Z2V0SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pCi0gICAg
ICAgIGJveC5tX2xlZnQgPSBzbGljZXMtPmxlZnQoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0
eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9vbSk7Ci0KLSAgICByZXR1cm4gYm94OwotfQot
Ci12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcE5pbmVQaWVjZUltYWdlUmVwZWF0KENTU1ZhbHVlKiB2
YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQotewotICAgIGlmICghdmFsdWUgfHwgIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOwotICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7
Ci0gICAgaWYgKCFwYWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8ICFwYWlyLT5zZWNvbmQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaW50IGZpcnN0SWRlbnRpZmllciA9IHBhaXItPmZpcnN0KCkt
PmdldElkZW50KCk7Ci0gICAgaW50IHNlY29uZElkZW50aWZpZXIgPSBwYWlyLT5zZWNvbmQoKS0+
Z2V0SWRlbnQoKTsKLQotICAgIEVOaW5lUGllY2VJbWFnZVJ1bGUgaG9yaXpvbnRhbFJ1bGU7Ci0g
ICAgc3dpdGNoIChmaXJzdElkZW50aWZpZXIpIHsKLSAgICBjYXNlIENTU1ZhbHVlU3RyZXRjaDoK
LSAgICAgICAgaG9yaXpvbnRhbFJ1bGUgPSBTdHJldGNoSW1hZ2VSdWxlOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIENTU1ZhbHVlUm91bmQ6Ci0gICAgICAgIGhvcml6b250YWxSdWxlID0gUm91
bmRJbWFnZVJ1bGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVTcGFjZToKLSAg
ICAgICAgaG9yaXpvbnRhbFJ1bGUgPSBTcGFjZUltYWdlUnVsZTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgZGVmYXVsdDogLy8gQ1NTVmFsdWVSZXBlYXQKLSAgICAgICAgaG9yaXpvbnRhbFJ1bGUgPSBS
ZXBlYXRJbWFnZVJ1bGU7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpbWFnZS5zZXRIb3Jp
em9udGFsUnVsZShob3Jpem9udGFsUnVsZSk7Ci0KLSAgICBFTmluZVBpZWNlSW1hZ2VSdWxlIHZl
cnRpY2FsUnVsZTsKLSAgICBzd2l0Y2ggKHNlY29uZElkZW50aWZpZXIpIHsKLSAgICBjYXNlIENT
U1ZhbHVlU3RyZXRjaDoKLSAgICAgICAgdmVydGljYWxSdWxlID0gU3RyZXRjaEltYWdlUnVsZTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZVJvdW5kOgotICAgICAgICB2ZXJ0aWNh
bFJ1bGUgPSBSb3VuZEltYWdlUnVsZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1
ZVNwYWNlOgotICAgICAgICB2ZXJ0aWNhbFJ1bGUgPSBTcGFjZUltYWdlUnVsZTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgZGVmYXVsdDogLy8gQ1NTVmFsdWVSZXBlYXQKLSAgICAgICAgdmVydGljYWxS
dWxlID0gUmVwZWF0SW1hZ2VSdWxlOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaW1hZ2Uu
c2V0VmVydGljYWxSdWxlKHZlcnRpY2FsUnVsZSk7Ci19Ci0KIHZvaWQgU3R5bGVSZXNvbHZlcjo6
Y2hlY2tGb3JUZXh0U2l6ZUFkanVzdCgpCiB7CiAgICAgaWYgKG1fc3R5bGUtPnRleHRTaXplQWRq
dXN0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCAyOWY4MDBlMGM2ZWM3MDUy
ZTM2ZmMyNTlhOGIyMWM5OGI2NWIwOWQ2Li40ODQzZWI1M2E5OTlmMmEwZTMyMTQxMTFjOTc3ODIz
MmQ2OWEwNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTIzLDYgKzIzLDcg
QEAKICNkZWZpbmUgU3R5bGVSZXNvbHZlcl9oCiAKICNpbmNsdWRlICJDU1NSdWxlLmgiCisjaW5j
bHVkZSAiQ1NTVG9TdHlsZU1hcC5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1
ZGUgIkxpbmtIYXNoLmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgpAQCAtNDExLDYgKzQx
Miw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0ludExlbmd0aChDU1NQ
cmltaXRpdmVWYWx1ZSosIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91
YmxlIG11bHRpcGxpZXIgPSAxKTsKICAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0Zsb2F0TGVu
Z3RoKENTU1ByaW1pdGl2ZVZhbHVlKiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogcm9vdFN0
eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEpOwogCisgICAgQ1NTVG9TdHlsZU1hcCogc3R5bGVN
YXAoKSB7IHJldHVybiAmbV9zdHlsZU1hcDsgfQorICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
UmVuZGVyU3R5bGUqIHNfc3R5bGVOb3RZZXRBdmFpbGFibGU7CiAKQEAgLTQxOSwzMiArNDIyLDYg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY2FjaGVCb3JkZXJBbmRCYWNrZ3JvdW5kKCk7CiAKLSAg
ICB2b2lkIG1hcEZpbGxBdHRhY2htZW50KENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1Zh
bHVlKik7Ci0gICAgdm9pZCBtYXBGaWxsQ2xpcChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBD
U1NWYWx1ZSopOwotICAgIHZvaWQgbWFwRmlsbENvbXBvc2l0ZShDU1NQcm9wZXJ0eUlELCBGaWxs
TGF5ZXIqLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwRmlsbE9yaWdpbihDU1NQcm9wZXJ0eUlE
LCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwRmlsbEltYWdlKENTU1Byb3Bl
cnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7Ci0gICAgdm9pZCBtYXBGaWxsUmVwZWF0WChD
U1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwRmlsbFJl
cGVhdFkoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKLSAgICB2b2lkIG1h
cEZpbGxTaXplKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7Ci0gICAgdm9p
ZCBtYXBGaWxsWFBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7
Ci0gICAgdm9pZCBtYXBGaWxsWVBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENT
U1ZhbHVlKik7Ci0KLSAgICB2b2lkIG1hcEFuaW1hdGlvbkRlbGF5KEFuaW1hdGlvbiosIENTU1Zh
bHVlKik7Ci0gICAgdm9pZCBtYXBBbmltYXRpb25EaXJlY3Rpb24oQW5pbWF0aW9uKiwgQ1NTVmFs
dWUqKTsKLSAgICB2b2lkIG1hcEFuaW1hdGlvbkR1cmF0aW9uKEFuaW1hdGlvbiosIENTU1ZhbHVl
Kik7Ci0gICAgdm9pZCBtYXBBbmltYXRpb25GaWxsTW9kZShBbmltYXRpb24qLCBDU1NWYWx1ZSop
OwotICAgIHZvaWQgbWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoQW5pbWF0aW9uKiwgQ1NTVmFs
dWUqKTsKLSAgICB2b2lkIG1hcEFuaW1hdGlvbk5hbWUoQW5pbWF0aW9uKiwgQ1NTVmFsdWUqKTsK
LSAgICB2b2lkIG1hcEFuaW1hdGlvblBsYXlTdGF0ZShBbmltYXRpb24qLCBDU1NWYWx1ZSopOwot
ICAgIHZvaWQgbWFwQW5pbWF0aW9uUHJvcGVydHkoQW5pbWF0aW9uKiwgQ1NTVmFsdWUqKTsKLSAg
ICB2b2lkIG1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKEFuaW1hdGlvbiosIENTU1ZhbHVlKik7
Ci0KLXB1YmxpYzoKLSAgICB2b2lkIG1hcE5pbmVQaWVjZUltYWdlKENTU1Byb3BlcnR5SUQsIENT
U1ZhbHVlKiwgTmluZVBpZWNlSW1hZ2UmKTsKLSAgICB2b2lkIG1hcE5pbmVQaWVjZUltYWdlU2xp
Y2UoQ1NTVmFsdWUqLCBOaW5lUGllY2VJbWFnZSYpOwotICAgIExlbmd0aEJveCBtYXBOaW5lUGll
Y2VJbWFnZVF1YWQoQ1NTVmFsdWUqKTsKLSAgICB2b2lkIG1hcE5pbmVQaWVjZUltYWdlUmVwZWF0
KENTU1ZhbHVlKiwgTmluZVBpZWNlSW1hZ2UmKTsKIHByaXZhdGU6CiAgICAgYm9vbCBjYW5TaGFy
ZVN0eWxlV2l0aENvbnRyb2woU3R5bGVkRWxlbWVudCopIGNvbnN0OwogCkBAIC01NDYsNiArNTIz
LDggQEAgcHJpdmF0ZToKICAgICBpbnQgbV9zY29wZVN0YWNrUGFyZW50Qm91bmRzSW5kZXg7CiAj
ZW5kaWYKIAorICAgIENTU1RvU3R5bGVNYXAgbV9zdHlsZU1hcDsKKwogICAgIGZyaWVuZCBjbGFz
cyBTdHlsZUJ1aWxkZXI7CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXRjaGVk
UHJvcGVydGllcyYsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJik7CiAgICAgZnJpZW5kIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBNYXRjaGVkUHJvcGVydGllcyYsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0
aWVzJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149308</attachid>
            <date>2012-06-25 09:26:20 -0700</date>
            <delta_ts>2012-06-25 10:36:57 -0700</delta_ts>
            <desc>Fix Qt</desc>
            <filename>bug-89881-20120625092619.patch</filename>
            <type>text/plain</type>
            <size>101201</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ1YWI0NjlmZDYzODY2
ODRlYmNiYWFlNjgzOGUzOTJmYWYzOWExMy4uYTYzYTIxYzM5YTZmMTQwYTQ2MWEzZWY2YjczMWVm
ZTY4Yzk4OWQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA2LTI1ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBTcGxpdCBtYXAqIGZ1bmN0aW9u
cyBvdXQgb2YgU3R5bGVSZXNvbHZlciBpbnRvIGEgaGVscGVyIG9iamVjdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk4ODEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVzZSBtYXAqIGZ1bmN0aW9ucyBh
cmUgY29tcGxldGVseSBpbmRlcGVuZGVudCBvZiB0aGUgcmVzdCBvZiBTdHlsZVJlc29sdmVyCisg
ICAgICAgIGFuZCBvbmx5IGV4aXN0IHRvIHNlcnZlIFN0eWxlQnVpbGRlci4KKyAgICAgICAgQ1NT
VG9TdHlsZU1hcCBkb2Vzbid0IGV2ZW4gd2FudCB0byBoYXZlIGEgU3R5bGVSZXNvbHZlciBwb2lu
dGVyLCBidXQKKyAgICAgICAgY3VycmVudGx5IG5lZWRzIG9uZSB0byBhY2Nlc3MgdGhlIHJlc29s
dmUtbGlmZXRpbWUgY2FjaGVzIGZvciB0aGUKKyAgICAgICAgY3VycmVudCByZXNvbHZlLiAgT25j
ZSB3ZSBzcGxpdCBvdXQgdGhhdCBwZXItcmVzb2x2ZSBzdGF0ZSBpbnRvCisgICAgICAgIHNvbWUg
c29ydCBvZiBSZXNvbHZlU3RhdGUvUmVzb2x2ZUluZm8gb2JqZWN0IChha2luIHRvIFBhaW50SW5m
by9MYXlvdXRTdGF0ZSkKKyAgICAgICAgdGhlbiB0aGlzIG9iamVjdCB3aWxsIGJlIGV2ZW4gc2lt
cGxlci4KKworICAgICAgICBObyBiZWhhdmlvcmFsIGNoYW5nZSwgdGh1cyBubyB0ZXN0cy4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBjc3MvQ1NTVG9TdHlsZU1hcC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpzdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpyb290RWxlbWVudFN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1RvU3R5bGVNYXA6OnVzZVNWR1pvb21SdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NUb1N0eWxlTWFwOjpzdHlsZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVN
YXA6Om1hcEZpbGxBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6
Om1hcEZpbGxDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxD
b21wb3NpdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbE9yaWdp
bik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFgpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFkpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9T
dHlsZU1hcDo6bWFwRmlsbFhQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxl
TWFwOjptYXBGaWxsWVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6
Om1hcEFuaW1hdGlvbkRlbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1h
cEFuaW1hdGlvbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25EdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25GaWxsTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25JdGVyYXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxl
TWFwOjptYXBBbmltYXRpb25OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6
Om1hcEFuaW1hdGlvblBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBBbmltYXRpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFw
OjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0
eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxl
TWFwOjptYXBOaW5lUGllY2VJbWFnZVNsaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5
bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0
eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVJlcGVhdCk6CisgICAgICAgICogY3NzL0NTU1RvU3R5
bGVNYXAuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENTU1RvU3R5bGVN
YXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6Q1NTVG9TdHlsZU1hcCk6Cisg
ICAgICAgICogY3NzL1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5RmlsbExheWVyOjphcHBseVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJv
cGVydHlCb3JkZXJJbWFnZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5Qm9yZGVySW1hZ2VNb2RpZmllcjo6YXBwbHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlBbmltYXRpb246Om1hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcik6CisgICAgICAgICogY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3R5
bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0
Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZU1hcCk6CisgICAgICAgIChTdHlsZVJl
c29sdmVyKToKKwogMjAxMi0wNi0yNSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55
MTAwLm5ldD4KIAogICAgICAgICBBZGQgc3RhdGljIHF1YWxpZmllciB0byBHcmFwaGljc0NvbnRl
eHQzRDo6ZXh0cmFjdEltYWdlRGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZmNkZWFiYTkz
M2JkMTM3M2Y4ZjI0NDJmMzMyZGRhMDVkYTg1NzI5Zi4uNmQzZGE3ZjhjMjRiNDYyN2M1ZjEyMzM5
OThkZjM3MGU1MTM0NDNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTUwMyw2ICs1MDMsNyBA
QCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL0NTU1N0eWxlUnVsZS5jcHAKICAgICBjc3Mv
Q1NTU3R5bGVTaGVldC5jcHAKICAgICBjc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKKyAg
ICBjc3MvQ1NTVG9TdHlsZU1hcC5jcHAKICAgICBjc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3Bw
CiAgICAgY3NzL0NTU1ZhbHVlLmNwcAogICAgIGNzcy9DU1NWYWx1ZUxpc3QuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA0ODYxZjgyYWRkM2FkMTg3ZjAxM2UxOTZlZjFkNzEz
NDE0NjcxOGQxLi4yYTE0MzE2NjM0NTQ3ZjA0MmUzMjEyNTllMGRiNTJlYjQ5ZDM1MmNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE2NzksNiArMTY3OSw4IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBcCiAJU291
cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVG9TdHlsZU1hcC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NXcmFwU2hhcGVzLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvY3NzL0NTU1dyYXBTaGFwZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVS
YW5nZVZhbHVlLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA2N2ZlZGQ2MjVhYjEwYmYxZWVmNGE0MTNi
MTNhYzc4OWY0OTFjMWUzLi42MGJhM2RmOTE1Mzg3MGM1OTkzY2I3MGYwNTI1OWI3YmI5ZDlhMTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKQEAgLTQ2Niw2ICs0NjYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBjc3Mv
Q1NTU3R5bGVSdWxlLmNwcCBcCiAgICAgY3NzL0NTU1N0eWxlU2hlZXQuY3BwIFwKICAgICBjc3Mv
Q1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAgXAorICAgIGNzcy9DU1NUb1N0eWxlTWFwLmNwcCBc
CiAgICAgY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcCBcCiAgICAgY3NzL0NTU1ZhbHVlLmNw
cCBcCiAgICAgY3NzL0NTU1ZhbHVlTGlzdC5jcHAgXApAQCAtMTY0OCw2ICsxNjQ5LDcgQEAgSEVB
REVSUyArPSBcCiAgICAgY3NzL0NTU1N0eWxlUnVsZS5oIFwKICAgICBjc3MvQ1NTU3R5bGVTaGVl
dC5oIFwKICAgICBjc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oIFwKKyAgICBjc3MvQ1NTVG9T
dHlsZU1hcC5oIFwKICAgICBjc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaCBcCiAgICAgY3NzL0NT
U1ZhbHVlLmNwcCBcCiAgICAgY3NzL0NTU1ZhbHVlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGQ3
M2U2NzBlYWUyNWU4NTU4MTliNTNiOGViMWI1N2Q4NTczNDJiODYuLmU5ZWJkNmMxZjRlMzhkZDgy
NTA0NGVlMTQxMDljNDFjMzlhZTliNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI1MDUsNiArMjUw
NSw4IEBACiAgICAgICAgICAgICAnY3NzL0NTU1N0eWxlU2hlZXQuaCcsCiAgICAgICAgICAgICAn
Y3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwJywKICAgICAgICAgICAgICdjc3MvQ1NTVGlt
aW5nRnVuY3Rpb25WYWx1ZS5oJywKKyAgICAgICAgICAgICdjc3MvQ1NTVG9TdHlsZU1hcC5jcHAn
LAorICAgICAgICAgICAgJ2Nzcy9DU1NUb1N0eWxlTWFwLmgnLAogICAgICAgICAgICAgJ2Nzcy9D
U1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9DU1NVbmljb2RlUmFu
Z2VWYWx1ZS5oJywKICAgICAgICAgICAgICdjc3MvQ1NTVW5rbm93blJ1bGUuaCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGEwMDJlMjlkYTQ3
YjY5ODVmYjdlYjZjZGQ0YjU2ZjJjMGEwNzQ2NjAuLmQxMmRiNTY2YzhjMzk1OTZmZDBmMTI1NDhl
MDcxMTU2ODZjMTI3ZTkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC0zNjYzNSw2ICszNjYzNSwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTVG9TdHlsZU1hcC5jcHAiCisJCQkJ
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NUb1N0
eWxlTWFwLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGNzc1xDU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDA3ZjkyOTIzNmQzN2ZiNDY1OWE4YjYxMGJhZDRjOWYzOTM5MDQyZjAuLmNj
ODM0NDEzNDU3YTM0MDkzZGMwYzZlMjEyNWEwZDg5OWYxY2M3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQxODcsNiArNDE4
Nyw4IEBACiAJCUE4NzFERkU0MEExNTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJXaWRnZXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NzFERkUwMEExNTM3
NkIwMEIxMkE2OCAvKiBSZW5kZXJXaWRnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBODcxREZFNTBBMTUzNzZCMDBCMTJBNjggLyogUmVuZGVy
V2lkZ2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4NzFERkUxMEExNTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJXaWRnZXQuY3BwICovOyB9OwogCQlB
ODc0OEJFMDEyQ0JGMkRDMDAxRkJBNDEgLyogSGFzaFRvb2xzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODc0OEJERjEyQ0JGMkRDMDAxRkJBNDEgLyog
SGFzaFRvb2xzLmggKi87IH07CisJCUE4ODJEQTIwMTU5Mzg0NkEwMDAxMTVFRCAvKiBDU1NUb1N0
eWxlTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4ODJEQTFGMTU5Mzg0NkEwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmNwcCAqLzsgfTsKKwkJ
QTg4MkRBMjMxNTkzODQ4RDAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4ODJEQTIyMTU5Mzg0OEQwMDAxMTVF
RCAvKiBDU1NUb1N0eWxlTWFwLmggKi87IH07CiAJCUE4ODNERjI3MEYzRDA0NUQwMEYxOUJGNiAv
KiBWaXNpYmxlU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4ODNERjI1MEYzRDA0NUQwMEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0aW9u
LmNwcCAqLzsgfTsKIAkJQTg4M0RGMjgwRjNEMDQ1RDAwRjE5QkY2IC8qIFZpc2libGVTZWxlY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4ODNE
RjI2MEYzRDA0NUQwMEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTg4QUQ1MkYwOTUyNEI5MjAwMURE
MTk2IC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTg1RDdBMkYwODc5RUJBOTAwNkE5MTcyIC8qIFF1YXJ0ekNv
cmUuZnJhbWV3b3JrICovOyB9OwpAQCAtMTExOTcsNiArMTExOTksOCBAQAogCQlBODc0OEJERjEy
Q0JGMkRDMDAxRkJBNDEgLyogSGFzaFRvb2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhhc2hUb29scy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODc0OEQ2
NjEyQ0MzNzYzMDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbWFnZU9yaWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4NzQ4RDc0MTJDQzNGODkwMDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlT3JpZW50YXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBODgyREExRjE1OTM4NDZBMDAwMTE1
RUQgLyogQ1NTVG9TdHlsZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDU1NUb1N0eWxlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTg4
MkRBMjIxNTkzODQ4RDAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ1NTVG9TdHlsZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBODgzREYyNTBGM0QwNDVEMDBGMTlCRjYgLyogVmlzaWJsZVNlbGVjdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaXNpYmxlU2VsZWN0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTg4M0RGMjYwRjNEMDQ1RDAwRjE5QkY2
IC8qIFZpc2libGVTZWxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VmlzaWJsZVNlbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODg2Q0RD
MjE0RkJCQUEzMDBEMjc5RjQgLyogV29ya2VyQ29udGV4dFdlYlNvY2tldC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBuYW1lID0gV29ya2VyQ29udGV4dFdlYlNvY2tldC5pZGw7IHBhdGggPSBNb2R1bGVz
L3dlYnNvY2tldHMvV29ya2VyQ29udGV4dFdlYlNvY2tldC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMDk5Nyw2ICsyMTAwMSw4IEBACiAJCQkJQkM5QUREN0YwQ0M0MDkyMjAw
MDk4QzRDIC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcCAqLywKIAkJCQlCQzlBREQyMjBD
QzQwMzI2MDAwOThDNEMgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCAqLywKIAkJCQkzMTYx
MUU1NDBFMUM0RDRBMDBGNkE1NzkgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsICovLAor
CQkJCUE4ODJEQTFGMTU5Mzg0NkEwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmNwcCAqLywKKwkJ
CQlBODgyREEyMjE1OTM4NDhEMDAwMTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5oICovLAogCQkJKTsK
IAkJCXBhdGggPSBjc3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjUxNDgsNiAr
MjUxNTQsNyBAQAogCQkJCUNFN0IyREI1MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUwOTg3QzI3MTU3RDY3NkQwMEJEQTgz
NSAvKiBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjMy
QkIxQjE0RkE4NUU4MDBGNkMxQTMgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlBODgyREEyMzE1OTM4NDhEMDAwMTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0yODIwMCw2ICsyODIwNyw3IEBACiAJCQkJQ0U3QjJEQjQxNTg2QUJB
RDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNFN0IyREI2MTU4NkFCQUQwMDk4QjNGQSAvKiBUZXh0QWx0ZXJuYXRpdmVXaXRoUmFu
Z2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MDk4N0MyNjE1N0Q2NzZEMDBCREE4MzUgLyogQ3Vz
dG9tRmlsdGVyR2xvYmFsQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBODgyREEyMDE1
OTM4NDZBMDAwMTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTU0Y2VjZDNlOGEwNWNlNjQ0
NjQxY2NhOTUzYTk4NzNlNTc4NGQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1RvU3R5bGVNYXAuY3BwCkBAIC0wLDAgKzEsNjU5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIw
MDQtMjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5jb20pCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDcgTmljaG9sYXMgU2hhbmtzICh3ZWJraXRAbmlja3NoYW5rcy5j
b20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAs
IDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA3IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+CisgKiBDb3B5cmln
aHQgKEMpIDIwMDcsIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQorICogQ29weXJpZ2h0IChjKSAyMDExLCBD
b2RlIEF1cm9yYSBGb3J1bS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNTU1RvU3R5bGVNYXAuaCIKKworI2luY2x1ZGUg
IkFuaW1hdGlvbi5oIgorI2luY2x1ZGUgIkNTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVN
YXBwaW5ncy5oIgorI2luY2x1ZGUgIkNTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCIKKyNpbmNsdWRl
ICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiRmlsbExheWVyLmgiCisjaW5jbHVkZSAi
UGFpci5oIgorI2luY2x1ZGUgIlJlY3QuaCIKKyNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVuZGVyU3R5bGUqIENTU1RvU3R5bGVNYXA6OnN0eWxl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvbHZlci0+c3R5bGUoKTsKK30KKyAgICAKK1Jl
bmRlclN0eWxlKiBDU1NUb1N0eWxlTWFwOjpyb290RWxlbWVudFN0eWxlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9yZXNvbHZlci0+cm9vdEVsZW1lbnRTdHlsZSgpOworfQorCitib29sIENTU1Rv
U3R5bGVNYXA6OnVzZVNWR1pvb21SdWxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVzb2x2
ZXItPnVzZVNWR1pvb21SdWxlcygpOworfQorICAgIAorUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBD
U1NUb1N0eWxlTWFwOjpzdHlsZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgQ1NTVmFs
dWUqIHZhbHVlKQoreworICAgIHJldHVybiBtX3Jlc29sdmVyLT5zdHlsZUltYWdlKHByb3BlcnR5
SWQsIHZhbHVlKTsKK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsQXR0YWNobWVudChD
U1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit7CisgICAg
aWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CisgICAgICAgIGxheWVyLT5zZXRBdHRhY2ht
ZW50KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxBdHRhY2htZW50KGxheWVyLT50eXBlKCkpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgc3dpdGNo
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgIGNhc2UgQ1NTVmFsdWVGaXhlZDoK
KyAgICAgICAgbGF5ZXItPnNldEF0dGFjaG1lbnQoRml4ZWRCYWNrZ3JvdW5kQXR0YWNobWVudCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVTY3JvbGw6CisgICAgICAgIGxheWVy
LT5zZXRBdHRhY2htZW50KFNjcm9sbEJhY2tncm91bmRBdHRhY2htZW50KTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDU1NWYWx1ZUxvY2FsOgorICAgICAgICBsYXllci0+c2V0QXR0YWNobWVu
dChMb2NhbEJhY2tncm91bmRBdHRhY2htZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBG
aWxsQ2xpcChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUp
Cit7CisgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CisgICAgICAgIGxheWVyLT5z
ZXRDbGlwKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxDbGlwKGxheWVyLT50eXBlKCkpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgbGF5ZXItPnNl
dENsaXAoKnByaW1pdGl2ZVZhbHVlKTsKK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxs
Q29tcG9zaXRlKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1
ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKKyAgICAgICAgbGF5ZXIt
PnNldENvbXBvc2l0ZShGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ29tcG9zaXRlKGxheWVyLT50eXBl
KCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Cisg
ICAgbGF5ZXItPnNldENvbXBvc2l0ZSgqcHJpbWl0aXZlVmFsdWUpOworfQorCit2b2lkIENTU1Rv
U3R5bGVNYXA6Om1hcEZpbGxPcmlnaW4oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwg
Q1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewor
ICAgICAgICBsYXllci0+c2V0T3JpZ2luKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxPcmlnaW4obGF5
ZXItPnR5cGUoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCF2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKTsKKyAgICBsYXllci0+c2V0T3JpZ2luKCpwcmltaXRpdmVWYWx1ZSk7Cit9CisKKwordm9p
ZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsSW1hZ2UoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgRmls
bExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS0+aXNJbml0
aWFsVmFsdWUoKSkgeworICAgICAgICBsYXllci0+c2V0SW1hZ2UoRmlsbExheWVyOjppbml0aWFs
RmlsbEltYWdlKGxheWVyLT50eXBlKCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGxheWVyLT5zZXRJbWFnZShzdHlsZUltYWdlKHByb3BlcnR5LCB2YWx1ZSkpOworfQorCit2b2lk
IENTU1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRYKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciog
bGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVl
KCkpIHsKKyAgICAgICAgbGF5ZXItPnNldFJlcGVhdFgoRmlsbExheWVyOjppbml0aWFsRmlsbFJl
cGVhdFgobGF5ZXItPnR5cGUoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZSo+KHZhbHVlKTsKKyAgICBsYXllci0+c2V0UmVwZWF0WCgqcHJpbWl0aXZlVmFsdWUpOwor
fQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRZKENTU1Byb3BlcnR5SUQsIEZp
bGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5p
dGlhbFZhbHVlKCkpIHsKKyAgICAgICAgbGF5ZXItPnNldFJlcGVhdFkoRmlsbExheWVyOjppbml0
aWFsRmlsbFJlcGVhdFkobGF5ZXItPnR5cGUoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBsYXllci0+c2V0UmVwZWF0WSgqcHJpbWl0aXZl
VmFsdWUpOworfQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxTaXplKENTU1Byb3BlcnR5
SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgbGF5ZXItPnNldFNpemVUeXBlKFNpemVO
b25lKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwor
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUNvbnRhaW4pCisg
ICAgICAgIGxheWVyLT5zZXRTaXplVHlwZShDb250YWluKTsKKyAgICBlbHNlIGlmIChwcmltaXRp
dmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUNvdmVyKQorICAgICAgICBsYXllci0+c2V0
U2l6ZVR5cGUoQ292ZXIpOworICAgIGVsc2UKKyAgICAgICAgbGF5ZXItPnNldFNpemVUeXBlKFNp
emVMZW5ndGgpOworCisgICAgTGVuZ3RoU2l6ZSBiID0gRmlsbExheWVyOjppbml0aWFsRmlsbFNp
emVMZW5ndGgobGF5ZXItPnR5cGUoKSk7CisKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVl
KCkgfHwgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVDb250YWluIHx8IHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ292ZXIpIHsKKyAgICAgICAgbGF5
ZXItPnNldFNpemVMZW5ndGgoYik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmbG9h
dCB6b29tRmFjdG9yID0gc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOworCisgICAgTGVuZ3RoIGZp
cnN0TGVuZ3RoOworICAgIExlbmd0aCBzZWNvbmRMZW5ndGg7CisKKyAgICBpZiAoUGFpciogcGFp
ciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKSkgeworICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogZmlyc3QgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHBhaXItPmZp
cnN0KCkpOworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPihwYWlyLT5zZWNvbmQoKSk7CisgICAgICAgIGZpcnN0TGVuZ3Ro
ID0gZmlyc3QtPmNvbnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9uPihzdHlsZSgpLCByb290RWxl
bWVudFN0eWxlKCksIHpvb21GYWN0b3IpOworICAgICAgICBzZWNvbmRMZW5ndGggPSBzZWNvbmQt
PmNvbnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9uPihzdHlsZSgpLCByb290RWxlbWVudFN0eWxl
KCksIHpvb21GYWN0b3IpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZpcnN0TGVuZ3RoID0gcHJp
bWl0aXZlVmFsdWUtPmNvbnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9uPihzdHlsZSgpLCByb290
RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpOworICAgICAgICBzZWNvbmRMZW5ndGggPSBMZW5n
dGgoKTsKKyAgICB9CisKKyAgICBpZiAoZmlyc3RMZW5ndGguaXNVbmRlZmluZWQoKSB8fCBzZWNv
bmRMZW5ndGguaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYi5zZXRXaWR0
aChmaXJzdExlbmd0aCk7CisgICAgYi5zZXRIZWlnaHQoc2Vjb25kTGVuZ3RoKTsKKyAgICBsYXll
ci0+c2V0U2l6ZUxlbmd0aChiKTsKK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBv
c2l0aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkK
K3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKKyAgICAgICAgbGF5ZXItPnNl
dFhQb3NpdGlvbihGaWxsTGF5ZXI6OmluaXRpYWxGaWxsWFBvc2l0aW9uKGxheWVyLT50eXBlKCkp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgem9vbUZhY3RvciA9IHN0eWxl
KCktPmVmZmVjdGl2ZVpvb20oKTsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVW
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIExlbmd0
aCBsZW5ndGg7CisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKQorICAgICAgICBs
ZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIHJv
b3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3Rvcik7CisgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFs
dWUtPmlzUGVyY2VudGFnZSgpKQorICAgICAgICBsZW5ndGggPSBMZW5ndGgocHJpbWl0aXZlVmFs
dWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQorICAgICAgICBsZW5ndGgg
PSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNzc0NhbGNWYWx1ZSgpLT50b0NhbGNWYWx1ZShzdHls
ZSgpLCByb290RWxlbWVudFN0eWxlKCksIHpvb21GYWN0b3IpKTsKKyAgICBlbHNlIGlmIChwcmlt
aXRpdmVWYWx1ZS0+aXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSkKKyAgICAgICAgbGVuZ3Ro
ID0gcHJpbWl0aXZlVmFsdWUtPnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpOworICAgIGVsc2UK
KyAgICAgICAgcmV0dXJuOworICAgIGxheWVyLT5zZXRYUG9zaXRpb24obGVuZ3RoKTsKK30KKwor
dm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxM
YXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlh
bFZhbHVlKCkpIHsKKyAgICAgICAgbGF5ZXItPnNldFlQb3NpdGlvbihGaWxsTGF5ZXI6OmluaXRp
YWxGaWxsWVBvc2l0aW9uKGxheWVyLT50eXBlKCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZmxvYXQgem9vbUZhY3RvciA9IHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKKworICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpOworICAgIExlbmd0aCBsZW5ndGg7CisgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5pc0xlbmd0aCgpKQorICAgICAgICBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29t
cHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9vbUZhY3Rv
cik7CisgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzUGVyY2VudGFnZSgpKQorICAgICAg
ICBsZW5ndGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNl
bnQpOworICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdl
V2l0aExlbmd0aCgpKQorICAgICAgICBsZW5ndGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNz
c0NhbGNWYWx1ZSgpLT50b0NhbGNWYWx1ZShzdHlsZSgpLCByb290RWxlbWVudFN0eWxlKCksIHpv
b21GYWN0b3IpKTsKKyAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNWaWV3cG9ydFBlcmNl
bnRhZ2VMZW5ndGgoKSkKKyAgICAgICAgbGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPnZpZXdwb3J0
UGVyY2VudGFnZUxlbmd0aCgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuOworICAgIGxheWVy
LT5zZXRZUG9zaXRpb24obGVuZ3RoKTsKK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmlt
YXRpb25EZWxheShBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQoreworICAg
IGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgeworICAgICAgICBhbmltYXRpb24tPnNldERl
bGF5KEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkRlbGF5KCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBhbmltYXRpb24tPnNldERlbGF5
KHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlVGltZTxmbG9hdCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlNl
Y29uZHM+KCkpOworfQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkRpcmVjdGlv
bihBbmltYXRpb24qIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLT5p
c0luaXRpYWxWYWx1ZSgpKSB7CisgICAgICAgIGxheWVyLT5zZXREaXJlY3Rpb24oQW5pbWF0aW9u
Ojppbml0aWFsQW5pbWF0aW9uRGlyZWN0aW9uKCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKKyAgICAgICAgbGF5ZXItPnNldERp
cmVjdGlvbihBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbk5vcm1hbCk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ1NTVmFsdWVBbHRlcm5hdGU6CisgICAgICAgIGxheWVyLT5zZXREaXJl
Y3Rpb24oQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGUpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENTU1ZhbHVlUmV2ZXJzZToKKyAgICAgICAgbGF5ZXItPnNldERpcmVj
dGlvbihBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvblJldmVyc2UpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENTU1ZhbHVlQWx0ZXJuYXRlUmV2ZXJzZToKKyAgICAgICAgbGF5ZXItPnNl
dERpcmVjdGlvbihBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbkFsdGVybmF0ZVJldmVyc2Up
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5p
bWF0aW9uRHVyYXRpb24oQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkKK3sK
KyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKKyAgICAgICAgYW5pbWF0aW9uLT5z
ZXREdXJhdGlvbihBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EdXJhdGlvbigpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgYW5pbWF0aW9u
LT5zZXREdXJhdGlvbihwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZVRpbWU8ZmxvYXQsIENTU1ByaW1p
dGl2ZVZhbHVlOjpTZWNvbmRzPigpKTsKK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmlt
YXRpb25GaWxsTW9kZShBbmltYXRpb24qIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit7CisgICAg
aWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CisgICAgICAgIGxheWVyLT5zZXRGaWxsTW9k
ZShBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25GaWxsTW9kZSgpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgc3dpdGNoIChwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSkgeworICAgIGNhc2UgQ1NTVmFsdWVOb25lOgorICAgICAgICBsYXll
ci0+c2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVOb25lKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDU1NWYWx1ZUZvcndhcmRzOgorICAgICAgICBsYXllci0+c2V0RmlsbE1vZGUoQW5p
bWF0aW9uRmlsbE1vZGVGb3J3YXJkcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFs
dWVCYWNrd2FyZHM6CisgICAgICAgIGxheWVyLT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9k
ZUJhY2t3YXJkcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVCb3RoOgorICAg
ICAgICBsYXllci0+c2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVCb3RoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorfQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkl0ZXJh
dGlvbkNvdW50KEFuaW1hdGlvbiogYW5pbWF0aW9uLCBDU1NWYWx1ZSogdmFsdWUpCit7CisgICAg
aWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0SXRl
cmF0aW9uQ291bnQoQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRp
dmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgIGlm
IChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQorICAgICAg
ICBhbmltYXRpb24tPnNldEl0ZXJhdGlvbkNvdW50KC0xKTsKKyAgICBlbHNlCisgICAgICAgIGFu
aW1hdGlvbi0+c2V0SXRlcmF0aW9uQ291bnQocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUo
KSk7Cit9CisKK3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uTmFtZShBbmltYXRpb24q
IGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1
ZSgpKSB7CisgICAgICAgIGxheWVyLT5zZXROYW1lKEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlv
bk5hbWUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OworICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpCisg
ICAgICAgIGxheWVyLT5zZXRJc05vbmVBbmltYXRpb24odHJ1ZSk7CisgICAgZWxzZQorICAgICAg
ICBsYXllci0+c2V0TmFtZShwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKSk7Cit9CisK
K3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUGxheVN0YXRlKEFuaW1hdGlvbiogbGF5
ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkp
IHsKKyAgICAgICAgbGF5ZXItPnNldFBsYXlTdGF0ZShBbmltYXRpb246OmluaXRpYWxBbmltYXRp
b25QbGF5U3RhdGUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOworICAgIEVBbmltUGxheVN0YXRlIHBsYXlTdGF0ZSA9IChwcmltaXRpdmVWYWx1ZS0+
Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVBhdXNlZCkgPyBBbmltUGxheVN0YXRlUGF1c2VkIDogQW5p
bVBsYXlTdGF0ZVBsYXlpbmc7CisgICAgbGF5ZXItPnNldFBsYXlTdGF0ZShwbGF5U3RhdGUpOwor
fQorCit2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblByb3BlcnR5KEFuaW1hdGlvbiog
YW5pbWF0aW9uLCBDU1NWYWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxW
YWx1ZSgpKSB7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0QW5pbWF0aW9uTW9kZShBbmltYXRpb246
OkFuaW1hdGVBbGwpOworICAgICAgICBhbmltYXRpb24tPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
SW52YWxpZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXZhbHVlLT5pc1By
aW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUp
OworICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUFsbCkgewor
ICAgICAgICBhbmltYXRpb24tPnNldEFuaW1hdGlvbk1vZGUoQW5pbWF0aW9uOjpBbmltYXRlQWxs
KTsKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUludmFsaWQpOwor
ICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb25l
KSB7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0QW5pbWF0aW9uTW9kZShBbmltYXRpb246OkFuaW1h
dGVOb25lKTsKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUludmFs
aWQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0QW5pbWF0aW9uTW9kZShB
bmltYXRpb246OkFuaW1hdGVTaW5nbGVQcm9wZXJ0eSk7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0
UHJvcGVydHkoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkpKTsKKyAgICB9Cit9CisKK3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uVGlt
aW5nRnVuY3Rpb24oQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkKK3sKKyAg
ICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRU
aW1pbmdGdW5jdGlvbihBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25UaW1pbmdGdW5jdGlvbigp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVW
YWx1ZSgpKSB7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBzd2l0Y2ggKHBy
aW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVMaW5lYXI6
CisgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKExpbmVhclRpbWluZ0Z1
bmN0aW9uOjpjcmVhdGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NW
YWx1ZUVhc2U6CisgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIENTU1ZhbHVlRWFzZUluOgorICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1p
bmdGdW5jdGlvbihDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoMC40MiwgMC4wLCAx
LjAsIDEuMCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVFYXNl
T3V0OgorICAgICAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoMC4wLCAwLjAsIDAuNTgsIDEuMCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1NTVmFsdWVFYXNlSW5PdXQ6CisgICAgICAgICAgICBh
bmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmNy
ZWF0ZSgwLjQyLCAwLjAsIDAuNTgsIDEuMCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgQ1NTVmFsdWVTdGVwU3RhcnQ6CisgICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWlu
Z0Z1bmN0aW9uKFN0ZXBzVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgxLCB0cnVlKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVN0ZXBFbmQ6CisgICAgICAgICAgICBh
bmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKFN0ZXBzVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgx
LCBmYWxzZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICh2YWx1ZS0+aXNDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFs
dWUoKSkgeworICAgICAgICBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUqIGN1Ymlj
VGltaW5nRnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
VmFsdWUqPih2YWx1ZSk7CisgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKGN1YmljVGltaW5nRnVuY3Rpb24tPngxKCks
IGN1YmljVGltaW5nRnVuY3Rpb24tPnkxKCksIGN1YmljVGltaW5nRnVuY3Rpb24tPngyKCksIGN1
YmljVGltaW5nRnVuY3Rpb24tPnkyKCkpKTsKKyAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc1N0ZXBz
VGltaW5nRnVuY3Rpb25WYWx1ZSgpKSB7CisgICAgICAgIENTU1N0ZXBzVGltaW5nRnVuY3Rpb25W
YWx1ZSogc3RlcHNUaW1pbmdGdW5jdGlvbiA9IHN0YXRpY19jYXN0PENTU1N0ZXBzVGltaW5nRnVu
Y3Rpb25WYWx1ZSo+KHZhbHVlKTsKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlv
bihTdGVwc1RpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoc3RlcHNUaW1pbmdGdW5jdGlvbi0+bnVtYmVy
T2ZTdGVwcygpLCBzdGVwc1RpbWluZ0Z1bmN0aW9uLT5zdGVwQXRTdGFydCgpKSk7CisgICAgfSBl
bHNlIGlmICh2YWx1ZS0+aXNMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlKCkpCisgICAgICAgIGFu
aW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oTGluZWFyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgp
KTsKK30KKwordm9pZCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZShDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5LCBDU1NWYWx1ZSogdmFsdWUsIE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKK3sK
KyAgICAvLyBJZiB3ZSdyZSBub3QgYSB2YWx1ZSBsaXN0LCB0aGVuIHdlIGFyZSAibm9uZSIgYW5k
IGRvbid0IG5lZWQgdG8gYWx0ZXIgdGhlIGVtcHR5IGltYWdlIGF0IGFsbC4KKyAgICBpZiAoIXZh
bHVlIHx8ICF2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
UmV0cmlldmUgdGhlIGJvcmRlciBpbWFnZSB2YWx1ZS4KKyAgICBDU1NWYWx1ZUxpc3QqIGJvcmRl
ckltYWdlID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworCisgICAgLy8gU2V0
IHRoZSBpbWFnZSAodGhpcyBraWNrcyBvZmYgdGhlIGxvYWQpLgorICAgIENTU1Byb3BlcnR5SUQg
aW1hZ2VQcm9wZXJ0eTsKKyAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJJbWFnZSkKKyAgICAgICAgaW1hZ2VQcm9wZXJ0eSA9IENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VT
b3VyY2U7CisgICAgZWxzZSBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94
SW1hZ2UpCisgICAgICAgIGltYWdlUHJvcGVydHkgPSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJ
bWFnZVNvdXJjZTsKKyAgICBlbHNlCisgICAgICAgIGltYWdlUHJvcGVydHkgPSBwcm9wZXJ0eTsK
KworICAgIGZvciAodW5zaWduZWQgaSA9IDAgOyBpIDwgYm9yZGVySW1hZ2UtPmxlbmd0aCgpIDsg
KytpKSB7CisgICAgICAgIENTU1ZhbHVlKiBjdXJyZW50ID0gYm9yZGVySW1hZ2UtPml0ZW0oaSk7
CisKKyAgICAgICAgaWYgKGN1cnJlbnQtPmlzSW1hZ2VWYWx1ZSgpIHx8IGN1cnJlbnQtPmlzSW1h
Z2VHZW5lcmF0b3JWYWx1ZSgpCisjaWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCisgICAgICAgICAg
ICB8fCBjdXJyZW50LT5pc0ltYWdlU2V0VmFsdWUoKQorI2VuZGlmCisgICAgICAgICAgICApCisg
ICAgICAgICAgICBpbWFnZS5zZXRJbWFnZShzdHlsZUltYWdlKGltYWdlUHJvcGVydHksIGN1cnJl
bnQpKTsKKyAgICAgICAgZWxzZSBpZiAoY3VycmVudC0+aXNCb3JkZXJJbWFnZVNsaWNlVmFsdWUo
KSkKKyAgICAgICAgICAgIG1hcE5pbmVQaWVjZUltYWdlU2xpY2UoY3VycmVudCwgaW1hZ2UpOwor
ICAgICAgICBlbHNlIGlmIChjdXJyZW50LT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAgICAgICBD
U1NWYWx1ZUxpc3QqIHNsYXNoTGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KGN1cnJl
bnQpOworICAgICAgICAgICAgLy8gTWFwIGluIHRoZSBpbWFnZSBzbGljZXMuCisgICAgICAgICAg
ICBpZiAoc2xhc2hMaXN0LT5pdGVtKDApICYmIHNsYXNoTGlzdC0+aXRlbSgwKS0+aXNCb3JkZXJJ
bWFnZVNsaWNlVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBtYXBOaW5lUGllY2VJbWFnZVNsaWNl
KHNsYXNoTGlzdC0+aXRlbSgwKSwgaW1hZ2UpOworCisgICAgICAgICAgICAvLyBNYXAgaW4gdGhl
IGJvcmRlciBzbGljZXMuCisgICAgICAgICAgICBpZiAoc2xhc2hMaXN0LT5pdGVtKDEpKQorICAg
ICAgICAgICAgICAgIGltYWdlLnNldEJvcmRlclNsaWNlcyhtYXBOaW5lUGllY2VJbWFnZVF1YWQo
c2xhc2hMaXN0LT5pdGVtKDEpKSk7CisKKyAgICAgICAgICAgIC8vIE1hcCBpbiB0aGUgb3V0c2V0
LgorICAgICAgICAgICAgaWYgKHNsYXNoTGlzdC0+aXRlbSgyKSkKKyAgICAgICAgICAgICAgICBp
bWFnZS5zZXRPdXRzZXQobWFwTmluZVBpZWNlSW1hZ2VRdWFkKHNsYXNoTGlzdC0+aXRlbSgyKSkp
OworICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnQtPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAg
ICAgICAgICAgLy8gU2V0IHRoZSBhcHByb3ByaWF0ZSBydWxlcyBmb3Igc3RyZXRjaC9yb3VuZC9y
ZXBlYXQgb2YgdGhlIHNsaWNlcy4KKyAgICAgICAgICAgIG1hcE5pbmVQaWVjZUltYWdlUmVwZWF0
KGN1cnJlbnQsIGltYWdlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChwcm9wZXJ0eSA9
PSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlKSB7CisgICAgICAgIC8vIFdlIGhhdmUgdG8g
cHJlc2VydmUgdGhlIGxlZ2FjeSBiZWhhdmlvciBvZiAtd2Via2l0LWJvcmRlci1pbWFnZSBhbmQg
bWFrZSB0aGUgYm9yZGVyIHNsaWNlcworICAgICAgICAvLyBhbHNvIHNldCB0aGUgYm9yZGVyIHdp
ZHRocy4gV2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBwZXJjZW50YWdlcywgc2luY2Ugd2Ug
ZG9uJ3QgZXZlbiBzdXBwb3J0CisgICAgICAgIC8vIHRob3NlIG9uIHJlYWwgYm9yZGVycyB5ZXQu
CisgICAgICAgIGlmIChpbWFnZS5ib3JkZXJTbGljZXMoKS50b3AoKS5pc0ZpeGVkKCkpCisgICAg
ICAgICAgICBzdHlsZSgpLT5zZXRCb3JkZXJUb3BXaWR0aChpbWFnZS5ib3JkZXJTbGljZXMoKS50
b3AoKS52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGltYWdlLmJvcmRlclNsaWNlcygpLnJpZ2h0KCku
aXNGaXhlZCgpKQorICAgICAgICAgICAgc3R5bGUoKS0+c2V0Qm9yZGVyUmlnaHRXaWR0aChpbWFn
ZS5ib3JkZXJTbGljZXMoKS5yaWdodCgpLnZhbHVlKCkpOworICAgICAgICBpZiAoaW1hZ2UuYm9y
ZGVyU2xpY2VzKCkuYm90dG9tKCkuaXNGaXhlZCgpKQorICAgICAgICAgICAgc3R5bGUoKS0+c2V0
Qm9yZGVyQm90dG9tV2lkdGgoaW1hZ2UuYm9yZGVyU2xpY2VzKCkuYm90dG9tKCkudmFsdWUoKSk7
CisgICAgICAgIGlmIChpbWFnZS5ib3JkZXJTbGljZXMoKS5sZWZ0KCkuaXNGaXhlZCgpKQorICAg
ICAgICAgICAgc3R5bGUoKS0+c2V0Qm9yZGVyTGVmdFdpZHRoKGltYWdlLmJvcmRlclNsaWNlcygp
LmxlZnQoKS52YWx1ZSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwTmlu
ZVBpZWNlSW1hZ2VTbGljZShDU1NWYWx1ZSogdmFsdWUsIE5pbmVQaWVjZUltYWdlJiBpbWFnZSkK
K3sKKyAgICBpZiAoIXZhbHVlIHx8ICF2YWx1ZS0+aXNCb3JkZXJJbWFnZVNsaWNlVmFsdWUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gUmV0cmlldmUgdGhlIGJvcmRlciBpbWFnZSB2YWx1
ZS4KKyAgICBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUqIGJvcmRlckltYWdlU2xpY2UgPSBzdGF0
aWNfY2FzdDxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUqPih2YWx1ZSk7CisKKyAgICAvLyBTZXQg
dXAgYSBsZW5ndGggYm94IHRvIHJlcHJlc2VudCBvdXIgaW1hZ2Ugc2xpY2VzLgorICAgIExlbmd0
aEJveCBib3g7CisgICAgUXVhZCogc2xpY2VzID0gYm9yZGVySW1hZ2VTbGljZS0+c2xpY2VzKCk7
CisgICAgaWYgKHNsaWNlcy0+dG9wKCktPmlzUGVyY2VudGFnZSgpKQorICAgICAgICBib3gubV90
b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Cisg
ICAgZWxzZQorICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgaWYgKHNs
aWNlcy0+Ym90dG9tKCktPmlzUGVyY2VudGFnZSgpKQorICAgICAgICBib3gubV9ib3R0b20gPSBM
ZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAg
ZWxzZQorICAgICAgICBib3gubV9ib3R0b20gPSBMZW5ndGgoKGludClzbGljZXMtPmJvdHRvbSgp
LT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwor
ICAgIGlmIChzbGljZXMtPmxlZnQoKS0+aXNQZXJjZW50YWdlKCkpCisgICAgICAgIGJveC5tX2xl
ZnQgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwor
ICAgIGVsc2UKKyAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0
SW50VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgaWYg
KHNsaWNlcy0+cmlnaHQoKS0+aXNQZXJjZW50YWdlKCkpCisgICAgICAgIGJveC5tX3JpZ2h0ID0g
TGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAg
ZWxzZQorICAgICAgICBib3gubV9yaWdodCA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldElu
dFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOworICAgIGltYWdl
LnNldEltYWdlU2xpY2VzKGJveCk7CisKKyAgICAvLyBTZXQgb3VyIGZpbGwgbW9kZS4KKyAgICBp
bWFnZS5zZXRGaWxsKGJvcmRlckltYWdlU2xpY2UtPm1fZmlsbCk7Cit9CisKK0xlbmd0aEJveCBD
U1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVF1YWQoQ1NTVmFsdWUqIHZhbHVlKQorewor
ICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgIHJl
dHVybiBMZW5ndGhCb3goKTsKKworICAgIC8vIEdldCBvdXIgem9vbSB2YWx1ZS4KKyAgICBmbG9h
dCB6b29tID0gdXNlU1ZHWm9vbVJ1bGVzKCkgPyAxLjBmIDogc3R5bGUoKS0+ZWZmZWN0aXZlWm9v
bSgpOworCisgICAgLy8gUmV0cmlldmUgdGhlIHByaW1pdGl2ZSB2YWx1ZS4KKyAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogYm9yZGVyV2lkdGhzID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWx1ZSk7CisKKyAgICAvLyBTZXQgdXAgYSBsZW5ndGggYm94IHRvIHJlcHJlc2VudCBvdXIg
aW1hZ2Ugc2xpY2VzLgorICAgIExlbmd0aEJveCBib3g7IC8vIERlZmF1bHRzIHRvICdhdXRvJyBz
byB3ZSBkb24ndCBoYXZlIHRvIGhhbmRsZSB0aGF0IGV4cGxpY2l0bHkgYmVsb3cuCisgICAgUXVh
ZCogc2xpY2VzID0gYm9yZGVyV2lkdGhzLT5nZXRRdWFkVmFsdWUoKTsKKyAgICBpZiAoc2xpY2Vz
LT50b3AoKS0+aXNOdW1iZXIoKSkKKyAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+
dG9wKCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKKyAgICBlbHNlIGlmIChzbGljZXMtPnRv
cCgpLT5pc1BlcmNlbnRhZ2UoKSkKKyAgICAgICAgYm94Lm1fdG9wID0gTGVuZ3RoKHNsaWNlcy0+
dG9wKCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSks
IFBlcmNlbnQpOworICAgIGVsc2UgaWYgKHNsaWNlcy0+dG9wKCktPmdldElkZW50KCkgIT0gQ1NT
VmFsdWVBdXRvKQorICAgICAgICBib3gubV90b3AgPSBzbGljZXMtPnRvcCgpLT5jb21wdXRlTGVu
Z3RoPExlbmd0aD4oc3R5bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tKTsKKworICAgIGlm
IChzbGljZXMtPnJpZ2h0KCktPmlzTnVtYmVyKCkpCisgICAgICAgIGJveC5tX3JpZ2h0ID0gTGVu
Z3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgIGVsc2Ug
aWYgKHNsaWNlcy0+cmlnaHQoKS0+aXNQZXJjZW50YWdlKCkpCisgICAgICAgIGJveC5tX3JpZ2h0
ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CisgICAgZWxzZSBpZiAoc2xpY2VzLT5yaWdo
dCgpLT5nZXRJZGVudCgpICE9IENTU1ZhbHVlQXV0bykKKyAgICAgICAgYm94Lm1fcmlnaHQgPSBz
bGljZXMtPnJpZ2h0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZSgpLCByb290RWxlbWVu
dFN0eWxlKCksIHpvb20pOworCisgICAgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzTnVtYmVyKCkp
CisgICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXRJbnRW
YWx1ZSgpLCBSZWxhdGl2ZSk7CisgICAgZWxzZSBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJj
ZW50YWdlKCkpCisgICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgp
LT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpLCBQZXJj
ZW50KTsKKyAgICBlbHNlIGlmIChzbGljZXMtPmJvdHRvbSgpLT5nZXRJZGVudCgpICE9IENTU1Zh
bHVlQXV0bykKKyAgICAgICAgYm94Lm1fYm90dG9tID0gc2xpY2VzLT5ib3R0b20oKS0+Y29tcHV0
ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9vbSk7CisKKyAg
ICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzTnVtYmVyKCkpCisgICAgICAgIGJveC5tX2xlZnQgPSBM
ZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKKyAgICBlbHNl
IGlmIChzbGljZXMtPmxlZnQoKS0+aXNQZXJjZW50YWdlKCkpCisgICAgICAgIGJveC5tX2xlZnQg
PSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgp
LT5nZXRJZGVudCgpICE9IENTU1ZhbHVlQXV0bykKKyAgICAgICAgYm94Lm1fbGVmdCA9IHNsaWNl
cy0+bGVmdCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGUoKSwgcm9vdEVsZW1lbnRTdHls
ZSgpLCB6b29tKTsKKworICAgIHJldHVybiBib3g7Cit9CisKK3ZvaWQgQ1NTVG9TdHlsZU1hcDo6
bWFwTmluZVBpZWNlSW1hZ2VSZXBlYXQoQ1NTVmFsdWUqIHZhbHVlLCBOaW5lUGllY2VJbWFnZSYg
aW1hZ2UpCit7CisgICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgUGFpciogcGFp
ciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKTsKKyAgICBpZiAoIXBhaXIgfHwgIXBh
aXItPmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
bnQgZmlyc3RJZGVudGlmaWVyID0gcGFpci0+Zmlyc3QoKS0+Z2V0SWRlbnQoKTsKKyAgICBpbnQg
c2Vjb25kSWRlbnRpZmllciA9IHBhaXItPnNlY29uZCgpLT5nZXRJZGVudCgpOworCisgICAgRU5p
bmVQaWVjZUltYWdlUnVsZSBob3Jpem9udGFsUnVsZTsKKyAgICBzd2l0Y2ggKGZpcnN0SWRlbnRp
ZmllcikgeworICAgIGNhc2UgQ1NTVmFsdWVTdHJldGNoOgorICAgICAgICBob3Jpem9udGFsUnVs
ZSA9IFN0cmV0Y2hJbWFnZVJ1bGU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTVmFsdWVS
b3VuZDoKKyAgICAgICAgaG9yaXpvbnRhbFJ1bGUgPSBSb3VuZEltYWdlUnVsZTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDU1NWYWx1ZVNwYWNlOgorICAgICAgICBob3Jpem9udGFsUnVsZSA9
IFNwYWNlSW1hZ2VSdWxlOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OiAvLyBDU1NWYWx1
ZVJlcGVhdAorICAgICAgICBob3Jpem9udGFsUnVsZSA9IFJlcGVhdEltYWdlUnVsZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGltYWdlLnNldEhvcml6b250YWxSdWxlKGhvcml6b250YWxS
dWxlKTsKKworICAgIEVOaW5lUGllY2VJbWFnZVJ1bGUgdmVydGljYWxSdWxlOworICAgIHN3aXRj
aCAoc2Vjb25kSWRlbnRpZmllcikgeworICAgIGNhc2UgQ1NTVmFsdWVTdHJldGNoOgorICAgICAg
ICB2ZXJ0aWNhbFJ1bGUgPSBTdHJldGNoSW1hZ2VSdWxlOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU1ZhbHVlUm91bmQ6CisgICAgICAgIHZlcnRpY2FsUnVsZSA9IFJvdW5kSW1hZ2VSdWxl
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU1ZhbHVlU3BhY2U6CisgICAgICAgIHZlcnRp
Y2FsUnVsZSA9IFNwYWNlSW1hZ2VSdWxlOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OiAv
LyBDU1NWYWx1ZVJlcGVhdAorICAgICAgICB2ZXJ0aWNhbFJ1bGUgPSBSZXBlYXRJbWFnZVJ1bGU7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpbWFnZS5zZXRWZXJ0aWNhbFJ1bGUodmVydGlj
YWxSdWxlKTsKK30KKworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0
eWxlTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhlMGZjOTUzZDA0YzQ3MTViZGIyOWFhZDZkM2I3MzdhMWNjMWU4ODIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5oCkBAIC0wLDAgKzEsODggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAq
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwg
MjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBDU1NUb1N0
eWxlTWFwX2gKKyNkZWZpbmUgQ1NTVG9TdHlsZU1hcF9oCisKKyNpbmNsdWRlICJDU1NQcm9wZXJ0
eU5hbWVzLmgiCisjaW5jbHVkZSAiTGVuZ3RoQm94LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgRmlsbExheWVyOworY2xhc3MgQ1NTVmFsdWU7CitjbGFzcyBBbmltYXRpb247Citj
bGFzcyBTdHlsZUltYWdlOworY2xhc3MgU3R5bGVSZXNvbHZlcjsKK2NsYXNzIE5pbmVQaWVjZUlt
YWdlOworCitjbGFzcyBDU1NUb1N0eWxlTWFwIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
U1NUb1N0eWxlTWFwKTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKworcHVibGljOgor
ICAgIENTU1RvU3R5bGVNYXAoU3R5bGVSZXNvbHZlciogcmVzb2x2ZXIpIDogbV9yZXNvbHZlcihy
ZXNvbHZlcikgeyB9CisKKyAgICB2b2lkIG1hcEZpbGxBdHRhY2htZW50KENTU1Byb3BlcnR5SUQs
IEZpbGxMYXllciosIENTU1ZhbHVlKik7CisgICAgdm9pZCBtYXBGaWxsQ2xpcChDU1NQcm9wZXJ0
eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOworICAgIHZvaWQgbWFwRmlsbENvbXBvc2l0ZShD
U1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOworICAgIHZvaWQgbWFwRmlsbE9y
aWdpbihDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOworICAgIHZvaWQgbWFw
RmlsbEltYWdlKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7CisgICAgdm9p
ZCBtYXBGaWxsUmVwZWF0WChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwor
ICAgIHZvaWQgbWFwRmlsbFJlcGVhdFkoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFs
dWUqKTsKKyAgICB2b2lkIG1hcEZpbGxTaXplKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENT
U1ZhbHVlKik7CisgICAgdm9pZCBtYXBGaWxsWFBvc2l0aW9uKENTU1Byb3BlcnR5SUQsIEZpbGxM
YXllciosIENTU1ZhbHVlKik7CisgICAgdm9pZCBtYXBGaWxsWVBvc2l0aW9uKENTU1Byb3BlcnR5
SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7CisKKyAgICB2b2lkIG1hcEFuaW1hdGlvbkRlbGF5
KEFuaW1hdGlvbiosIENTU1ZhbHVlKik7CisgICAgdm9pZCBtYXBBbmltYXRpb25EaXJlY3Rpb24o
QW5pbWF0aW9uKiwgQ1NTVmFsdWUqKTsKKyAgICB2b2lkIG1hcEFuaW1hdGlvbkR1cmF0aW9uKEFu
aW1hdGlvbiosIENTU1ZhbHVlKik7CisgICAgdm9pZCBtYXBBbmltYXRpb25GaWxsTW9kZShBbmlt
YXRpb24qLCBDU1NWYWx1ZSopOworICAgIHZvaWQgbWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQo
QW5pbWF0aW9uKiwgQ1NTVmFsdWUqKTsKKyAgICB2b2lkIG1hcEFuaW1hdGlvbk5hbWUoQW5pbWF0
aW9uKiwgQ1NTVmFsdWUqKTsKKyAgICB2b2lkIG1hcEFuaW1hdGlvblBsYXlTdGF0ZShBbmltYXRp
b24qLCBDU1NWYWx1ZSopOworICAgIHZvaWQgbWFwQW5pbWF0aW9uUHJvcGVydHkoQW5pbWF0aW9u
KiwgQ1NTVmFsdWUqKTsKKyAgICB2b2lkIG1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKEFuaW1h
dGlvbiosIENTU1ZhbHVlKik7CisKKyAgICB2b2lkIG1hcE5pbmVQaWVjZUltYWdlKENTU1Byb3Bl
cnR5SUQsIENTU1ZhbHVlKiwgTmluZVBpZWNlSW1hZ2UmKTsKKyAgICB2b2lkIG1hcE5pbmVQaWVj
ZUltYWdlU2xpY2UoQ1NTVmFsdWUqLCBOaW5lUGllY2VJbWFnZSYpOworICAgIExlbmd0aEJveCBt
YXBOaW5lUGllY2VJbWFnZVF1YWQoQ1NTVmFsdWUqKTsKKyAgICB2b2lkIG1hcE5pbmVQaWVjZUlt
YWdlUmVwZWF0KENTU1ZhbHVlKiwgTmluZVBpZWNlSW1hZ2UmKTsKKworcHJpdmF0ZToKKyAgICAv
LyBGSVhNRTogVGhlc2UgYWNjZXNzb3JzIHNob3VsZCBiZSByZXBsYWNlZCBieSBhIFJlc29sdmVT
dGF0ZSBvYmplY3QKKyAgICAvLyBzaW1pbGFyIHRvIGhvdyBQYWludEluZm8vTGF5b3V0U3RhdGUg
Y2FjaGUgdmFsdWVzIG5lZWRlZCBmb3IKKyAgICAvLyB0aGUgY3VycmVudCBwYWludC9sYXlvdXQu
CisgICAgUmVuZGVyU3R5bGUqIHN0eWxlKCkgY29uc3Q7CisgICAgUmVuZGVyU3R5bGUqIHJvb3RF
bGVtZW50U3R5bGUoKSBjb25zdDsKKyAgICBib29sIHVzZVNWR1pvb21SdWxlcygpIGNvbnN0Owor
CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHBhcnQgb2Ygc29tZSBzb3J0IG9mIFN0eWxl
SW1hZ2VDYWNoZSBvYmplY3Qgd2hpY2gKKyAgICAvLyBpcyBoZWxkIGJ5IHRoZSBTdHlsZVJlc29s
dmVyLCBhbmQgbGlrZWx5IHByb3ZpZGVkIHRvIHRoaXMgb2JqZWN0CisgICAgLy8gZHVyaW5nIHRo
ZSByZXNvbHZlLgorICAgIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gc3R5bGVJbWFnZShDU1NQcm9w
ZXJ0eUlELCBDU1NWYWx1ZSopOworCisgICAgU3R5bGVSZXNvbHZlciogbV9yZXNvbHZlcjsKK307
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCmluZGV4IDIxMzk5
OTZiZDFkODhkYjY0ZDYzMzYxZDViOWJkNTJiZTg3N2Q3ZGEuLjIwZDAyY2MxNWIxYzcwMzU2NGI3
MzE3Y2VhNWY3YTg1Mjc0NWViNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZU1h
cHBpbmdzLmgiCisjaW5jbHVkZSAiQ1NTVG9TdHlsZU1hcC5oIgogI2luY2x1ZGUgIkNTU1ZhbHVl
TGlzdC5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpA
QCAtNDk2LDcgKzQ5Nyw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULAogICAgICAgICAgIHZvaWQg
KEZpbGxMYXllcjo6KnNldEZ1bmN0aW9uKSh0eXBlbmFtZSBGaWxsTGF5ZXJBY2Nlc3NvclR5cGVz
PFQ+OjpTZXR0ZXIpLAogICAgICAgICAgIHZvaWQgKEZpbGxMYXllcjo6KmNsZWFyRnVuY3Rpb24p
KCksCiAgICAgICAgICAgdHlwZW5hbWUgRmlsbExheWVyQWNjZXNzb3JUeXBlczxUPjo6R2V0dGVy
ICgqaW5pdGlhbEZ1bmN0aW9uKShFRmlsbExheWVyVHlwZSksCi0gICAgICAgICAgdm9pZCAoU3R5
bGVSZXNvbHZlcjo6Km1hcEZpbGxGdW5jdGlvbikoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwg
Q1NTVmFsdWUqKT4KKyAgICAgICAgICB2b2lkIChDU1NUb1N0eWxlTWFwOjoqbWFwRmlsbEZ1bmN0
aW9uKShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopPgogY2xhc3MgQXBwbHlQ
cm9wZXJ0eUZpbGxMYXllciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0
VmFsdWUoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKQEAgLTU0OCwxMiArNTQ5LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgY3VyckNoaWxkID0gbmV3IEZpbGxMYXllcihm
aWxsTGF5ZXJUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgcHJldkNoaWxkLT5zZXROZXh0KGN1
cnJDaGlsZCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIChzdHlsZVJlc29s
dmVyLT4qbWFwRmlsbEZ1bmN0aW9uKShwcm9wZXJ0eUlkLCBjdXJyQ2hpbGQsIHZhbHVlTGlzdC0+
aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7CisgICAgICAgICAgICAgICAgKHN0eWxlUmVzb2x2
ZXItPnN0eWxlTWFwKCktPiptYXBGaWxsRnVuY3Rpb24pKHByb3BlcnR5SWQsIGN1cnJDaGlsZCwg
dmFsdWVMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKICAgICAgICAgICAgICAgICBw
cmV2Q2hpbGQgPSBjdXJyQ2hpbGQ7CiAgICAgICAgICAgICAgICAgY3VyckNoaWxkID0gY3VyckNo
aWxkLT5uZXh0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAoc3R5bGVSZXNvbHZlci0+Km1hcEZpbGxGdW5jdGlvbikocHJvcGVydHlJZCwgY3VyckNoaWxk
LCB2YWx1ZSk7CisgICAgICAgICAgICAoc3R5bGVSZXNvbHZlci0+c3R5bGVNYXAoKS0+Km1hcEZp
bGxGdW5jdGlvbikocHJvcGVydHlJZCwgY3VyckNoaWxkLCB2YWx1ZSk7CiAgICAgICAgICAgICBj
dXJyQ2hpbGQgPSBjdXJyQ2hpbGQtPm5leHQoKTsKICAgICAgICAgfQogICAgICAgICB3aGlsZSAo
Y3VyckNoaWxkKSB7CkBAIC04ODYsNyArODg3LDcgQEAgcHVibGljOgogICAgICAgICBOaW5lUGll
Y2VJbWFnZSBpbWFnZTsKICAgICAgICAgaWYgKGJvcmRlckltYWdlVHlwZSA9PSBNYXNrKQogICAg
ICAgICAgICAgaW1hZ2Uuc2V0TWFza0RlZmF1bHRzKCk7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIt
Pm1hcE5pbmVQaWVjZUltYWdlKHByb3BlcnR5LCB2YWx1ZSwgaW1hZ2UpOworICAgICAgICBzdHls
ZVJlc29sdmVyLT5zdHlsZU1hcCgpLT5tYXBOaW5lUGllY2VJbWFnZShwcm9wZXJ0eSwgdmFsdWUs
IGltYWdlKTsKICAgICAgICAgKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlv
bikoaW1hZ2UpOwogICAgIH0KIApAQCAtOTUzLDE2ICs5NTQsMTYgQEAgcHVibGljOgogICAgICAg
ICBOaW5lUGllY2VJbWFnZSBpbWFnZShnZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpKSk7
CiAgICAgICAgIHN3aXRjaCAobW9kaWZpZXIpIHsKICAgICAgICAgY2FzZSBPdXRzZXQ6Ci0gICAg
ICAgICAgICBpbWFnZS5zZXRPdXRzZXQoc3R5bGVSZXNvbHZlci0+bWFwTmluZVBpZWNlSW1hZ2VR
dWFkKHZhbHVlKSk7CisgICAgICAgICAgICBpbWFnZS5zZXRPdXRzZXQoc3R5bGVSZXNvbHZlci0+
c3R5bGVNYXAoKS0+bWFwTmluZVBpZWNlSW1hZ2VRdWFkKHZhbHVlKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBSZXBlYXQ6Ci0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5t
YXBOaW5lUGllY2VJbWFnZVJlcGVhdCh2YWx1ZSwgaW1hZ2UpOworICAgICAgICAgICAgc3R5bGVS
ZXNvbHZlci0+c3R5bGVNYXAoKS0+bWFwTmluZVBpZWNlSW1hZ2VSZXBlYXQodmFsdWUsIGltYWdl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNsaWNlOgotICAgICAgICAgICAg
c3R5bGVSZXNvbHZlci0+bWFwTmluZVBpZWNlSW1hZ2VTbGljZSh2YWx1ZSwgaW1hZ2UpOworICAg
ICAgICAgICAgc3R5bGVSZXNvbHZlci0+c3R5bGVNYXAoKS0+bWFwTmluZVBpZWNlSW1hZ2VTbGlj
ZSh2YWx1ZSwgaW1hZ2UpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2lkdGg6
Ci0gICAgICAgICAgICBpbWFnZS5zZXRCb3JkZXJTbGljZXMoc3R5bGVSZXNvbHZlci0+bWFwTmlu
ZVBpZWNlSW1hZ2VRdWFkKHZhbHVlKSk7CisgICAgICAgICAgICBpbWFnZS5zZXRCb3JkZXJTbGlj
ZXMoc3R5bGVSZXNvbHZlci0+c3R5bGVNYXAoKS0+bWFwTmluZVBpZWNlSW1hZ2VRdWFkKHZhbHVl
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBzZXRWYWx1ZShzdHls
ZVJlc29sdmVyLT5zdHlsZSgpLCBpbWFnZSk7CkBAIC0xNDM3LDcgKzE0MzgsNyBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwKICAgICAgICAgICBib29sIChBbmltYXRpb246Oip0ZXN0RnVuY3Rpb24p
KCkgY29uc3QsCiAgICAgICAgICAgdm9pZCAoQW5pbWF0aW9uOjoqY2xlYXJGdW5jdGlvbikoKSwK
ICAgICAgICAgICBUICgqaW5pdGlhbEZ1bmN0aW9uKSgpLAotICAgICAgICAgIHZvaWQgKFN0eWxl
UmVzb2x2ZXI6OiptYXBGdW5jdGlvbikoQW5pbWF0aW9uKiwgQ1NTVmFsdWUqKSwKKyAgICAgICAg
ICB2b2lkIChDU1NUb1N0eWxlTWFwOjoqbWFwRnVuY3Rpb24pKEFuaW1hdGlvbiosIENTU1ZhbHVl
KiksCiAgICAgICAgICAgQW5pbWF0aW9uTGlzdCogKFJlbmRlclN0eWxlOjoqYW5pbWF0aW9uR2V0
dGVyRnVuY3Rpb24pKCksCiAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogKFJlbmRlclN0
eWxlOjoqaW1tdXRhYmxlQW5pbWF0aW9uR2V0dGVyRnVuY3Rpb24pKCkgY29uc3Q+CiBjbGFzcyBB
cHBseVByb3BlcnR5QW5pbWF0aW9uIHsKQEAgLTE0NDcsNyArMTQ0OCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCB0ZXN0KGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uKSB7IHJldHVybiAo
YW5pbWF0aW9uLT4qdGVzdEZ1bmN0aW9uKSgpOyB9CiAgICAgc3RhdGljIHZvaWQgY2xlYXIoQW5p
bWF0aW9uKiBhbmltYXRpb24pIHsgKGFuaW1hdGlvbi0+KmNsZWFyRnVuY3Rpb24pKCk7IH0KICAg
ICBzdGF0aWMgVCBpbml0aWFsKCkgeyByZXR1cm4gKCppbml0aWFsRnVuY3Rpb24pKCk7IH0KLSAg
ICBzdGF0aWMgdm9pZCBtYXAoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgQW5pbWF0aW9u
KiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkgeyAoc3R5bGVSZXNvbHZlci0+Km1hcEZ1bmN0
aW9uKShhbmltYXRpb24sIHZhbHVlKTsgfQorICAgIHN0YXRpYyB2b2lkIG1hcChTdHlsZVJlc29s
dmVyKiBzdHlsZVJlc29sdmVyLCBBbmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVl
KSB7IChzdHlsZVJlc29sdmVyLT5zdHlsZU1hcCgpLT4qbWFwRnVuY3Rpb24pKGFuaW1hdGlvbiwg
dmFsdWUpOyB9CiAgICAgc3RhdGljIEFuaW1hdGlvbkxpc3QqIGFjY2Vzc0FuaW1hdGlvbnMoUmVu
ZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiAoc3R5bGUtPiphbmltYXRpb25HZXR0ZXJGdW5jdGlv
bikoKTsgfQogICAgIHN0YXRpYyBjb25zdCBBbmltYXRpb25MaXN0KiBhbmltYXRpb25zKFJlbmRl
clN0eWxlKiBzdHlsZSkgeyByZXR1cm4gKHN0eWxlLT4qaW1tdXRhYmxlQW5pbWF0aW9uR2V0dGVy
RnVuY3Rpb24pKCk7IH0KIApAQCAtMTg0MCwxOCArMTg0MSwxOCBAQCBTdHlsZUJ1aWxkZXI6OlN0
eWxlQnVpbGRlcigpCiAgICAgICAgIG1fcHJvcGVydHlNYXBbaV0gPSBQcm9wZXJ0eUhhbmRsZXIo
KTsKIAogICAgIC8vIFBsZWFzZSBrZWVwIENTUyBwcm9wZXJ0eSBsaXN0IGluIGFscGhhYmV0aWNh
bCBvcmRlci4KLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0
YWNobWVudCwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbEF0dGFjaG1lbnQsIENTU1Byb3Bl
cnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHls
ZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJz
LCAmRmlsbExheWVyOjppc0F0dGFjaG1lbnRTZXQsICZGaWxsTGF5ZXI6OmF0dGFjaG1lbnQsICZG
aWxsTGF5ZXI6OnNldEF0dGFjaG1lbnQsICZGaWxsTGF5ZXI6OmNsZWFyQXR0YWNobWVudCwgJkZp
bGxMYXllcjo6aW5pdGlhbEZpbGxBdHRhY2htZW50LCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbEF0
dGFjaG1lbnQ+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDbGlwLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQm94LCBD
U1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5
bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVy
cywgJkZpbGxMYXllcjo6aXNDbGlwU2V0LCAmRmlsbExheWVyOjpjbGlwLCAmRmlsbExheWVyOjpz
ZXRDbGlwLCAmRmlsbExheWVyOjpjbGVhckNsaXAsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ2xp
cCwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxDbGlwPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgQXBwbHlQ
cm9wZXJ0eUZpbGxMYXllcjxFRmlsbEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0
dGFjaG1lbnQsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dy
b3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExheWVyOjpp
c0F0dGFjaG1lbnRTZXQsICZGaWxsTGF5ZXI6OmF0dGFjaG1lbnQsICZGaWxsTGF5ZXI6OnNldEF0
dGFjaG1lbnQsICZGaWxsTGF5ZXI6OmNsZWFyQXR0YWNobWVudCwgJkZpbGxMYXllcjo6aW5pdGlh
bEZpbGxBdHRhY2htZW50LCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbEF0dGFjaG1lbnQ+OjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRDbGlwLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQm94LCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDbGlwLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tn
cm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6
aXNDbGlwU2V0LCAmRmlsbExheWVyOjpjbGlwLCAmRmlsbExheWVyOjpzZXRDbGlwLCAmRmlsbExh
eWVyOjpjbGVhckNsaXAsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ2xpcCwgJkNTU1RvU3R5bGVN
YXA6Om1hcEZpbGxDbGlwPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIEFwcGx5UHJvcGVydHlDb2xvcjxOb0luaGVy
aXRGcm9tUGFyZW50LCAmUmVuZGVyU3R5bGU6OmJhY2tncm91bmRDb2xvciwgJlJlbmRlclN0eWxl
OjpzZXRCYWNrZ3JvdW5kQ29sb3IsICZSZW5kZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtCYWNrZ3Jv
dW5kQ29sb3IsICZSZW5kZXJTdHlsZTo6aW52YWxpZENvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsK
LSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIEFwcGx5
UHJvcGVydHlGaWxsTGF5ZXI8U3R5bGVJbWFnZSosIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdl
LCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXll
cnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNJbWFnZVNl
dCwgJkZpbGxMYXllcjo6aW1hZ2UsICZGaWxsTGF5ZXI6OnNldEltYWdlLCAmRmlsbExheWVyOjpj
bGVhckltYWdlLCAmRmlsbExheWVyOjppbml0aWFsRmlsbEltYWdlLCAmU3R5bGVSZXNvbHZlcjo6
bWFwRmlsbEltYWdlPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxs
Qm94LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIEJhY2tncm91bmRGaWxsTGF5ZXIsICZS
ZW5kZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3Jv
dW5kTGF5ZXJzLCAmRmlsbExheWVyOjppc09yaWdpblNldCwgJkZpbGxMYXllcjo6b3JpZ2luLCAm
RmlsbExheWVyOjpzZXRPcmlnaW4sICZGaWxsTGF5ZXI6OmNsZWFyT3JpZ2luLCAmRmlsbExheWVy
Ojppbml0aWFsRmlsbE9yaWdpbiwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxPcmlnaW4+OjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRJbWFnZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxTdHlsZUltYWdlKiwgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kSW1hZ2UsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNz
QmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJzLCAmRmlsbExh
eWVyOjppc0ltYWdlU2V0LCAmRmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2Us
ICZGaWxsTGF5ZXI6OmNsZWFySW1hZ2UsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsSW1hZ2UsICZD
U1NUb1N0eWxlTWFwOjptYXBGaWxsSW1hZ2U+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIEFwcGx5UHJvcGVydHlG
aWxsTGF5ZXI8RUZpbGxCb3gsIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwgQmFja2dyb3Vu
ZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVy
U3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzT3JpZ2luU2V0LCAmRmlsbExh
eWVyOjpvcmlnaW4sICZGaWxsTGF5ZXI6OnNldE9yaWdpbiwgJkZpbGxMYXllcjo6Y2xlYXJPcmln
aW4sICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsT3JpZ2luLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmls
bE9yaWdpbj46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uLCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNz
VmFsdWUsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUG9zaXRpb25ZPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBBcHBseVByb3BlcnR5RmlsbExheWVyPExl
bmd0aCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBCYWNrZ3JvdW5kRmlsbExheWVy
LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6YmFj
a2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNYUG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6OnhQ
b3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVhclhQb3Np
dGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxYUG9zaXRpb24sICZTdHlsZVJlc29sdmVyOjpt
YXBGaWxsWFBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBBcHBseVByb3BlcnR5RmlsbExheWVy
PExlbmd0aCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBCYWNrZ3JvdW5kRmlsbExh
eWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHlsZTo6
YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNZUG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6
OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVhcllQ
b3NpdGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxZUG9zaXRpb24sICZTdHlsZVJlc29sdmVy
OjptYXBGaWxsWVBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBBcHBseVByb3BlcnR5RmlsbExh
eWVyPExlbmd0aCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBCYWNrZ3JvdW5kRmls
bExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJTdHls
ZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNYUG9zaXRpb25TZXQsICZGaWxsTGF5
ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVh
clhQb3NpdGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxYUG9zaXRpb24sICZDU1NUb1N0eWxl
TWFwOjptYXBGaWxsWFBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBBcHBseVByb3BlcnR5Rmls
bExheWVyPExlbmd0aCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLCBCYWNrZ3JvdW5k
RmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5kZXJT
dHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNZUG9zaXRpb25TZXQsICZGaWxs
TGF5ZXI6OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9uLCAmRmlsbExheWVyOjpj
bGVhcllQb3NpdGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxZUG9zaXRpb24sICZDU1NUb1N0
eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0LCBBcHBseVByb3BlcnR5RXhw
YW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdFk+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBBcHBseVByb3BlcnR5Rmls
bExheWVyPEVGaWxsUmVwZWF0LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBCYWNrZ3Jv
dW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMsICZSZW5k
ZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNSZXBlYXRYU2V0LCAmRmls
bExheWVyOjpyZXBlYXRYLCAmRmlsbExheWVyOjpzZXRSZXBlYXRYLCAmRmlsbExheWVyOjpjbGVh
clJlcGVhdFgsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WCwgJlN0eWxlUmVzb2x2ZXI6
Om1hcEZpbGxSZXBlYXRYPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxF
RmlsbFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgQmFja2dyb3VuZEZpbGxM
YXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVyU3R5bGU6
OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzUmVwZWF0WVNldCwgJkZpbGxMYXllcjo6
cmVwZWF0WSwgJkZpbGxMYXllcjo6c2V0UmVwZWF0WSwgJkZpbGxMYXllcjo6Y2xlYXJSZXBlYXRZ
LCAmRmlsbExheWVyOjppbml0aWFsRmlsbFJlcGVhdFksICZTdHlsZVJlc29sdmVyOjptYXBGaWxs
UmVwZWF0WT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5QmFja2dyb3VuZFNpemUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RmlsbFNpemUsIENT
U1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5kZXJTdHls
ZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5kTGF5ZXJz
LCAmRmlsbExheWVyOjppc1NpemVTZXQsICZGaWxsTGF5ZXI6OnNpemUsICZGaWxsTGF5ZXI6OnNl
dFNpemUsICZGaWxsTGF5ZXI6OmNsZWFyU2l6ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxTaXpl
LCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbFNpemU+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBBcHBseVByb3Bl
cnR5RmlsbExheWVyPEVGaWxsUmVwZWF0LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBC
YWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRMYXllcnMs
ICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNSZXBlYXRYU2V0
LCAmRmlsbExheWVyOjpyZXBlYXRYLCAmRmlsbExheWVyOjpzZXRSZXBlYXRYLCAmRmlsbExheWVy
OjpjbGVhclJlcGVhdFgsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WCwgJkNTU1RvU3R5
bGVNYXA6Om1hcEZpbGxSZXBlYXRYPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgQXBwbHlQcm9wZXJ0eUZpbGxM
YXllcjxFRmlsbFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSwgQmFja2dyb3Vu
ZEZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NCYWNrZ3JvdW5kTGF5ZXJzLCAmUmVuZGVy
U3R5bGU6OmJhY2tncm91bmRMYXllcnMsICZGaWxsTGF5ZXI6OmlzUmVwZWF0WVNldCwgJkZpbGxM
YXllcjo6cmVwZWF0WSwgJkZpbGxMYXllcjo6c2V0UmVwZWF0WSwgJkZpbGxMYXllcjo6Y2xlYXJS
ZXBlYXRZLCAmRmlsbExheWVyOjppbml0aWFsRmlsbFJlcGVhdFksICZDU1NUb1N0eWxlTWFwOjpt
YXBGaWxsUmVwZWF0WT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RmlsbFNp
emUsIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5k
ZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5k
TGF5ZXJzLCAmRmlsbExheWVyOjppc1NpemVTZXQsICZGaWxsTGF5ZXI6OnNpemUsICZGaWxsTGF5
ZXI6OnNldFNpemUsICZGaWxsTGF5ZXI6OmNsZWFyU2l6ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZp
bGxTaXplLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemU+OjpjcmVhdGVIYW5kbGVyKCkpOwog
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlciwgQXBwbHlQcm9wZXJ0eUV4
cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBDU1NQcm9wZXJ0
eUJvcmRlcldpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yPjo6Y3JlYXRlSGFuZGxlcigpKTsK
ICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sIEFwcGx5UHJv
cGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xv
ciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21X
aWR0aD46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tQ29sb3IsIEFwcGx5UHJvcGVydHlDb2xvcjxOb0luaGVyaXRGcm9tUGFy
ZW50LCAmUmVuZGVyU3R5bGU6OmJvcmRlckJvdHRvbUNvbG9yLCAmUmVuZGVyU3R5bGU6OnNldEJv
cmRlckJvdHRvbUNvbG9yLCAmUmVuZGVyU3R5bGU6OnNldFZpc2l0ZWRMaW5rQm9yZGVyQm90dG9t
Q29sb3IsICZSZW5kZXJTdHlsZTo6Y29sb3I+OjpjcmVhdGVIYW5kbGVyKCkpOwpAQCAtMTk1Nywx
OSArMTk1OCwxOSBAQCBTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRlcigpCiAgICAgc2V0UHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5VW5pY29kZUJpZGksIEFwcGx5UHJvcGVydHlVbmljb2RlQmlk
aTo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlW
ZXJ0aWNhbEFsaWduLCBBcHBseVByb3BlcnR5VmVydGljYWxBbGlnbjo6Y3JlYXRlSGFuZGxlcigp
KTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlWaXNpYmlsaXR5LCBBcHBseVBy
b3BlcnR5RGVmYXVsdDxFVmlzaWJpbGl0eSwgJlJlbmRlclN0eWxlOjp2aXNpYmlsaXR5LCBFVmlz
aWJpbGl0eSwgJlJlbmRlclN0eWxlOjpzZXRWaXNpYmlsaXR5LCBFVmlzaWJpbGl0eSwgJlJlbmRl
clN0eWxlOjppbml0aWFsVmlzaWJpbGl0eT46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXksIEFwcGx5UHJvcGVy
dHlBbmltYXRpb248ZG91YmxlLCAmQW5pbWF0aW9uOjpkZWxheSwgJkFuaW1hdGlvbjo6c2V0RGVs
YXksICZBbmltYXRpb246OmlzRGVsYXlTZXQsICZBbmltYXRpb246OmNsZWFyRGVsYXksICZBbmlt
YXRpb246OmluaXRpYWxBbmltYXRpb25EZWxheSwgJlN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlv
bkRlbGF5LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5p
bWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPEFu
aW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uLCAmQW5pbWF0aW9uOjpkaXJlY3Rpb24sICZBbmlt
YXRpb246OnNldERpcmVjdGlvbiwgJkFuaW1hdGlvbjo6aXNEaXJlY3Rpb25TZXQsICZBbmltYXRp
b246OmNsZWFyRGlyZWN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRGlyZWN0aW9u
LCAmU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uRGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OmFj
Y2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIo
KSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVy
YXRpb24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248ZG91YmxlLCAmQW5pbWF0aW9uOjpkdXJhdGlv
biwgJkFuaW1hdGlvbjo6c2V0RHVyYXRpb24sICZBbmltYXRpb246OmlzRHVyYXRpb25TZXQsICZB
bmltYXRpb246OmNsZWFyRHVyYXRpb24sICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25EdXJh
dGlvbiwgJlN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvbkR1cmF0aW9uLCAmUmVuZGVyU3R5bGU6
OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRs
ZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
RmlsbE1vZGUsIEFwcGx5UHJvcGVydHlBbmltYXRpb248dW5zaWduZWQsICZBbmltYXRpb246OmZp
bGxNb2RlLCAmQW5pbWF0aW9uOjpzZXRGaWxsTW9kZSwgJkFuaW1hdGlvbjo6aXNGaWxsTW9kZVNl
dCwgJkFuaW1hdGlvbjo6Y2xlYXJGaWxsTW9kZSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlv
bkZpbGxNb2RlLCAmU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uRmlsbE1vZGUsICZSZW5kZXJT
dHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRl
SGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmlt
YXRpb25JdGVyYXRpb25Db3VudCwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUsICZBbmlt
YXRpb246Oml0ZXJhdGlvbkNvdW50LCAmQW5pbWF0aW9uOjpzZXRJdGVyYXRpb25Db3VudCwgJkFu
aW1hdGlvbjo6aXNJdGVyYXRpb25Db3VudFNldCwgJkFuaW1hdGlvbjo6Y2xlYXJJdGVyYXRpb25D
b3VudCwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LCAmU3R5bGVS
ZXNvbHZlcjo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsICZSZW5kZXJTdHlsZTo6YWNjZXNz
QW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsK
LSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLCBB
cHBseVByb3BlcnR5QW5pbWF0aW9uPGNvbnN0IFN0cmluZyYsICZBbmltYXRpb246Om5hbWUsICZB
bmltYXRpb246OnNldE5hbWUsICZBbmltYXRpb246OmlzTmFtZVNldCwgJkFuaW1hdGlvbjo6Y2xl
YXJOYW1lLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uTmFtZSwgJlN0eWxlUmVzb2x2ZXI6
Om1hcEFuaW1hdGlvbk5hbWUsICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRl
clN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25QbGF5U3RhdGUsIEFwcGx5UHJvcGVydHlB
bmltYXRpb248RUFuaW1QbGF5U3RhdGUsICZBbmltYXRpb246OnBsYXlTdGF0ZSwgJkFuaW1hdGlv
bjo6c2V0UGxheVN0YXRlLCAmQW5pbWF0aW9uOjppc1BsYXlTdGF0ZVNldCwgJkFuaW1hdGlvbjo6
Y2xlYXJQbGF5U3RhdGUsICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25QbGF5U3RhdGUsICZT
dHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25QbGF5U3RhdGUsICZSZW5kZXJTdHlsZTo6YWNjZXNz
QW5pbWF0aW9ucywgJlJlbmRlclN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsK
LSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdG
dW5jdGlvbiwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxjb25zdCBQYXNzUmVmUHRyPFRpbWluZ0Z1
bmN0aW9uPiwgJkFuaW1hdGlvbjo6dGltaW5nRnVuY3Rpb24sICZBbmltYXRpb246OnNldFRpbWlu
Z0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppc1RpbWluZ0Z1bmN0aW9uU2V0LCAmQW5pbWF0aW9uOjpj
bGVhclRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uVGltaW5nRnVu
Y3Rpb24sICZTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwgJlJlbmRl
clN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbkRlbGF5LCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRvdWJsZSwgJkFuaW1hdGlvbjo6
ZGVsYXksICZBbmltYXRpb246OnNldERlbGF5LCAmQW5pbWF0aW9uOjppc0RlbGF5U2V0LCAmQW5p
bWF0aW9uOjpjbGVhckRlbGF5LCAmQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uRGVsYXksICZD
U1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25EZWxheSwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmlt
YXRpb25zLCAmUmVuZGVyU3R5bGU6OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOworICAg
IHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwg
QXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbiwgJkFu
aW1hdGlvbjo6ZGlyZWN0aW9uLCAmQW5pbWF0aW9uOjpzZXREaXJlY3Rpb24sICZBbmltYXRpb246
OmlzRGlyZWN0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVhckRpcmVjdGlvbiwgJkFuaW1hdGlvbjo6
aW5pdGlhbEFuaW1hdGlvbkRpcmVjdGlvbiwgJkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkRp
cmVjdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6OmFu
aW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPGRv
dWJsZSwgJkFuaW1hdGlvbjo6ZHVyYXRpb24sICZBbmltYXRpb246OnNldER1cmF0aW9uLCAmQW5p
bWF0aW9uOjppc0R1cmF0aW9uU2V0LCAmQW5pbWF0aW9uOjpjbGVhckR1cmF0aW9uLCAmQW5pbWF0
aW9uOjppbml0aWFsQW5pbWF0aW9uRHVyYXRpb24sICZDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRp
b25EdXJhdGlvbiwgJlJlbmRlclN0eWxlOjphY2Nlc3NBbmltYXRpb25zLCAmUmVuZGVyU3R5bGU6
OmFuaW1hdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlLCBBcHBseVByb3BlcnR5QW5pbWF0aW9u
PHVuc2lnbmVkLCAmQW5pbWF0aW9uOjpmaWxsTW9kZSwgJkFuaW1hdGlvbjo6c2V0RmlsbE1vZGUs
ICZBbmltYXRpb246OmlzRmlsbE1vZGVTZXQsICZBbmltYXRpb246OmNsZWFyRmlsbE1vZGUsICZB
bmltYXRpb246OmluaXRpYWxBbmltYXRpb25GaWxsTW9kZSwgJkNTU1RvU3R5bGVNYXA6Om1hcEFu
aW1hdGlvbkZpbGxNb2RlLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJT
dHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsIEFwcGx5UHJvcGVy
dHlBbmltYXRpb248ZG91YmxlLCAmQW5pbWF0aW9uOjppdGVyYXRpb25Db3VudCwgJkFuaW1hdGlv
bjo6c2V0SXRlcmF0aW9uQ291bnQsICZBbmltYXRpb246OmlzSXRlcmF0aW9uQ291bnRTZXQsICZB
bmltYXRpb246OmNsZWFySXRlcmF0aW9uQ291bnQsICZBbmltYXRpb246OmluaXRpYWxBbmltYXRp
b25JdGVyYXRpb25Db3VudCwgJkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkl0ZXJhdGlvbkNv
dW50LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0
aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uTmFtZSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxjb25zdCBTdHJp
bmcmLCAmQW5pbWF0aW9uOjpuYW1lLCAmQW5pbWF0aW9uOjpzZXROYW1lLCAmQW5pbWF0aW9uOjpp
c05hbWVTZXQsICZBbmltYXRpb246OmNsZWFyTmFtZSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1h
dGlvbk5hbWUsICZDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25OYW1lLCAmUmVuZGVyU3R5bGU6
OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0aW9ucz46OmNyZWF0ZUhhbmRs
ZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
UGxheVN0YXRlLCBBcHBseVByb3BlcnR5QW5pbWF0aW9uPEVBbmltUGxheVN0YXRlLCAmQW5pbWF0
aW9uOjpwbGF5U3RhdGUsICZBbmltYXRpb246OnNldFBsYXlTdGF0ZSwgJkFuaW1hdGlvbjo6aXNQ
bGF5U3RhdGVTZXQsICZBbmltYXRpb246OmNsZWFyUGxheVN0YXRlLCAmQW5pbWF0aW9uOjppbml0
aWFsQW5pbWF0aW9uUGxheVN0YXRlLCAmQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUGxheVN0
YXRlLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0FuaW1hdGlvbnMsICZSZW5kZXJTdHlsZTo6YW5pbWF0
aW9ucz46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248
Y29uc3QgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4sICZBbmltYXRpb246OnRpbWluZ0Z1bmN0
aW9uLCAmQW5pbWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6aXNUaW1pbmdG
dW5jdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6
aW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCAmQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0
aW9uVGltaW5nRnVuY3Rpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNzQW5pbWF0aW9ucywgJlJlbmRl
clN0eWxlOjphbmltYXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNlLCBBcHBseVByb3BlcnR5RGVmYXVsdDxD
b250cm9sUGFydCwgJlJlbmRlclN0eWxlOjphcHBlYXJhbmNlLCBDb250cm9sUGFydCwgJlJlbmRl
clN0eWxlOjpzZXRBcHBlYXJhbmNlLCBDb250cm9sUGFydCwgJlJlbmRlclN0eWxlOjppbml0aWFs
QXBwZWFyYW5jZT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0QXNwZWN0UmF0aW8sIEFwcGx5UHJvcGVydHlBc3BlY3RSYXRpbzo6Y3Jl
YXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRC
YWNrZmFjZVZpc2liaWxpdHksIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVCYWNrZmFjZVZpc2liaWxp
dHksICZSZW5kZXJTdHlsZTo6YmFja2ZhY2VWaXNpYmlsaXR5LCBFQmFja2ZhY2VWaXNpYmlsaXR5
LCAmUmVuZGVyU3R5bGU6OnNldEJhY2tmYWNlVmlzaWJpbGl0eSwgRUJhY2tmYWNlVmlzaWJpbGl0
eSwgJlJlbmRlclN0eWxlOjppbml0aWFsQmFja2ZhY2VWaXNpYmlsaXR5Pjo6Y3JlYXRlSGFuZGxl
cigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5k
Q2xpcCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZENvbXBvc2l0ZSwgQXBwbHlQcm9wZXJ0eUZpbGxM
YXllcjxDb21wb3NpdGVPcGVyYXRvciwgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29tcG9z
aXRlLCBCYWNrZ3JvdW5kRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc0JhY2tncm91bmRM
YXllcnMsICZSZW5kZXJTdHlsZTo6YmFja2dyb3VuZExheWVycywgJkZpbGxMYXllcjo6aXNDb21w
b3NpdGVTZXQsICZGaWxsTGF5ZXI6OmNvbXBvc2l0ZSwgJkZpbGxMYXllcjo6c2V0Q29tcG9zaXRl
LCAmRmlsbExheWVyOjpjbGVhckNvbXBvc2l0ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxDb21w
b3NpdGUsICZTdHlsZVJlc29sdmVyOjptYXBGaWxsQ29tcG9zaXRlPjo6Y3JlYXRlSGFuZGxlcigp
KTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ29t
cG9zaXRlLCBBcHBseVByb3BlcnR5RmlsbExheWVyPENvbXBvc2l0ZU9wZXJhdG9yLCBDU1NQcm9w
ZXJ0eVdlYmtpdEJhY2tncm91bmRDb21wb3NpdGUsIEJhY2tncm91bmRGaWxsTGF5ZXIsICZSZW5k
ZXJTdHlsZTo6YWNjZXNzQmFja2dyb3VuZExheWVycywgJlJlbmRlclN0eWxlOjpiYWNrZ3JvdW5k
TGF5ZXJzLCAmRmlsbExheWVyOjppc0NvbXBvc2l0ZVNldCwgJkZpbGxMYXllcjo6Y29tcG9zaXRl
LCAmRmlsbExheWVyOjpzZXRDb21wb3NpdGUsICZGaWxsTGF5ZXI6OmNsZWFyQ29tcG9zaXRlLCAm
RmlsbExheWVyOjppbml0aWFsRmlsbENvbXBvc2l0ZSwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxD
b21wb3NpdGU+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVdlYmtpdEJhY2tncm91bmRPcmlnaW4sIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdp
bik7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNp
emUsIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckZpdCwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RUJvcmRlckZp
dCwgJlJlbmRlclN0eWxlOjpib3JkZXJGaXQsIEVCb3JkZXJGaXQsICZSZW5kZXJTdHlsZTo6c2V0
Qm9yZGVyRml0LCBFQm9yZGVyRml0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJGaXQ+Ojpj
cmVhdGVIYW5kbGVyKCkpOwpAQCAtMjAzNywyNCArMjAzOCwyNCBAQCBTdHlsZUJ1aWxkZXI6OlN0
eWxlQnVpbGRlcigpCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luVG9wQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UpOwog
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24s
IEFwcGx5UHJvcGVydHlEZWZhdWx0PEVNYXJxdWVlRGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6Om1h
cnF1ZWVEaXJlY3Rpb24sIEVNYXJxdWVlRGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OnNldE1hcnF1
ZWVEaXJlY3Rpb24sIEVNYXJxdWVlRGlyZWN0aW9uLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxNYXJx
dWVlRGlyZWN0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVNYXJx
dWVlQmVoYXZpb3IsICZSZW5kZXJTdHlsZTo6bWFycXVlZUJlaGF2aW9yLCBFTWFycXVlZUJlaGF2
aW9yLCAmUmVuZGVyU3R5bGU6OnNldE1hcnF1ZWVCZWhhdmlvciwgRU1hcnF1ZWVCZWhhdmlvciwg
JlJlbmRlclN0eWxlOjppbml0aWFsTWFycXVlZUJlaGF2aW9yPjo6Y3JlYXRlSGFuZGxlcigpKTsK
LSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwg
QXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxFRmlsbEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5V2Via2l0
TWFza0F0dGFjaG1lbnQsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xh
eWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc0F0dGFjaG1lbnRT
ZXQsICZGaWxsTGF5ZXI6OmF0dGFjaG1lbnQsICZGaWxsTGF5ZXI6OnNldEF0dGFjaG1lbnQsICZG
aWxsTGF5ZXI6OmNsZWFyQXR0YWNobWVudCwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxBdHRhY2ht
ZW50LCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbEF0dGFjaG1lbnQ+OjpjcmVhdGVIYW5kbGVyKCkp
OworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50
LCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQXR0YWNobWVudCwgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrQXR0YWNobWVudCwgTWFza0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNr
TGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzQXR0YWNobWVu
dFNldCwgJkZpbGxMYXllcjo6YXR0YWNobWVudCwgJkZpbGxMYXllcjo6c2V0QXR0YWNobWVudCwg
JkZpbGxMYXllcjo6Y2xlYXJBdHRhY2htZW50LCAmRmlsbExheWVyOjppbml0aWFsRmlsbEF0dGFj
aG1lbnQsICZDU1NUb1N0eWxlTWFwOjptYXBGaWxsQXR0YWNobWVudD46OmNyZWF0ZUhhbmRsZXIo
KSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdl
LCBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2U8TWFzaywgQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94
SW1hZ2UsICZSZW5kZXJTdHlsZTo6bWFza0JveEltYWdlLCAmUmVuZGVyU3R5bGU6OnNldE1hc2tC
b3hJbWFnZT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1By
b3BlcnR5V2Via2l0TWFza0JveEltYWdlT3V0c2V0LCBBcHBseVByb3BlcnR5Qm9yZGVySW1hZ2VN
b2RpZmllcjxNYXNrLCBPdXRzZXQ+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZVJlcGVhdCwgQXBwbHlQcm9wZXJ0
eUJvcmRlckltYWdlTW9kaWZpZXI8TWFzaywgUmVwZWF0Pjo6Y3JlYXRlSGFuZGxlcigpKTsKICAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQm94SW1hZ2VTbGljZSwg
QXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlTW9kaWZpZXI8TWFzaywgU2xpY2U+OjpjcmVhdGVIYW5k
bGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJ
bWFnZVNvdXJjZSwgQXBwbHlQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlPENTU1Byb3BlcnR5V2Vi
a2l0TWFza0JveEltYWdlU291cmNlLCAmUmVuZGVyU3R5bGU6Om1hc2tCb3hJbWFnZVNvdXJjZSwg
JlJlbmRlclN0eWxlOjpzZXRNYXNrQm94SW1hZ2VTb3VyY2UsICZSZW5kZXJTdHlsZTo6aW5pdGlh
bE1hc2tCb3hJbWFnZVNvdXJjZT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlI
YW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlV2lkdGgsIEFwcGx5UHJvcGVydHlC
b3JkZXJJbWFnZU1vZGlmaWVyPE1hc2ssIFdpZHRoPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgQXBwbHlQcm9wZXJ0
eUZpbGxMYXllcjxFRmlsbEJveCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwgTWFza0ZpbGxM
YXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tM
YXllcnMsICZGaWxsTGF5ZXI6OmlzQ2xpcFNldCwgJkZpbGxMYXllcjo6Y2xpcCwgJkZpbGxMYXll
cjo6c2V0Q2xpcCwgJkZpbGxMYXllcjo6Y2xlYXJDbGlwLCAmRmlsbExheWVyOjppbml0aWFsRmls
bENsaXAsICZTdHlsZVJlc29sdmVyOjptYXBGaWxsQ2xpcD46OmNyZWF0ZUhhbmRsZXIoKSk7Ci0g
ICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza0NvbXBvc2l0ZSwgQXBw
bHlQcm9wZXJ0eUZpbGxMYXllcjxDb21wb3NpdGVPcGVyYXRvciwgQ1NTUHJvcGVydHlXZWJraXRN
YXNrQ29tcG9zaXRlLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXll
cnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNDb21wb3NpdGVTZXQs
ICZGaWxsTGF5ZXI6OmNvbXBvc2l0ZSwgJkZpbGxMYXllcjo6c2V0Q29tcG9zaXRlLCAmRmlsbExh
eWVyOjpjbGVhckNvbXBvc2l0ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxDb21wb3NpdGUsICZT
dHlsZVJlc29sdmVyOjptYXBGaWxsQ29tcG9zaXRlPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBz
ZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIEFwcGx5UHJvcGVy
dHlGaWxsTGF5ZXI8U3R5bGVJbWFnZSosIENTU1Byb3BlcnR5V2Via2l0TWFza0ltYWdlLCBNYXNr
RmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6
bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNJbWFnZVNldCwgJkZpbGxMYXllcjo6aW1hZ2UsICZG
aWxsTGF5ZXI6OnNldEltYWdlLCAmRmlsbExheWVyOjpjbGVhckltYWdlLCAmRmlsbExheWVyOjpp
bml0aWFsRmlsbEltYWdlLCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbEltYWdlPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrT3Jp
Z2luLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQm94LCBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tPcmlnaW4sIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywg
JlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc09yaWdpblNldCwgJkZpbGxM
YXllcjo6b3JpZ2luLCAmRmlsbExheWVyOjpzZXRPcmlnaW4sICZGaWxsTGF5ZXI6OmNsZWFyT3Jp
Z2luLCAmRmlsbExheWVyOjppbml0aWFsRmlsbE9yaWdpbiwgJlN0eWxlUmVzb2x2ZXI6Om1hcEZp
bGxPcmlnaW4+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tDbGlwLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsQm94LCBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFj
Y2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXND
bGlwU2V0LCAmRmlsbExheWVyOjpjbGlwLCAmRmlsbExheWVyOjpzZXRDbGlwLCAmRmlsbExheWVy
OjpjbGVhckNsaXAsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQ2xpcCwgJkNTU1RvU3R5bGVNYXA6
Om1hcEZpbGxDbGlwPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRNYXNrQ29tcG9zaXRlLCBBcHBseVByb3BlcnR5RmlsbExheWVyPENv
bXBvc2l0ZU9wZXJhdG9yLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDb21wb3NpdGUsIE1hc2tGaWxs
TGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNr
TGF5ZXJzLCAmRmlsbExheWVyOjppc0NvbXBvc2l0ZVNldCwgJkZpbGxMYXllcjo6Y29tcG9zaXRl
LCAmRmlsbExheWVyOjpzZXRDb21wb3NpdGUsICZGaWxsTGF5ZXI6OmNsZWFyQ29tcG9zaXRlLCAm
RmlsbExheWVyOjppbml0aWFsRmlsbENvbXBvc2l0ZSwgJkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxD
b21wb3NpdGU+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tJbWFnZSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXllcjxTdHlsZUltYWdl
KiwgQ1NTUHJvcGVydHlXZWJraXRNYXNrSW1hZ2UsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHls
ZTo6YWNjZXNzTWFza0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVy
Ojppc0ltYWdlU2V0LCAmRmlsbExheWVyOjppbWFnZSwgJkZpbGxMYXllcjo6c2V0SW1hZ2UsICZG
aWxsTGF5ZXI6OmNsZWFySW1hZ2UsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsSW1hZ2UsICZDU1NU
b1N0eWxlTWFwOjptYXBGaWxsSW1hZ2U+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tPcmlnaW4sIEFwcGx5UHJvcGVydHlGaWxs
TGF5ZXI8RUZpbGxCb3gsIENTU1Byb3BlcnR5V2Via2l0TWFza09yaWdpbiwgTWFza0ZpbGxMYXll
ciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXll
cnMsICZGaWxsTGF5ZXI6OmlzT3JpZ2luU2V0LCAmRmlsbExheWVyOjpvcmlnaW4sICZGaWxsTGF5
ZXI6OnNldE9yaWdpbiwgJkZpbGxMYXllcjo6Y2xlYXJPcmlnaW4sICZGaWxsTGF5ZXI6OmluaXRp
YWxGaWxsT3JpZ2luLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbE9yaWdpbj46OmNyZWF0ZUhhbmRs
ZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0
aW9uLCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1Bvc2l0aW9uWCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZPjo6Y3JlYXRl
SGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNr
UG9zaXRpb25YLCBBcHBseVByb3BlcnR5RmlsbExheWVyPExlbmd0aCwgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb25YLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tM
YXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNYUG9zaXRpb25T
ZXQsICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmls
bExheWVyOjpjbGVhclhQb3NpdGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxYUG9zaXRpb24s
ICZTdHlsZVJlc29sdmVyOjptYXBGaWxsWFBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZLCBBcHBs
eVByb3BlcnR5RmlsbExheWVyPExlbmd0aCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25Z
LCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJT
dHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNZUG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6
OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVhcllQ
b3NpdGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxZUG9zaXRpb24sICZTdHlsZVJlc29sdmVy
OjptYXBGaWxsWVBvc2l0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBBcHBseVByb3BlcnR5RmlsbExh
eWVyPExlbmd0aCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBNYXNrRmlsbExheWVy
LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVy
cywgJkZpbGxMYXllcjo6aXNYUG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6OnhQb3NpdGlvbiwgJkZp
bGxMYXllcjo6c2V0WFBvc2l0aW9uLCAmRmlsbExheWVyOjpjbGVhclhQb3NpdGlvbiwgJkZpbGxM
YXllcjo6aW5pdGlhbEZpbGxYUG9zaXRpb24sICZDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0
aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUG9zaXRpb25ZLCBBcHBseVByb3BlcnR5RmlsbExheWVyPExlbmd0aCwgQ1NT
UHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6
OmFjY2Vzc01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6
aXNZUG9zaXRpb25TZXQsICZGaWxsTGF5ZXI6OnlQb3NpdGlvbiwgJkZpbGxMYXllcjo6c2V0WVBv
c2l0aW9uLCAmRmlsbExheWVyOjpjbGVhcllQb3NpdGlvbiwgJkZpbGxMYXllcjo6aW5pdGlhbEZp
bGxZUG9zaXRpb24sICZDU1NUb1N0eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uPjo6Y3JlYXRlSGFu
ZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVw
ZWF0LCBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWUsIENTU1Byb3BlcnR5QmFj
a2dyb3VuZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFk+OjpjcmVhdGVIYW5k
bGVyKCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBl
YXRYLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVwZWF0LCBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tSZXBlYXRYLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vzc01hc2tMYXll
cnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNSZXBlYXRYU2V0LCAm
RmlsbExheWVyOjpyZXBlYXRYLCAmRmlsbExheWVyOjpzZXRSZXBlYXRYLCAmRmlsbExheWVyOjpj
bGVhclJlcGVhdFgsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WCwgJlN0eWxlUmVzb2x2
ZXI6Om1hcEZpbGxSZXBlYXRYPjo6Y3JlYXRlSGFuZGxlcigpKTsKLSAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgQXBwbHlQcm9wZXJ0eUZpbGxMYXll
cjxFRmlsbFJlcGVhdCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgTWFza0ZpbGxMYXll
ciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6Om1hc2tMYXll
cnMsICZGaWxsTGF5ZXI6OmlzUmVwZWF0WVNldCwgJkZpbGxMYXllcjo6cmVwZWF0WSwgJkZpbGxM
YXllcjo6c2V0UmVwZWF0WSwgJkZpbGxMYXllcjo6Y2xlYXJSZXBlYXRZLCAmRmlsbExheWVyOjpp
bml0aWFsRmlsbFJlcGVhdFksICZTdHlsZVJlc29sdmVyOjptYXBGaWxsUmVwZWF0WT46OmNyZWF0
ZUhhbmRsZXIoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0TWFz
a1NpemUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RmlsbFNpemUsIENTU1Byb3BlcnR5V2Via2l0
TWFza1NpemUsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFza0xheWVycywg
JlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1NpemVTZXQsICZGaWxsTGF5
ZXI6OnNpemUsICZGaWxsTGF5ZXI6OnNldFNpemUsICZGaWxsTGF5ZXI6OmNsZWFyU2l6ZSwgJkZp
bGxMYXllcjo6aW5pdGlhbEZpbGxTaXplLCAmU3R5bGVSZXNvbHZlcjo6bWFwRmlsbFNpemU+Ojpj
cmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tSZXBlYXRYLCBBcHBseVByb3BlcnR5RmlsbExheWVyPEVGaWxsUmVwZWF0LCBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBNYXNrRmlsbExheWVyLCAmUmVuZGVyU3R5bGU6OmFjY2Vz
c01hc2tMYXllcnMsICZSZW5kZXJTdHlsZTo6bWFza0xheWVycywgJkZpbGxMYXllcjo6aXNSZXBl
YXRYU2V0LCAmRmlsbExheWVyOjpyZXBlYXRYLCAmRmlsbExheWVyOjpzZXRSZXBlYXRYLCAmRmls
bExheWVyOjpjbGVhclJlcGVhdFgsICZGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WCwgJkNT
U1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRYPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgQXBwbHlQcm9wZXJ0
eUZpbGxMYXllcjxFRmlsbFJlcGVhdCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSwgTWFz
a0ZpbGxMYXllciwgJlJlbmRlclN0eWxlOjphY2Nlc3NNYXNrTGF5ZXJzLCAmUmVuZGVyU3R5bGU6
Om1hc2tMYXllcnMsICZGaWxsTGF5ZXI6OmlzUmVwZWF0WVNldCwgJkZpbGxMYXllcjo6cmVwZWF0
WSwgJkZpbGxMYXllcjo6c2V0UmVwZWF0WSwgJkZpbGxMYXllcjo6Y2xlYXJSZXBlYXRZLCAmRmls
bExheWVyOjppbml0aWFsRmlsbFJlcGVhdFksICZDU1NUb1N0eWxlTWFwOjptYXBGaWxsUmVwZWF0
WT46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0TWFza1NpemUsIEFwcGx5UHJvcGVydHlGaWxsTGF5ZXI8RmlsbFNpemUsIENTU1Byb3Bl
cnR5V2Via2l0TWFza1NpemUsIE1hc2tGaWxsTGF5ZXIsICZSZW5kZXJTdHlsZTo6YWNjZXNzTWFz
a0xheWVycywgJlJlbmRlclN0eWxlOjptYXNrTGF5ZXJzLCAmRmlsbExheWVyOjppc1NpemVTZXQs
ICZGaWxsTGF5ZXI6OnNpemUsICZGaWxsTGF5ZXI6OnNldFNpemUsICZGaWxsTGF5ZXI6OmNsZWFy
U2l6ZSwgJkZpbGxMYXllcjo6aW5pdGlhbEZpbGxTaXplLCAmQ1NTVG9TdHlsZU1hcDo6bWFwRmls
bFNpemU+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eVdlYmtpdE5ic3BNb2RlLCBBcHBseVByb3BlcnR5RGVmYXVsdDxFTkJTUE1vZGUsICZSZW5k
ZXJTdHlsZTo6bmJzcE1vZGUsIEVOQlNQTW9kZSwgJlJlbmRlclN0eWxlOjpzZXROQlNQTW9kZSwg
RU5CU1BNb2RlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxOQlNQTW9kZT46OmNyZWF0ZUhhbmRsZXIo
KSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVP
cmlnaW4sIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlX
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgsIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmln
aW5ZPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVy
dHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgsIEFwcGx5UHJvcGVydHlMZW5ndGg8JlJlbmRlclN0
eWxlOjpwZXJzcGVjdGl2ZU9yaWdpblgsICZSZW5kZXJTdHlsZTo6c2V0UGVyc3BlY3RpdmVPcmln
aW5YLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblg+OjpjcmVhdGVIYW5k
bGVyKCkpOwpAQCAtMjA4MCwxMCArMjA4MSwxMCBAQCBTdHlsZUJ1aWxkZXI6OlN0eWxlQnVpbGRl
cigpCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3Jp
Z2luWSwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6OnRyYW5zZm9ybU9yaWdpblks
ICZSZW5kZXJTdHlsZTo6c2V0VHJhbnNmb3JtT3JpZ2luWSwgJlJlbmRlclN0eWxlOjppbml0aWFs
VHJhbnNmb3JtT3JpZ2luWT46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWiwgQXBwbHlQcm9wZXJ0eUNvbXB1
dGVMZW5ndGg8ZmxvYXQsICZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtT3JpZ2luWiwgJlJlbmRlclN0
eWxlOjpzZXRUcmFuc2Zvcm1PcmlnaW5aLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxUcmFuc2Zvcm1P
cmlnaW5aPjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2Zvcm1TdHlsZSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVRyYW5zZm9y
bVN0eWxlM0QsICZSZW5kZXJTdHlsZTo6dHJhbnNmb3JtU3R5bGUzRCwgRVRyYW5zZm9ybVN0eWxl
M0QsICZSZW5kZXJTdHlsZTo6c2V0VHJhbnNmb3JtU3R5bGUzRCwgRVRyYW5zZm9ybVN0eWxlM0Qs
ICZSZW5kZXJTdHlsZTo6aW5pdGlhbFRyYW5zZm9ybVN0eWxlM0Q+OjpjcmVhdGVIYW5kbGVyKCkp
OwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxh
eSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUsICZBbmltYXRpb246OmRlbGF5LCAmQW5p
bWF0aW9uOjpzZXREZWxheSwgJkFuaW1hdGlvbjo6aXNEZWxheVNldCwgJkFuaW1hdGlvbjo6Y2xl
YXJEZWxheSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkRlbGF5LCAmU3R5bGVSZXNvbHZl
cjo6bWFwQW5pbWF0aW9uRGVsYXksICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZS
ZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJhdGlvbiwgQXBwbHlQcm9w
ZXJ0eUFuaW1hdGlvbjxkb3VibGUsICZBbmltYXRpb246OmR1cmF0aW9uLCAmQW5pbWF0aW9uOjpz
ZXREdXJhdGlvbiwgJkFuaW1hdGlvbjo6aXNEdXJhdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJE
dXJhdGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvbkR1cmF0aW9uLCAmU3R5bGVSZXNv
bHZlcjo6bWFwQW5pbWF0aW9uRHVyYXRpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlv
bnMsICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwotICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwgQXBw
bHlQcm9wZXJ0eUFuaW1hdGlvbjxDU1NQcm9wZXJ0eUlELCAmQW5pbWF0aW9uOjpwcm9wZXJ0eSwg
JkFuaW1hdGlvbjo6c2V0UHJvcGVydHksICZBbmltYXRpb246OmlzUHJvcGVydHlTZXQsICZBbmlt
YXRpb246OmNsZWFyUHJvcGVydHksICZBbmltYXRpb246OmluaXRpYWxBbmltYXRpb25Qcm9wZXJ0
eSwgJlN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvblByb3BlcnR5LCAmUmVuZGVyU3R5bGU6OmFj
Y2Vzc1RyYW5zaXRpb25zLCAmUmVuZGVyU3R5bGU6OnRyYW5zaXRpb25zPjo6Y3JlYXRlSGFuZGxl
cigpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9u
VGltaW5nRnVuY3Rpb24sIEFwcGx5UHJvcGVydHlBbmltYXRpb248Y29uc3QgUGFzc1JlZlB0cjxU
aW1pbmdGdW5jdGlvbj4sICZBbmltYXRpb246OnRpbWluZ0Z1bmN0aW9uLCAmQW5pbWF0aW9uOjpz
ZXRUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6aXNUaW1pbmdGdW5jdGlvblNldCwgJkFuaW1h
dGlvbjo6Y2xlYXJUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblRp
bWluZ0Z1bmN0aW9uLCAmU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24s
ICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlv
bnM+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zaXRpb25EZWxheSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUsICZB
bmltYXRpb246OmRlbGF5LCAmQW5pbWF0aW9uOjpzZXREZWxheSwgJkFuaW1hdGlvbjo6aXNEZWxh
eVNldCwgJkFuaW1hdGlvbjo6Y2xlYXJEZWxheSwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlv
bkRlbGF5LCAmQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRGVsYXksICZSZW5kZXJTdHlsZTo6
YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5k
bGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRp
b25EdXJhdGlvbiwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxkb3VibGUsICZBbmltYXRpb246OmR1
cmF0aW9uLCAmQW5pbWF0aW9uOjpzZXREdXJhdGlvbiwgJkFuaW1hdGlvbjo6aXNEdXJhdGlvblNl
dCwgJkFuaW1hdGlvbjo6Y2xlYXJEdXJhdGlvbiwgJkFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlv
bkR1cmF0aW9uLCAmQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRHVyYXRpb24sICZSZW5kZXJT
dHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZSZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVh
dGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zaXRpb25Qcm9wZXJ0eSwgQXBwbHlQcm9wZXJ0eUFuaW1hdGlvbjxDU1NQcm9wZXJ0eUlELCAm
QW5pbWF0aW9uOjpwcm9wZXJ0eSwgJkFuaW1hdGlvbjo6c2V0UHJvcGVydHksICZBbmltYXRpb246
OmlzUHJvcGVydHlTZXQsICZBbmltYXRpb246OmNsZWFyUHJvcGVydHksICZBbmltYXRpb246Omlu
aXRpYWxBbmltYXRpb25Qcm9wZXJ0eSwgJkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblByb3Bl
cnR5LCAmUmVuZGVyU3R5bGU6OmFjY2Vzc1RyYW5zaXRpb25zLCAmUmVuZGVyU3R5bGU6OnRyYW5z
aXRpb25zPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sIEFwcGx5UHJvcGVydHlBbmltYXRp
b248Y29uc3QgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4sICZBbmltYXRpb246OnRpbWluZ0Z1
bmN0aW9uLCAmQW5pbWF0aW9uOjpzZXRUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlvbjo6aXNUaW1p
bmdGdW5jdGlvblNldCwgJkFuaW1hdGlvbjo6Y2xlYXJUaW1pbmdGdW5jdGlvbiwgJkFuaW1hdGlv
bjo6aW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLCAmQ1NTVG9TdHlsZU1hcDo6bWFwQW5p
bWF0aW9uVGltaW5nRnVuY3Rpb24sICZSZW5kZXJTdHlsZTo6YWNjZXNzVHJhbnNpdGlvbnMsICZS
ZW5kZXJTdHlsZTo6dHJhbnNpdGlvbnM+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnLCBBcHBseVByb3BlcnR5RGVmYXVs
dDxFVXNlckRyYWcsICZSZW5kZXJTdHlsZTo6dXNlckRyYWcsIEVVc2VyRHJhZywgJlJlbmRlclN0
eWxlOjpzZXRVc2VyRHJhZywgRVVzZXJEcmFnLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxVc2VyRHJh
Zz46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0VXNlck1vZGlmeSwgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8RVVzZXJNb2RpZnksICZSZW5k
ZXJTdHlsZTo6dXNlck1vZGlmeSwgRVVzZXJNb2RpZnksICZSZW5kZXJTdHlsZTo6c2V0VXNlck1v
ZGlmeSwgRVVzZXJNb2RpZnksICZSZW5kZXJTdHlsZTo6aW5pdGlhbFVzZXJNb2RpZnk+OjpjcmVh
dGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFVz
ZXJTZWxlY3QsIEFwcGx5UHJvcGVydHlEZWZhdWx0PEVVc2VyU2VsZWN0LCAmUmVuZGVyU3R5bGU6
OnVzZXJTZWxlY3QsIEVVc2VyU2VsZWN0LCAmUmVuZGVyU3R5bGU6OnNldFVzZXJTZWxlY3QsIEVV
c2VyU2VsZWN0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxVc2VyU2VsZWN0Pjo6Y3JlYXRlSGFuZGxl
cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAyNTIyOThmYzUzNmEw
YzcxNjhkOTlkODlmMWI4YmFhZTI5NWU5ZmU0Li41NWRiZmU5ZmM2MjdkNmQwM2RjMTcyZmI5ZjQw
MzZmMGRiYjNiM2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC04LDYg
KzgsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5
cmlnaHQgKGMpIDIwMTEsIENvZGUgQXVyb3JhIEZvcnVtLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM3NCw2ICszNzUsNyBAQCBTdHls
ZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBtYXRjaEF1
dGhvckFuZFVzZXJTdHlsZXMpCiAgICAgLCBtX3Njb3BlU3RhY2tQYXJlbnQoMCkKICAgICAsIG1f
c2NvcGVTdGFja1BhcmVudEJvdW5kc0luZGV4KDApCiAjZW5kaWYKKyAgICAsIG1fc3R5bGVNYXAo
dGhpcykKIHsKICAgICBFbGVtZW50KiByb290ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgp
OwogCkBAIC0zNzQwLDcgKzM3NDIsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgICAgICAgICAgcmVmbGVj
dGlvbi0+c2V0T2Zmc2V0KHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmNvbnZlcnRUb0xlbmd0aDxG
aXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29u
dmVyc2lvbj4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSk7CiAgICAg
ICAgIE5pbmVQaWVjZUltYWdlIG1hc2s7CiAgICAgICAgIG1hc2suc2V0TWFza0RlZmF1bHRzKCk7
Ci0gICAgICAgIG1hcE5pbmVQaWVjZUltYWdlKGlkLCByZWZsZWN0VmFsdWUtPm1hc2soKSwgbWFz
ayk7CisgICAgICAgIG1fc3R5bGVNYXAubWFwTmluZVBpZWNlSW1hZ2UoaWQsIHJlZmxlY3RWYWx1
ZS0+bWFzaygpLCBtYXNrKTsKICAgICAgICAgcmVmbGVjdGlvbi0+c2V0TWFzayhtYXNrKTsKIAog
ICAgICAgICBtX3N0eWxlLT5zZXRCb3hSZWZsZWN0KHJlZmxlY3Rpb24ucmVsZWFzZSgpKTsKQEAg
LTQ0MjgsNzQgKzQ0MzAsNiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NT
UHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogICAgIH0KIH0KIAotdm9pZCBTdHlsZVJl
c29sdmVyOjptYXBGaWxsQXR0YWNobWVudChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVy
LCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7
Ci0gICAgICAgIGxheWVyLT5zZXRBdHRhY2htZW50KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxBdHRh
Y2htZW50KGxheWVyLT50eXBlKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
ICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSk7Ci0gICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkg
ewotICAgIGNhc2UgQ1NTVmFsdWVGaXhlZDoKLSAgICAgICAgbGF5ZXItPnNldEF0dGFjaG1lbnQo
Rml4ZWRCYWNrZ3JvdW5kQXR0YWNobWVudCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NT
VmFsdWVTY3JvbGw6Ci0gICAgICAgIGxheWVyLT5zZXRBdHRhY2htZW50KFNjcm9sbEJhY2tncm91
bmRBdHRhY2htZW50KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUxvY2FsOgot
ICAgICAgICBsYXllci0+c2V0QXR0YWNobWVudChMb2NhbEJhY2tncm91bmRBdHRhY2htZW50KTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0K
LQotdm9pZCBTdHlsZVJlc29sdmVyOjptYXBGaWxsQ2xpcChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5
ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxW
YWx1ZSgpKSB7Ci0gICAgICAgIGxheWVyLT5zZXRDbGlwKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxD
bGlwKGxheWVyLT50eXBlKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICgh
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7Ci0gICAgbGF5ZXItPnNldENsaXAoKnByaW1pdGl2ZVZhbHVlKTsKLX0KLQot
dm9pZCBTdHlsZVJlc29sdmVyOjptYXBGaWxsQ29tcG9zaXRlKENTU1Byb3BlcnR5SUQsIEZpbGxM
YXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlh
bFZhbHVlKCkpIHsKLSAgICAgICAgbGF5ZXItPnNldENvbXBvc2l0ZShGaWxsTGF5ZXI6OmluaXRp
YWxGaWxsQ29tcG9zaXRlKGxheWVyLT50eXBlKCkpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgbGF5ZXItPnNldENvbXBvc2l0ZSgqcHJpbWl0
aXZlVmFsdWUpOwotfQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxPcmlnaW4oQ1NTUHJv
cGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2
YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBsYXllci0+c2V0T3JpZ2luKEZpbGxM
YXllcjo6aW5pdGlhbEZpbGxPcmlnaW4obGF5ZXItPnR5cGUoKSkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBsYXllci0+c2V0T3JpZ2luKCpw
cmltaXRpdmVWYWx1ZSk7Ci19Ci0KIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gU3R5bGVSZXNvbHZl
cjo6c3R5bGVJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NWYWx1ZSogdmFsdWUpCiB7
CiAgICAgaWYgKHZhbHVlLT5pc0ltYWdlVmFsdWUoKSkKQEAgLTQ1MzksNTMyICs0NDczLDYgQEAg
UGFzc1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpzZXRPclBlbmRpbmdGcm9tVmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wZXIKIH0KICNlbmRpZgogCi12b2lkIFN0eWxlUmVzb2x2ZXI6
Om1hcEZpbGxJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBGaWxsTGF5ZXIqIGxheWVyLCBD
U1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7Ci0g
ICAgICAgIGxheWVyLT5zZXRJbWFnZShGaWxsTGF5ZXI6OmluaXRpYWxGaWxsSW1hZ2UobGF5ZXIt
PnR5cGUoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbGF5ZXItPnNldEltYWdl
KHN0eWxlSW1hZ2UocHJvcGVydHksIHZhbHVlKSk7Ci19Ci0KLXZvaWQgU3R5bGVSZXNvbHZlcjo6
bWFwRmlsbFJlcGVhdFgoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUq
IHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBs
YXllci0+c2V0UmVwZWF0WChGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WChsYXllci0+dHlw
ZSgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwot
ICAgIGxheWVyLT5zZXRSZXBlYXRYKCpwcmltaXRpdmVWYWx1ZSk7Ci19Ci0KLXZvaWQgU3R5bGVS
ZXNvbHZlcjo6bWFwRmlsbFJlcGVhdFkoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwg
Q1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewot
ICAgICAgICBsYXllci0+c2V0UmVwZWF0WShGaWxsTGF5ZXI6OmluaXRpYWxGaWxsUmVwZWF0WShs
YXllci0+dHlwZSgpKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOwotICAgIGxheWVyLT5zZXRSZXBlYXRZKCpwcmltaXRpdmVWYWx1ZSk7Ci19Ci0KLXZv
aWQgU3R5bGVSZXNvbHZlcjo6bWFwRmlsbFNpemUoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBs
YXllciwgQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkgewotICAgICAgICBsYXllci0+c2V0U2l6ZVR5cGUoU2l6ZU5vbmUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQ29udGFpbikKLSAgICAgICAgbGF5ZXItPnNl
dFNpemVUeXBlKENvbnRhaW4pOwotICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVu
dCgpID09IENTU1ZhbHVlQ292ZXIpCi0gICAgICAgIGxheWVyLT5zZXRTaXplVHlwZShDb3Zlcik7
Ci0gICAgZWxzZQotICAgICAgICBsYXllci0+c2V0U2l6ZVR5cGUoU2l6ZUxlbmd0aCk7Ci0KLSAg
ICBMZW5ndGhTaXplIGIgPSBGaWxsTGF5ZXI6OmluaXRpYWxGaWxsU2l6ZUxlbmd0aChsYXllci0+
dHlwZSgpKTsKLQotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSB8fCBwcmltaXRpdmVW
YWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUNvbnRhaW4gfHwgcHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkgPT0gQ1NTVmFsdWVDb3ZlcikgewotICAgICAgICBsYXllci0+c2V0U2l6ZUxlbmd0
aChiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGZsb2F0IHpvb21GYWN0b3IgPSBt
X3N0eWxlLT5lZmZlY3RpdmVab29tKCk7Ci0KLSAgICBMZW5ndGggZmlyc3RMZW5ndGg7Ci0gICAg
TGVuZ3RoIHNlY29uZExlbmd0aDsKLQotICAgIGlmIChQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFs
dWUtPmdldFBhaXJWYWx1ZSgpKSB7Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmaXJzdCA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+Zmlyc3QoKSk7Ci0gICAgICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmQgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHBhaXItPnNlY29uZCgpKTsKLSAgICAgICAgZmlyc3RMZW5ndGggPSBmaXJzdC0+Y29udmVy
dFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9v
bUZhY3Rvcik7Ci0gICAgICAgIHNlY29uZExlbmd0aCA9IHNlY29uZC0+Y29udmVydFRvTGVuZ3Ro
PEFueUNvbnZlcnNpb24+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZmlyc3RMZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+Y29u
dmVydFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwg
em9vbUZhY3Rvcik7Ci0gICAgICAgIHNlY29uZExlbmd0aCA9IExlbmd0aCgpOwotICAgIH0KLQot
ICAgIGlmIChmaXJzdExlbmd0aC5pc1VuZGVmaW5lZCgpIHx8IHNlY29uZExlbmd0aC5pc1VuZGVm
aW5lZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBiLnNldFdpZHRoKGZpcnN0TGVuZ3RoKTsK
LSAgICBiLnNldEhlaWdodChzZWNvbmRMZW5ndGgpOwotICAgIGxheWVyLT5zZXRTaXplTGVuZ3Ro
KGIpOwotfQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEZpbGxYUG9zaXRpb24oQ1NTUHJvcGVy
dHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1
ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBsYXllci0+c2V0WFBvc2l0aW9uKEZpbGxM
YXllcjo6aW5pdGlhbEZpbGxYUG9zaXRpb24obGF5ZXItPnR5cGUoKSkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBmbG9hdCB6b29tRmFjdG9yID0gbV9zdHlsZS0+ZWZmZWN0aXZlWm9v
bSgpOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgTGVuZ3RoIGxlbmd0aDsKLSAgICBp
ZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkpCi0gICAgICAgIGxlbmd0aCA9IHByaW1pdGl2
ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxl
LCB6b29tRmFjdG9yKTsKLSAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50YWdl
KCkpCi0gICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFs
dWUoKSwgUGVyY2VudCk7Ci0gICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzQ2FsY3VsYXRl
ZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCi0gICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRp
dmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPnRvQ2FsY1ZhbHVlKHN0eWxlKCksIG1fcm9vdEVsZW1l
bnRTdHlsZSwgem9vbUZhY3RvcikpOwotICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1Zp
ZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpKQotICAgICAgICBsZW5ndGggPSBwcmltaXRpdmVWYWx1
ZS0+dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm47
Ci0gICAgbGF5ZXItPnNldFhQb3NpdGlvbihsZW5ndGgpOwotfQotCi12b2lkIFN0eWxlUmVzb2x2
ZXI6Om1hcEZpbGxZUG9zaXRpb24oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiBsYXllciwgQ1NT
VmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAg
ICAgICBsYXllci0+c2V0WVBvc2l0aW9uKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxZUG9zaXRpb24o
bGF5ZXItPnR5cGUoKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCF2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9hdCB6b29t
RmFjdG9yID0gbV9zdHlsZS0+ZWZmZWN0aXZlWm9vbSgpOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1
ZSk7Ci0gICAgTGVuZ3RoIGxlbmd0aDsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3Ro
KCkpCi0gICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0
aD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICBlbHNlIGlm
IChwcmltaXRpdmVWYWx1ZS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGxlbmd0aCA9IExlbmd0
aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgZWxzZSBp
ZiAocHJpbWl0aXZlVmFsdWUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCi0g
ICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPnRv
Q2FsY1ZhbHVlKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikpOwotICAg
IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpKQot
ICAgICAgICBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS0+dmlld3BvcnRQZXJjZW50YWdlTGVuZ3Ro
KCk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm47Ci0gICAgbGF5ZXItPnNldFlQb3NpdGlvbihs
ZW5ndGgpOwotfQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvbkRlbGF5KEFuaW1h
dGlvbiogYW5pbWF0aW9uLCBDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLT5pc0lu
aXRpYWxWYWx1ZSgpKSB7Ci0gICAgICAgIGFuaW1hdGlvbi0+c2V0RGVsYXkoQW5pbWF0aW9uOjpp
bml0aWFsQW5pbWF0aW9uRGVsYXkoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpOwotICAgIGFuaW1hdGlvbi0+c2V0RGVsYXkocHJpbWl0aXZlVmFsdWUt
PmNvbXB1dGVUaW1lPGZsb2F0LCBDU1NQcmltaXRpdmVWYWx1ZTo6U2Vjb25kcz4oKSk7Ci19Ci0K
LXZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uRGlyZWN0aW9uKEFuaW1hdGlvbiogbGF5
ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkp
IHsKLSAgICAgICAgbGF5ZXItPnNldERpcmVjdGlvbihBbmltYXRpb246OmluaXRpYWxBbmltYXRp
b25EaXJlY3Rpb24oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpOwotICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICBj
YXNlIENTU1ZhbHVlTm9ybWFsOgotICAgICAgICBsYXllci0+c2V0RGlyZWN0aW9uKEFuaW1hdGlv
bjo6QW5pbWF0aW9uRGlyZWN0aW9uTm9ybWFsKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NWYWx1ZUFsdGVybmF0ZToKLSAgICAgICAgbGF5ZXItPnNldERpcmVjdGlvbihBbmltYXRpb246
OkFuaW1hdGlvbkRpcmVjdGlvbkFsdGVybmF0ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q1NTVmFsdWVSZXZlcnNlOgotICAgICAgICBsYXllci0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6
QW5pbWF0aW9uRGlyZWN0aW9uUmV2ZXJzZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NT
VmFsdWVBbHRlcm5hdGVSZXZlcnNlOgotICAgICAgICBsYXllci0+c2V0RGlyZWN0aW9uKEFuaW1h
dGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uQWx0ZXJuYXRlUmV2ZXJzZSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLX0KLQotdm9pZCBTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25EdXJhdGlvbihB
bmltYXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+
aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKEFuaW1h
dGlvbjo6aW5pdGlhbEFuaW1hdGlvbkR1cmF0aW9uKCkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKHBy
aW1pdGl2ZVZhbHVlLT5jb21wdXRlVGltZTxmbG9hdCwgQ1NTUHJpbWl0aXZlVmFsdWU6OlNlY29u
ZHM+KCkpOwotfQotCi12b2lkIFN0eWxlUmVzb2x2ZXI6Om1hcEFuaW1hdGlvbkZpbGxNb2RlKEFu
aW1hdGlvbiogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzSW5p
dGlhbFZhbHVlKCkpIHsKLSAgICAgICAgbGF5ZXItPnNldEZpbGxNb2RlKEFuaW1hdGlvbjo6aW5p
dGlhbEFuaW1hdGlvbkZpbGxNb2RlKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBD
U1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgp
KSB7Ci0gICAgY2FzZSBDU1NWYWx1ZU5vbmU6Ci0gICAgICAgIGxheWVyLT5zZXRGaWxsTW9kZShB
bmltYXRpb25GaWxsTW9kZU5vbmUpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVl
Rm9yd2FyZHM6Ci0gICAgICAgIGxheWVyLT5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZUZv
cndhcmRzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUJhY2t3YXJkczoKLSAg
ICAgICAgbGF5ZXItPnNldEZpbGxNb2RlKEFuaW1hdGlvbkZpbGxNb2RlQmFja3dhcmRzKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUJvdGg6Ci0gICAgICAgIGxheWVyLT5zZXRG
aWxsTW9kZShBbmltYXRpb25GaWxsTW9kZUJvdGgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19
Ci0KLXZvaWQgU3R5bGVSZXNvbHZlcjo6bWFwQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoQW5pbWF0
aW9uKiBhbmltYXRpb24sIENTU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzSW5p
dGlhbFZhbHVlKCkpIHsKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRJdGVyYXRpb25Db3VudChBbmlt
YXRpb246OmluaXRpYWxBbmltYXRpb25JdGVyYXRpb25Db3VudCgpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW5maW5pdGUpCi0gICAgICAgIGFuaW1hdGlvbi0+c2V0
SXRlcmF0aW9uQ291bnQoLTEpOwotICAgIGVsc2UKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRJdGVy
YXRpb25Db3VudChwcmltaXRpdmVWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpKTsKLX0KLQotdm9pZCBT
dHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25OYW1lKEFuaW1hdGlvbiogbGF5ZXIsIENTU1ZhbHVl
KiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKLSAgICAgICAg
bGF5ZXItPnNldE5hbWUoQW5pbWF0aW9uOjppbml0aWFsQW5pbWF0aW9uTmFtZSgpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlTm9uZSkKLSAgICAgICAgbGF5ZXItPnNl
dElzTm9uZUFuaW1hdGlvbih0cnVlKTsKLSAgICBlbHNlCi0gICAgICAgIGxheWVyLT5zZXROYW1l
KHByaW1pdGl2ZVZhbHVlLT5nZXRTdHJpbmdWYWx1ZSgpKTsKLX0KLQotdm9pZCBTdHlsZVJlc29s
dmVyOjptYXBBbmltYXRpb25QbGF5U3RhdGUoQW5pbWF0aW9uKiBsYXllciwgQ1NTVmFsdWUqIHZh
bHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSkgewotICAgICAgICBsYXll
ci0+c2V0UGxheVN0YXRlKEFuaW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblBsYXlTdGF0ZSgpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2
ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgRUFu
aW1QbGF5U3RhdGUgcGxheVN0YXRlID0gKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENT
U1ZhbHVlUGF1c2VkKSA/IEFuaW1QbGF5U3RhdGVQYXVzZWQgOiBBbmltUGxheVN0YXRlUGxheWlu
ZzsKLSAgICBsYXllci0+c2V0UGxheVN0YXRlKHBsYXlTdGF0ZSk7Ci19Ci0KLXZvaWQgU3R5bGVS
ZXNvbHZlcjo6bWFwQW5pbWF0aW9uUHJvcGVydHkoQW5pbWF0aW9uKiBhbmltYXRpb24sIENTU1Zh
bHVlKiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUtPmlzSW5pdGlhbFZhbHVlKCkpIHsKLSAgICAg
ICAgYW5pbWF0aW9uLT5zZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0ZUFsbCk7Ci0g
ICAgICAgIGFuaW1hdGlvbi0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJbnZhbGlkKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQWxsKSB7Ci0gICAgICAgIGFuaW1hdGlv
bi0+c2V0QW5pbWF0aW9uTW9kZShBbmltYXRpb246OkFuaW1hdGVBbGwpOwotICAgICAgICBhbmlt
YXRpb24tPnNldFByb3BlcnR5KENTU1Byb3BlcnR5SW52YWxpZCk7Ci0gICAgfSBlbHNlIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKLSAgICAgICAgYW5p
bWF0aW9uLT5zZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0ZU5vbmUpOwotICAgICAg
ICBhbmltYXRpb24tPnNldFByb3BlcnR5KENTU1Byb3BlcnR5SW52YWxpZCk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0
ZVNpbmdsZVByb3BlcnR5KTsKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRQcm9wZXJ0eShzdGF0aWNf
Y2FzdDxDU1NQcm9wZXJ0eUlEPihwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkpOwotICAgIH0K
LX0KLQotdm9pZCBTdHlsZVJlc29sdmVyOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbihBbmlt
YXRpb24qIGFuaW1hdGlvbiwgQ1NTVmFsdWUqIHZhbHVlKQotewotICAgIGlmICh2YWx1ZS0+aXNJ
bml0aWFsVmFsdWUoKSkgewotICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEFu
aW1hdGlvbjo6aW5pdGlhbEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdl
dElkZW50KCkpIHsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZUxpbmVhcjoKLSAgICAgICAgICAgIGFu
aW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oTGluZWFyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgp
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlRWFzZToKLSAgICAg
ICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5j
dGlvbjo6Y3JlYXRlKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFs
dWVFYXNlSW46Ci0gICAgICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgwLjQyLCAwLjAsIDEuMCwgMS4wKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZUVhc2VPdXQ6Ci0gICAgICAgICAg
ICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246
OmNyZWF0ZSgwLjAsIDAuMCwgMC41OCwgMS4wKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBDU1NWYWx1ZUVhc2VJbk91dDoKLSAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGlt
aW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKDAuNDIsIDAuMCwg
MC41OCwgMS4wKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZVN0
ZXBTdGFydDoKLSAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGltaW5nRnVuY3Rpb24oU3RlcHNU
aW1pbmdGdW5jdGlvbjo6Y3JlYXRlKDEsIHRydWUpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIENTU1ZhbHVlU3RlcEVuZDoKLSAgICAgICAgICAgIGFuaW1hdGlvbi0+c2V0VGlt
aW5nRnVuY3Rpb24oU3RlcHNUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKDEsIGZhbHNlKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKHZhbHVlLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSgpKSB7Ci0gICAgICAg
IENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSogY3ViaWNUaW1pbmdGdW5jdGlvbiA9
IHN0YXRpY19jYXN0PENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSo+KHZhbHVlKTsK
LSAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1pbmdGdW5jdGlvbihDdWJpY0JlemllclRpbWluZ0Z1
bmN0aW9uOjpjcmVhdGUoY3ViaWNUaW1pbmdGdW5jdGlvbi0+eDEoKSwgY3ViaWNUaW1pbmdGdW5j
dGlvbi0+eTEoKSwgY3ViaWNUaW1pbmdGdW5jdGlvbi0+eDIoKSwgY3ViaWNUaW1pbmdGdW5jdGlv
bi0+eTIoKSkpOwotICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzU3RlcHNUaW1pbmdGdW5jdGlvblZh
bHVlKCkpIHsKLSAgICAgICAgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKiBzdGVwc1RpbWlu
Z0Z1bmN0aW9uID0gc3RhdGljX2Nhc3Q8Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKj4odmFs
dWUpOwotICAgICAgICBhbmltYXRpb24tPnNldFRpbWluZ0Z1bmN0aW9uKFN0ZXBzVGltaW5nRnVu
Y3Rpb246OmNyZWF0ZShzdGVwc1RpbWluZ0Z1bmN0aW9uLT5udW1iZXJPZlN0ZXBzKCksIHN0ZXBz
VGltaW5nRnVuY3Rpb24tPnN0ZXBBdFN0YXJ0KCkpKTsKLSAgICB9IGVsc2UgaWYgKHZhbHVlLT5p
c0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWUoKSkKLSAgICAgICAgYW5pbWF0aW9uLT5zZXRUaW1p
bmdGdW5jdGlvbihMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCkpOwotfQotCi12b2lkIFN0
eWxlUmVzb2x2ZXI6Om1hcE5pbmVQaWVjZUltYWdlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENT
U1ZhbHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQotewotICAgIC8vIElmIHdlJ3Jl
IG5vdCBhIHZhbHVlIGxpc3QsIHRoZW4gd2UgYXJlICJub25lIiBhbmQgZG9uJ3QgbmVlZCB0byBh
bHRlciB0aGUgZW1wdHkgaW1hZ2UgYXQgYWxsLgotICAgIGlmICghdmFsdWUgfHwgIXZhbHVlLT5p
c1ZhbHVlTGlzdCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBSZXRyaWV2ZSB0aGUgYm9y
ZGVyIGltYWdlIHZhbHVlLgotICAgIENTU1ZhbHVlTGlzdCogYm9yZGVySW1hZ2UgPSBzdGF0aWNf
Y2FzdDxDU1NWYWx1ZUxpc3QqPih2YWx1ZSk7Ci0KLSAgICAvLyBTZXQgdGhlIGltYWdlICh0aGlz
IGtpY2tzIG9mZiB0aGUgbG9hZCkuCi0gICAgQ1NTUHJvcGVydHlJRCBpbWFnZVByb3BlcnR5Owot
ICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckltYWdlKQotICAgICAg
ICBpbWFnZVByb3BlcnR5ID0gQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZTsKLSAgICBlbHNl
IGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tCb3hJbWFnZSkKLSAgICAgICAg
aW1hZ2VQcm9wZXJ0eSA9IENTU1Byb3BlcnR5V2Via2l0TWFza0JveEltYWdlU291cmNlOwotICAg
IGVsc2UKLSAgICAgICAgaW1hZ2VQcm9wZXJ0eSA9IHByb3BlcnR5OwotCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMCA7IGkgPCBib3JkZXJJbWFnZS0+bGVuZ3RoKCkgOyArK2kpIHsKLSAgICAgICAg
Q1NTVmFsdWUqIGN1cnJlbnQgPSBib3JkZXJJbWFnZS0+aXRlbShpKTsKLQotICAgICAgICBpZiAo
Y3VycmVudC0+aXNJbWFnZVZhbHVlKCkgfHwgY3VycmVudC0+aXNJbWFnZUdlbmVyYXRvclZhbHVl
KCkKLSNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKLSAgICAgICAgICAgIHx8IGN1cnJlbnQtPmlz
SW1hZ2VTZXRWYWx1ZSgpCi0jZW5kaWYKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGltYWdl
LnNldEltYWdlKHN0eWxlSW1hZ2UoaW1hZ2VQcm9wZXJ0eSwgY3VycmVudCkpOwotICAgICAgICBl
bHNlIGlmIChjdXJyZW50LT5pc0JvcmRlckltYWdlU2xpY2VWYWx1ZSgpKQotICAgICAgICAgICAg
bWFwTmluZVBpZWNlSW1hZ2VTbGljZShjdXJyZW50LCBpbWFnZSk7Ci0gICAgICAgIGVsc2UgaWYg
KGN1cnJlbnQtPmlzVmFsdWVMaXN0KCkpIHsKLSAgICAgICAgICAgIENTU1ZhbHVlTGlzdCogc2xh
c2hMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4oY3VycmVudCk7Ci0gICAgICAgICAg
ICAvLyBNYXAgaW4gdGhlIGltYWdlIHNsaWNlcy4KLSAgICAgICAgICAgIGlmIChzbGFzaExpc3Qt
Pml0ZW0oMCkgJiYgc2xhc2hMaXN0LT5pdGVtKDApLT5pc0JvcmRlckltYWdlU2xpY2VWYWx1ZSgp
KQotICAgICAgICAgICAgICAgIG1hcE5pbmVQaWVjZUltYWdlU2xpY2Uoc2xhc2hMaXN0LT5pdGVt
KDApLCBpbWFnZSk7Ci0KLSAgICAgICAgICAgIC8vIE1hcCBpbiB0aGUgYm9yZGVyIHNsaWNlcy4K
LSAgICAgICAgICAgIGlmIChzbGFzaExpc3QtPml0ZW0oMSkpCi0gICAgICAgICAgICAgICAgaW1h
Z2Uuc2V0Qm9yZGVyU2xpY2VzKG1hcE5pbmVQaWVjZUltYWdlUXVhZChzbGFzaExpc3QtPml0ZW0o
MSkpKTsKLQotICAgICAgICAgICAgLy8gTWFwIGluIHRoZSBvdXRzZXQuCi0gICAgICAgICAgICBp
ZiAoc2xhc2hMaXN0LT5pdGVtKDIpKQotICAgICAgICAgICAgICAgIGltYWdlLnNldE91dHNldCht
YXBOaW5lUGllY2VJbWFnZVF1YWQoc2xhc2hMaXN0LT5pdGVtKDIpKSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoY3VycmVudC0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Ci0gICAgICAgICAgICAvLyBTZXQg
dGhlIGFwcHJvcHJpYXRlIHJ1bGVzIGZvciBzdHJldGNoL3JvdW5kL3JlcGVhdCBvZiB0aGUgc2xp
Y2VzLgotICAgICAgICAgICAgbWFwTmluZVBpZWNlSW1hZ2VSZXBlYXQoY3VycmVudCwgaW1hZ2Up
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVySW1hZ2UpIHsKLSAgICAgICAgLy8gV2UgaGF2ZSB0byBwcmVzZXJ2ZSB0aGUgbGVn
YWN5IGJlaGF2aW9yIG9mIC13ZWJraXQtYm9yZGVyLWltYWdlIGFuZCBtYWtlIHRoZSBib3JkZXIg
c2xpY2VzCi0gICAgICAgIC8vIGFsc28gc2V0IHRoZSBib3JkZXIgd2lkdGhzLiBXZSBkb24ndCBu
ZWVkIHRvIHdvcnJ5IGFib3V0IHBlcmNlbnRhZ2VzLCBzaW5jZSB3ZSBkb24ndCBldmVuIHN1cHBv
cnQKLSAgICAgICAgLy8gdGhvc2Ugb24gcmVhbCBib3JkZXJzIHlldC4KLSAgICAgICAgaWYgKGlt
YWdlLmJvcmRlclNsaWNlcygpLnRvcCgpLmlzRml4ZWQoKSkKLSAgICAgICAgICAgIHN0eWxlKCkt
PnNldEJvcmRlclRvcFdpZHRoKGltYWdlLmJvcmRlclNsaWNlcygpLnRvcCgpLnZhbHVlKCkpOwot
ICAgICAgICBpZiAoaW1hZ2UuYm9yZGVyU2xpY2VzKCkucmlnaHQoKS5pc0ZpeGVkKCkpCi0gICAg
ICAgICAgICBzdHlsZSgpLT5zZXRCb3JkZXJSaWdodFdpZHRoKGltYWdlLmJvcmRlclNsaWNlcygp
LnJpZ2h0KCkudmFsdWUoKSk7Ci0gICAgICAgIGlmIChpbWFnZS5ib3JkZXJTbGljZXMoKS5ib3R0
b20oKS5pc0ZpeGVkKCkpCi0gICAgICAgICAgICBzdHlsZSgpLT5zZXRCb3JkZXJCb3R0b21XaWR0
aChpbWFnZS5ib3JkZXJTbGljZXMoKS5ib3R0b20oKS52YWx1ZSgpKTsKLSAgICAgICAgaWYgKGlt
YWdlLmJvcmRlclNsaWNlcygpLmxlZnQoKS5pc0ZpeGVkKCkpCi0gICAgICAgICAgICBzdHlsZSgp
LT5zZXRCb3JkZXJMZWZ0V2lkdGgoaW1hZ2UuYm9yZGVyU2xpY2VzKCkubGVmdCgpLnZhbHVlKCkp
OwotICAgIH0KLX0KLQotdm9pZCBTdHlsZVJlc29sdmVyOjptYXBOaW5lUGllY2VJbWFnZVNsaWNl
KENTU1ZhbHVlKiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQotewotICAgIGlmICghdmFs
dWUgfHwgIXZhbHVlLT5pc0JvcmRlckltYWdlU2xpY2VWYWx1ZSgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAvLyBSZXRyaWV2ZSB0aGUgYm9yZGVyIGltYWdlIHZhbHVlLgotICAgIENTU0JvcmRl
ckltYWdlU2xpY2VWYWx1ZSogYm9yZGVySW1hZ2VTbGljZSA9IHN0YXRpY19jYXN0PENTU0JvcmRl
ckltYWdlU2xpY2VWYWx1ZSo+KHZhbHVlKTsKLQotICAgIC8vIFNldCB1cCBhIGxlbmd0aCBib3gg
dG8gcmVwcmVzZW50IG91ciBpbWFnZSBzbGljZXMuCi0gICAgTGVuZ3RoQm94IGJveDsKLSAgICBR
dWFkKiBzbGljZXMgPSBib3JkZXJJbWFnZVNsaWNlLT5zbGljZXMoKTsKLSAgICBpZiAoc2xpY2Vz
LT50b3AoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX3RvcCA9IExlbmd0aChzbGlj
ZXMtPnRvcCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICBlbHNlCi0gICAgICAg
IGJveC5tX3RvcCA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKLSAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+
aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5tX2JvdHRvbSA9IExlbmd0aChzbGljZXMtPmJv
dHRvbSgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICBlbHNlCi0gICAgICAgIGJv
eC5tX2JvdHRvbSA9IExlbmd0aCgoaW50KXNsaWNlcy0+Ym90dG9tKCktPmdldEZsb2F0VmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7Ci0gICAgaWYgKHNsaWNlcy0+
bGVmdCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGlj
ZXMtPmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgZWxzZQotICAgICAg
ICBib3gubV9sZWZ0ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXRJbnRWYWx1ZShDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKLSAgICBpZiAoc2xpY2VzLT5yaWdodCgp
LT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBMZW5ndGgoc2xpY2VzLT5y
aWdodCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKLSAgICBlbHNlCi0gICAgICAgIGJv
eC5tX3JpZ2h0ID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0SW50VmFsdWUoQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7Ci0gICAgaW1hZ2Uuc2V0SW1hZ2VTbGljZXMo
Ym94KTsKLQotICAgIC8vIFNldCBvdXIgZmlsbCBtb2RlLgotICAgIGltYWdlLnNldEZpbGwoYm9y
ZGVySW1hZ2VTbGljZS0+bV9maWxsKTsKLX0KLQotTGVuZ3RoQm94IFN0eWxlUmVzb2x2ZXI6Om1h
cE5pbmVQaWVjZUltYWdlUXVhZChDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgaWYgKCF2YWx1ZSB8
fCAhdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIExlbmd0aEJveCgp
OwotCi0gICAgLy8gR2V0IG91ciB6b29tIHZhbHVlLgotICAgIGZsb2F0IHpvb20gPSB1c2VTVkda
b29tUnVsZXMoKSA/IDEuMGYgOiBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCk7Ci0KLSAgICAvLyBS
ZXRyaWV2ZSB0aGUgcHJpbWl0aXZlIHZhbHVlLgotICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBib3Jk
ZXJXaWR0aHMgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLQotICAg
IC8vIFNldCB1cCBhIGxlbmd0aCBib3ggdG8gcmVwcmVzZW50IG91ciBpbWFnZSBzbGljZXMuCi0g
ICAgTGVuZ3RoQm94IGJveDsgLy8gRGVmYXVsdHMgdG8gJ2F1dG8nIHNvIHdlIGRvbid0IGhhdmUg
dG8gaGFuZGxlIHRoYXQgZXhwbGljaXRseSBiZWxvdy4KLSAgICBRdWFkKiBzbGljZXMgPSBib3Jk
ZXJXaWR0aHMtPmdldFF1YWRWYWx1ZSgpOwotICAgIGlmIChzbGljZXMtPnRvcCgpLT5pc051bWJl
cigpKQotICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50VmFs
dWUoKSwgUmVsYXRpdmUpOwotICAgIGVsc2UgaWYgKHNsaWNlcy0+dG9wKCktPmlzUGVyY2VudGFn
ZSgpKQotICAgICAgICBib3gubV90b3AgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91Ymxl
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7Ci0gICAg
ZWxzZSBpZiAoc2xpY2VzLT50b3AoKS0+Z2V0SWRlbnQoKSAhPSBDU1NWYWx1ZUF1dG8pCi0gICAg
ICAgIGJveC5tX3RvcCA9IHNsaWNlcy0+dG9wKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHls
ZSgpLCByb290RWxlbWVudFN0eWxlKCksIHpvb20pOwotCi0gICAgaWYgKHNsaWNlcy0+cmlnaHQo
KS0+aXNOdW1iZXIoKSkKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBMZW5ndGgoc2xpY2VzLT5yaWdo
dCgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7Ci0gICAgZWxzZSBpZiAoc2xpY2VzLT5yaWdo
dCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fcmlnaHQgPSBMZW5ndGgoc2xpY2Vz
LT5yaWdodCgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRB
R0UpLCBQZXJjZW50KTsKLSAgICBlbHNlIGlmIChzbGljZXMtPnJpZ2h0KCktPmdldElkZW50KCkg
IT0gQ1NTVmFsdWVBdXRvKQotICAgICAgICBib3gubV9yaWdodCA9IHNsaWNlcy0+cmlnaHQoKS0+
Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIHJvb3RFbGVtZW50U3R5bGUoKSwgem9vbSk7
Ci0KLSAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNOdW1iZXIoKSkKLSAgICAgICAgYm94Lm1f
Ym90dG9tID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldEludFZhbHVlKCksIFJlbGF0aXZl
KTsKLSAgICBlbHNlIGlmIChzbGljZXMtPmJvdHRvbSgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAg
ICAgYm94Lm1fYm90dG9tID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwotICAgIGVsc2Ug
aWYgKHNsaWNlcy0+Ym90dG9tKCktPmdldElkZW50KCkgIT0gQ1NTVmFsdWVBdXRvKQotICAgICAg
ICBib3gubV9ib3R0b20gPSBzbGljZXMtPmJvdHRvbSgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4o
c3R5bGUoKSwgcm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tKTsKLQotICAgIGlmIChzbGljZXMtPmxl
ZnQoKS0+aXNOdW1iZXIoKSkKLSAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMtPmxl
ZnQoKS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOwotICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVm
dCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lm1fbGVmdCA9IExlbmd0aChzbGljZXMt
PmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdF
KSwgUGVyY2VudCk7Ci0gICAgZWxzZSBpZiAoc2xpY2VzLT5sZWZ0KCktPmdldElkZW50KCkgIT0g
Q1NTVmFsdWVBdXRvKQotICAgICAgICBib3gubV9sZWZ0ID0gc2xpY2VzLT5sZWZ0KCktPmNvbXB1
dGVMZW5ndGg8TGVuZ3RoPihzdHlsZSgpLCByb290RWxlbWVudFN0eWxlKCksIHpvb20pOwotCi0g
ICAgcmV0dXJuIGJveDsKLX0KLQotdm9pZCBTdHlsZVJlc29sdmVyOjptYXBOaW5lUGllY2VJbWFn
ZVJlcGVhdChDU1NWYWx1ZSogdmFsdWUsIE5pbmVQaWVjZUltYWdlJiBpbWFnZSkKLXsKLSAgICBp
ZiAoIXZhbHVlIHx8ICF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFs
dWUtPmdldFBhaXJWYWx1ZSgpOwotICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAh
cGFpci0+c2Vjb25kKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGludCBmaXJzdElkZW50aWZp
ZXIgPSBwYWlyLT5maXJzdCgpLT5nZXRJZGVudCgpOwotICAgIGludCBzZWNvbmRJZGVudGlmaWVy
ID0gcGFpci0+c2Vjb25kKCktPmdldElkZW50KCk7Ci0KLSAgICBFTmluZVBpZWNlSW1hZ2VSdWxl
IGhvcml6b250YWxSdWxlOwotICAgIHN3aXRjaCAoZmlyc3RJZGVudGlmaWVyKSB7Ci0gICAgY2Fz
ZSBDU1NWYWx1ZVN0cmV0Y2g6Ci0gICAgICAgIGhvcml6b250YWxSdWxlID0gU3RyZXRjaEltYWdl
UnVsZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZVJvdW5kOgotICAgICAgICBo
b3Jpem9udGFsUnVsZSA9IFJvdW5kSW1hZ2VSdWxlOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU1ZhbHVlU3BhY2U6Ci0gICAgICAgIGhvcml6b250YWxSdWxlID0gU3BhY2VJbWFnZVJ1bGU7
Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6IC8vIENTU1ZhbHVlUmVwZWF0Ci0gICAgICAg
IGhvcml6b250YWxSdWxlID0gUmVwZWF0SW1hZ2VSdWxlOwotICAgICAgICBicmVhazsKLSAgICB9
Ci0gICAgaW1hZ2Uuc2V0SG9yaXpvbnRhbFJ1bGUoaG9yaXpvbnRhbFJ1bGUpOwotCi0gICAgRU5p
bmVQaWVjZUltYWdlUnVsZSB2ZXJ0aWNhbFJ1bGU7Ci0gICAgc3dpdGNoIChzZWNvbmRJZGVudGlm
aWVyKSB7Ci0gICAgY2FzZSBDU1NWYWx1ZVN0cmV0Y2g6Ci0gICAgICAgIHZlcnRpY2FsUnVsZSA9
IFN0cmV0Y2hJbWFnZVJ1bGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVSb3Vu
ZDoKLSAgICAgICAgdmVydGljYWxSdWxlID0gUm91bmRJbWFnZVJ1bGU7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTVmFsdWVTcGFjZToKLSAgICAgICAgdmVydGljYWxSdWxlID0gU3BhY2VJ
bWFnZVJ1bGU7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6IC8vIENTU1ZhbHVlUmVwZWF0
Ci0gICAgICAgIHZlcnRpY2FsUnVsZSA9IFJlcGVhdEltYWdlUnVsZTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIGltYWdlLnNldFZlcnRpY2FsUnVsZSh2ZXJ0aWNhbFJ1bGUpOwotfQotCiB2
b2lkIFN0eWxlUmVzb2x2ZXI6OmNoZWNrRm9yVGV4dFNpemVBZGp1c3QoKQogewogICAgIGlmICht
X3N0eWxlLT50ZXh0U2l6ZUFkanVzdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5k
ZXggMjlmODAwZTBjNmVjNzA1MmUzNmZjMjU5YThiMjFjOThiNjViMDlkNi4uNDg0M2ViNTNhOTk5
ZjJhMGUzMjE0MTExYzk3NzgyMzJkNjlhMDRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5oCkBAIC0yMyw2ICsyMyw3IEBACiAjZGVmaW5lIFN0eWxlUmVzb2x2ZXJfaAogCiAjaW5jbHVk
ZSAiQ1NTUnVsZS5oIgorI2luY2x1ZGUgIkNTU1RvU3R5bGVNYXAuaCIKICNpbmNsdWRlICJDU1NW
YWx1ZUxpc3QuaCIKICNpbmNsdWRlICJMaW5rSGFzaC5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlF
eHAuaCIKQEAgLTQxMSw2ICs0MTIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExlbmd0aCBjb252
ZXJ0VG9JbnRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0
eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSk7CiAgICAgc3RhdGljIExlbmd0
aCBjb252ZXJ0VG9GbG9hdExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSosIFJlbmRlclN0eWxlKiwg
UmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxKTsKIAorICAgIENT
U1RvU3R5bGVNYXAqIHN0eWxlTWFwKCkgeyByZXR1cm4gJm1fc3R5bGVNYXA7IH0KKyAgICAKIHBy
aXZhdGU6CiAgICAgc3RhdGljIFJlbmRlclN0eWxlKiBzX3N0eWxlTm90WWV0QXZhaWxhYmxlOwog
CkBAIC00MTksMzIgKzQyMiw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNhY2hlQm9yZGVyQW5k
QmFja2dyb3VuZCgpOwogCi0gICAgdm9pZCBtYXBGaWxsQXR0YWNobWVudChDU1NQcm9wZXJ0eUlE
LCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwRmlsbENsaXAoQ1NTUHJvcGVy
dHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKLSAgICB2b2lkIG1hcEZpbGxDb21wb3NpdGUo
Q1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKLSAgICB2b2lkIG1hcEZpbGxP
cmlnaW4oQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKLSAgICB2b2lkIG1h
cEZpbGxJbWFnZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwotICAgIHZv
aWQgbWFwRmlsbFJlcGVhdFgoQ1NTUHJvcGVydHlJRCwgRmlsbExheWVyKiwgQ1NTVmFsdWUqKTsK
LSAgICB2b2lkIG1hcEZpbGxSZXBlYXRZKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1Zh
bHVlKik7Ci0gICAgdm9pZCBtYXBGaWxsU2l6ZShDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBD
U1NWYWx1ZSopOwotICAgIHZvaWQgbWFwRmlsbFhQb3NpdGlvbihDU1NQcm9wZXJ0eUlELCBGaWxs
TGF5ZXIqLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwRmlsbFlQb3NpdGlvbihDU1NQcm9wZXJ0
eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwotCi0gICAgdm9pZCBtYXBBbmltYXRpb25EZWxh
eShBbmltYXRpb24qLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwQW5pbWF0aW9uRGlyZWN0aW9u
KEFuaW1hdGlvbiosIENTU1ZhbHVlKik7Ci0gICAgdm9pZCBtYXBBbmltYXRpb25EdXJhdGlvbihB
bmltYXRpb24qLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgbWFwQW5pbWF0aW9uRmlsbE1vZGUoQW5p
bWF0aW9uKiwgQ1NTVmFsdWUqKTsKLSAgICB2b2lkIG1hcEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
KEFuaW1hdGlvbiosIENTU1ZhbHVlKik7Ci0gICAgdm9pZCBtYXBBbmltYXRpb25OYW1lKEFuaW1h
dGlvbiosIENTU1ZhbHVlKik7Ci0gICAgdm9pZCBtYXBBbmltYXRpb25QbGF5U3RhdGUoQW5pbWF0
aW9uKiwgQ1NTVmFsdWUqKTsKLSAgICB2b2lkIG1hcEFuaW1hdGlvblByb3BlcnR5KEFuaW1hdGlv
biosIENTU1ZhbHVlKik7Ci0gICAgdm9pZCBtYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbihBbmlt
YXRpb24qLCBDU1NWYWx1ZSopOwotCi1wdWJsaWM6Ci0gICAgdm9pZCBtYXBOaW5lUGllY2VJbWFn
ZShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSosIE5pbmVQaWVjZUltYWdlJik7Ci0gICAgdm9pZCBt
YXBOaW5lUGllY2VJbWFnZVNsaWNlKENTU1ZhbHVlKiwgTmluZVBpZWNlSW1hZ2UmKTsKLSAgICBM
ZW5ndGhCb3ggbWFwTmluZVBpZWNlSW1hZ2VRdWFkKENTU1ZhbHVlKik7Ci0gICAgdm9pZCBtYXBO
aW5lUGllY2VJbWFnZVJlcGVhdChDU1NWYWx1ZSosIE5pbmVQaWVjZUltYWdlJik7CiBwcml2YXRl
OgogICAgIGJvb2wgY2FuU2hhcmVTdHlsZVdpdGhDb250cm9sKFN0eWxlZEVsZW1lbnQqKSBjb25z
dDsKIApAQCAtNTQ2LDYgKzUyMyw4IEBAIHByaXZhdGU6CiAgICAgaW50IG1fc2NvcGVTdGFja1Bh
cmVudEJvdW5kc0luZGV4OwogI2VuZGlmCiAKKyAgICBDU1NUb1N0eWxlTWFwIG1fc3R5bGVNYXA7
CisKICAgICBmcmllbmQgY2xhc3MgU3R5bGVCdWlsZGVyOwogICAgIGZyaWVuZCBib29sIG9wZXJh
dG9yPT0oY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmLCBjb25zdCBNYXRjaGVkUHJvcGVydGllcyYp
OwogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmLCBj
b25zdCBNYXRjaGVkUHJvcGVydGllcyYpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>