<?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>238333</bug_id>
          
          <creation_ts>2022-03-24 10:14:40 -0700</creation_ts>
          <short_desc>String&apos;s startsWith() / endsWith() / replace() should take in a StringView instead of a String</short_desc>
          <delta_ts>2022-03-24 17:15:18 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=238287</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=238355</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1854728</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 10:14:40 -0700</bug_when>
    <thetext>String&apos;s startsWith() / endsWith() should take in a StringView instead of a String, to avoid unnecessary String creation in many instances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854754</commentid>
    <comment_count>1</comment_count>
      <attachid>455655</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 10:57:08 -0700</bug_when>
    <thetext>Created attachment 455655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854795</commentid>
    <comment_count>2</comment_count>
      <attachid>455661</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 11:58:29 -0700</bug_when>
    <thetext>Created attachment 455661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854804</commentid>
    <comment_count>3</comment_count>
      <attachid>455664</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 12:20:18 -0700</bug_when>
    <thetext>Created attachment 455664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854807</commentid>
    <comment_count>4</comment_count>
      <attachid>455666</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 12:34:02 -0700</bug_when>
    <thetext>Created attachment 455666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854833</commentid>
    <comment_count>5</comment_count>
      <attachid>455666</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-24 13:41:33 -0700</bug_when>
    <thetext>Comment on attachment 455666
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854842</commentid>
    <comment_count>6</comment_count>
      <attachid>455666</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-24 14:02:47 -0700</bug_when>
    <thetext>Comment on attachment 455666
Patch

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

&gt; Source/WTF/wtf/text/StringImpl.h:459
&gt; -    WTF_EXPORT_PRIVATE Ref&lt;StringImpl&gt; replace(unsigned start, unsigned length, StringImpl*);
&gt; +    WTF_EXPORT_PRIVATE Ref&lt;StringImpl&gt; replace(unsigned start, unsigned length, StringView);

This improved interface precludes the possible optimization for cases where the start is 0 and length is &gt;= the existing length of the string, where we can just return the passed-in StringImpl*. Is that an important fast case anywhere?

&gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:1914
&gt; +    static const char angleWarning[] = &quot;WARNING: 0:1: extension &apos;GL_ARB_gpu_shader5&apos; is not supported\n&quot;;

When touching code like this I suggest considering constexpr.

&gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:1915
&gt; +    int startFrom = log.startsWith(angleWarning) ? sizeof(angleWarning) - 1 : 0;

I would probably use std::size instead of sizeof, but I’ve got to admit I am not in love with doing size - 1 for length. Is there some more elegant way to do it? We know that strlen would get const-folded, might even be guaranteed in modern versions of C++. But that’s not completely elegant I suppose.

&gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:1977
&gt; +    static const char angleWarning[] = &quot;WARNING: 0:1: extension &apos;GL_ARB_gpu_shader5&apos; is not supported\n&quot;;

Ditto.

&gt; Source/WebCore/platform/network/ParsedRequestRange.cpp:36
&gt; +    if (!input.startsWith(StringView(&quot;bytes=&quot;)))

I think we don’t need the explicit StringView here any more, right?

&gt; Source/WebKit/NetworkProcess/storage/LocalStorageManager.cpp:45
&gt; +    if (!fileName.endsWith(StringView { fileSuffix }))

Do we really need an explicit cast to StringView here? If so, why? What’s ambiguous here?

&gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:4451
&gt;  static bool matchesExtensionOrEquivalent(const String&amp; filename, const String&amp; extension)

Seems like these arguments could both be StringView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854848</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 14:09:32 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Comment on attachment 455666 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455666&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/text/StringImpl.h:459
&gt; &gt; -    WTF_EXPORT_PRIVATE Ref&lt;StringImpl&gt; replace(unsigned start, unsigned length, StringImpl*);
&gt; &gt; +    WTF_EXPORT_PRIVATE Ref&lt;StringImpl&gt; replace(unsigned start, unsigned length, StringView);
&gt; 
&gt; This improved interface precludes the possible optimization for cases where
&gt; the start is 0 and length is &gt;= the existing length of the string, where we
&gt; can just return the passed-in StringImpl*. Is that an important fast case
&gt; anywhere?

That&apos;s a very good point. I should have paid more attention. I may revert that part after some investigation.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:1914
&gt; &gt; +    static const char angleWarning[] = &quot;WARNING: 0:1: extension &apos;GL_ARB_gpu_shader5&apos; is not supported\n&quot;;
&gt; 
&gt; When touching code like this I suggest considering constexpr.

OK.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:1915
&gt; &gt; +    int startFrom = log.startsWith(angleWarning) ? sizeof(angleWarning) - 1 : 0;
&gt; 
&gt; I would probably use std::size instead of sizeof, but I’ve got to admit I am
&gt; not in love with doing size - 1 for length. Is there some more elegant way
&gt; to do it? We know that strlen would get const-folded, might even be
&gt; guaranteed in modern versions of C++. But that’s not completely elegant I
&gt; suppose.

I think I&apos;ll just use strlen(). It should get optimized out by the compiler anyway and it does look much nicer.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:1977
&gt; &gt; +    static const char angleWarning[] = &quot;WARNING: 0:1: extension &apos;GL_ARB_gpu_shader5&apos; is not supported\n&quot;;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/platform/network/ParsedRequestRange.cpp:36
&gt; &gt; +    if (!input.startsWith(StringView(&quot;bytes=&quot;)))
&gt; 
&gt; I think we don’t need the explicit StringView here any more, right?

Indeed.

&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/storage/LocalStorageManager.cpp:45
&gt; &gt; +    if (!fileName.endsWith(StringView { fileSuffix }))
&gt; 
&gt; Do we really need an explicit cast to StringView here? If so, why? What’s
&gt; ambiguous here?

The StringView(ASCIILiteral) constructor is explicit for some reason. It is not directly obvious to me why we want it to be explicit.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:4451
&gt; &gt;  static bool matchesExtensionOrEquivalent(const String&amp; filename, const String&amp; extension)
&gt; 
&gt; Seems like these arguments could both be StringView.

Will look into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854850</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 14:11:48 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; (In reply to Darin Adler from comment #6)
&gt; &gt; Comment on attachment 455666 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=455666&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/text/StringImpl.h:459
&gt; &gt; &gt; -    WTF_EXPORT_PRIVATE Ref&lt;StringImpl&gt; replace(unsigned start, unsigned length, StringImpl*);
&gt; &gt; &gt; +    WTF_EXPORT_PRIVATE Ref&lt;StringImpl&gt; replace(unsigned start, unsigned length, StringView);
&gt; &gt; 
&gt; &gt; This improved interface precludes the possible optimization for cases where
&gt; &gt; the start is 0 and length is &gt;= the existing length of the string, where we
&gt; &gt; can just return the passed-in StringImpl*. Is that an important fast case
&gt; &gt; anywhere?
&gt; 
&gt; That&apos;s a very good point. I should have paid more attention. I may revert
&gt; that part after some investigation.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:1914
&gt; &gt; &gt; +    static const char angleWarning[] = &quot;WARNING: 0:1: extension &apos;GL_ARB_gpu_shader5&apos; is not supported\n&quot;;
&gt; &gt; 
&gt; &gt; When touching code like this I suggest considering constexpr.
&gt; 
&gt; OK.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/angle/GraphicsContextGLANGLE.cpp:1915
&gt; &gt; &gt; +    int startFrom = log.startsWith(angleWarning) ? sizeof(angleWarning) - 1 : 0;
&gt; &gt; 
&gt; &gt; I would probably use std::size instead of sizeof, but I’ve got to admit I am
&gt; &gt; not in love with doing size - 1 for length. Is there some more elegant way
&gt; &gt; to do it? We know that strlen would get const-folded, might even be
&gt; &gt; guaranteed in modern versions of C++. But that’s not completely elegant I
&gt; &gt; suppose.
&gt; 
&gt; I think I&apos;ll just use strlen(). It should get optimized out by the compiler
&gt; anyway and it does look much nicer.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/opengl/GraphicsContextGLOpenGL.cpp:1977
&gt; &gt; &gt; +    static const char angleWarning[] = &quot;WARNING: 0:1: extension &apos;GL_ARB_gpu_shader5&apos; is not supported\n&quot;;
&gt; &gt; 
&gt; &gt; Ditto.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/network/ParsedRequestRange.cpp:36
&gt; &gt; &gt; +    if (!input.startsWith(StringView(&quot;bytes=&quot;)))
&gt; &gt; 
&gt; &gt; I think we don’t need the explicit StringView here any more, right?
&gt; 
&gt; Indeed.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/storage/LocalStorageManager.cpp:45
&gt; &gt; &gt; +    if (!fileName.endsWith(StringView { fileSuffix }))
&gt; &gt; 
&gt; &gt; Do we really need an explicit cast to StringView here? If so, why? What’s
&gt; &gt; ambiguous here?
&gt; 
&gt; The StringView(ASCIILiteral) constructor is explicit for some reason. It is
&gt; not directly obvious to me why we want it to be explicit.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm:4451
&gt; &gt; &gt;  static bool matchesExtensionOrEquivalent(const String&amp; filename, const String&amp; extension)
&gt; &gt; 
&gt; &gt; Seems like these arguments could both be StringView.
&gt; 
&gt; Will look into it.

There is a single call site and both parameters are of type `NSString *`. As a result, I would need to explicitly construct a String at the call site instead, which would not be obviously better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854852</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 14:17:45 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Comment on attachment 455666 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455666&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/text/StringImpl.h:459
&gt; &gt; -    WTF_EXPORT_PRIVATE Ref&lt;StringImpl&gt; replace(unsigned start, unsigned length, StringImpl*);
&gt; &gt; +    WTF_EXPORT_PRIVATE Ref&lt;StringImpl&gt; replace(unsigned start, unsigned length, StringView);
&gt; 
&gt; This improved interface precludes the possible optimization for cases where
&gt; the start is 0 and length is &gt;= the existing length of the string, where we
&gt; can just return the passed-in StringImpl*. Is that an important fast case
&gt; anywhere?

I looked at our implementation and there is no such optimization currently. Therefore, my change is not disabling an existing optimization at the very least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854855</commentid>
    <comment_count>10</comment_count>
      <attachid>455682</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 14:19:57 -0700</bug_when>
    <thetext>Created attachment 455682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854950</commentid>
    <comment_count>11</comment_count>
      <attachid>455682</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 17:14:14 -0700</bug_when>
    <thetext>Comment on attachment 455682
Patch

Clearing flags on attachment: 455682

Committed r291837 (248854@trunk): &lt;https://commits.webkit.org/248854@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854951</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 17:14:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854952</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-24 17:15:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/90806465&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455655</attachid>
            <date>2022-03-24 10:57:08 -0700</date>
            <delta_ts>2022-03-24 11:58:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238333-20220324105707.patch</filename>
            <type>text/plain</type>
            <size>46788</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YWE2NWE0N2JkOThlOGI5M2I1ZjQ1N2IzNjRmZDdjOWJhMTczNmI5Li44YjA2ZjEwMTFiZmE1MDY1
NDMzYThiY2JkYzYyY2QwZTQwZWU5MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMi0wMy0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFN0cmluZydzIHN0YXJ0c1dpdGgoKSAvIGVuZHNXaXRoKCkgLyByZXBsYWNlKCkg
c2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODMzMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9GaWxlQmFz
ZWRGdXp6ZXJBZ2VudC5jcHA6CisgICAgICAgIChKU0M6OkZpbGVCYXNlZEZ1enplckFnZW50Ojpn
ZXRQcmVkaWN0aW9uSW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OnNpbmd1bGFyVW5pdCk6CisgICAgICAgICogcnVu
dGltZS9UZW1wb3JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnNpbmd1bGFyVW5pdCk6CisK
IDIwMjItMDMtMjMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pT
Q10gRml4IHJlbW90ZUZ1bmN0aW9uQ2FsbEdlbmVyYXRvciBvbiBNSVBTCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDliYzMwYjhl
NmVjZDJkN2MzOWJjMjIwMDE1NzU5YmM0ODUyMWM3OWQuLjY4NWQ3YmJhMWI3MjZmMTJhYWE3NGNk
ZjFkNzVjMDY5ZWUxNTE3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjItMDMtMjQgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBzdGFydHNXaXRo
KCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBp
bnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzgzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTdHJpbmcncyBzdGFydHNXaXRoKCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgp
IHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nLAorICAgICAg
ICB0byBhdm9pZCB1bm5lY2Vzc2FyeSBTdHJpbmcgY3JlYXRpb24gaW4gbWFueSBpbnN0YW5jZXMu
CisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmg6CisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nQ29tbW9uLmg6CisgICAgICAgIChXVEY6OnN0YXJ0c1dpdGgpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UpOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjplbmRzV2l0aCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
OgorICAgICAgICAoV1RGOjplcXVhbElubmVyKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
c3RhcnRzV2l0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0YXJ0c1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Omhhc0lu
Zml4U3RhcnRpbmdBdCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmVuZHNXaXRo
KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSBj
b25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Omhhc0luZml4RW5kaW5nQXQgY29uc3Qp
OgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpyZXBsYWNlKToKKyAgICAgICAgKiB3dGYvdGV4
dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0YXJ0c1dpdGggY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjplbmRzV2l0aCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RG
OjpzdGFydHNXaXRoKToKKyAgICAgICAgKFdURjo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
KToKKyAgICAgICAgKFdURjo6ZW5kc1dpdGgpOgorICAgICAgICAoV1RGOjplbmRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAgICAgICAg
KFdURjo6U3RyaW5nOjpzdGFydHNXaXRoIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpz
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmc6
OmVuZHNXaXRoIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjplbmRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpoYXNJbmZpeFN0YXJ0aW5n
QXQgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmc6Omhhc0luZml4RW5kaW5nQXQgY29uc3Qp
OgorICAgICAgICAoV1RGOjpBdG9tU3RyaW5nOjpzdGFydHNXaXRoIGNvbnN0KToKKyAgICAgICAg
KFdURjo6QXRvbVN0cmluZzo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlIGNvbnN0KToKKyAg
ICAgICAgKFdURjo6QXRvbVN0cmluZzo6ZW5kc1dpdGggY29uc3QpOgorICAgICAgICAoV1RGOjpB
dG9tU3RyaW5nOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKiB3
dGYvdGV4dC9XVEZTdHJpbmcuaDoKKwogMjAyMi0wMy0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFN0cmluZydzIGZpbmQoKSAvIHJldmVyc2VGaW5kKCkgLyBy
ZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNDVlMjI5ZDQyMGJjYmFlM2EzZTEyOWEyOTMwZDI2YjliZjc2ZWEzLi44
NjNiNzBkZWYzOTdjMmRlNTFiYmZmYzg3YjkzY2NhYzU3Nzk4YzNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzQgQEAKKzIwMjItMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBTdHJpbmcncyBzdGFydHNXaXRoKCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgp
IHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgzMzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3Vs
ZElnbm9yZUljZUNhbmRpZGF0ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb2x2ZWRVUkw6OmlzTG9jYWxVUkwgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNv
bnNvbGVDbGllbnQ6OnNjcmVlbnNob3QpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2U6OnBhdGhNYXRjaGVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldFVubWFuZ2xlZEluZm9Mb2cpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRz
S2V5U3lzdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6c3VwcG9ydHNDb250YWluZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckdTdHJlYW1lcjo6Y2FuRGVjb2RlVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjaGVja1Zhcnlp
bmdzUGFja2luZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9QYXJzZWRSZXF1
ZXN0UmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkUmVxdWVzdFJhbmdlOjpwYXJz
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNoZWNrU2VjdXJlQ29va2llKToKKwogMjAyMi0wMy0yNCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0cmluZydzIGZpbmQoKSAvIHJl
dmVyc2VGaW5kKCkgLyByZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3Rl
YWQgb2YgYSBTdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBhNGM4MWI1MjQ1
N2Q5ODc1ZDI4MGY3NTBkMjU3MzVlZWU2NzBjNjhiLi4xYjA2MDNlNjA4NzY1NTg1NzFmNjFjZTNj
MzE1NDg3MWQ0MGQ1NGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjItMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBTdHJpbmcncyBzdGFydHNXaXRoKCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgpIHNob3Vs
ZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgzMzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6aGFuZGxlQWNjZXB0ZWRD
YW5kaWRhdGVXaXRoU29mdFNwYWNlcyk6CisKIDIwMjItMDMtMTggIEpvbmF0aGFuIEJlZGFyZCAg
PGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgMTUuNF0gRml4IHVudXNlZCB2YXJp
YWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNl
ZEZ1enplckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNl
ZEZ1enplckFnZW50LmNwcAppbmRleCAxYjAzMTMwZjBhNWMwN2MzMzVjYzU4NTY4M2JiNjQ1ZWU1
M2UwOGJmLi5lNjhhMTQ0MzJkYzViMTg2YTE5NWJhNmQzMjA0Y2ZhNzdhNjg3MTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdl
bnQuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFNwZWN1bGF0ZWRUeXBlIEZpbGVCYXNlZEZ1enplckFn
ZW50OjpnZXRQcmVkaWN0aW9uSW50ZXJuYWwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG9yaWdpbmFsOwogICAgICAgICAgICAgaWYgKHNvdXJjZUFmdGVyRGl2
b3QuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgieWllbGQiKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gb3JpZ2luYWw7Ci0gICAgICAgICAgICBpZiAoc291cmNlQWZ0ZXJEaXZvdC5zdGFydHNX
aXRoKCdbJykgJiYgc291cmNlQWZ0ZXJEaXZvdC5lbmRzV2l0aCgiXSIpKQorICAgICAgICAgICAg
aWYgKHNvdXJjZUFmdGVyRGl2b3Quc3RhcnRzV2l0aCgnWycpICYmIHNvdXJjZUFmdGVyRGl2b3Qu
ZW5kc1dpdGgoJ10nKSkKICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWw7CiAgICAgICAg
ICAgICBpZiAoc291cmNlVXBUb0Rpdm90LmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoInlpZWxk
IikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRl
eCA5NWM0M2FmNzdlNzc5OWMyZWFiMzNlNzRmZTBhMTMxYzUwYTU2NjZhLi4wMjJlZGNmYjdkMTU3
MzE2YjcwMTIzMjMzYjI2ZmRhNTkzMGVkZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMjAzLDcg
KzIwMyw3IEBAIEpTT2JqZWN0KiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpyZXNvbHZlZE9wdGlv
bnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHN0YXRpYyBTdHJpbmdWaWV3IHNpbmd1
bGFyVW5pdChTdHJpbmdWaWV3IHVuaXQpCiB7CiAgICAgLy8gUGx1cmFscyBhcmUgYWxsb3dlZCwg
YnV0IHRoYW5rZnVsbHkgdGhleSdyZSBhbGwganVzdCBhIHNpbXBsZSAtcy4KLSAgICByZXR1cm4g
dW5pdC5lbmRzV2l0aCgicyIpID8gdW5pdC5sZWZ0KHVuaXQubGVuZ3RoKCkgLSAxKSA6IHVuaXQ7
CisgICAgcmV0dXJuIHVuaXQuZW5kc1dpdGgoJ3MnKSA/IHVuaXQubGVmdCh1bml0Lmxlbmd0aCgp
IC0gMSkgOiB1bml0OwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLXNpbmd1
bGFycmVsYXRpdmV0aW1ldW5pdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IDY2YjhiOTY1YzllZjI5Y2UwNTVmZTNmOTE5NWZlNGNk
MmFkMzAyMjQuLmM5ZDMwNTJhMzQwNGRjNzJlYjk4YjEwMjAzYzFmZTAyYjhhNDA0ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKQEAg
LTE0NSw3ICsxNDUsNyBAQCB2b2lkIFRlbXBvcmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiBzdGF0aWMgU3RyaW5nVmlldyBzaW5ndWxhclVuaXQoU3RyaW5nVmlldyB1bml0KQogewog
ICAgIC8vIFBsdXJhbHMgYXJlIGFsbG93ZWQsIGJ1dCB0aGFua2Z1bGx5IHRoZXkncmUgYWxsIGp1
c3QgYSBzaW1wbGUgLXMuCi0gICAgcmV0dXJuIHVuaXQuZW5kc1dpdGgoInMiKSA/IHVuaXQubGVm
dCh1bml0Lmxlbmd0aCgpIC0gMSkgOiB1bml0OworICAgIHJldHVybiB1bml0LmVuZHNXaXRoKCdz
JykgPyB1bml0LmxlZnQodW5pdC5sZW5ndGgoKSAtIDEpIDogdW5pdDsKIH0KIAogLy8gRm9yIHVz
ZSBpbiBlcnJvciBtZXNzYWdlcyB3aGVyZSBhIHN0cmluZyB2YWx1ZSBpcyBwb3RlbnRpYWxseSB1
bmJvdW5kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKaW5kZXggYzY2YzhjNWM4MWNkZDBiNmJi
MzA1NjcyYjA4NTMxZGEwYTc3MmJiMi4uMTM2YWM2MjM2NzY5NDUzNTk4MjRlNjcyYzM3YzdjOGU5
ZDRmNzZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKQEAgLTEyNCwxNSArMTI0LDEzIEBA
IHB1YmxpYzoKICAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIHVu
c2lnbmVkIHN0YXJ0KSBjb25zdDsKICAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rp
b24gbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZy5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsgfQogCi0gICAgYm9vbCBzdGFydHNXaXRo
KGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRo
KHN0cmluZyk7IH0KLSAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBT
dHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlKHN0cmluZyk7IH0KKyAgICBib29sIHN0YXJ0c1dpdGgoU3RyaW5nVmlldykgY29u
c3Q7CisgICAgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29u
c3Q7CiAgICAgYm9vbCBzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcuc3RhcnRzV2l0aChjaGFyYWN0ZXIpOyB9Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQg
bWF0Y2hMZW5ndGg+IGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExl
bmd0aF0pIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHBy
ZWZpeCk7IH0KIAotICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKHN0cmluZyk7IH0KLSAgICBib29sIGVuZHNXaXRo
SWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsgfQorICAgIGJvb2wgZW5k
c1dpdGgoU3RyaW5nVmlldykgY29uc3Q7CisgICAgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlD
YXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogICAgIGJvb2wgZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVy
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChjaGFyYWN0ZXIpOyB9Ci0gICAgdGVt
cGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhciAoJnBy
ZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aDxtYXRj
aExlbmd0aD4ocHJlZml4KTsgfQogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21TdHJpbmcg
Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
QXRvbVN0cmluZyBjb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQ29tbW9uLmgKaW5kZXggZGE3OTM5ZWYzZGE3YWNlNmUwNjNlODE5NTgwZjAwMzk0ZTRi
NmFkMS4uYzc3MGUwNDVkMjBjY2UyMzNiZTA4ZjBkYjliZTZiZDgzNjhhZWVjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCkBAIC0zODEsODAgKzM4MSw2IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFN0cmluZ0NsYXNzQT4gYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKGNvbnN0
IFN0cmluZ0NsCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYS5jaGFyYWN0ZXJz
MTYoKSwgYiwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3NBLCB0
eXBlbmFtZSBTdHJpbmdDbGFzc0I+Ci1ib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nQ2xhc3NB
JiByZWZlcmVuY2UsIGNvbnN0IFN0cmluZ0NsYXNzQiYgcHJlZml4KQotewotICAgIHVuc2lnbmVk
IHByZWZpeExlbmd0aCA9IHByZWZpeC5sZW5ndGgoKTsKLSAgICBpZiAocHJlZml4TGVuZ3RoID4g
cmVmZXJlbmNlLmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAocmVm
ZXJlbmNlLmlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChwcmVmaXguaXM4Qml0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNoYXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0
ZXJzOCgpLCBwcmVmaXhMZW5ndGgpOwotICAgICAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNo
YXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4TGVuZ3RoKTsKLSAgICB9
Ci0gICAgaWYgKHByZWZpeC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5j
ZS5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3RlcnM4KCksIHByZWZpeExlbmd0aCk7Ci0g
ICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3Rl
cnMxNigpLCBwcmVmaXhMZW5ndGgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFz
c0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4KLWJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlD
YXNlKGNvbnN0IFN0cmluZ0NsYXNzQSYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmdDbGFzc0ImIHBy
ZWZpeCkKLXsKLSAgICB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSBwcmVmaXgubGVuZ3RoKCk7Ci0g
ICAgaWYgKHByZWZpeExlbmd0aCA+IHJlZmVyZW5jZS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKHJlZmVyZW5jZS5pczhCaXQoKSkgewotICAgICAgICBpZiAocHJl
Zml4LmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
cmVmZXJlbmNlLmNoYXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhMZW5n
dGgpOwotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2UuY2hh
cmFjdGVyczgoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOwotICAgIH0K
LSAgICBpZiAocHJlZml4LmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShyZWZlcmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBw
cmVmaXhMZW5ndGgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5j
ZS5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNz
Qj4KLWJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nQ2xhc3NBJiByZWZlcmVuY2UsIGNvbnN0IFN0
cmluZ0NsYXNzQiYgc3VmZml4KQotewotICAgIHVuc2lnbmVkIHN1ZmZpeExlbmd0aCA9IHN1ZmZp
eC5sZW5ndGgoKTsKLSAgICB1bnNpZ25lZCByZWZlcmVuY2VMZW5ndGggPSByZWZlcmVuY2UubGVu
Z3RoKCk7Ci0gICAgaWYgKHN1ZmZpeExlbmd0aCA+IHJlZmVyZW5jZUxlbmd0aCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSByZWZlcmVuY2VMZW5n
dGggLSBzdWZmaXhMZW5ndGg7Ci0KLSAgICBpZiAocmVmZXJlbmNlLmlzOEJpdCgpKSB7Ci0gICAg
ICAgIGlmIChzdWZmaXguaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gZXF1YWwocmVmZXJl
bmNlLmNoYXJhY3RlcnM4KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCksIHN1
ZmZpeExlbmd0aCk7Ci0gICAgICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczgo
KSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZpeExlbmd0aCk7Ci0g
ICAgfQotICAgIGlmIChzdWZmaXguaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBlcXVhbChyZWZl
cmVuY2UuY2hhcmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCks
IHN1ZmZpeExlbmd0aCk7Ci0gICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYo
KSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZpeExlbmd0aCk7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzQSwgdHlwZW5hbWUgU3RyaW5nQ2xhc3NC
PgotYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0NsYXNzQSYgcmVm
ZXJlbmNlLCBjb25zdCBTdHJpbmdDbGFzc0ImIHN1ZmZpeCkKLXsKLSAgICB1bnNpZ25lZCBzdWZm
aXhMZW5ndGggPSBzdWZmaXgubGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQgcmVmZXJlbmNlTGVuZ3Ro
ID0gcmVmZXJlbmNlLmxlbmd0aCgpOwotICAgIGlmIChzdWZmaXhMZW5ndGggPiByZWZlcmVuY2VM
ZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
ID0gcmVmZXJlbmNlTGVuZ3RoIC0gc3VmZml4TGVuZ3RoOwotCi0gICAgaWYgKHJlZmVyZW5jZS5p
czhCaXQoKSkgewotICAgICAgICBpZiAoc3VmZml4LmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0
dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVmZXJlbmNlLmNoYXJhY3RlcnM4KCkgKyBzdGFy
dE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCksIHN1ZmZpeExlbmd0aCk7Ci0gICAgICAgIHJl
dHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpICsgc3Rh
cnRPZmZzZXQsIHN1ZmZpeC5jaGFyYWN0ZXJzMTYoKSwgc3VmZml4TGVuZ3RoKTsKLSAgICB9Ci0g
ICAgaWYgKHN1ZmZpeC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UocmVmZXJlbmNlLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIHN1ZmZpeC5jaGFy
YWN0ZXJzOCgpLCBzdWZmaXhMZW5ndGgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFj
dGVyczE2KCksIHN1ZmZpeExlbmd0aCk7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBTZWFyY2hD
aGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaENoYXJhY3RlclR5cGU+CiBzaXplX3QgZmluZEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNvdXJjZSwgY29uc3Qg
TWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJhY3RlcnMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBzZWFyY2hMZW5ndGgsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggNmU2NTVjMTRlYTQ0NjJjOGVjYTBjMzk5YjkyM2Q4
MmUxNGY3YTM4OS4uYzc5MjUxNzkzYjdkYTI2Mzk1YzA5NmU0ZTIxM2MzOGU0YzJmYTcyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0xMDUzLDcgKzEwNTMsNyBAQCBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29uc3QgU3RyaW5nSW1wbCYgc3RyaW5nLCB1
bnNpZ25lZCBzdGFydCwgYwogICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczE2KCkg
KyBzdGFydCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1hdGNoU3RyaW5nKSwgbWF0
Y2hMZW5ndGgpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29u
c3QgU3RyaW5nSW1wbCYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCwgY29uc3QgU3RyaW5nSW1wbCYg
bWF0Y2hTdHJpbmcpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29uc3Qg
U3RyaW5nSW1wbCYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCwgU3RyaW5nVmlldyBtYXRjaFN0cmlu
ZykKIHsKICAgICBpZiAoc3RhcnQgPiBzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTEwNzIsMjQgKzEwNzIsMTQgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBl
cXVhbElubmVyKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZywgdW5zaWduZWQgc3RhcnQsIGMKICAg
ICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgc3RhcnQsIG1hdGNoU3RyaW5n
LmNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7CiB9CiAKLWJvb2wgU3RyaW5n
SW1wbDo6c3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcpIGNvbnN0Citib29sIFN0
cmluZ0ltcGw6OnN0YXJ0c1dpdGgoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuICFzdHJpbmcgfHwgOjpXVEY6OnN0YXJ0c1dpdGgoKnRoaXMsICpzdHJpbmcpOworICAgIHJl
dHVybiAhc3RyaW5nIHx8IDo6V1RGOjpzdGFydHNXaXRoKCp0aGlzLCBzdHJpbmcpOwogfQogCi1i
b29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nSW1wbCYgc3RyaW5nKSBjb25z
dAorYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmll
dyBwcmVmaXgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDo6V1RGOjpzdGFydHNXaXRoKCp0aGlzLCBz
dHJpbmcpOwotfQotCi1ib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmdJbXBsKiBwcmVmaXgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHByZWZpeCAm
JiA6OldURjo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAqcHJlZml4KTsKLX0K
LQotYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3Ry
aW5nSW1wbCYgcHJlZml4KSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6c3RhcnRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKCp0aGlzLCBwcmVmaXgpOworICAgIHJldHVybiBwcmVmaXggJiYgOjpX
VEY6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgcHJlZml4KTsKIH0KIAogYm9v
bCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKQEAgLTExMDIs
MjkgKzEwOTIsMTkgQEAgYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKGNvbnN0IGNoYXIqIG1h
dGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkgY29uc3QKICAgICByZXR1cm4gbWF0Y2hM
ZW5ndGggPD0gbGVuZ3RoKCkgJiYgZXF1YWxJbm5lcigqdGhpcywgMCwgbWF0Y2hTdHJpbmcsIG1h
dGNoTGVuZ3RoKTsKIH0KIAotYm9vbCBTdHJpbmdJbXBsOjpoYXNJbmZpeFN0YXJ0aW5nQXQoY29u
c3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAorYm9vbCBT
dHJpbmdJbXBsOjpoYXNJbmZpeFN0YXJ0aW5nQXQoU3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5z
aWduZWQgc3RhcnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGVxdWFsSW5uZXIoKnRoaXMsIHN0YXJ0
LCBtYXRjaFN0cmluZyk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgoU3RyaW5nSW1w
bCogc3VmZml4KQotewotICAgIHJldHVybiBzdWZmaXggJiYgOjpXVEY6OmVuZHNXaXRoKCp0aGlz
LCAqc3VmZml4KTsKLX0KLQotYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChTdHJpbmdJbXBsJiBz
dWZmaXgpCi17Ci0gICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aCgqdGhpcywgc3VmZml4KTsKLX0K
LQotYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
Z0ltcGwqIHN1ZmZpeCkgY29uc3QKK2Jvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgoU3RyaW5nVmll
dyBzdWZmaXgpCiB7Ci0gICAgcmV0dXJuIHN1ZmZpeCAmJiA6OldURjo6ZW5kc1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZSgqdGhpcywgKnN1ZmZpeCk7CisgICAgcmV0dXJuIHN1ZmZpeCAmJiA6OldURjo6
ZW5kc1dpdGgoKnRoaXMsIHN1ZmZpeCk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJiBzdWZmaXgpIGNvbnN0Citib29sIFN0
cmluZ0ltcGw6OmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdWZmaXgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlz
LCBzdWZmaXgpOworICAgIHJldHVybiBzdWZmaXggJiYgOjpXVEY6OmVuZHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UoKnRoaXMsIHN1ZmZpeCk7CiB9CiAKIGJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgo
VUNoYXIgY2hhcmFjdGVyKSBjb25zdApAQCAtMTEzNyw5ICsxMTE3LDkgQEAgYm9vbCBTdHJpbmdJ
bXBsOjplbmRzV2l0aChjb25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5n
dGgpIGNvbnN0CiAgICAgcmV0dXJuIG1hdGNoTGVuZ3RoIDw9IGxlbmd0aCgpICYmIGVxdWFsSW5u
ZXIoKnRoaXMsIGxlbmd0aCgpIC0gbWF0Y2hMZW5ndGgsIG1hdGNoU3RyaW5nLCBtYXRjaExlbmd0
aCk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6aGFzSW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmdJ
bXBsJiBtYXRjaFN0cmluZywgdW5zaWduZWQgZW5kT2Zmc2V0KSBjb25zdAorYm9vbCBTdHJpbmdJ
bXBsOjpoYXNJbmZpeEVuZGluZ0F0KFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGVu
ZCkgY29uc3QKIHsKLSAgICByZXR1cm4gZW5kT2Zmc2V0ID49IG1hdGNoU3RyaW5nLmxlbmd0aCgp
ICYmIGVxdWFsSW5uZXIoKnRoaXMsIGVuZE9mZnNldCAtIG1hdGNoU3RyaW5nLmxlbmd0aCgpLCBt
YXRjaFN0cmluZyk7CisgICAgcmV0dXJuIGVuZCA+PSBtYXRjaFN0cmluZy5sZW5ndGgoKSAmJiBl
cXVhbElubmVyKCp0aGlzLCBlbmQgLSBtYXRjaFN0cmluZy5sZW5ndGgoKSwgbWF0Y2hTdHJpbmcp
OwogfQogCiBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciB0YXJnZXQs
IFVDaGFyIHJlcGxhY2VtZW50KQpAQCAtMTIwMywyMyArMTE4MywyMyBAQCBSZWY8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciB0YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50KQog
ICAgIHJldHVybiBuZXdJbXBsOwogfQogCi1SZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVw
bGFjZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsYWNlLCBTdHJpbmdJ
bXBsKiBzdHJpbmcpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZSh1bnNpZ25l
ZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsYWNlLCBTdHJpbmdWaWV3IHN0cmluZykK
IHsKICAgICBwb3NpdGlvbiA9IHN0ZDo6bWluKHBvc2l0aW9uLCBsZW5ndGgoKSk7CiAgICAgbGVu
Z3RoVG9SZXBsYWNlID0gc3RkOjptaW4obGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0
aW9uKTsKLSAgICB1bnNpZ25lZCBsZW5ndGhUb0luc2VydCA9IHN0cmluZyA/IHN0cmluZy0+bGVu
Z3RoKCkgOiAwOworICAgIHVuc2lnbmVkIGxlbmd0aFRvSW5zZXJ0ID0gc3RyaW5nLmxlbmd0aCgp
OwogICAgIGlmICghbGVuZ3RoVG9SZXBsYWNlICYmICFsZW5ndGhUb0luc2VydCkKICAgICAgICAg
cmV0dXJuICp0aGlzOwogCiAgICAgaWYgKChsZW5ndGgoKSAtIGxlbmd0aFRvUmVwbGFjZSkgPj0g
KE1heExlbmd0aCAtIGxlbmd0aFRvSW5zZXJ0KSkKICAgICAgICAgQ1JBU0goKTsKIAotICAgIGlm
IChpczhCaXQoKSAmJiAoIXN0cmluZyB8fCBzdHJpbmctPmlzOEJpdCgpKSkgeworICAgIGlmIChp
czhCaXQoKSAmJiAoIXN0cmluZyB8fCBzdHJpbmcuaXM4Qml0KCkpKSB7CiAgICAgICAgIExDaGFy
KiBkYXRhOwogICAgICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0
aCgpIC0gbGVuZ3RoVG9SZXBsYWNlICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEpOwogICAgICAgICBj
b3B5Q2hhcmFjdGVycyhkYXRhLCBtX2RhdGE4LCBwb3NpdGlvbik7CiAgICAgICAgIGlmIChzdHJp
bmcpCi0gICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24sIHN0cmluZy0+
bV9kYXRhOCwgbGVuZ3RoVG9JbnNlcnQpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0
YSArIHBvc2l0aW9uLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoVG9JbnNlcnQpOwogICAg
ICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24gKyBsZW5ndGhUb0luc2VydCwgbV9k
YXRhOCArIHBvc2l0aW9uICsgbGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0aW9uIC0g
bGVuZ3RoVG9SZXBsYWNlKTsKICAgICAgICAgcmV0dXJuIG5ld0ltcGw7CiAgICAgfQpAQCAtMTIz
MCwxMCArMTIxMCwxMCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZSh1bnNp
Z25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsYWNlLAogICAgIGVsc2UKICAgICAg
ICAgY29weUNoYXJhY3RlcnMoZGF0YSwgbV9kYXRhMTYsIHBvc2l0aW9uKTsKICAgICBpZiAoc3Ry
aW5nKSB7Ci0gICAgICAgIGlmIChzdHJpbmctPmlzOEJpdCgpKQotICAgICAgICAgICAgY29weUNo
YXJhY3RlcnMoZGF0YSArIHBvc2l0aW9uLCBzdHJpbmctPm1fZGF0YTgsIGxlbmd0aFRvSW5zZXJ0
KTsKKyAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0
ZXJzKGRhdGEgKyBwb3NpdGlvbiwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aFRvSW5zZXJ0
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIHBvc2l0
aW9uLCBzdHJpbmctPm1fZGF0YTE2LCBsZW5ndGhUb0luc2VydCk7CisgICAgICAgICAgICBjb3B5
Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24sIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3Ro
VG9JbnNlcnQpOwogICAgIH0KICAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgIGNvcHlDaGFyYWN0
ZXJzKGRhdGEgKyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0LCBtX2RhdGE4ICsgcG9zaXRpb24g
KyBsZW5ndGhUb1JlcGxhY2UsIGxlbmd0aCgpIC0gcG9zaXRpb24gLSBsZW5ndGhUb1JlcGxhY2Up
OwpAQCAtMTI0MiwxMyArMTIyMiwxMyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVw
bGFjZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsYWNlLAogICAgIHJl
dHVybiBuZXdJbXBsOwogfQogCi1SZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShV
Q2hhciBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudCkKK1JlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQp
CiB7CiAgICAgaWYgKCFyZXBsYWNlbWVudCkKICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIGlm
IChyZXBsYWNlbWVudC0+aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiByZXBsYWNlKHBhdHRlcm4s
IHJlcGxhY2VtZW50LT5tX2RhdGE4LCByZXBsYWNlbWVudC0+bGVuZ3RoKCkpOwotICAgIHJldHVy
biByZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50LT5tX2RhdGExNiwgcmVwbGFjZW1lbnQtPmxl
bmd0aCgpKTsKKyAgICBpZiAocmVwbGFjZW1lbnQuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBy
ZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50LmNoYXJhY3RlcnM4KCksIHJlcGxhY2VtZW50Lmxl
bmd0aCgpKTsKKyAgICByZXR1cm4gcmVwbGFjZShwYXR0ZXJuLCByZXBsYWNlbWVudC5jaGFyYWN0
ZXJzMTYoKSwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOwogfQogCiBSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBMQ2hhciogcmVwbGFjZW1lbnQs
IHVuc2lnbmVkIHJlcFN0ckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggOTQ5
NTBjMzU0NWEwZmFlM2YyZTkxYjZlN2E1OGNmNWEwZDY5NDM5Yi4uODZhOTYxYmVkMzg5NmIwN2Vh
NmY0ZDYzNDk5YmJjZWZhOTAyZmM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTQz
OCwzMSArNDM4LDI1IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJl
dmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBzdGFydCA9IE1heExlbmd0aCk7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFy
dCA9IE1heExlbmd0aCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRo
KGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCopIGNv
bnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgc3RhcnRzV2l0aChTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChVQ2hhcikgY29uc3Q7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyKiwgdW5zaWduZWQgbWF0
Y2hMZW5ndGgpIGNvbnN0OwotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29s
IHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJl
dHVybiBzdGFydHNXaXRoKHByZWZpeCwgbWF0Y2hMZW5ndGggLSAxKTsgfQotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBib29sIGhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJpbmdJbXBsJiwgdW5z
aWduZWQgc3RhcnQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGhhc0luZml4
U3RhcnRpbmdBdChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCkgY29uc3Q7CiAKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBsKik7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCYpOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCopIGNv
bnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgU3RyaW5nSW1wbCYpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IGVuZHNXaXRoKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZW5kc1dpdGgoVUNoYXIpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgZW5kc1dpdGgoY29uc3Qg
Y2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBlbmRzV2l0aChwcmVm
aXgsIG1hdGNoTGVuZ3RoIC0gMSk7IH0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNJ
bmZpeEVuZGluZ0F0KGNvbnN0IFN0cmluZ0ltcGwmLCB1bnNpZ25lZCBlbmRPZmZzZXQpIGNvbnN0
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGhhc0luZml4RW5kaW5nQXQoU3RyaW5nVmll
dywgdW5zaWduZWQgZW5kKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3Ry
aW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgVUNoYXIpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBS
ZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nVmlldyk7CiAg
ICAgQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBj
b25zdCBjaGFyKiByZXBsYWNlbWVudCwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpIHsgcmV0
dXJuIHJlcGxhY2UocGF0dGVybiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHJlcGxh
Y2VtZW50KSwgcmVwbGFjZW1lbnRMZW5ndGgpOyB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJl
ZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkIHJlcGxh
Y2VtZW50TGVuZ3RoKTsKICAgICBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgY29uc3Qg
VUNoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgs
IFN0cmluZ1ZpZXcpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVDaGFyRGlyZWN0aW9uIGRl
ZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gbnVs
bHB0cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNzMwZGU5NWExZGM0ZGM1NGEy
YzkyYjcyYjQ1NmRmZTg5NzA2MmUzYi4uYTY1ZTAwOTFmYjc0NDZiNWEzNmIyOThiYTgyNWMwM2Jm
ZDJmNzI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTExNTcsNiArMTE1Nyw3NiBA
QCBpbmxpbmUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHNvdXJjZSwg
U3RyaW5nVmlldyBzdHJpbmdUb0ZpbmQsCiAgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzb3VyY2UuY2hhcmFjdGVyczE2KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJzMTYoKSwgc3Rh
cnQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOwogfQogCitpbmxpbmUgYm9vbCBzdGFydHNX
aXRoKFN0cmluZ1ZpZXcgcmVmZXJlbmNlLCBTdHJpbmdWaWV3IHByZWZpeCkKK3sKKyAgICB1bnNp
Z25lZCBwcmVmaXhMZW5ndGggPSBwcmVmaXgubGVuZ3RoKCk7CisgICAgaWYgKHByZWZpeExlbmd0
aCA+IHJlZmVyZW5jZS5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KHJlZmVyZW5jZS5pczhCaXQoKSkgeworICAgICAgICBpZiAocHJlZml4LmlzOEJpdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpLCBwcmVmaXguY2hh
cmFjdGVyczgoKSwgcHJlZml4TGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5j
ZS5jaGFyYWN0ZXJzOCgpLCBwcmVmaXguY2hhcmFjdGVyczE2KCksIHByZWZpeExlbmd0aCk7Cisg
ICAgfQorICAgIGlmIChwcmVmaXguaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBlcXVhbChyZWZl
cmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhMZW5ndGgp
OworICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFy
YWN0ZXJzMTYoKSwgcHJlZml4TGVuZ3RoKTsKK30KKworaW5saW5lIGJvb2wgc3RhcnRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgcmVmZXJlbmNlLCBTdHJpbmdWaWV3IHByZWZpeCkK
K3sKKyAgICB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSBwcmVmaXgubGVuZ3RoKCk7CisgICAgaWYg
KHByZWZpeExlbmd0aCA+IHJlZmVyZW5jZS5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKHJlZmVyZW5jZS5pczhCaXQoKSkgeworICAgICAgICBpZiAocHJlZml4Lmlz
OEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVmZXJl
bmNlLmNoYXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhMZW5ndGgpOwor
ICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2UuY2hhcmFjdGVy
czgoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOworICAgIH0KKyAgICBp
ZiAocHJlZml4LmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShyZWZlcmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhM
ZW5ndGgpOworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFy
YWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOworfQorCitp
bmxpbmUgYm9vbCBlbmRzV2l0aChTdHJpbmdWaWV3IHJlZmVyZW5jZSwgU3RyaW5nVmlldyBzdWZm
aXgpCit7CisgICAgdW5zaWduZWQgc3VmZml4TGVuZ3RoID0gc3VmZml4Lmxlbmd0aCgpOworICAg
IHVuc2lnbmVkIHJlZmVyZW5jZUxlbmd0aCA9IHJlZmVyZW5jZS5sZW5ndGgoKTsKKyAgICBpZiAo
c3VmZml4TGVuZ3RoID4gcmVmZXJlbmNlTGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHJlZmVyZW5jZUxlbmd0aCAtIHN1ZmZpeExlbmd0
aDsKKworICAgIGlmIChyZWZlcmVuY2UuaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKHN1ZmZpeC5p
czhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczgo
KSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczgoKSwgc3VmZml4TGVuZ3RoKTsKKyAg
ICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQs
IHN1ZmZpeC5jaGFyYWN0ZXJzMTYoKSwgc3VmZml4TGVuZ3RoKTsKKyAgICB9CisgICAgaWYgKHN1
ZmZpeC5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJz
MTYoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczgoKSwgc3VmZml4TGVuZ3RoKTsK
KyAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQs
IHN1ZmZpeC5jaGFyYWN0ZXJzMTYoKSwgc3VmZml4TGVuZ3RoKTsKK30KKworaW5saW5lIGJvb2wg
ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHJlZmVyZW5jZSwgU3RyaW5nVmll
dyBzdWZmaXgpCit7CisgICAgdW5zaWduZWQgc3VmZml4TGVuZ3RoID0gc3VmZml4Lmxlbmd0aCgp
OworICAgIHVuc2lnbmVkIHJlZmVyZW5jZUxlbmd0aCA9IHJlZmVyZW5jZS5sZW5ndGgoKTsKKyAg
ICBpZiAoc3VmZml4TGVuZ3RoID4gcmVmZXJlbmNlTGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHJlZmVyZW5jZUxlbmd0aCAtIHN1ZmZp
eExlbmd0aDsKKworICAgIGlmIChyZWZlcmVuY2UuaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKHN1
ZmZpeC5pczhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIHN1ZmZpeC5jaGFyYWN0ZXJz
OCgpLCBzdWZmaXhMZW5ndGgpOworICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShyZWZlcmVuY2UuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVy
czE2KCksIHN1ZmZpeExlbmd0aCk7CisgICAgfQorICAgIGlmIChzdWZmaXguaXM4Qml0KCkpCisg
ICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJz
MTYoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczgoKSwgc3VmZml4TGVuZ3RoKTsK
KyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2UuY2hhcmFjdGVyczE2
KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnMxNigpLCBzdWZmaXhMZW5ndGgpOwor
fQorCiBpbmxpbmUgc2l6ZV90IFN0cmluZzo6ZmluZChTdHJpbmdWaWV3IHN0cmluZykgY29uc3QK
IHsKICAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZykgOiBub3RGb3VuZDsK
QEAgLTEyMDMsMTMgKzEyNzMsNTAgQEAgaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFN0
cmluZ1ZpZXcgdGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQogICAgIHJldHVybiAqdGhp
czsKIH0KIAotaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCitpbmxpbmUgU3RyaW5n
JiBTdHJpbmc6OnJlcGxhY2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgU3RyaW5n
VmlldyByZXBsYWNlbWVudCkKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwgPSBt
X2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQpOworICAgIHJldHVybiAq
dGhpczsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwg
U3RyaW5nVmlldyByZXBsYWNlbWVudCkKIHsKICAgICBpZiAobV9pbXBsKQotICAgICAgICBtX2lt
cGwgPSBtX2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQuaW1wbCgpKTsK
KyAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldCwgcmVwbGFjZW1lbnQpOwog
ICAgIHJldHVybiAqdGhpczsKIH0KIAoraW5saW5lIGJvb2wgU3RyaW5nOjpzdGFydHNXaXRoKFN0
cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0
YXJ0c1dpdGgoc3RyaW5nKSA6IHN0cmluZy5pc0VtcHR5KCk7Cit9CisKK2lubGluZSBib29sIFN0
cmluZzo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25z
dAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShzdHJpbmcpIDogc3RyaW5nLmlzRW1wdHkoKTsKK30KKworaW5saW5lIGJvb2wgU3RyaW5n
OjplbmRzV2l0aChTdHJpbmdWaWV3IHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5lbmRzV2l0aChzdHJpbmcpIDogc3RyaW5nLmlzRW1wdHkoKTsKK30KKworaW5s
aW5lIGJvb2wgU3RyaW5nOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3Ry
aW5nKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nKSA6IHN0cmluZy5pc0VtcHR5KCk7Cit9CisKK2lubGluZSBib29s
IFN0cmluZzo6aGFzSW5maXhTdGFydGluZ0F0KFN0cmluZ1ZpZXcgcHJlZml4LCB1bnNpZ25lZCBz
dGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBsICYmIHByZWZpeCAmJiBtX2ltcGwtPmhh
c0luZml4U3RhcnRpbmdBdChwcmVmaXgsIHN0YXJ0KTsKK30KKworaW5saW5lIGJvb2wgU3RyaW5n
OjpoYXNJbmZpeEVuZGluZ0F0KFN0cmluZ1ZpZXcgc3VmZml4LCB1bnNpZ25lZCBlbmQpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faW1wbCAmJiBzdWZmaXggJiYgbV9pbXBsLT5oYXNJbmZpeEVuZGlu
Z0F0KHN1ZmZpeCwgZW5kKTsKK30KKwogaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kKFN0
cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9z
dHJpbmcuZmluZChzdHJpbmcsIHN0YXJ0KTsKQEAgLTEyMzUsNiArMTM0MiwyNiBAQCBpbmxpbmUg
Ym9vbCBBdG9tU3RyaW5nOjpjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3Ry
aW5nKSBjb25zdAogICAgIHJldHVybiBtX3N0cmluZy5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZyk7CiB9CiAKK2lubGluZSBib29sIEF0b21TdHJpbmc6OnN0YXJ0c1dpdGgoU3RyaW5n
VmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoc3Ry
aW5nKTsKK30KKworaW5saW5lIGJvb2wgQXRvbVN0cmluZzo6c3RhcnRzV2l0aElnbm9yaW5nQVND
SUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5z
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsKK30KKworaW5saW5lIGJvb2wgQXRv
bVN0cmluZzo6ZW5kc1dpdGgoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fc3RyaW5nLmVuZHNXaXRoKHN0cmluZyk7Cit9CisKK2lubGluZSBib29sIEF0b21TdHJpbmc6
OmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YXBwZW5kOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKaW5kZXggMjZhOTE1ZjhlMjFmODg0MDQ4ZTM4ZThkMTljMWIzNWEwYmQzODg1Ni4u
NWZlZjRjZmI4OTdjMWIzOTIyMTU3ZjA5NmYyNzEwYzcwZTNhNWQ5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCkBAIC0xODIsMTggKzE4MiwxNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWlu
c0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCkgY29uc3Q7CiAKLSAg
ICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5
KCk7IH0KLSAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcm
IHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nLmltcGwoKSkgOiBzdHJpbmcuaXNFbXB0eSgpOyB9CisgICAgYm9v
bCBzdGFydHNXaXRoKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgc3RhcnRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogICAgIGJvb2wgc3RhcnRzV2l0aChVQ2hh
ciBjaGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiBtX2ltcGwtPnN0YXJ0c1dpdGgo
Y2hhcmFjdGVyKTsgfQotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIHN0
YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCkgOiAhbWF0
Y2hMZW5ndGg7IH0KLSAgICBib29sIGhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJpbmcmIHBy
ZWZpeCwgdW5zaWduZWQgc3RhcnQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiBwcmVmaXguaW1w
bCgpICYmIG1faW1wbC0+aGFzSW5maXhTdGFydGluZ0F0KCpwcmVmaXguaW1wbCgpLCBzdGFydCk7
IH0KKyAgICBib29sIGhhc0luZml4U3RhcnRpbmdBdChTdHJpbmdWaWV3IHByZWZpeCwgdW5zaWdu
ZWQgc3RhcnQpIGNvbnN0OwogCi0gICAgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHN0cmlu
ZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aChzdHJpbmcuaW1wbCgp
KSA6IHN0cmluZy5pc0VtcHR5KCk7IH0KLSAgICBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5
KCk7IH0KKyAgICBib29sIGVuZHNXaXRoKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgZW5k
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKICAgICBib29sIGVuZHNX
aXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9pbXBsICYmIG1faW1wbC0+ZW5k
c1dpdGgoY2hhcmFjdGVyKTsgfQogICAgIGJvb2wgZW5kc1dpdGgoY2hhciBjaGFyYWN0ZXIpIGNv
bnN0IHsgcmV0dXJuIGVuZHNXaXRoKHN0YXRpY19jYXN0PFVDaGFyPihjaGFyYWN0ZXIpKTsgfQot
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIGVuZHNXaXRoKGNvbnN0IGNo
YXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5lbmRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4KSA6ICFtYXRjaExlbmd0aDsgfQotICAgIGJv
b2wgaGFzSW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmcmIHN1ZmZpeCwgdW5zaWduZWQgZW5kT2Zm
c2V0KSBjb25zdCB7IHJldHVybiBtX2ltcGwgJiYgc3VmZml4LmltcGwoKSAmJiBtX2ltcGwtPmhh
c0luZml4RW5kaW5nQXQoKnN1ZmZpeC5pbXBsKCksIGVuZE9mZnNldCk7IH0KKyAgICBib29sIGhh
c0luZml4RW5kaW5nQXQoU3RyaW5nVmlldyBzdWZmaXgsIHVuc2lnbmVkIGVuZCkgY29uc3Q7CiAK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKExDaGFyKTsKQEAgLTIwNCw5ICsyMDIsOSBA
QCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5zZXJ0KGNvbnN0IFN0cmlu
ZyYsIHVuc2lnbmVkIHBvc2l0aW9uKTsKIAogICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciB0YXJn
ZXQsIFVDaGFyIHJlcGxhY2VtZW50KTsKLSAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgdGFyZ2V0
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKKyAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIg
dGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KTsKICAgICBTdHJpbmcmIHJlcGxhY2UoU3Ry
aW5nVmlldyB0YXJnZXQsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQpOwotICAgIFN0cmluZyYgcmVw
bGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50KTsKKyAgICBTdHJpbmcmIHJlcGxhY2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxl
bmd0aCwgU3RyaW5nVmlldyByZXBsYWNlbWVudCk7CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hh
cmFjdGVyQ291bnQ+IFN0cmluZyYgcmVwbGFjZVdpdGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29u
c3QgY2hhciAoJnJlcGxhY2VtZW50KVtjaGFyYWN0ZXJDb3VudF0pOwogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgdHJ1bmNhdGUodW5zaWduZWQgbGVuZ3RoKTsKQEAgLTQ5OSwxMyArNDk3
LDYgQEAgaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwgVUNoYXIg
cmVwbGFjZW1lbnQpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1pbmxpbmUgU3RyaW5nJiBTdHJp
bmc6OnJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KQotewot
ICAgIGlmIChtX2ltcGwpCi0gICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQs
IHJlcGxhY2VtZW50LmltcGwoKSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCiB0ZW1wbGF0ZTx1
bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gQUxXQVlTX0lOTElORSBTdHJpbmcmIFN0cmluZzo6cmVw
bGFjZVdpdGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSkKIHsKICAgICBpZiAobV9pbXBsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
CmluZGV4IDJmMzNmMmIwNzJmYTNmZWY1ZDNhYjdkZDNhZjlhMjhhNjRhYjEwY2UuLjFjMDM0NTdl
ZGY4ODdmNzU5OTdjNDQ0NWYwZDM0YmZhZGEyMTdiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAKQEAgLTI5Niw3ICsyOTYsNyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RJUEFkZHJlc3MoU3Ry
aW5nVmlldyBzZHApCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSWdub3JlSWNlQ2FuZGlkYXRl
KGNvbnN0IFJUQ0ljZUNhbmRpZGF0ZSYgaWNlQ2FuZGlkYXRlKQogewogICAgIGF1dG8gYWRkcmVz
cyA9IGV4dHJhY3RJUEFkZHJlc3MoaWNlQ2FuZGlkYXRlLmNhbmRpZGF0ZSgpKTsKLSAgICBpZiAo
IWFkZHJlc3MuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmxvY2FsIl9zKSkKKyAgICBpZiAo
IWFkZHJlc3MuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmxvY2FsIikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmICghV1RGOjppc1ZlcnNpb240VVVJRChTdHJpbmdWaWV3IHsg
YWRkcmVzcyB9LnN1YnN0cmluZygwLCBhZGRyZXNzLmxlbmd0aCgpIC0gNikpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKaW5kZXggYzg3MzQxNDYxN2I4MWVjN2ExMTljMWMxNDMw
MDdkZDBkNzBkNzFjYS4uMTczNGU5OTRmOGZkNWM1ZjcyOTk2MmYzZmNlN2Q0Y2QwMjNkNWU3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGF0
aWMgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc29sdmVkVVJMJiBhLCBjb25zdCBSZXNvbHZlZFVS
TCYgYikKIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLyN1cmwtbG9jYWwt
dXJsLWZsYWcKIGJvb2wgUmVzb2x2ZWRVUkw6OmlzTG9jYWxVUkwoKSBjb25zdAogewotICAgIHJl
dHVybiBzcGVjaWZpZWRVUkxTdHJpbmcuc3RhcnRzV2l0aCgiIyIpOworICAgIHJldHVybiBzcGVj
aWZpZWRVUkxTdHJpbmcuc3RhcnRzV2l0aCgnIycpOwogfQogCiBzdGF0aWMgUmVzb2x2ZWRVUkwg
bWFrZVJlc29sdmVkVVJMKFVSTCYmIHJlc29sdmVkVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25zb2xlQ2xpZW50LmNwcAppbmRleCAwZWM0ZWFiMTY0ZTgyOGUwYTNmZDg3YjYyMTFiODQ3
ODUzMDZhN2YwLi5kZmVkYTRkYTVmZDZjNTRiOGVkODdlZGNiMzY3NDlkOGM4MGE4NTBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApAQCAtNDAxLDcgKzQwMSw3
IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmCiAgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzE4MDgzMz4gV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBPZmZzY3JlZW5D
YW52YXMgZm9yIENhbnZhcyByZWxhdGVkIG9wZXJhdGlvbnMKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIFN0cmluZyBiYXNlNjQ7Ci0gICAgICAgICAgICBpZiAocG9zc2libGVUYXJnZXQu
Z2V0U3RyaW5nKGxleGljYWxHbG9iYWxPYmplY3QsIGJhc2U2NCkgJiYgYmFzZTY0LnN0YXJ0c1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZSgiZGF0YToiX3MpICYmIGJhc2U2NC5sZW5ndGgoKSA+IDUpIHsK
KyAgICAgICAgICAgIGlmIChwb3NzaWJsZVRhcmdldC5nZXRTdHJpbmcobGV4aWNhbEdsb2JhbE9i
amVjdCwgYmFzZTY0KSAmJiBiYXNlNjQuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJkYXRh
OiIpICYmIGJhc2U2NC5sZW5ndGgoKSA+IDUpIHsKICAgICAgICAgICAgICAgICB0YXJnZXQgPSBw
b3NzaWJsZVRhcmdldDsKICAgICAgICAgICAgICAgICBkYXRhVVJMID0gYmFzZTY0OwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZS5jcHAKaW5kZXggMmZmZDI3ODljZTEwOWI0OWY2N2MxYTBkMjY0MTY1
ODY5OTE5ZGM0Ny4uNzFkYzZjYTIzNDNhMDNlYjI3NWM5MWI0ZWUxMWJjY2NmYWQ2ODI3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2UuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlOjpwYXRoTWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKIAogICAgIGF1dG8gcGF0
aCA9IFBBTDo6ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5wYXRoKCkpOwogCi0gICAgaWYg
KG1fcGF0aC5lbmRzV2l0aCgiLyIpKQorICAgIGlmIChtX3BhdGguZW5kc1dpdGgoJy8nKSkKICAg
ICAgICAgcmV0dXJuIHBhdGguc3RhcnRzV2l0aChtX3BhdGgpOwogCiAgICAgcmV0dXJuIHBhdGgg
PT0gbV9wYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCBjYzI5Y2Zi
NDY3M2M2NjIxMWRlMWE0MWVlMmJmNmEyZThiYTExZmQ1Li41ZDk2N2ViN2Q2ZjQ1ZTY1YjMxYmU5
Y2RhODViOTg5ZDJiYzE2YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApA
QCAtMTkxMSw4ICsxOTExLDggQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldFVu
bWFuZ2xlZEluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXJzWzJdLAogICAgIC8vIGNhdXNl
cyBhIHdhcm5pbmcgaW4gc29tZSBjb21waWxlcnMuIFRoZXJlIGlzIG5vIHBvaW50IHNob3dpbmcK
ICAgICAvLyB0aGlzIHdhcm5pbmcgdG8gdGhlIHVzZXIgc2luY2UgdGhleSBkaWRuJ3Qgd3JpdGUg
dGhlIGNvZGUgdGhhdAogICAgIC8vIGlzIGNhdXNpbmcgaXQuCi0gICAgc3RhdGljIGNvbnN0IE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gYW5nbGVXYXJuaW5nIHsgIldBUk5JTkc6IDA6MTogZXh0ZW5z
aW9uICdHTF9BUkJfZ3B1X3NoYWRlcjUnIGlzIG5vdCBzdXBwb3J0ZWRcbiJfcyB9OwotICAgIGlu
dCBzdGFydEZyb20gPSBsb2cuc3RhcnRzV2l0aChhbmdsZVdhcm5pbmcpID8gYW5nbGVXYXJuaW5n
LmdldCgpLmxlbmd0aCgpIDogMDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBhbmdsZVdhcm5pbmdb
XSA9ICJXQVJOSU5HOiAwOjE6IGV4dGVuc2lvbiAnR0xfQVJCX2dwdV9zaGFkZXI1JyBpcyBub3Qg
c3VwcG9ydGVkXG4iOworICAgIGludCBzdGFydEZyb20gPSBsb2cuc3RhcnRzV2l0aChhbmdsZVdh
cm5pbmcpID8gc2l6ZW9mKGFuZ2xlV2FybmluZykgLSAxIDogMDsKICAgICBwcm9jZXNzZWRMb2cu
YXBwZW5kKGxvZy5zdWJzdHJpbmcoc3RhcnRGcm9tLCBsb2cubGVuZ3RoKCkgLSBzdGFydEZyb20p
KTsKIAogICAgIExPRyhXZWJHTCwgIlVubWFuZ2xlZCBTaGFkZXJJbmZvTG9nOlxuJXMiLCBwcm9j
ZXNzZWRMb2cudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IDYyMTI5ZDIyZWE5MTkwNWI0Mjg0YmQzOTIwMzRk
NzlmNzEwYmFlYjYuLjQxZDY2YzQ0Y2MzNGNmZDIwYWY4NWVkMTdkMDY5M2JjMDJhNTJkNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtMjUwLDcgKzI1
MCw3IEBAIGJvb2wgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIu
aW8vZW5jcnlwdGVkLW1lZGlhLyNrZXktc3lzdGVtCiAgICAgLy8gIktleSBTeXN0ZW0gc3RyaW5n
cyBhcmUgY29tcGFyZWQgdXNpbmcgY2FzZS1zZW5zaXRpdmUgbWF0Y2hpbmcuIgotICAgIHJldHVy
biBrZXlTeXN0ZW0gPT0gImNvbS5hcHBsZS5mcHMiIHx8IGtleVN5c3RlbS5zdGFydHNXaXRoKCJj
b20uYXBwbGUuZnBzLiJfcyk7CisgICAgcmV0dXJuIGtleVN5c3RlbSA9PSAiY29tLmFwcGxlLmZw
cyIgfHwga2V5U3lzdGVtLnN0YXJ0c1dpdGgoImNvbS5hcHBsZS5mcHMuIik7CiB9CiAKIENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKGNvbnN0
IENETVByaXZhdGVDbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5jcHAKaW5kZXggMjljOWFiNGVlZGYyZDYzOWI0MWU4MmZhNmFjMmRmMzc5ZjRhMzQ3My4u
YzVmYjk2YmViNTkxN2JmN2VjMjlhNWRjYjY0MWVjY2QwOTk1ZGYwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6c3VwcG9ydHNDb250YWluZXJUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkKICAgICBpZiAoIWlzSW5XZWJQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmICghdHlwZS5zdGFydHNXaXRoKCJ2aWRlby8iX3MpKQorICAgIGlmICghdHlwZS5zdGFy
dHNXaXRoKCJ2aWRlby8iKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIEdT
dHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCkuaXNDb250YWluZXJUeXBlU3VwcG9y
dGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIHR5
cGUpOwpAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjYW5E
ZWNvZGVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgaWYgKG1pbWVUeXBlLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFtaW1lVHlwZS5zdGFydHNX
aXRoKCJ2aWRlby8iX3MpKQorICAgIGlmICghbWltZVR5cGUuc3RhcnRzV2l0aCgidmlkZW8vIikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIElkZWFsbHkgdGhpcyBkZWNvZGVyIHNo
b3VsZCBvcGVyYXRlIG9ubHkgZnJvbSB0aGUgV2ViUHJvY2VzcyAob3IgZnJvbSB0aGUgR1BVUHJv
Y2Vzcykgd2hpY2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggOWYyNzA3NGZjNzRhOTg1Y2Q5ODc0NTY5NzgyNzIxMGI5NzhkZWM1OC4uM2Mw
ZDhmNzNjNDJiOGQ0MmRjYmE3YmQyM2YwNzE3ZDY4ZmZlY2E0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI1ODIsNyArMjU4Miw3IEBA
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpz
dXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAv
LyBUaGlzIHBsYXllciBkb2Vzbid0IHN1cHBvcnQgcGljdHVyZXMgcmVuZGVyaW5nLgotICAgIGlm
IChwYXJhbWV0ZXJzLnR5cGUucmF3KCkuc3RhcnRzV2l0aCgiaW1hZ2UiX3MpKQorICAgIGlmIChw
YXJhbWV0ZXJzLnR5cGUucmF3KCkuc3RhcnRzV2l0aCgiaW1hZ2UiKSkKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKIAogICAgIGF1dG8mIGdzdFJlZ2lzdHJ5U2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcAppbmRleCA0YTllOGZhZTAzN2VlZjQwZGVkOWYyY2VhZjg3MmZhMTU4YTQzYWZiLi44NWQz
ZmE5YWY1YjU2ZGUyMGU1ZjNlMGFjNjdjMWE3ZjRiZmU4NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTUyOCw3ICs1MjgsNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjaGVja1ZhcnlpbmdzUGFja2luZyhQbGF0Zm9ybUdMT2JqZWN0IHZlcnRl
eFNoYWRlcgogICAgICAgICBjb25zdCBTdHJpbmcmIHN5bWJvbE5hbWUgPSB2ZXJ0ZXhTeW1ib2wu
a2V5OwogICAgICAgICAvLyBUaGUgdmFyeWluZyBtYXAgaW5jbHVkZXMgdmFyaWFibGVzIGZvciBl
YWNoIGluZGV4IG9mIGFuIGFycmF5IHZhcmlhYmxlLgogICAgICAgICAvLyBXZSBvbmx5IHdhbnQg
YSBzaW5nbGUgdmFyaWFibGUgdG8gcmVwcmVzZW50IHRoZSBhcnJheS4KLSAgICAgICAgaWYgKHN5
bWJvbE5hbWUuZW5kc1dpdGgoIl0iKSkKKyAgICAgICAgaWYgKHN5bWJvbE5hbWUuZW5kc1dpdGgo
J10nKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIERvbid0IGNvdW50IGJ1
aWx0IGluIHZhcnlpbmdzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2UuY3BwCmluZGV4IDZkZGY4OWUzNTE4OTZkZmJjM2UzNDFm
OTQwM2UxYjVmZTgyMGZlMzkuLjZjOWRiMTdlZjgxNDNlMDRiNDYyNTg0ZDk5MjVhMTdhNTE2N2My
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkUmVx
dWVzdFJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNl
ZFJlcXVlc3RSYW5nZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
c3RkOjpvcHRpb25hbDxQYXJzZWRSZXF1ZXN0UmFuZ2U+IFBhcnNlZFJlcXVlc3RSYW5nZTo6cGFy
c2UoU3RyaW5nVmlldyBpbnB1dCkKIHsKICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0
bWwvcmZjNzIzMyNzZWN0aW9uLTIuMSBidXQgYXNzdW1pbmcgdGhlcmUgd2lsbCBhbHdheXMgYmUg
YSBiZWdpbiBhbmQgYW4gZW5kIG9yIHBhcnNpbmcgd2lsbCBmYWlsCi0gICAgaWYgKCFpbnB1dC5z
dGFydHNXaXRoKFN0cmluZ1ZpZXcoImJ5dGVzPSJfcykpKQorICAgIGlmICghaW5wdXQuc3RhcnRz
V2l0aChTdHJpbmdWaWV3KCJieXRlcz0iKSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBzaXplX3QgYmVnaW4geyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCBjZTExYzdkODYxYWE0MzBj
ZTI4ZTUyOTI3NzdkMmU0YmEwMmZlNTY2Li5hYTY5NTUwYTFmMDc3OWQyYzQ1MjY1MzJjYjMxN2My
MGU1ZTdjMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5jcHAKQEAgLTQ5MCwxMSArNDkwLDExIEBAIGJvb2wgQ29va2llSmFy
REI6Omhhc0h0dHBPbmx5Q29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBk
b21haW4sIGNvCiAKIHN0YXRpYyBib29sIGNoZWNrU2VjdXJlQ29va2llKGNvbnN0IENvb2tpZSYg
Y29va2llKQogewotICAgIGlmIChjb29raWUubmFtZS5zdGFydHNXaXRoKCJfX1NlY3VyZS0iX3Mp
ICYmICFjb29raWUuc2VjdXJlKQorICAgIGlmIChjb29raWUubmFtZS5zdGFydHNXaXRoKCJfX1Nl
Y3VyZS0iKSAmJiAhY29va2llLnNlY3VyZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gQ29va2llcyBmb3IgX19Ib3N0IG11c3QgaGF2ZSB0aGUgU2VjdXJlIGF0dHJpYnV0ZSwgcGF0
aCBleHBsaWNpdGx5IHNldCB0byAiLyIsIGFuZCBubyBkb21haW4gYXR0cmlidXRlCi0gICAgaWYg
KGNvb2tpZS5uYW1lLnN0YXJ0c1dpdGgoIl9fSG9zdC0iX3MpICYmICghY29va2llLnNlY3VyZSB8
fCBjb29raWUucGF0aCAhPSAiLyJfcyB8fCAhY29va2llLmRvbWFpbi5pc0VtcHR5KCkpKQorICAg
IGlmIChjb29raWUubmFtZS5zdGFydHNXaXRoKCJfX0hvc3QtIikgJiYgKCFjb29raWUuc2VjdXJl
IHx8IGNvb2tpZS5wYXRoICE9ICIvIl9zIHx8ICFjb29raWUuZG9tYWluLmlzRW1wdHkoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFn
ZXIuY3BwCmluZGV4IGI0ZjNkODU1MTA0MmQ5NTRkZWNhYTkxOWIyMDIxNjMyZmI4NTczZTIuLjZj
MTQ1YWNlZTc1ODhkNjk1YTM4N2QyN2NiOWNiMGMzYzgzMTRmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFu
YWdlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgY29uc3RleHByIGF1dG8gZmlsZU5hbWUgPSAibG9j
YWxzdG9yYWdlLnNxbGl0ZTMiX3M7CiAvLyBXZSBzaG91bGQgbm90IGluY2x1ZGUgb3JpZ2luIGlu
IGZpbGUgbmFtZS4KIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gZmlsZU5hbWVUb09yaWdpbihjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogewotICAgIGlm
ICghZmlsZU5hbWUuZW5kc1dpdGgoZmlsZVN1ZmZpeCkpCisgICAgaWYgKCFmaWxlTmFtZS5lbmRz
V2l0aChTdHJpbmdWaWV3IHsgZmlsZVN1ZmZpeCB9KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIGF1dG8gc3VmZml4TGVuZ3RoID0gc3RybGVuKGZpbGVTdWZmaXgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCA0N2U5ZGNh
NTAwYjEwNjQwMWVkY2JkZmNiZWE4MjBiMzViZTk2NTQyLi5mZDc0ZmVhYjFkMWUxMmZiMDYxMmEw
ODU1ZGU2OGZjNzY0MWIxMTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQpAQCAtNDQ1MCw3ICs0NDUwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c3Rh
cnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiBpdGVtLCBjb25zdCBTaGFyZWFibGVCaXRt
YXAKIAogc3RhdGljIGJvb2wgbWF0Y2hlc0V4dGVuc2lvbk9yRXF1aXZhbGVudChjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKLSAgICByZXR1cm4gZmls
ZW5hbWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLiIgKyBleHRlbnNpb24pCisgICAgcmV0
dXJuIGZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UobWFrZVN0cmluZygnLicsIGV4
dGVuc2lvbikpCiAgICAgICAgIHx8IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShleHRl
bnNpb24sICJqcGVnIikgJiYgZmlsZW5hbWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmpw
ZyIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYw
MzRkZTU0MTQxYTRjZTljMzIuLmZlZjZlMmYwZDUzZWE4N2NlNDhjMmMyNTg1ZTEzODBlYmYzZDRi
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTExNzUsNyArMTE3NSw3IEBAIHZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVj
a2luZ1Jlc3VsdCBhCiAgICAgICAgIGlmIChyZXBsYWNlbWVudExlbmd0aCA+IDApIHsKICAgICAg
ICAgICAgIE5TUmFuZ2UgcmVwbGFjZWRSYW5nZSA9IE5TTWFrZVJhbmdlKGFjY2VwdGVkQ2FuZGlk
YXRlLnJhbmdlLmxvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgICAgICAgICBOU1Jh
bmdlIHNvZnRTcGFjZVJhbmdlID0gTlNNYWtlUmFuZ2UoTlNNYXhSYW5nZShyZXBsYWNlZFJhbmdl
KSAtIDEsIDEpOwotICAgICAgICAgICAgaWYgKGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50
LmVuZHNXaXRoKCIgIikpCisgICAgICAgICAgICBpZiAoYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFj
ZW1lbnQuZW5kc1dpdGgoJyAnKSkKICAgICAgICAgICAgICAgICBbKFdlYkhUTUxWaWV3ICopdmll
dyBfc2V0U29mdFNwYWNlUmFuZ2U6c29mdFNwYWNlUmFuZ2VdOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcAppbmRleCBkNjI5
ZWZjZDQ3MzYwYjQ3ODJkODM2YTBlZThiOTI0ZGI3ZTZlMGNiLi5hNzYyYmUwYTIyNzFiODY3ZDYy
OTBkZDI3YTFkMGIzOWQ1MjIxNGRmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9TdHJpbmdJbXBsLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9TdHJpbmdJbXBsLmNwcApAQCAtNDIwLDEwICs0MjAsMTAgQEAgVEVTVChXVEYsIFN0cmluZ0lt
cGxTdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2VCYXNpYykKIFRFU1QoV1RGLCBTdHJpbmdJbXBs
U3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlV2l0aE51bGwpCiB7CiAgICAgYXV0byByZWZlcmVu
Y2UgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYUJjRGVGRyJfcyk7Ci0gICAgQVNT
RVJUX0ZBTFNFKHJlZmVyZW5jZS0+c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIp
KTsKKyAgICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UoU3RyaW5nVmlldyB7IH0pKTsKIAogICAgIGF1dG8gZW1wdHkgPSBTdHJpbmdJbXBsOjpjcmVh
dGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCIiKSk7Ci0gICAgQVNTRVJUX0ZBTFNF
KGVtcHR5LT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UobnVsbHB0cikpOworICAgIEFTU0VS
VF9GQUxTRShlbXB0eS0+c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9
KSk7CiB9CiAKIFRFU1QoV1RGLCBTdHJpbmdJbXBsU3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
V2l0aEVtcHR5KQpAQCAtNTA5LDEwICs1MDksMTAgQEAgVEVTVChXVEYsIFN0cmluZ0ltcGxFbmRz
V2l0aElnbm9yaW5nQVNDSUlDYXNlQmFzaWMpCiBURVNUKFdURiwgU3RyaW5nSW1wbEVuZHNXaXRo
SWdub3JpbmdBU0NJSUNhc2VXaXRoTnVsbCkKIHsKICAgICBhdXRvIHJlZmVyZW5jZSA9IFN0cmlu
Z0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJhQmNEZUZHIl9zKTsKLSAgICBBU1NFUlRfRkFMU0Uo
cmVmZXJlbmNlLT5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIpKTsKKyAgICBBU1NF
UlRfRkFMU0UocmVmZXJlbmNlLT5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcg
eyB9KSk7CiAKICAgICBhdXRvIGVtcHR5ID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPigiIikpOwotICAgIEFTU0VSVF9GQUxTRShlbXB0eS0+ZW5kc1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZShudWxscHRyKSk7CisgICAgQVNTRVJUX0ZBTFNFKGVtcHR5LT5l
bmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9KSk7CiB9CiAKIFRFU1QoV1RG
LCBTdHJpbmdJbXBsRW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhFbXB0eSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455661</attachid>
            <date>2022-03-24 11:58:29 -0700</date>
            <delta_ts>2022-03-24 12:32:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238333-20220324115828.patch</filename>
            <type>text/plain</type>
            <size>47496</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YWE2NWE0N2JkOThlOGI5M2I1ZjQ1N2IzNjRmZDdjOWJhMTczNmI5Li44YjA2ZjEwMTFiZmE1MDY1
NDMzYThiY2JkYzYyY2QwZTQwZWU5MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMi0wMy0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFN0cmluZydzIHN0YXJ0c1dpdGgoKSAvIGVuZHNXaXRoKCkgLyByZXBsYWNlKCkg
c2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODMzMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9GaWxlQmFz
ZWRGdXp6ZXJBZ2VudC5jcHA6CisgICAgICAgIChKU0M6OkZpbGVCYXNlZEZ1enplckFnZW50Ojpn
ZXRQcmVkaWN0aW9uSW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OnNpbmd1bGFyVW5pdCk6CisgICAgICAgICogcnVu
dGltZS9UZW1wb3JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnNpbmd1bGFyVW5pdCk6CisK
IDIwMjItMDMtMjMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pT
Q10gRml4IHJlbW90ZUZ1bmN0aW9uQ2FsbEdlbmVyYXRvciBvbiBNSVBTCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDliYzMwYjhl
NmVjZDJkN2MzOWJjMjIwMDE1NzU5YmM0ODUyMWM3OWQuLjY4NWQ3YmJhMWI3MjZmMTJhYWE3NGNk
ZjFkNzVjMDY5ZWUxNTE3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjItMDMtMjQgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBzdGFydHNXaXRo
KCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBp
bnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzgzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTdHJpbmcncyBzdGFydHNXaXRoKCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgp
IHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nLAorICAgICAg
ICB0byBhdm9pZCB1bm5lY2Vzc2FyeSBTdHJpbmcgY3JlYXRpb24gaW4gbWFueSBpbnN0YW5jZXMu
CisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmg6CisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nQ29tbW9uLmg6CisgICAgICAgIChXVEY6OnN0YXJ0c1dpdGgpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UpOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjplbmRzV2l0aCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
OgorICAgICAgICAoV1RGOjplcXVhbElubmVyKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
c3RhcnRzV2l0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0YXJ0c1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Omhhc0lu
Zml4U3RhcnRpbmdBdCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmVuZHNXaXRo
KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSBj
b25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Omhhc0luZml4RW5kaW5nQXQgY29uc3Qp
OgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpyZXBsYWNlKToKKyAgICAgICAgKiB3dGYvdGV4
dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0YXJ0c1dpdGggY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjplbmRzV2l0aCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RG
OjpzdGFydHNXaXRoKToKKyAgICAgICAgKFdURjo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
KToKKyAgICAgICAgKFdURjo6ZW5kc1dpdGgpOgorICAgICAgICAoV1RGOjplbmRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAgICAgICAg
KFdURjo6U3RyaW5nOjpzdGFydHNXaXRoIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpz
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmc6
OmVuZHNXaXRoIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjplbmRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpoYXNJbmZpeFN0YXJ0aW5n
QXQgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmc6Omhhc0luZml4RW5kaW5nQXQgY29uc3Qp
OgorICAgICAgICAoV1RGOjpBdG9tU3RyaW5nOjpzdGFydHNXaXRoIGNvbnN0KToKKyAgICAgICAg
KFdURjo6QXRvbVN0cmluZzo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlIGNvbnN0KToKKyAg
ICAgICAgKFdURjo6QXRvbVN0cmluZzo6ZW5kc1dpdGggY29uc3QpOgorICAgICAgICAoV1RGOjpB
dG9tU3RyaW5nOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKiB3
dGYvdGV4dC9XVEZTdHJpbmcuaDoKKwogMjAyMi0wMy0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFN0cmluZydzIGZpbmQoKSAvIHJldmVyc2VGaW5kKCkgLyBy
ZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNDVlMjI5ZDQyMGJjYmFlM2EzZTEyOWEyOTMwZDI2YjliZjc2ZWEzLi44
NjNiNzBkZWYzOTdjMmRlNTFiYmZmYzg3YjkzY2NhYzU3Nzk4YzNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzQgQEAKKzIwMjItMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBTdHJpbmcncyBzdGFydHNXaXRoKCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgp
IHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgzMzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3Vs
ZElnbm9yZUljZUNhbmRpZGF0ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb2x2ZWRVUkw6OmlzTG9jYWxVUkwgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNv
bnNvbGVDbGllbnQ6OnNjcmVlbnNob3QpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2U6OnBhdGhNYXRjaGVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldFVubWFuZ2xlZEluZm9Mb2cpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRz
S2V5U3lzdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6c3VwcG9ydHNDb250YWluZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckdTdHJlYW1lcjo6Y2FuRGVjb2RlVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjaGVja1Zhcnlp
bmdzUGFja2luZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9QYXJzZWRSZXF1
ZXN0UmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkUmVxdWVzdFJhbmdlOjpwYXJz
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNoZWNrU2VjdXJlQ29va2llKToKKwogMjAyMi0wMy0yNCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0cmluZydzIGZpbmQoKSAvIHJl
dmVyc2VGaW5kKCkgLyByZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3Rl
YWQgb2YgYSBTdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBhNGM4MWI1MjQ1
N2Q5ODc1ZDI4MGY3NTBkMjU3MzVlZWU2NzBjNjhiLi4xYjA2MDNlNjA4NzY1NTg1NzFmNjFjZTNj
MzE1NDg3MWQ0MGQ1NGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjItMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBTdHJpbmcncyBzdGFydHNXaXRoKCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgpIHNob3Vs
ZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgzMzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6aGFuZGxlQWNjZXB0ZWRD
YW5kaWRhdGVXaXRoU29mdFNwYWNlcyk6CisKIDIwMjItMDMtMTggIEpvbmF0aGFuIEJlZGFyZCAg
PGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgMTUuNF0gRml4IHVudXNlZCB2YXJp
YWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNl
ZEZ1enplckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNl
ZEZ1enplckFnZW50LmNwcAppbmRleCAxYjAzMTMwZjBhNWMwN2MzMzVjYzU4NTY4M2JiNjQ1ZWU1
M2UwOGJmLi5lNjhhMTQ0MzJkYzViMTg2YTE5NWJhNmQzMjA0Y2ZhNzdhNjg3MTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdl
bnQuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFNwZWN1bGF0ZWRUeXBlIEZpbGVCYXNlZEZ1enplckFn
ZW50OjpnZXRQcmVkaWN0aW9uSW50ZXJuYWwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG9yaWdpbmFsOwogICAgICAgICAgICAgaWYgKHNvdXJjZUFmdGVyRGl2
b3QuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgieWllbGQiKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gb3JpZ2luYWw7Ci0gICAgICAgICAgICBpZiAoc291cmNlQWZ0ZXJEaXZvdC5zdGFydHNX
aXRoKCdbJykgJiYgc291cmNlQWZ0ZXJEaXZvdC5lbmRzV2l0aCgiXSIpKQorICAgICAgICAgICAg
aWYgKHNvdXJjZUFmdGVyRGl2b3Quc3RhcnRzV2l0aCgnWycpICYmIHNvdXJjZUFmdGVyRGl2b3Qu
ZW5kc1dpdGgoJ10nKSkKICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWw7CiAgICAgICAg
ICAgICBpZiAoc291cmNlVXBUb0Rpdm90LmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoInlpZWxk
IikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRl
eCA5NWM0M2FmNzdlNzc5OWMyZWFiMzNlNzRmZTBhMTMxYzUwYTU2NjZhLi4wMjJlZGNmYjdkMTU3
MzE2YjcwMTIzMjMzYjI2ZmRhNTkzMGVkZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMjAzLDcg
KzIwMyw3IEBAIEpTT2JqZWN0KiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpyZXNvbHZlZE9wdGlv
bnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHN0YXRpYyBTdHJpbmdWaWV3IHNpbmd1
bGFyVW5pdChTdHJpbmdWaWV3IHVuaXQpCiB7CiAgICAgLy8gUGx1cmFscyBhcmUgYWxsb3dlZCwg
YnV0IHRoYW5rZnVsbHkgdGhleSdyZSBhbGwganVzdCBhIHNpbXBsZSAtcy4KLSAgICByZXR1cm4g
dW5pdC5lbmRzV2l0aCgicyIpID8gdW5pdC5sZWZ0KHVuaXQubGVuZ3RoKCkgLSAxKSA6IHVuaXQ7
CisgICAgcmV0dXJuIHVuaXQuZW5kc1dpdGgoJ3MnKSA/IHVuaXQubGVmdCh1bml0Lmxlbmd0aCgp
IC0gMSkgOiB1bml0OwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLXNpbmd1
bGFycmVsYXRpdmV0aW1ldW5pdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IDY2YjhiOTY1YzllZjI5Y2UwNTVmZTNmOTE5NWZlNGNk
MmFkMzAyMjQuLmM5ZDMwNTJhMzQwNGRjNzJlYjk4YjEwMjAzYzFmZTAyYjhhNDA0ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKQEAg
LTE0NSw3ICsxNDUsNyBAQCB2b2lkIFRlbXBvcmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiBzdGF0aWMgU3RyaW5nVmlldyBzaW5ndWxhclVuaXQoU3RyaW5nVmlldyB1bml0KQogewog
ICAgIC8vIFBsdXJhbHMgYXJlIGFsbG93ZWQsIGJ1dCB0aGFua2Z1bGx5IHRoZXkncmUgYWxsIGp1
c3QgYSBzaW1wbGUgLXMuCi0gICAgcmV0dXJuIHVuaXQuZW5kc1dpdGgoInMiKSA/IHVuaXQubGVm
dCh1bml0Lmxlbmd0aCgpIC0gMSkgOiB1bml0OworICAgIHJldHVybiB1bml0LmVuZHNXaXRoKCdz
JykgPyB1bml0LmxlZnQodW5pdC5sZW5ndGgoKSAtIDEpIDogdW5pdDsKIH0KIAogLy8gRm9yIHVz
ZSBpbiBlcnJvciBtZXNzYWdlcyB3aGVyZSBhIHN0cmluZyB2YWx1ZSBpcyBwb3RlbnRpYWxseSB1
bmJvdW5kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKaW5kZXggYzY2YzhjNWM4MWNkZDBiNmJi
MzA1NjcyYjA4NTMxZGEwYTc3MmJiMi4uMTM2YWM2MjM2NzY5NDUzNTk4MjRlNjcyYzM3YzdjOGU5
ZDRmNzZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKQEAgLTEyNCwxNSArMTI0LDEzIEBA
IHB1YmxpYzoKICAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIHVu
c2lnbmVkIHN0YXJ0KSBjb25zdDsKICAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rp
b24gbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZy5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsgfQogCi0gICAgYm9vbCBzdGFydHNXaXRo
KGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRo
KHN0cmluZyk7IH0KLSAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBT
dHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlKHN0cmluZyk7IH0KKyAgICBib29sIHN0YXJ0c1dpdGgoU3RyaW5nVmlldykgY29u
c3Q7CisgICAgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29u
c3Q7CiAgICAgYm9vbCBzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcuc3RhcnRzV2l0aChjaGFyYWN0ZXIpOyB9Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQg
bWF0Y2hMZW5ndGg+IGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExl
bmd0aF0pIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHBy
ZWZpeCk7IH0KIAotICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKHN0cmluZyk7IH0KLSAgICBib29sIGVuZHNXaXRo
SWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsgfQorICAgIGJvb2wgZW5k
c1dpdGgoU3RyaW5nVmlldykgY29uc3Q7CisgICAgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlD
YXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogICAgIGJvb2wgZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVy
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChjaGFyYWN0ZXIpOyB9Ci0gICAgdGVt
cGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhciAoJnBy
ZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aDxtYXRj
aExlbmd0aD4ocHJlZml4KTsgfQogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21TdHJpbmcg
Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
QXRvbVN0cmluZyBjb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQ29tbW9uLmgKaW5kZXggZGE3OTM5ZWYzZGE3YWNlNmUwNjNlODE5NTgwZjAwMzk0ZTRi
NmFkMS4uYzc3MGUwNDVkMjBjY2UyMzNiZTA4ZjBkYjliZTZiZDgzNjhhZWVjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCkBAIC0zODEsODAgKzM4MSw2IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFN0cmluZ0NsYXNzQT4gYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKGNvbnN0
IFN0cmluZ0NsCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYS5jaGFyYWN0ZXJz
MTYoKSwgYiwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3NBLCB0
eXBlbmFtZSBTdHJpbmdDbGFzc0I+Ci1ib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nQ2xhc3NB
JiByZWZlcmVuY2UsIGNvbnN0IFN0cmluZ0NsYXNzQiYgcHJlZml4KQotewotICAgIHVuc2lnbmVk
IHByZWZpeExlbmd0aCA9IHByZWZpeC5sZW5ndGgoKTsKLSAgICBpZiAocHJlZml4TGVuZ3RoID4g
cmVmZXJlbmNlLmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAocmVm
ZXJlbmNlLmlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChwcmVmaXguaXM4Qml0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNoYXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0
ZXJzOCgpLCBwcmVmaXhMZW5ndGgpOwotICAgICAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNo
YXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4TGVuZ3RoKTsKLSAgICB9
Ci0gICAgaWYgKHByZWZpeC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5j
ZS5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3RlcnM4KCksIHByZWZpeExlbmd0aCk7Ci0g
ICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3Rl
cnMxNigpLCBwcmVmaXhMZW5ndGgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFz
c0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4KLWJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlD
YXNlKGNvbnN0IFN0cmluZ0NsYXNzQSYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmdDbGFzc0ImIHBy
ZWZpeCkKLXsKLSAgICB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSBwcmVmaXgubGVuZ3RoKCk7Ci0g
ICAgaWYgKHByZWZpeExlbmd0aCA+IHJlZmVyZW5jZS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKHJlZmVyZW5jZS5pczhCaXQoKSkgewotICAgICAgICBpZiAocHJl
Zml4LmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
cmVmZXJlbmNlLmNoYXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhMZW5n
dGgpOwotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2UuY2hh
cmFjdGVyczgoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOwotICAgIH0K
LSAgICBpZiAocHJlZml4LmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShyZWZlcmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBw
cmVmaXhMZW5ndGgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5j
ZS5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNz
Qj4KLWJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nQ2xhc3NBJiByZWZlcmVuY2UsIGNvbnN0IFN0
cmluZ0NsYXNzQiYgc3VmZml4KQotewotICAgIHVuc2lnbmVkIHN1ZmZpeExlbmd0aCA9IHN1ZmZp
eC5sZW5ndGgoKTsKLSAgICB1bnNpZ25lZCByZWZlcmVuY2VMZW5ndGggPSByZWZlcmVuY2UubGVu
Z3RoKCk7Ci0gICAgaWYgKHN1ZmZpeExlbmd0aCA+IHJlZmVyZW5jZUxlbmd0aCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSByZWZlcmVuY2VMZW5n
dGggLSBzdWZmaXhMZW5ndGg7Ci0KLSAgICBpZiAocmVmZXJlbmNlLmlzOEJpdCgpKSB7Ci0gICAg
ICAgIGlmIChzdWZmaXguaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gZXF1YWwocmVmZXJl
bmNlLmNoYXJhY3RlcnM4KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCksIHN1
ZmZpeExlbmd0aCk7Ci0gICAgICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczgo
KSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZpeExlbmd0aCk7Ci0g
ICAgfQotICAgIGlmIChzdWZmaXguaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBlcXVhbChyZWZl
cmVuY2UuY2hhcmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCks
IHN1ZmZpeExlbmd0aCk7Ci0gICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYo
KSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZpeExlbmd0aCk7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzQSwgdHlwZW5hbWUgU3RyaW5nQ2xhc3NC
PgotYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0NsYXNzQSYgcmVm
ZXJlbmNlLCBjb25zdCBTdHJpbmdDbGFzc0ImIHN1ZmZpeCkKLXsKLSAgICB1bnNpZ25lZCBzdWZm
aXhMZW5ndGggPSBzdWZmaXgubGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQgcmVmZXJlbmNlTGVuZ3Ro
ID0gcmVmZXJlbmNlLmxlbmd0aCgpOwotICAgIGlmIChzdWZmaXhMZW5ndGggPiByZWZlcmVuY2VM
ZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
ID0gcmVmZXJlbmNlTGVuZ3RoIC0gc3VmZml4TGVuZ3RoOwotCi0gICAgaWYgKHJlZmVyZW5jZS5p
czhCaXQoKSkgewotICAgICAgICBpZiAoc3VmZml4LmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0
dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVmZXJlbmNlLmNoYXJhY3RlcnM4KCkgKyBzdGFy
dE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCksIHN1ZmZpeExlbmd0aCk7Ci0gICAgICAgIHJl
dHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpICsgc3Rh
cnRPZmZzZXQsIHN1ZmZpeC5jaGFyYWN0ZXJzMTYoKSwgc3VmZml4TGVuZ3RoKTsKLSAgICB9Ci0g
ICAgaWYgKHN1ZmZpeC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UocmVmZXJlbmNlLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIHN1ZmZpeC5jaGFy
YWN0ZXJzOCgpLCBzdWZmaXhMZW5ndGgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFj
dGVyczE2KCksIHN1ZmZpeExlbmd0aCk7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBTZWFyY2hD
aGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaENoYXJhY3RlclR5cGU+CiBzaXplX3QgZmluZEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNvdXJjZSwgY29uc3Qg
TWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJhY3RlcnMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBzZWFyY2hMZW5ndGgsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggNmU2NTVjMTRlYTQ0NjJjOGVjYTBjMzk5YjkyM2Q4
MmUxNGY3YTM4OS4uYzc5MjUxNzkzYjdkYTI2Mzk1YzA5NmU0ZTIxM2MzOGU0YzJmYTcyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0xMDUzLDcgKzEwNTMsNyBAQCBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29uc3QgU3RyaW5nSW1wbCYgc3RyaW5nLCB1
bnNpZ25lZCBzdGFydCwgYwogICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczE2KCkg
KyBzdGFydCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1hdGNoU3RyaW5nKSwgbWF0
Y2hMZW5ndGgpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29u
c3QgU3RyaW5nSW1wbCYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCwgY29uc3QgU3RyaW5nSW1wbCYg
bWF0Y2hTdHJpbmcpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29uc3Qg
U3RyaW5nSW1wbCYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCwgU3RyaW5nVmlldyBtYXRjaFN0cmlu
ZykKIHsKICAgICBpZiAoc3RhcnQgPiBzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTEwNzIsMjQgKzEwNzIsMTQgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBl
cXVhbElubmVyKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZywgdW5zaWduZWQgc3RhcnQsIGMKICAg
ICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgc3RhcnQsIG1hdGNoU3RyaW5n
LmNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7CiB9CiAKLWJvb2wgU3RyaW5n
SW1wbDo6c3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcpIGNvbnN0Citib29sIFN0
cmluZ0ltcGw6OnN0YXJ0c1dpdGgoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuICFzdHJpbmcgfHwgOjpXVEY6OnN0YXJ0c1dpdGgoKnRoaXMsICpzdHJpbmcpOworICAgIHJl
dHVybiAhc3RyaW5nIHx8IDo6V1RGOjpzdGFydHNXaXRoKCp0aGlzLCBzdHJpbmcpOwogfQogCi1i
b29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nSW1wbCYgc3RyaW5nKSBjb25z
dAorYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmll
dyBwcmVmaXgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDo6V1RGOjpzdGFydHNXaXRoKCp0aGlzLCBz
dHJpbmcpOwotfQotCi1ib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmdJbXBsKiBwcmVmaXgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHByZWZpeCAm
JiA6OldURjo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAqcHJlZml4KTsKLX0K
LQotYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3Ry
aW5nSW1wbCYgcHJlZml4KSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6c3RhcnRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKCp0aGlzLCBwcmVmaXgpOworICAgIHJldHVybiBwcmVmaXggJiYgOjpX
VEY6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgcHJlZml4KTsKIH0KIAogYm9v
bCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKQEAgLTExMDIs
MjkgKzEwOTIsMTkgQEAgYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKGNvbnN0IGNoYXIqIG1h
dGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkgY29uc3QKICAgICByZXR1cm4gbWF0Y2hM
ZW5ndGggPD0gbGVuZ3RoKCkgJiYgZXF1YWxJbm5lcigqdGhpcywgMCwgbWF0Y2hTdHJpbmcsIG1h
dGNoTGVuZ3RoKTsKIH0KIAotYm9vbCBTdHJpbmdJbXBsOjpoYXNJbmZpeFN0YXJ0aW5nQXQoY29u
c3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAorYm9vbCBT
dHJpbmdJbXBsOjpoYXNJbmZpeFN0YXJ0aW5nQXQoU3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5z
aWduZWQgc3RhcnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGVxdWFsSW5uZXIoKnRoaXMsIHN0YXJ0
LCBtYXRjaFN0cmluZyk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgoU3RyaW5nSW1w
bCogc3VmZml4KQotewotICAgIHJldHVybiBzdWZmaXggJiYgOjpXVEY6OmVuZHNXaXRoKCp0aGlz
LCAqc3VmZml4KTsKLX0KLQotYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChTdHJpbmdJbXBsJiBz
dWZmaXgpCi17Ci0gICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aCgqdGhpcywgc3VmZml4KTsKLX0K
LQotYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
Z0ltcGwqIHN1ZmZpeCkgY29uc3QKK2Jvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgoU3RyaW5nVmll
dyBzdWZmaXgpCiB7Ci0gICAgcmV0dXJuIHN1ZmZpeCAmJiA6OldURjo6ZW5kc1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZSgqdGhpcywgKnN1ZmZpeCk7CisgICAgcmV0dXJuIHN1ZmZpeCAmJiA6OldURjo6
ZW5kc1dpdGgoKnRoaXMsIHN1ZmZpeCk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJiBzdWZmaXgpIGNvbnN0Citib29sIFN0
cmluZ0ltcGw6OmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdWZmaXgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlz
LCBzdWZmaXgpOworICAgIHJldHVybiBzdWZmaXggJiYgOjpXVEY6OmVuZHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UoKnRoaXMsIHN1ZmZpeCk7CiB9CiAKIGJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgo
VUNoYXIgY2hhcmFjdGVyKSBjb25zdApAQCAtMTEzNyw5ICsxMTE3LDkgQEAgYm9vbCBTdHJpbmdJ
bXBsOjplbmRzV2l0aChjb25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5n
dGgpIGNvbnN0CiAgICAgcmV0dXJuIG1hdGNoTGVuZ3RoIDw9IGxlbmd0aCgpICYmIGVxdWFsSW5u
ZXIoKnRoaXMsIGxlbmd0aCgpIC0gbWF0Y2hMZW5ndGgsIG1hdGNoU3RyaW5nLCBtYXRjaExlbmd0
aCk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6aGFzSW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmdJ
bXBsJiBtYXRjaFN0cmluZywgdW5zaWduZWQgZW5kT2Zmc2V0KSBjb25zdAorYm9vbCBTdHJpbmdJ
bXBsOjpoYXNJbmZpeEVuZGluZ0F0KFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGVu
ZCkgY29uc3QKIHsKLSAgICByZXR1cm4gZW5kT2Zmc2V0ID49IG1hdGNoU3RyaW5nLmxlbmd0aCgp
ICYmIGVxdWFsSW5uZXIoKnRoaXMsIGVuZE9mZnNldCAtIG1hdGNoU3RyaW5nLmxlbmd0aCgpLCBt
YXRjaFN0cmluZyk7CisgICAgcmV0dXJuIGVuZCA+PSBtYXRjaFN0cmluZy5sZW5ndGgoKSAmJiBl
cXVhbElubmVyKCp0aGlzLCBlbmQgLSBtYXRjaFN0cmluZy5sZW5ndGgoKSwgbWF0Y2hTdHJpbmcp
OwogfQogCiBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciB0YXJnZXQs
IFVDaGFyIHJlcGxhY2VtZW50KQpAQCAtMTIwMywyMyArMTE4MywyMyBAQCBSZWY8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciB0YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50KQog
ICAgIHJldHVybiBuZXdJbXBsOwogfQogCi1SZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVw
bGFjZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsYWNlLCBTdHJpbmdJ
bXBsKiBzdHJpbmcpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZSh1bnNpZ25l
ZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsYWNlLCBTdHJpbmdWaWV3IHN0cmluZykK
IHsKICAgICBwb3NpdGlvbiA9IHN0ZDo6bWluKHBvc2l0aW9uLCBsZW5ndGgoKSk7CiAgICAgbGVu
Z3RoVG9SZXBsYWNlID0gc3RkOjptaW4obGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0
aW9uKTsKLSAgICB1bnNpZ25lZCBsZW5ndGhUb0luc2VydCA9IHN0cmluZyA/IHN0cmluZy0+bGVu
Z3RoKCkgOiAwOworICAgIHVuc2lnbmVkIGxlbmd0aFRvSW5zZXJ0ID0gc3RyaW5nLmxlbmd0aCgp
OwogICAgIGlmICghbGVuZ3RoVG9SZXBsYWNlICYmICFsZW5ndGhUb0luc2VydCkKICAgICAgICAg
cmV0dXJuICp0aGlzOwogCiAgICAgaWYgKChsZW5ndGgoKSAtIGxlbmd0aFRvUmVwbGFjZSkgPj0g
KE1heExlbmd0aCAtIGxlbmd0aFRvSW5zZXJ0KSkKICAgICAgICAgQ1JBU0goKTsKIAotICAgIGlm
IChpczhCaXQoKSAmJiAoIXN0cmluZyB8fCBzdHJpbmctPmlzOEJpdCgpKSkgeworICAgIGlmIChp
czhCaXQoKSAmJiAoIXN0cmluZyB8fCBzdHJpbmcuaXM4Qml0KCkpKSB7CiAgICAgICAgIExDaGFy
KiBkYXRhOwogICAgICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0
aCgpIC0gbGVuZ3RoVG9SZXBsYWNlICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEpOwogICAgICAgICBj
b3B5Q2hhcmFjdGVycyhkYXRhLCBtX2RhdGE4LCBwb3NpdGlvbik7CiAgICAgICAgIGlmIChzdHJp
bmcpCi0gICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24sIHN0cmluZy0+
bV9kYXRhOCwgbGVuZ3RoVG9JbnNlcnQpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0
YSArIHBvc2l0aW9uLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoVG9JbnNlcnQpOwogICAg
ICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24gKyBsZW5ndGhUb0luc2VydCwgbV9k
YXRhOCArIHBvc2l0aW9uICsgbGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0aW9uIC0g
bGVuZ3RoVG9SZXBsYWNlKTsKICAgICAgICAgcmV0dXJuIG5ld0ltcGw7CiAgICAgfQpAQCAtMTIz
MCwxMCArMTIxMCwxMCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZSh1bnNp
Z25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsYWNlLAogICAgIGVsc2UKICAgICAg
ICAgY29weUNoYXJhY3RlcnMoZGF0YSwgbV9kYXRhMTYsIHBvc2l0aW9uKTsKICAgICBpZiAoc3Ry
aW5nKSB7Ci0gICAgICAgIGlmIChzdHJpbmctPmlzOEJpdCgpKQotICAgICAgICAgICAgY29weUNo
YXJhY3RlcnMoZGF0YSArIHBvc2l0aW9uLCBzdHJpbmctPm1fZGF0YTgsIGxlbmd0aFRvSW5zZXJ0
KTsKKyAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0
ZXJzKGRhdGEgKyBwb3NpdGlvbiwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aFRvSW5zZXJ0
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIHBvc2l0
aW9uLCBzdHJpbmctPm1fZGF0YTE2LCBsZW5ndGhUb0luc2VydCk7CisgICAgICAgICAgICBjb3B5
Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24sIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3Ro
VG9JbnNlcnQpOwogICAgIH0KICAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgIGNvcHlDaGFyYWN0
ZXJzKGRhdGEgKyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0LCBtX2RhdGE4ICsgcG9zaXRpb24g
KyBsZW5ndGhUb1JlcGxhY2UsIGxlbmd0aCgpIC0gcG9zaXRpb24gLSBsZW5ndGhUb1JlcGxhY2Up
OwpAQCAtMTI0MiwxMyArMTIyMiwxMyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVw
bGFjZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsYWNlLAogICAgIHJl
dHVybiBuZXdJbXBsOwogfQogCi1SZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShV
Q2hhciBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudCkKK1JlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQp
CiB7CiAgICAgaWYgKCFyZXBsYWNlbWVudCkKICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIGlm
IChyZXBsYWNlbWVudC0+aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiByZXBsYWNlKHBhdHRlcm4s
IHJlcGxhY2VtZW50LT5tX2RhdGE4LCByZXBsYWNlbWVudC0+bGVuZ3RoKCkpOwotICAgIHJldHVy
biByZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50LT5tX2RhdGExNiwgcmVwbGFjZW1lbnQtPmxl
bmd0aCgpKTsKKyAgICBpZiAocmVwbGFjZW1lbnQuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBy
ZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50LmNoYXJhY3RlcnM4KCksIHJlcGxhY2VtZW50Lmxl
bmd0aCgpKTsKKyAgICByZXR1cm4gcmVwbGFjZShwYXR0ZXJuLCByZXBsYWNlbWVudC5jaGFyYWN0
ZXJzMTYoKSwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOwogfQogCiBSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBMQ2hhciogcmVwbGFjZW1lbnQs
IHVuc2lnbmVkIHJlcFN0ckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggOTQ5
NTBjMzU0NWEwZmFlM2YyZTkxYjZlN2E1OGNmNWEwZDY5NDM5Yi4uODZhOTYxYmVkMzg5NmIwN2Vh
NmY0ZDYzNDk5YmJjZWZhOTAyZmM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTQz
OCwzMSArNDM4LDI1IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJl
dmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBzdGFydCA9IE1heExlbmd0aCk7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFy
dCA9IE1heExlbmd0aCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRo
KGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCopIGNv
bnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgc3RhcnRzV2l0aChTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChVQ2hhcikgY29uc3Q7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyKiwgdW5zaWduZWQgbWF0
Y2hMZW5ndGgpIGNvbnN0OwotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29s
IHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJl
dHVybiBzdGFydHNXaXRoKHByZWZpeCwgbWF0Y2hMZW5ndGggLSAxKTsgfQotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBib29sIGhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJpbmdJbXBsJiwgdW5z
aWduZWQgc3RhcnQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGhhc0luZml4
U3RhcnRpbmdBdChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCkgY29uc3Q7CiAKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBsKik7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCYpOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCopIGNv
bnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgU3RyaW5nSW1wbCYpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IGVuZHNXaXRoKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZW5kc1dpdGgoVUNoYXIpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgZW5kc1dpdGgoY29uc3Qg
Y2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBlbmRzV2l0aChwcmVm
aXgsIG1hdGNoTGVuZ3RoIC0gMSk7IH0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNJ
bmZpeEVuZGluZ0F0KGNvbnN0IFN0cmluZ0ltcGwmLCB1bnNpZ25lZCBlbmRPZmZzZXQpIGNvbnN0
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGhhc0luZml4RW5kaW5nQXQoU3RyaW5nVmll
dywgdW5zaWduZWQgZW5kKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3Ry
aW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgVUNoYXIpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBS
ZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nVmlldyk7CiAg
ICAgQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBj
b25zdCBjaGFyKiByZXBsYWNlbWVudCwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpIHsgcmV0
dXJuIHJlcGxhY2UocGF0dGVybiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHJlcGxh
Y2VtZW50KSwgcmVwbGFjZW1lbnRMZW5ndGgpOyB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJl
ZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkIHJlcGxh
Y2VtZW50TGVuZ3RoKTsKICAgICBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgY29uc3Qg
VUNoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgs
IFN0cmluZ1ZpZXcpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVDaGFyRGlyZWN0aW9uIGRl
ZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gbnVs
bHB0cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNzMwZGU5NWExZGM0ZGM1NGEy
YzkyYjcyYjQ1NmRmZTg5NzA2MmUzYi4uYTY1ZTAwOTFmYjc0NDZiNWEzNmIyOThiYTgyNWMwM2Jm
ZDJmNzI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTExNTcsNiArMTE1Nyw3NiBA
QCBpbmxpbmUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHNvdXJjZSwg
U3RyaW5nVmlldyBzdHJpbmdUb0ZpbmQsCiAgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzb3VyY2UuY2hhcmFjdGVyczE2KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJzMTYoKSwgc3Rh
cnQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOwogfQogCitpbmxpbmUgYm9vbCBzdGFydHNX
aXRoKFN0cmluZ1ZpZXcgcmVmZXJlbmNlLCBTdHJpbmdWaWV3IHByZWZpeCkKK3sKKyAgICB1bnNp
Z25lZCBwcmVmaXhMZW5ndGggPSBwcmVmaXgubGVuZ3RoKCk7CisgICAgaWYgKHByZWZpeExlbmd0
aCA+IHJlZmVyZW5jZS5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KHJlZmVyZW5jZS5pczhCaXQoKSkgeworICAgICAgICBpZiAocHJlZml4LmlzOEJpdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpLCBwcmVmaXguY2hh
cmFjdGVyczgoKSwgcHJlZml4TGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5j
ZS5jaGFyYWN0ZXJzOCgpLCBwcmVmaXguY2hhcmFjdGVyczE2KCksIHByZWZpeExlbmd0aCk7Cisg
ICAgfQorICAgIGlmIChwcmVmaXguaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBlcXVhbChyZWZl
cmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhMZW5ndGgp
OworICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFy
YWN0ZXJzMTYoKSwgcHJlZml4TGVuZ3RoKTsKK30KKworaW5saW5lIGJvb2wgc3RhcnRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgcmVmZXJlbmNlLCBTdHJpbmdWaWV3IHByZWZpeCkK
K3sKKyAgICB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSBwcmVmaXgubGVuZ3RoKCk7CisgICAgaWYg
KHByZWZpeExlbmd0aCA+IHJlZmVyZW5jZS5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKHJlZmVyZW5jZS5pczhCaXQoKSkgeworICAgICAgICBpZiAocHJlZml4Lmlz
OEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVmZXJl
bmNlLmNoYXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhMZW5ndGgpOwor
ICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2UuY2hhcmFjdGVy
czgoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOworICAgIH0KKyAgICBp
ZiAocHJlZml4LmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShyZWZlcmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhM
ZW5ndGgpOworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFy
YWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOworfQorCitp
bmxpbmUgYm9vbCBlbmRzV2l0aChTdHJpbmdWaWV3IHJlZmVyZW5jZSwgU3RyaW5nVmlldyBzdWZm
aXgpCit7CisgICAgdW5zaWduZWQgc3VmZml4TGVuZ3RoID0gc3VmZml4Lmxlbmd0aCgpOworICAg
IHVuc2lnbmVkIHJlZmVyZW5jZUxlbmd0aCA9IHJlZmVyZW5jZS5sZW5ndGgoKTsKKyAgICBpZiAo
c3VmZml4TGVuZ3RoID4gcmVmZXJlbmNlTGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHJlZmVyZW5jZUxlbmd0aCAtIHN1ZmZpeExlbmd0
aDsKKworICAgIGlmIChyZWZlcmVuY2UuaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKHN1ZmZpeC5p
czhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczgo
KSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczgoKSwgc3VmZml4TGVuZ3RoKTsKKyAg
ICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQs
IHN1ZmZpeC5jaGFyYWN0ZXJzMTYoKSwgc3VmZml4TGVuZ3RoKTsKKyAgICB9CisgICAgaWYgKHN1
ZmZpeC5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJz
MTYoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczgoKSwgc3VmZml4TGVuZ3RoKTsK
KyAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQs
IHN1ZmZpeC5jaGFyYWN0ZXJzMTYoKSwgc3VmZml4TGVuZ3RoKTsKK30KKworaW5saW5lIGJvb2wg
ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHJlZmVyZW5jZSwgU3RyaW5nVmll
dyBzdWZmaXgpCit7CisgICAgdW5zaWduZWQgc3VmZml4TGVuZ3RoID0gc3VmZml4Lmxlbmd0aCgp
OworICAgIHVuc2lnbmVkIHJlZmVyZW5jZUxlbmd0aCA9IHJlZmVyZW5jZS5sZW5ndGgoKTsKKyAg
ICBpZiAoc3VmZml4TGVuZ3RoID4gcmVmZXJlbmNlTGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHJlZmVyZW5jZUxlbmd0aCAtIHN1ZmZp
eExlbmd0aDsKKworICAgIGlmIChyZWZlcmVuY2UuaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKHN1
ZmZpeC5pczhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIHN1ZmZpeC5jaGFyYWN0ZXJz
OCgpLCBzdWZmaXhMZW5ndGgpOworICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShyZWZlcmVuY2UuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVy
czE2KCksIHN1ZmZpeExlbmd0aCk7CisgICAgfQorICAgIGlmIChzdWZmaXguaXM4Qml0KCkpCisg
ICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJz
MTYoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczgoKSwgc3VmZml4TGVuZ3RoKTsK
KyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2UuY2hhcmFjdGVyczE2
KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnMxNigpLCBzdWZmaXhMZW5ndGgpOwor
fQorCiBpbmxpbmUgc2l6ZV90IFN0cmluZzo6ZmluZChTdHJpbmdWaWV3IHN0cmluZykgY29uc3QK
IHsKICAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZykgOiBub3RGb3VuZDsK
QEAgLTEyMDMsMTMgKzEyNzMsNTAgQEAgaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFN0
cmluZ1ZpZXcgdGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQogICAgIHJldHVybiAqdGhp
czsKIH0KIAotaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCitpbmxpbmUgU3RyaW5n
JiBTdHJpbmc6OnJlcGxhY2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgU3RyaW5n
VmlldyByZXBsYWNlbWVudCkKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwgPSBt
X2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQpOworICAgIHJldHVybiAq
dGhpczsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwg
U3RyaW5nVmlldyByZXBsYWNlbWVudCkKIHsKICAgICBpZiAobV9pbXBsKQotICAgICAgICBtX2lt
cGwgPSBtX2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQuaW1wbCgpKTsK
KyAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldCwgcmVwbGFjZW1lbnQpOwog
ICAgIHJldHVybiAqdGhpczsKIH0KIAoraW5saW5lIGJvb2wgU3RyaW5nOjpzdGFydHNXaXRoKFN0
cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0
YXJ0c1dpdGgoc3RyaW5nKSA6IHN0cmluZy5pc0VtcHR5KCk7Cit9CisKK2lubGluZSBib29sIFN0
cmluZzo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25z
dAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShzdHJpbmcpIDogc3RyaW5nLmlzRW1wdHkoKTsKK30KKworaW5saW5lIGJvb2wgU3RyaW5n
OjplbmRzV2l0aChTdHJpbmdWaWV3IHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5lbmRzV2l0aChzdHJpbmcpIDogc3RyaW5nLmlzRW1wdHkoKTsKK30KKworaW5s
aW5lIGJvb2wgU3RyaW5nOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3Ry
aW5nKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nKSA6IHN0cmluZy5pc0VtcHR5KCk7Cit9CisKK2lubGluZSBib29s
IFN0cmluZzo6aGFzSW5maXhTdGFydGluZ0F0KFN0cmluZ1ZpZXcgcHJlZml4LCB1bnNpZ25lZCBz
dGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBsICYmIHByZWZpeCAmJiBtX2ltcGwtPmhh
c0luZml4U3RhcnRpbmdBdChwcmVmaXgsIHN0YXJ0KTsKK30KKworaW5saW5lIGJvb2wgU3RyaW5n
OjpoYXNJbmZpeEVuZGluZ0F0KFN0cmluZ1ZpZXcgc3VmZml4LCB1bnNpZ25lZCBlbmQpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faW1wbCAmJiBzdWZmaXggJiYgbV9pbXBsLT5oYXNJbmZpeEVuZGlu
Z0F0KHN1ZmZpeCwgZW5kKTsKK30KKwogaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kKFN0
cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9z
dHJpbmcuZmluZChzdHJpbmcsIHN0YXJ0KTsKQEAgLTEyMzUsNiArMTM0MiwyNiBAQCBpbmxpbmUg
Ym9vbCBBdG9tU3RyaW5nOjpjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3Ry
aW5nKSBjb25zdAogICAgIHJldHVybiBtX3N0cmluZy5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZyk7CiB9CiAKK2lubGluZSBib29sIEF0b21TdHJpbmc6OnN0YXJ0c1dpdGgoU3RyaW5n
VmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoc3Ry
aW5nKTsKK30KKworaW5saW5lIGJvb2wgQXRvbVN0cmluZzo6c3RhcnRzV2l0aElnbm9yaW5nQVND
SUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5z
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsKK30KKworaW5saW5lIGJvb2wgQXRv
bVN0cmluZzo6ZW5kc1dpdGgoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fc3RyaW5nLmVuZHNXaXRoKHN0cmluZyk7Cit9CisKK2lubGluZSBib29sIEF0b21TdHJpbmc6
OmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YXBwZW5kOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKaW5kZXggMjZhOTE1ZjhlMjFmODg0MDQ4ZTM4ZThkMTljMWIzNWEwYmQzODg1Ni4u
NWZlZjRjZmI4OTdjMWIzOTIyMTU3ZjA5NmYyNzEwYzcwZTNhNWQ5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCkBAIC0xODIsMTggKzE4MiwxNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWlu
c0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCkgY29uc3Q7CiAKLSAg
ICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5
KCk7IH0KLSAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcm
IHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nLmltcGwoKSkgOiBzdHJpbmcuaXNFbXB0eSgpOyB9CisgICAgYm9v
bCBzdGFydHNXaXRoKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgc3RhcnRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogICAgIGJvb2wgc3RhcnRzV2l0aChVQ2hh
ciBjaGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiBtX2ltcGwtPnN0YXJ0c1dpdGgo
Y2hhcmFjdGVyKTsgfQotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIHN0
YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCkgOiAhbWF0
Y2hMZW5ndGg7IH0KLSAgICBib29sIGhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJpbmcmIHBy
ZWZpeCwgdW5zaWduZWQgc3RhcnQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiBwcmVmaXguaW1w
bCgpICYmIG1faW1wbC0+aGFzSW5maXhTdGFydGluZ0F0KCpwcmVmaXguaW1wbCgpLCBzdGFydCk7
IH0KKyAgICBib29sIGhhc0luZml4U3RhcnRpbmdBdChTdHJpbmdWaWV3IHByZWZpeCwgdW5zaWdu
ZWQgc3RhcnQpIGNvbnN0OwogCi0gICAgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHN0cmlu
ZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aChzdHJpbmcuaW1wbCgp
KSA6IHN0cmluZy5pc0VtcHR5KCk7IH0KLSAgICBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5
KCk7IH0KKyAgICBib29sIGVuZHNXaXRoKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgZW5k
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKICAgICBib29sIGVuZHNX
aXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9pbXBsICYmIG1faW1wbC0+ZW5k
c1dpdGgoY2hhcmFjdGVyKTsgfQogICAgIGJvb2wgZW5kc1dpdGgoY2hhciBjaGFyYWN0ZXIpIGNv
bnN0IHsgcmV0dXJuIGVuZHNXaXRoKHN0YXRpY19jYXN0PFVDaGFyPihjaGFyYWN0ZXIpKTsgfQot
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIGVuZHNXaXRoKGNvbnN0IGNo
YXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5lbmRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4KSA6ICFtYXRjaExlbmd0aDsgfQotICAgIGJv
b2wgaGFzSW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmcmIHN1ZmZpeCwgdW5zaWduZWQgZW5kT2Zm
c2V0KSBjb25zdCB7IHJldHVybiBtX2ltcGwgJiYgc3VmZml4LmltcGwoKSAmJiBtX2ltcGwtPmhh
c0luZml4RW5kaW5nQXQoKnN1ZmZpeC5pbXBsKCksIGVuZE9mZnNldCk7IH0KKyAgICBib29sIGhh
c0luZml4RW5kaW5nQXQoU3RyaW5nVmlldyBzdWZmaXgsIHVuc2lnbmVkIGVuZCkgY29uc3Q7CiAK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKExDaGFyKTsKQEAgLTIwNCw5ICsyMDIsOSBA
QCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5zZXJ0KGNvbnN0IFN0cmlu
ZyYsIHVuc2lnbmVkIHBvc2l0aW9uKTsKIAogICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciB0YXJn
ZXQsIFVDaGFyIHJlcGxhY2VtZW50KTsKLSAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgdGFyZ2V0
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKKyAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIg
dGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KTsKICAgICBTdHJpbmcmIHJlcGxhY2UoU3Ry
aW5nVmlldyB0YXJnZXQsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQpOwotICAgIFN0cmluZyYgcmVw
bGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50KTsKKyAgICBTdHJpbmcmIHJlcGxhY2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxl
bmd0aCwgU3RyaW5nVmlldyByZXBsYWNlbWVudCk7CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hh
cmFjdGVyQ291bnQ+IFN0cmluZyYgcmVwbGFjZVdpdGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29u
c3QgY2hhciAoJnJlcGxhY2VtZW50KVtjaGFyYWN0ZXJDb3VudF0pOwogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgdHJ1bmNhdGUodW5zaWduZWQgbGVuZ3RoKTsKQEAgLTQ5OSwxMyArNDk3
LDYgQEAgaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwgVUNoYXIg
cmVwbGFjZW1lbnQpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1pbmxpbmUgU3RyaW5nJiBTdHJp
bmc6OnJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KQotewot
ICAgIGlmIChtX2ltcGwpCi0gICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQs
IHJlcGxhY2VtZW50LmltcGwoKSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCiB0ZW1wbGF0ZTx1
bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gQUxXQVlTX0lOTElORSBTdHJpbmcmIFN0cmluZzo6cmVw
bGFjZVdpdGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSkKIHsKICAgICBpZiAobV9pbXBsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
CmluZGV4IDJmMzNmMmIwNzJmYTNmZWY1ZDNhYjdkZDNhZjlhMjhhNjRhYjEwY2UuLjFjMDM0NTdl
ZGY4ODdmNzU5OTdjNDQ0NWYwZDM0YmZhZGEyMTdiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAKQEAgLTI5Niw3ICsyOTYsNyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RJUEFkZHJlc3MoU3Ry
aW5nVmlldyBzZHApCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSWdub3JlSWNlQ2FuZGlkYXRl
KGNvbnN0IFJUQ0ljZUNhbmRpZGF0ZSYgaWNlQ2FuZGlkYXRlKQogewogICAgIGF1dG8gYWRkcmVz
cyA9IGV4dHJhY3RJUEFkZHJlc3MoaWNlQ2FuZGlkYXRlLmNhbmRpZGF0ZSgpKTsKLSAgICBpZiAo
IWFkZHJlc3MuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmxvY2FsIl9zKSkKKyAgICBpZiAo
IWFkZHJlc3MuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmxvY2FsIikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmICghV1RGOjppc1ZlcnNpb240VVVJRChTdHJpbmdWaWV3IHsg
YWRkcmVzcyB9LnN1YnN0cmluZygwLCBhZGRyZXNzLmxlbmd0aCgpIC0gNikpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKaW5kZXggYzg3MzQxNDYxN2I4MWVjN2ExMTljMWMxNDMw
MDdkZDBkNzBkNzFjYS4uMTczNGU5OTRmOGZkNWM1ZjcyOTk2MmYzZmNlN2Q0Y2QwMjNkNWU3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGF0
aWMgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc29sdmVkVVJMJiBhLCBjb25zdCBSZXNvbHZlZFVS
TCYgYikKIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLyN1cmwtbG9jYWwt
dXJsLWZsYWcKIGJvb2wgUmVzb2x2ZWRVUkw6OmlzTG9jYWxVUkwoKSBjb25zdAogewotICAgIHJl
dHVybiBzcGVjaWZpZWRVUkxTdHJpbmcuc3RhcnRzV2l0aCgiIyIpOworICAgIHJldHVybiBzcGVj
aWZpZWRVUkxTdHJpbmcuc3RhcnRzV2l0aCgnIycpOwogfQogCiBzdGF0aWMgUmVzb2x2ZWRVUkwg
bWFrZVJlc29sdmVkVVJMKFVSTCYmIHJlc29sdmVkVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25zb2xlQ2xpZW50LmNwcAppbmRleCAwZWM0ZWFiMTY0ZTgyOGUwYTNmZDg3YjYyMTFiODQ3
ODUzMDZhN2YwLi5kZmVkYTRkYTVmZDZjNTRiOGVkODdlZGNiMzY3NDlkOGM4MGE4NTBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApAQCAtNDAxLDcgKzQwMSw3
IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmCiAgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzE4MDgzMz4gV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBPZmZzY3JlZW5D
YW52YXMgZm9yIENhbnZhcyByZWxhdGVkIG9wZXJhdGlvbnMKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIFN0cmluZyBiYXNlNjQ7Ci0gICAgICAgICAgICBpZiAocG9zc2libGVUYXJnZXQu
Z2V0U3RyaW5nKGxleGljYWxHbG9iYWxPYmplY3QsIGJhc2U2NCkgJiYgYmFzZTY0LnN0YXJ0c1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZSgiZGF0YToiX3MpICYmIGJhc2U2NC5sZW5ndGgoKSA+IDUpIHsK
KyAgICAgICAgICAgIGlmIChwb3NzaWJsZVRhcmdldC5nZXRTdHJpbmcobGV4aWNhbEdsb2JhbE9i
amVjdCwgYmFzZTY0KSAmJiBiYXNlNjQuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJkYXRh
OiIpICYmIGJhc2U2NC5sZW5ndGgoKSA+IDUpIHsKICAgICAgICAgICAgICAgICB0YXJnZXQgPSBw
b3NzaWJsZVRhcmdldDsKICAgICAgICAgICAgICAgICBkYXRhVVJMID0gYmFzZTY0OwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZS5jcHAKaW5kZXggMmZmZDI3ODljZTEwOWI0OWY2N2MxYTBkMjY0MTY1
ODY5OTE5ZGM0Ny4uNzFkYzZjYTIzNDNhMDNlYjI3NWM5MWI0ZWUxMWJjY2NmYWQ2ODI3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2UuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlOjpwYXRoTWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKIAogICAgIGF1dG8gcGF0
aCA9IFBBTDo6ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5wYXRoKCkpOwogCi0gICAgaWYg
KG1fcGF0aC5lbmRzV2l0aCgiLyIpKQorICAgIGlmIChtX3BhdGguZW5kc1dpdGgoJy8nKSkKICAg
ICAgICAgcmV0dXJuIHBhdGguc3RhcnRzV2l0aChtX3BhdGgpOwogCiAgICAgcmV0dXJuIHBhdGgg
PT0gbV9wYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCBjYzI5Y2Zi
NDY3M2M2NjIxMWRlMWE0MWVlMmJmNmEyZThiYTExZmQ1Li41ZDk2N2ViN2Q2ZjQ1ZTY1YjMxYmU5
Y2RhODViOTg5ZDJiYzE2YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApA
QCAtMTkxMSw4ICsxOTExLDggQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldFVu
bWFuZ2xlZEluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXJzWzJdLAogICAgIC8vIGNhdXNl
cyBhIHdhcm5pbmcgaW4gc29tZSBjb21waWxlcnMuIFRoZXJlIGlzIG5vIHBvaW50IHNob3dpbmcK
ICAgICAvLyB0aGlzIHdhcm5pbmcgdG8gdGhlIHVzZXIgc2luY2UgdGhleSBkaWRuJ3Qgd3JpdGUg
dGhlIGNvZGUgdGhhdAogICAgIC8vIGlzIGNhdXNpbmcgaXQuCi0gICAgc3RhdGljIGNvbnN0IE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gYW5nbGVXYXJuaW5nIHsgIldBUk5JTkc6IDA6MTogZXh0ZW5z
aW9uICdHTF9BUkJfZ3B1X3NoYWRlcjUnIGlzIG5vdCBzdXBwb3J0ZWRcbiJfcyB9OwotICAgIGlu
dCBzdGFydEZyb20gPSBsb2cuc3RhcnRzV2l0aChhbmdsZVdhcm5pbmcpID8gYW5nbGVXYXJuaW5n
LmdldCgpLmxlbmd0aCgpIDogMDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBhbmdsZVdhcm5pbmdb
XSA9ICJXQVJOSU5HOiAwOjE6IGV4dGVuc2lvbiAnR0xfQVJCX2dwdV9zaGFkZXI1JyBpcyBub3Qg
c3VwcG9ydGVkXG4iOworICAgIGludCBzdGFydEZyb20gPSBsb2cuc3RhcnRzV2l0aChhbmdsZVdh
cm5pbmcpID8gc2l6ZW9mKGFuZ2xlV2FybmluZykgLSAxIDogMDsKICAgICBwcm9jZXNzZWRMb2cu
YXBwZW5kKGxvZy5zdWJzdHJpbmcoc3RhcnRGcm9tLCBsb2cubGVuZ3RoKCkgLSBzdGFydEZyb20p
KTsKIAogICAgIExPRyhXZWJHTCwgIlVubWFuZ2xlZCBTaGFkZXJJbmZvTG9nOlxuJXMiLCBwcm9j
ZXNzZWRMb2cudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IDYyMTI5ZDIyZWE5MTkwNWI0Mjg0YmQzOTIwMzRk
NzlmNzEwYmFlYjYuLjQxZDY2YzQ0Y2MzNGNmZDIwYWY4NWVkMTdkMDY5M2JjMDJhNTJkNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtMjUwLDcgKzI1
MCw3IEBAIGJvb2wgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIu
aW8vZW5jcnlwdGVkLW1lZGlhLyNrZXktc3lzdGVtCiAgICAgLy8gIktleSBTeXN0ZW0gc3RyaW5n
cyBhcmUgY29tcGFyZWQgdXNpbmcgY2FzZS1zZW5zaXRpdmUgbWF0Y2hpbmcuIgotICAgIHJldHVy
biBrZXlTeXN0ZW0gPT0gImNvbS5hcHBsZS5mcHMiIHx8IGtleVN5c3RlbS5zdGFydHNXaXRoKCJj
b20uYXBwbGUuZnBzLiJfcyk7CisgICAgcmV0dXJuIGtleVN5c3RlbSA9PSAiY29tLmFwcGxlLmZw
cyIgfHwga2V5U3lzdGVtLnN0YXJ0c1dpdGgoImNvbS5hcHBsZS5mcHMuIik7CiB9CiAKIENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKGNvbnN0
IENETVByaXZhdGVDbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5jcHAKaW5kZXggMjljOWFiNGVlZGYyZDYzOWI0MWU4MmZhNmFjMmRmMzc5ZjRhMzQ3My4u
YzVmYjk2YmViNTkxN2JmN2VjMjlhNWRjYjY0MWVjY2QwOTk1ZGYwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6c3VwcG9ydHNDb250YWluZXJUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkKICAgICBpZiAoIWlzSW5XZWJQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmICghdHlwZS5zdGFydHNXaXRoKCJ2aWRlby8iX3MpKQorICAgIGlmICghdHlwZS5zdGFy
dHNXaXRoKCJ2aWRlby8iKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIEdT
dHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCkuaXNDb250YWluZXJUeXBlU3VwcG9y
dGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIHR5
cGUpOwpAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjYW5E
ZWNvZGVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgaWYgKG1pbWVUeXBlLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFtaW1lVHlwZS5zdGFydHNX
aXRoKCJ2aWRlby8iX3MpKQorICAgIGlmICghbWltZVR5cGUuc3RhcnRzV2l0aCgidmlkZW8vIikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIElkZWFsbHkgdGhpcyBkZWNvZGVyIHNo
b3VsZCBvcGVyYXRlIG9ubHkgZnJvbSB0aGUgV2ViUHJvY2VzcyAob3IgZnJvbSB0aGUgR1BVUHJv
Y2Vzcykgd2hpY2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggOWYyNzA3NGZjNzRhOTg1Y2Q5ODc0NTY5NzgyNzIxMGI5NzhkZWM1OC4uM2Mw
ZDhmNzNjNDJiOGQ0MmRjYmE3YmQyM2YwNzE3ZDY4ZmZlY2E0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI1ODIsNyArMjU4Miw3IEBA
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpz
dXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAv
LyBUaGlzIHBsYXllciBkb2Vzbid0IHN1cHBvcnQgcGljdHVyZXMgcmVuZGVyaW5nLgotICAgIGlm
IChwYXJhbWV0ZXJzLnR5cGUucmF3KCkuc3RhcnRzV2l0aCgiaW1hZ2UiX3MpKQorICAgIGlmIChw
YXJhbWV0ZXJzLnR5cGUucmF3KCkuc3RhcnRzV2l0aCgiaW1hZ2UiKSkKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKIAogICAgIGF1dG8mIGdzdFJlZ2lzdHJ5U2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcAppbmRleCA0YTllOGZhZTAzN2VlZjQwZGVkOWYyY2VhZjg3MmZhMTU4YTQzYWZiLi4yMDI3
NmE1MTI3YjU0ZjBjMjc4MDY1NTNlMmRmZGE1ZjQyMTc4NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTUyOCw3ICs1MjgsNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjaGVja1ZhcnlpbmdzUGFja2luZyhQbGF0Zm9ybUdMT2JqZWN0IHZlcnRl
eFNoYWRlcgogICAgICAgICBjb25zdCBTdHJpbmcmIHN5bWJvbE5hbWUgPSB2ZXJ0ZXhTeW1ib2wu
a2V5OwogICAgICAgICAvLyBUaGUgdmFyeWluZyBtYXAgaW5jbHVkZXMgdmFyaWFibGVzIGZvciBl
YWNoIGluZGV4IG9mIGFuIGFycmF5IHZhcmlhYmxlLgogICAgICAgICAvLyBXZSBvbmx5IHdhbnQg
YSBzaW5nbGUgdmFyaWFibGUgdG8gcmVwcmVzZW50IHRoZSBhcnJheS4KLSAgICAgICAgaWYgKHN5
bWJvbE5hbWUuZW5kc1dpdGgoIl0iKSkKKyAgICAgICAgaWYgKHN5bWJvbE5hbWUuZW5kc1dpdGgo
J10nKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIERvbid0IGNvdW50IGJ1
aWx0IGluIHZhcnlpbmdzLgpAQCAtMTk3NCw4ICsxOTc0LDggQEAgU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRVbm1hbmdsZWRJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
c1syXSwKICAgICAvLyBjYXVzZXMgYSB3YXJuaW5nIGluIHNvbWUgY29tcGlsZXJzLiBUaGVyZSBp
cyBubyBwb2ludCBzaG93aW5nCiAgICAgLy8gdGhpcyB3YXJuaW5nIHRvIHRoZSB1c2VyIHNpbmNl
IHRoZXkgZGlkbid0IHdyaXRlIHRoZSBjb2RlIHRoYXQKICAgICAvLyBpcyBjYXVzaW5nIGl0Lgot
ICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFuZ2xlV2FybmluZyB7ICJX
QVJOSU5HOiAwOjE6IGV4dGVuc2lvbiAnR0xfQVJCX2dwdV9zaGFkZXI1JyBpcyBub3Qgc3VwcG9y
dGVkXG4iX3MgfTsKLSAgICBpbnQgc3RhcnRGcm9tID0gbG9nLnN0YXJ0c1dpdGgoYW5nbGVXYXJu
aW5nKSA/IGFuZ2xlV2FybmluZy5nZXQoKS5sZW5ndGgoKSA6IDA7CisgICAgc3RhdGljIGNvbnN0
IGNoYXIgYW5nbGVXYXJuaW5nW10gPSAiV0FSTklORzogMDoxOiBleHRlbnNpb24gJ0dMX0FSQl9n
cHVfc2hhZGVyNScgaXMgbm90IHN1cHBvcnRlZFxuIjsKKyAgICBpbnQgc3RhcnRGcm9tID0gbG9n
LnN0YXJ0c1dpdGgoYW5nbGVXYXJuaW5nKSA/IHNpemVvZihhbmdsZVdhcm5pbmcpIC0gMSA6IDA7
CiAgICAgaW50IG1hdGNoZWRMZW5ndGggPSAwOwogCiAgICAgZG8gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2UuY3BwCmluZGV4
IDZkZGY4OWUzNTE4OTZkZmJjM2UzNDFmOTQwM2UxYjVmZTgyMGZlMzkuLjZjOWRiMTdlZjgxNDNl
MDRiNDYyNTg0ZDk5MjVhMTdhNTE2N2MyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUGFyc2VkUmVxdWVzdFJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZFJlcXVlc3RSYW5nZS5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RkOjpvcHRpb25hbDxQYXJzZWRSZXF1ZXN0UmFuZ2U+
IFBhcnNlZFJlcXVlc3RSYW5nZTo6cGFyc2UoU3RyaW5nVmlldyBpbnB1dCkKIHsKICAgICAvLyBo
dHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMyNzZWN0aW9uLTIuMSBidXQgYXNzdW1p
bmcgdGhlcmUgd2lsbCBhbHdheXMgYmUgYSBiZWdpbiBhbmQgYW4gZW5kIG9yIHBhcnNpbmcgd2ls
bCBmYWlsCi0gICAgaWYgKCFpbnB1dC5zdGFydHNXaXRoKFN0cmluZ1ZpZXcoImJ5dGVzPSJfcykp
KQorICAgIGlmICghaW5wdXQuc3RhcnRzV2l0aChTdHJpbmdWaWV3KCJieXRlcz0iKSkpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzaXplX3QgYmVnaW4geyAwIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNw
cAppbmRleCBjZTExYzdkODYxYWE0MzBjZTI4ZTUyOTI3NzdkMmU0YmEwMmZlNTY2Li5hYTY5NTUw
YTFmMDc3OWQyYzQ1MjY1MzJjYjMxN2MyMGU1ZTdjMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKQEAgLTQ5MCwxMSAr
NDkwLDExIEBAIGJvb2wgQ29va2llSmFyREI6Omhhc0h0dHBPbmx5Q29va2llKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvCiAKIHN0YXRpYyBib29sIGNoZWNrU2Vj
dXJlQ29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQogewotICAgIGlmIChjb29raWUubmFtZS5z
dGFydHNXaXRoKCJfX1NlY3VyZS0iX3MpICYmICFjb29raWUuc2VjdXJlKQorICAgIGlmIChjb29r
aWUubmFtZS5zdGFydHNXaXRoKCJfX1NlY3VyZS0iKSAmJiAhY29va2llLnNlY3VyZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQ29va2llcyBmb3IgX19Ib3N0IG11c3QgaGF2ZSB0
aGUgU2VjdXJlIGF0dHJpYnV0ZSwgcGF0aCBleHBsaWNpdGx5IHNldCB0byAiLyIsIGFuZCBubyBk
b21haW4gYXR0cmlidXRlCi0gICAgaWYgKGNvb2tpZS5uYW1lLnN0YXJ0c1dpdGgoIl9fSG9zdC0i
X3MpICYmICghY29va2llLnNlY3VyZSB8fCBjb29raWUucGF0aCAhPSAiLyJfcyB8fCAhY29va2ll
LmRvbWFpbi5pc0VtcHR5KCkpKQorICAgIGlmIChjb29raWUubmFtZS5zdGFydHNXaXRoKCJfX0hv
c3QtIikgJiYgKCFjb29raWUuc2VjdXJlIHx8IGNvb2tpZS5wYXRoICE9ICIvIl9zIHx8ICFjb29r
aWUuZG9tYWluLmlzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGI0ZjNkODU1MTA0MmQ5NTRkZWNh
YTkxOWIyMDIxNjMyZmI4NTczZTIuLjZjMTQ1YWNlZTc1ODhkNjk1YTM4N2QyN2NiOWNiMGMzYzgz
MTRmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9M
b2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgY29uc3Rl
eHByIGF1dG8gZmlsZU5hbWUgPSAibG9jYWxzdG9yYWdlLnNxbGl0ZTMiX3M7CiAvLyBXZSBzaG91
bGQgbm90IGluY2x1ZGUgb3JpZ2luIGluIGZpbGUgbmFtZS4KIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gZmlsZU5hbWVUb09yaWdpbihjb25zdCBTdHJp
bmcmIGZpbGVOYW1lKQogewotICAgIGlmICghZmlsZU5hbWUuZW5kc1dpdGgoZmlsZVN1ZmZpeCkp
CisgICAgaWYgKCFmaWxlTmFtZS5lbmRzV2l0aChTdHJpbmdWaWV3IHsgZmlsZVN1ZmZpeCB9KSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gc3VmZml4TGVuZ3RoID0g
c3RybGVuKGZpbGVTdWZmaXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQppbmRleCA0N2U5ZGNhNTAwYjEwNjQwMWVkY2JkZmNiZWE4MjBiMzViZTk2NTQy
Li5mZDc0ZmVhYjFkMWUxMmZiMDYxMmEwODU1ZGU2OGZjNzY0MWIxMTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtNDQ1MCw3ICs0NDUwLDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6c3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiBp
dGVtLCBjb25zdCBTaGFyZWFibGVCaXRtYXAKIAogc3RhdGljIGJvb2wgbWF0Y2hlc0V4dGVuc2lv
bk9yRXF1aXZhbGVudChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbikKIHsKLSAgICByZXR1cm4gZmlsZW5hbWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgi
LiIgKyBleHRlbnNpb24pCisgICAgcmV0dXJuIGZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UobWFrZVN0cmluZygnLicsIGV4dGVuc2lvbikpCiAgICAgICAgIHx8IChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShleHRlbnNpb24sICJqcGVnIikgJiYgZmlsZW5hbWUuZW5kc1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmpwZyIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4
IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRkZTU0MTQxYTRjZTljMzIuLmZlZjZlMmYwZDUzZWE4
N2NlNDhjMmMyNTg1ZTEzODBlYmYzZDRiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTExNzUs
NyArMTE3NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0
ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2luZ1Jlc3VsdCBhCiAgICAgICAgIGlmIChyZXBsYWNl
bWVudExlbmd0aCA+IDApIHsKICAgICAgICAgICAgIE5TUmFuZ2UgcmVwbGFjZWRSYW5nZSA9IE5T
TWFrZVJhbmdlKGFjY2VwdGVkQ2FuZGlkYXRlLnJhbmdlLmxvY2F0aW9uLCByZXBsYWNlbWVudExl
bmd0aCk7CiAgICAgICAgICAgICBOU1JhbmdlIHNvZnRTcGFjZVJhbmdlID0gTlNNYWtlUmFuZ2Uo
TlNNYXhSYW5nZShyZXBsYWNlZFJhbmdlKSAtIDEsIDEpOwotICAgICAgICAgICAgaWYgKGFjY2Vw
dGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50LmVuZHNXaXRoKCIgIikpCisgICAgICAgICAgICBpZiAo
YWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1lbnQuZW5kc1dpdGgoJyAnKSkKICAgICAgICAgICAg
ICAgICBbKFdlYkhUTUxWaWV3ICopdmlldyBfc2V0U29mdFNwYWNlUmFuZ2U6c29mdFNwYWNlUmFu
Z2VdOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdJbXBsLmNwcAppbmRleCBkNjI5ZWZjZDQ3MzYwYjQ3ODJkODM2YTBlZThiOTI0ZGI3ZTZl
MGNiLi5hNzYyYmUwYTIyNzFiODY3ZDYyOTBkZDI3YTFkMGIzOWQ1MjIxNGRmIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcApAQCAtNDIwLDEwICs0MjAs
MTAgQEAgVEVTVChXVEYsIFN0cmluZ0ltcGxTdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2VCYXNp
YykKIFRFU1QoV1RGLCBTdHJpbmdJbXBsU3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlV2l0aE51
bGwpCiB7CiAgICAgYXV0byByZWZlcmVuY2UgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJh
bCgiYUJjRGVGRyJfcyk7Ci0gICAgQVNTRVJUX0ZBTFNFKHJlZmVyZW5jZS0+c3RhcnRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKG51bGxwdHIpKTsKKyAgICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5z
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyB7IH0pKTsKIAogICAgIGF1dG8g
ZW1wdHkgPSBTdHJpbmdJbXBsOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KCIiKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGVtcHR5LT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UobnVsbHB0cikpOworICAgIEFTU0VSVF9GQUxTRShlbXB0eS0+c3RhcnRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9KSk7CiB9CiAKIFRFU1QoV1RGLCBTdHJpbmdJbXBsU3Rh
cnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlV2l0aEVtcHR5KQpAQCAtNTA5LDEwICs1MDksMTAgQEAg
VEVTVChXVEYsIFN0cmluZ0ltcGxFbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlQmFzaWMpCiBURVNU
KFdURiwgU3RyaW5nSW1wbEVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2VXaXRoTnVsbCkKIHsKICAg
ICBhdXRvIHJlZmVyZW5jZSA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJhQmNEZUZH
Il9zKTsKLSAgICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5lbmRzV2l0aElnbm9yaW5nQVNDSUlD
YXNlKG51bGxwdHIpKTsKKyAgICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5lbmRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9KSk7CiAKICAgICBhdXRvIGVtcHR5ID0gU3RyaW5n
SW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiIikpOwotICAgIEFT
U0VSVF9GQUxTRShlbXB0eS0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShudWxscHRyKSk7Cisg
ICAgQVNTRVJUX0ZBTFNFKGVtcHR5LT5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1Zp
ZXcgeyB9KSk7CiB9CiAKIFRFU1QoV1RGLCBTdHJpbmdJbXBsRW5kc1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZVdpdGhFbXB0eSkK
</data>
<flag name="commit-queue"
          id="483719"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455664</attachid>
            <date>2022-03-24 12:20:18 -0700</date>
            <delta_ts>2022-03-24 12:55:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238333-20220324122017.patch</filename>
            <type>text/plain</type>
            <size>50446</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YWE2NWE0N2JkOThlOGI5M2I1ZjQ1N2IzNjRmZDdjOWJhMTczNmI5Li44YjA2ZjEwMTFiZmE1MDY1
NDMzYThiY2JkYzYyY2QwZTQwZWU5MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMi0wMy0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFN0cmluZydzIHN0YXJ0c1dpdGgoKSAvIGVuZHNXaXRoKCkgLyByZXBsYWNlKCkg
c2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODMzMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9GaWxlQmFz
ZWRGdXp6ZXJBZ2VudC5jcHA6CisgICAgICAgIChKU0M6OkZpbGVCYXNlZEZ1enplckFnZW50Ojpn
ZXRQcmVkaWN0aW9uSW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OnNpbmd1bGFyVW5pdCk6CisgICAgICAgICogcnVu
dGltZS9UZW1wb3JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnNpbmd1bGFyVW5pdCk6CisK
IDIwMjItMDMtMjMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pT
Q10gRml4IHJlbW90ZUZ1bmN0aW9uQ2FsbEdlbmVyYXRvciBvbiBNSVBTCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDliYzMwYjhl
NmVjZDJkN2MzOWJjMjIwMDE1NzU5YmM0ODUyMWM3OWQuLjY4NWQ3YmJhMWI3MjZmMTJhYWE3NGNk
ZjFkNzVjMDY5ZWUxNTE3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjItMDMtMjQgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBzdGFydHNXaXRo
KCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBp
bnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzgzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTdHJpbmcncyBzdGFydHNXaXRoKCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgp
IHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nLAorICAgICAg
ICB0byBhdm9pZCB1bm5lY2Vzc2FyeSBTdHJpbmcgY3JlYXRpb24gaW4gbWFueSBpbnN0YW5jZXMu
CisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmg6CisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nQ29tbW9uLmg6CisgICAgICAgIChXVEY6OnN0YXJ0c1dpdGgpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UpOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjplbmRzV2l0aCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
OgorICAgICAgICAoV1RGOjplcXVhbElubmVyKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
c3RhcnRzV2l0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0YXJ0c1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Omhhc0lu
Zml4U3RhcnRpbmdBdCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmVuZHNXaXRo
KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSBj
b25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Omhhc0luZml4RW5kaW5nQXQgY29uc3Qp
OgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpyZXBsYWNlKToKKyAgICAgICAgKiB3dGYvdGV4
dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0YXJ0c1dpdGggY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjplbmRzV2l0aCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RG
OjpzdGFydHNXaXRoKToKKyAgICAgICAgKFdURjo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
KToKKyAgICAgICAgKFdURjo6ZW5kc1dpdGgpOgorICAgICAgICAoV1RGOjplbmRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAgICAgICAg
KFdURjo6U3RyaW5nOjpzdGFydHNXaXRoIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpz
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmc6
OmVuZHNXaXRoIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjplbmRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpoYXNJbmZpeFN0YXJ0aW5n
QXQgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmc6Omhhc0luZml4RW5kaW5nQXQgY29uc3Qp
OgorICAgICAgICAoV1RGOjpBdG9tU3RyaW5nOjpzdGFydHNXaXRoIGNvbnN0KToKKyAgICAgICAg
KFdURjo6QXRvbVN0cmluZzo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlIGNvbnN0KToKKyAg
ICAgICAgKFdURjo6QXRvbVN0cmluZzo6ZW5kc1dpdGggY29uc3QpOgorICAgICAgICAoV1RGOjpB
dG9tU3RyaW5nOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKiB3
dGYvdGV4dC9XVEZTdHJpbmcuaDoKKwogMjAyMi0wMy0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFN0cmluZydzIGZpbmQoKSAvIHJldmVyc2VGaW5kKCkgLyBy
ZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNDVlMjI5ZDQyMGJjYmFlM2EzZTEyOWEyOTMwZDI2YjliZjc2ZWEzLi44
NjNiNzBkZWYzOTdjMmRlNTFiYmZmYzg3YjkzY2NhYzU3Nzk4YzNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzQgQEAKKzIwMjItMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBTdHJpbmcncyBzdGFydHNXaXRoKCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgp
IHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgzMzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3Vs
ZElnbm9yZUljZUNhbmRpZGF0ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb2x2ZWRVUkw6OmlzTG9jYWxVUkwgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNv
bnNvbGVDbGllbnQ6OnNjcmVlbnNob3QpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2U6OnBhdGhNYXRjaGVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldFVubWFuZ2xlZEluZm9Mb2cpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRz
S2V5U3lzdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6c3VwcG9ydHNDb250YWluZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckdTdHJlYW1lcjo6Y2FuRGVjb2RlVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjaGVja1Zhcnlp
bmdzUGFja2luZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9QYXJzZWRSZXF1
ZXN0UmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkUmVxdWVzdFJhbmdlOjpwYXJz
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNoZWNrU2VjdXJlQ29va2llKToKKwogMjAyMi0wMy0yNCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0cmluZydzIGZpbmQoKSAvIHJl
dmVyc2VGaW5kKCkgLyByZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3Rl
YWQgb2YgYSBTdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBhNGM4MWI1MjQ1
N2Q5ODc1ZDI4MGY3NTBkMjU3MzVlZWU2NzBjNjhiLi4xYjA2MDNlNjA4NzY1NTg1NzFmNjFjZTNj
MzE1NDg3MWQ0MGQ1NGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjItMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBTdHJpbmcncyBzdGFydHNXaXRoKCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgpIHNob3Vs
ZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgzMzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6aGFuZGxlQWNjZXB0ZWRD
YW5kaWRhdGVXaXRoU29mdFNwYWNlcyk6CisKIDIwMjItMDMtMTggIEpvbmF0aGFuIEJlZGFyZCAg
PGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgMTUuNF0gRml4IHVudXNlZCB2YXJp
YWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNl
ZEZ1enplckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNl
ZEZ1enplckFnZW50LmNwcAppbmRleCAxYjAzMTMwZjBhNWMwN2MzMzVjYzU4NTY4M2JiNjQ1ZWU1
M2UwOGJmLi5lNjhhMTQ0MzJkYzViMTg2YTE5NWJhNmQzMjA0Y2ZhNzdhNjg3MTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdl
bnQuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFNwZWN1bGF0ZWRUeXBlIEZpbGVCYXNlZEZ1enplckFn
ZW50OjpnZXRQcmVkaWN0aW9uSW50ZXJuYWwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG9yaWdpbmFsOwogICAgICAgICAgICAgaWYgKHNvdXJjZUFmdGVyRGl2
b3QuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgieWllbGQiKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gb3JpZ2luYWw7Ci0gICAgICAgICAgICBpZiAoc291cmNlQWZ0ZXJEaXZvdC5zdGFydHNX
aXRoKCdbJykgJiYgc291cmNlQWZ0ZXJEaXZvdC5lbmRzV2l0aCgiXSIpKQorICAgICAgICAgICAg
aWYgKHNvdXJjZUFmdGVyRGl2b3Quc3RhcnRzV2l0aCgnWycpICYmIHNvdXJjZUFmdGVyRGl2b3Qu
ZW5kc1dpdGgoJ10nKSkKICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWw7CiAgICAgICAg
ICAgICBpZiAoc291cmNlVXBUb0Rpdm90LmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoInlpZWxk
IikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRl
eCA5NWM0M2FmNzdlNzc5OWMyZWFiMzNlNzRmZTBhMTMxYzUwYTU2NjZhLi4wMjJlZGNmYjdkMTU3
MzE2YjcwMTIzMjMzYjI2ZmRhNTkzMGVkZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMjAzLDcg
KzIwMyw3IEBAIEpTT2JqZWN0KiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpyZXNvbHZlZE9wdGlv
bnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHN0YXRpYyBTdHJpbmdWaWV3IHNpbmd1
bGFyVW5pdChTdHJpbmdWaWV3IHVuaXQpCiB7CiAgICAgLy8gUGx1cmFscyBhcmUgYWxsb3dlZCwg
YnV0IHRoYW5rZnVsbHkgdGhleSdyZSBhbGwganVzdCBhIHNpbXBsZSAtcy4KLSAgICByZXR1cm4g
dW5pdC5lbmRzV2l0aCgicyIpID8gdW5pdC5sZWZ0KHVuaXQubGVuZ3RoKCkgLSAxKSA6IHVuaXQ7
CisgICAgcmV0dXJuIHVuaXQuZW5kc1dpdGgoJ3MnKSA/IHVuaXQubGVmdCh1bml0Lmxlbmd0aCgp
IC0gMSkgOiB1bml0OwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLXNpbmd1
bGFycmVsYXRpdmV0aW1ldW5pdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IDY2YjhiOTY1YzllZjI5Y2UwNTVmZTNmOTE5NWZlNGNk
MmFkMzAyMjQuLmM5ZDMwNTJhMzQwNGRjNzJlYjk4YjEwMjAzYzFmZTAyYjhhNDA0ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKQEAg
LTE0NSw3ICsxNDUsNyBAQCB2b2lkIFRlbXBvcmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiBzdGF0aWMgU3RyaW5nVmlldyBzaW5ndWxhclVuaXQoU3RyaW5nVmlldyB1bml0KQogewog
ICAgIC8vIFBsdXJhbHMgYXJlIGFsbG93ZWQsIGJ1dCB0aGFua2Z1bGx5IHRoZXkncmUgYWxsIGp1
c3QgYSBzaW1wbGUgLXMuCi0gICAgcmV0dXJuIHVuaXQuZW5kc1dpdGgoInMiKSA/IHVuaXQubGVm
dCh1bml0Lmxlbmd0aCgpIC0gMSkgOiB1bml0OworICAgIHJldHVybiB1bml0LmVuZHNXaXRoKCdz
JykgPyB1bml0LmxlZnQodW5pdC5sZW5ndGgoKSAtIDEpIDogdW5pdDsKIH0KIAogLy8gRm9yIHVz
ZSBpbiBlcnJvciBtZXNzYWdlcyB3aGVyZSBhIHN0cmluZyB2YWx1ZSBpcyBwb3RlbnRpYWxseSB1
bmJvdW5kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKaW5kZXggYzY2YzhjNWM4MWNkZDBiNmJi
MzA1NjcyYjA4NTMxZGEwYTc3MmJiMi4uMTM2YWM2MjM2NzY5NDUzNTk4MjRlNjcyYzM3YzdjOGU5
ZDRmNzZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKQEAgLTEyNCwxNSArMTI0LDEzIEBA
IHB1YmxpYzoKICAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIHVu
c2lnbmVkIHN0YXJ0KSBjb25zdDsKICAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rp
b24gbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZy5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsgfQogCi0gICAgYm9vbCBzdGFydHNXaXRo
KGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRo
KHN0cmluZyk7IH0KLSAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBT
dHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlKHN0cmluZyk7IH0KKyAgICBib29sIHN0YXJ0c1dpdGgoU3RyaW5nVmlldykgY29u
c3Q7CisgICAgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29u
c3Q7CiAgICAgYm9vbCBzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcuc3RhcnRzV2l0aChjaGFyYWN0ZXIpOyB9Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQg
bWF0Y2hMZW5ndGg+IGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExl
bmd0aF0pIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHBy
ZWZpeCk7IH0KIAotICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKHN0cmluZyk7IH0KLSAgICBib29sIGVuZHNXaXRo
SWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsgfQorICAgIGJvb2wgZW5k
c1dpdGgoU3RyaW5nVmlldykgY29uc3Q7CisgICAgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlD
YXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogICAgIGJvb2wgZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVy
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChjaGFyYWN0ZXIpOyB9Ci0gICAgdGVt
cGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhciAoJnBy
ZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aDxtYXRj
aExlbmd0aD4ocHJlZml4KTsgfQogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21TdHJpbmcg
Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
QXRvbVN0cmluZyBjb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQ29tbW9uLmgKaW5kZXggZGE3OTM5ZWYzZGE3YWNlNmUwNjNlODE5NTgwZjAwMzk0ZTRi
NmFkMS4uYzc3MGUwNDVkMjBjY2UyMzNiZTA4ZjBkYjliZTZiZDgzNjhhZWVjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCkBAIC0zODEsODAgKzM4MSw2IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFN0cmluZ0NsYXNzQT4gYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKGNvbnN0
IFN0cmluZ0NsCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYS5jaGFyYWN0ZXJz
MTYoKSwgYiwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3NBLCB0
eXBlbmFtZSBTdHJpbmdDbGFzc0I+Ci1ib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nQ2xhc3NB
JiByZWZlcmVuY2UsIGNvbnN0IFN0cmluZ0NsYXNzQiYgcHJlZml4KQotewotICAgIHVuc2lnbmVk
IHByZWZpeExlbmd0aCA9IHByZWZpeC5sZW5ndGgoKTsKLSAgICBpZiAocHJlZml4TGVuZ3RoID4g
cmVmZXJlbmNlLmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAocmVm
ZXJlbmNlLmlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChwcmVmaXguaXM4Qml0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNoYXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0
ZXJzOCgpLCBwcmVmaXhMZW5ndGgpOwotICAgICAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNo
YXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4TGVuZ3RoKTsKLSAgICB9
Ci0gICAgaWYgKHByZWZpeC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5j
ZS5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3RlcnM4KCksIHByZWZpeExlbmd0aCk7Ci0g
ICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3Rl
cnMxNigpLCBwcmVmaXhMZW5ndGgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFz
c0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4KLWJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlD
YXNlKGNvbnN0IFN0cmluZ0NsYXNzQSYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmdDbGFzc0ImIHBy
ZWZpeCkKLXsKLSAgICB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSBwcmVmaXgubGVuZ3RoKCk7Ci0g
ICAgaWYgKHByZWZpeExlbmd0aCA+IHJlZmVyZW5jZS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKHJlZmVyZW5jZS5pczhCaXQoKSkgewotICAgICAgICBpZiAocHJl
Zml4LmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
cmVmZXJlbmNlLmNoYXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhMZW5n
dGgpOwotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2UuY2hh
cmFjdGVyczgoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOwotICAgIH0K
LSAgICBpZiAocHJlZml4LmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShyZWZlcmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBw
cmVmaXhMZW5ndGgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5j
ZS5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNz
Qj4KLWJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nQ2xhc3NBJiByZWZlcmVuY2UsIGNvbnN0IFN0
cmluZ0NsYXNzQiYgc3VmZml4KQotewotICAgIHVuc2lnbmVkIHN1ZmZpeExlbmd0aCA9IHN1ZmZp
eC5sZW5ndGgoKTsKLSAgICB1bnNpZ25lZCByZWZlcmVuY2VMZW5ndGggPSByZWZlcmVuY2UubGVu
Z3RoKCk7Ci0gICAgaWYgKHN1ZmZpeExlbmd0aCA+IHJlZmVyZW5jZUxlbmd0aCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSByZWZlcmVuY2VMZW5n
dGggLSBzdWZmaXhMZW5ndGg7Ci0KLSAgICBpZiAocmVmZXJlbmNlLmlzOEJpdCgpKSB7Ci0gICAg
ICAgIGlmIChzdWZmaXguaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gZXF1YWwocmVmZXJl
bmNlLmNoYXJhY3RlcnM4KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCksIHN1
ZmZpeExlbmd0aCk7Ci0gICAgICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczgo
KSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZpeExlbmd0aCk7Ci0g
ICAgfQotICAgIGlmIChzdWZmaXguaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBlcXVhbChyZWZl
cmVuY2UuY2hhcmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCks
IHN1ZmZpeExlbmd0aCk7Ci0gICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYo
KSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZpeExlbmd0aCk7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzQSwgdHlwZW5hbWUgU3RyaW5nQ2xhc3NC
PgotYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0NsYXNzQSYgcmVm
ZXJlbmNlLCBjb25zdCBTdHJpbmdDbGFzc0ImIHN1ZmZpeCkKLXsKLSAgICB1bnNpZ25lZCBzdWZm
aXhMZW5ndGggPSBzdWZmaXgubGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQgcmVmZXJlbmNlTGVuZ3Ro
ID0gcmVmZXJlbmNlLmxlbmd0aCgpOwotICAgIGlmIChzdWZmaXhMZW5ndGggPiByZWZlcmVuY2VM
ZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
ID0gcmVmZXJlbmNlTGVuZ3RoIC0gc3VmZml4TGVuZ3RoOwotCi0gICAgaWYgKHJlZmVyZW5jZS5p
czhCaXQoKSkgewotICAgICAgICBpZiAoc3VmZml4LmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0
dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVmZXJlbmNlLmNoYXJhY3RlcnM4KCkgKyBzdGFy
dE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCksIHN1ZmZpeExlbmd0aCk7Ci0gICAgICAgIHJl
dHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpICsgc3Rh
cnRPZmZzZXQsIHN1ZmZpeC5jaGFyYWN0ZXJzMTYoKSwgc3VmZml4TGVuZ3RoKTsKLSAgICB9Ci0g
ICAgaWYgKHN1ZmZpeC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UocmVmZXJlbmNlLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIHN1ZmZpeC5jaGFy
YWN0ZXJzOCgpLCBzdWZmaXhMZW5ndGgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFj
dGVyczE2KCksIHN1ZmZpeExlbmd0aCk7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBTZWFyY2hD
aGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaENoYXJhY3RlclR5cGU+CiBzaXplX3QgZmluZEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNvdXJjZSwgY29uc3Qg
TWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJhY3RlcnMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBzZWFyY2hMZW5ndGgsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggNmU2NTVjMTRlYTQ0NjJjOGVjYTBjMzk5YjkyM2Q4
MmUxNGY3YTM4OS4uYzc5MjUxNzkzYjdkYTI2Mzk1YzA5NmU0ZTIxM2MzOGU0YzJmYTcyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0xMDUzLDcgKzEwNTMsNyBAQCBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29uc3QgU3RyaW5nSW1wbCYgc3RyaW5nLCB1
bnNpZ25lZCBzdGFydCwgYwogICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczE2KCkg
KyBzdGFydCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1hdGNoU3RyaW5nKSwgbWF0
Y2hMZW5ndGgpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29u
c3QgU3RyaW5nSW1wbCYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCwgY29uc3QgU3RyaW5nSW1wbCYg
bWF0Y2hTdHJpbmcpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29uc3Qg
U3RyaW5nSW1wbCYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCwgU3RyaW5nVmlldyBtYXRjaFN0cmlu
ZykKIHsKICAgICBpZiAoc3RhcnQgPiBzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTEwNzIsMjQgKzEwNzIsMTQgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBl
cXVhbElubmVyKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZywgdW5zaWduZWQgc3RhcnQsIGMKICAg
ICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgc3RhcnQsIG1hdGNoU3RyaW5n
LmNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7CiB9CiAKLWJvb2wgU3RyaW5n
SW1wbDo6c3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcpIGNvbnN0Citib29sIFN0
cmluZ0ltcGw6OnN0YXJ0c1dpdGgoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuICFzdHJpbmcgfHwgOjpXVEY6OnN0YXJ0c1dpdGgoKnRoaXMsICpzdHJpbmcpOworICAgIHJl
dHVybiAhc3RyaW5nIHx8IDo6V1RGOjpzdGFydHNXaXRoKCp0aGlzLCBzdHJpbmcpOwogfQogCi1i
b29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nSW1wbCYgc3RyaW5nKSBjb25z
dAorYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmll
dyBwcmVmaXgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDo6V1RGOjpzdGFydHNXaXRoKCp0aGlzLCBz
dHJpbmcpOwotfQotCi1ib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmdJbXBsKiBwcmVmaXgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHByZWZpeCAm
JiA6OldURjo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAqcHJlZml4KTsKLX0K
LQotYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3Ry
aW5nSW1wbCYgcHJlZml4KSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6c3RhcnRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKCp0aGlzLCBwcmVmaXgpOworICAgIHJldHVybiBwcmVmaXggJiYgOjpX
VEY6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgcHJlZml4KTsKIH0KIAogYm9v
bCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKQEAgLTExMDIs
MjkgKzEwOTIsMTkgQEAgYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKGNvbnN0IGNoYXIqIG1h
dGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkgY29uc3QKICAgICByZXR1cm4gbWF0Y2hM
ZW5ndGggPD0gbGVuZ3RoKCkgJiYgZXF1YWxJbm5lcigqdGhpcywgMCwgbWF0Y2hTdHJpbmcsIG1h
dGNoTGVuZ3RoKTsKIH0KIAotYm9vbCBTdHJpbmdJbXBsOjpoYXNJbmZpeFN0YXJ0aW5nQXQoY29u
c3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAorYm9vbCBT
dHJpbmdJbXBsOjpoYXNJbmZpeFN0YXJ0aW5nQXQoU3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5z
aWduZWQgc3RhcnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGVxdWFsSW5uZXIoKnRoaXMsIHN0YXJ0
LCBtYXRjaFN0cmluZyk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgoU3RyaW5nSW1w
bCogc3VmZml4KQotewotICAgIHJldHVybiBzdWZmaXggJiYgOjpXVEY6OmVuZHNXaXRoKCp0aGlz
LCAqc3VmZml4KTsKLX0KLQotYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChTdHJpbmdJbXBsJiBz
dWZmaXgpCi17Ci0gICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aCgqdGhpcywgc3VmZml4KTsKLX0K
LQotYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
Z0ltcGwqIHN1ZmZpeCkgY29uc3QKK2Jvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgoU3RyaW5nVmll
dyBzdWZmaXgpCiB7Ci0gICAgcmV0dXJuIHN1ZmZpeCAmJiA6OldURjo6ZW5kc1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZSgqdGhpcywgKnN1ZmZpeCk7CisgICAgcmV0dXJuIHN1ZmZpeCAmJiA6OldURjo6
ZW5kc1dpdGgoKnRoaXMsIHN1ZmZpeCk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJiBzdWZmaXgpIGNvbnN0Citib29sIFN0
cmluZ0ltcGw6OmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdWZmaXgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlz
LCBzdWZmaXgpOworICAgIHJldHVybiBzdWZmaXggJiYgOjpXVEY6OmVuZHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UoKnRoaXMsIHN1ZmZpeCk7CiB9CiAKIGJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgo
VUNoYXIgY2hhcmFjdGVyKSBjb25zdApAQCAtMTEzNyw5ICsxMTE3LDkgQEAgYm9vbCBTdHJpbmdJ
bXBsOjplbmRzV2l0aChjb25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5n
dGgpIGNvbnN0CiAgICAgcmV0dXJuIG1hdGNoTGVuZ3RoIDw9IGxlbmd0aCgpICYmIGVxdWFsSW5u
ZXIoKnRoaXMsIGxlbmd0aCgpIC0gbWF0Y2hMZW5ndGgsIG1hdGNoU3RyaW5nLCBtYXRjaExlbmd0
aCk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6aGFzSW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmdJ
bXBsJiBtYXRjaFN0cmluZywgdW5zaWduZWQgZW5kT2Zmc2V0KSBjb25zdAorYm9vbCBTdHJpbmdJ
bXBsOjpoYXNJbmZpeEVuZGluZ0F0KFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGVu
ZCkgY29uc3QKIHsKLSAgICByZXR1cm4gZW5kT2Zmc2V0ID49IG1hdGNoU3RyaW5nLmxlbmd0aCgp
ICYmIGVxdWFsSW5uZXIoKnRoaXMsIGVuZE9mZnNldCAtIG1hdGNoU3RyaW5nLmxlbmd0aCgpLCBt
YXRjaFN0cmluZyk7CisgICAgcmV0dXJuIGVuZCA+PSBtYXRjaFN0cmluZy5sZW5ndGgoKSAmJiBl
cXVhbElubmVyKCp0aGlzLCBlbmQgLSBtYXRjaFN0cmluZy5sZW5ndGgoKSwgbWF0Y2hTdHJpbmcp
OwogfQogCiBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciB0YXJnZXQs
IFVDaGFyIHJlcGxhY2VtZW50KQpAQCAtMTIwMywyMyArMTE4MywyMyBAQCBSZWY8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciB0YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50KQog
ICAgIHJldHVybiBuZXdJbXBsOwogfQogCi1SZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVw
bGFjZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsYWNlLCBTdHJpbmdJ
bXBsKiBzdHJpbmcpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZSh1bnNpZ25l
ZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsYWNlLCBTdHJpbmdWaWV3IHN0cmluZykK
IHsKICAgICBwb3NpdGlvbiA9IHN0ZDo6bWluKHBvc2l0aW9uLCBsZW5ndGgoKSk7CiAgICAgbGVu
Z3RoVG9SZXBsYWNlID0gc3RkOjptaW4obGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0
aW9uKTsKLSAgICB1bnNpZ25lZCBsZW5ndGhUb0luc2VydCA9IHN0cmluZyA/IHN0cmluZy0+bGVu
Z3RoKCkgOiAwOworICAgIHVuc2lnbmVkIGxlbmd0aFRvSW5zZXJ0ID0gc3RyaW5nLmxlbmd0aCgp
OwogICAgIGlmICghbGVuZ3RoVG9SZXBsYWNlICYmICFsZW5ndGhUb0luc2VydCkKICAgICAgICAg
cmV0dXJuICp0aGlzOwogCiAgICAgaWYgKChsZW5ndGgoKSAtIGxlbmd0aFRvUmVwbGFjZSkgPj0g
KE1heExlbmd0aCAtIGxlbmd0aFRvSW5zZXJ0KSkKICAgICAgICAgQ1JBU0goKTsKIAotICAgIGlm
IChpczhCaXQoKSAmJiAoIXN0cmluZyB8fCBzdHJpbmctPmlzOEJpdCgpKSkgeworICAgIGlmIChp
czhCaXQoKSAmJiAoIXN0cmluZyB8fCBzdHJpbmcuaXM4Qml0KCkpKSB7CiAgICAgICAgIExDaGFy
KiBkYXRhOwogICAgICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0
aCgpIC0gbGVuZ3RoVG9SZXBsYWNlICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEpOwogICAgICAgICBj
b3B5Q2hhcmFjdGVycyhkYXRhLCBtX2RhdGE4LCBwb3NpdGlvbik7CiAgICAgICAgIGlmIChzdHJp
bmcpCi0gICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24sIHN0cmluZy0+
bV9kYXRhOCwgbGVuZ3RoVG9JbnNlcnQpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0
YSArIHBvc2l0aW9uLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoVG9JbnNlcnQpOwogICAg
ICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24gKyBsZW5ndGhUb0luc2VydCwgbV9k
YXRhOCArIHBvc2l0aW9uICsgbGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0aW9uIC0g
bGVuZ3RoVG9SZXBsYWNlKTsKICAgICAgICAgcmV0dXJuIG5ld0ltcGw7CiAgICAgfQpAQCAtMTIz
MCwxMCArMTIxMCwxMCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZSh1bnNp
Z25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsYWNlLAogICAgIGVsc2UKICAgICAg
ICAgY29weUNoYXJhY3RlcnMoZGF0YSwgbV9kYXRhMTYsIHBvc2l0aW9uKTsKICAgICBpZiAoc3Ry
aW5nKSB7Ci0gICAgICAgIGlmIChzdHJpbmctPmlzOEJpdCgpKQotICAgICAgICAgICAgY29weUNo
YXJhY3RlcnMoZGF0YSArIHBvc2l0aW9uLCBzdHJpbmctPm1fZGF0YTgsIGxlbmd0aFRvSW5zZXJ0
KTsKKyAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0
ZXJzKGRhdGEgKyBwb3NpdGlvbiwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aFRvSW5zZXJ0
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIHBvc2l0
aW9uLCBzdHJpbmctPm1fZGF0YTE2LCBsZW5ndGhUb0luc2VydCk7CisgICAgICAgICAgICBjb3B5
Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24sIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3Ro
VG9JbnNlcnQpOwogICAgIH0KICAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgIGNvcHlDaGFyYWN0
ZXJzKGRhdGEgKyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0LCBtX2RhdGE4ICsgcG9zaXRpb24g
KyBsZW5ndGhUb1JlcGxhY2UsIGxlbmd0aCgpIC0gcG9zaXRpb24gLSBsZW5ndGhUb1JlcGxhY2Up
OwpAQCAtMTI0MiwxMyArMTIyMiwxMyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVw
bGFjZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsYWNlLAogICAgIHJl
dHVybiBuZXdJbXBsOwogfQogCi1SZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShV
Q2hhciBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudCkKK1JlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQp
CiB7CiAgICAgaWYgKCFyZXBsYWNlbWVudCkKICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIGlm
IChyZXBsYWNlbWVudC0+aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiByZXBsYWNlKHBhdHRlcm4s
IHJlcGxhY2VtZW50LT5tX2RhdGE4LCByZXBsYWNlbWVudC0+bGVuZ3RoKCkpOwotICAgIHJldHVy
biByZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50LT5tX2RhdGExNiwgcmVwbGFjZW1lbnQtPmxl
bmd0aCgpKTsKKyAgICBpZiAocmVwbGFjZW1lbnQuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBy
ZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50LmNoYXJhY3RlcnM4KCksIHJlcGxhY2VtZW50Lmxl
bmd0aCgpKTsKKyAgICByZXR1cm4gcmVwbGFjZShwYXR0ZXJuLCByZXBsYWNlbWVudC5jaGFyYWN0
ZXJzMTYoKSwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOwogfQogCiBSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBMQ2hhciogcmVwbGFjZW1lbnQs
IHVuc2lnbmVkIHJlcFN0ckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggOTQ5
NTBjMzU0NWEwZmFlM2YyZTkxYjZlN2E1OGNmNWEwZDY5NDM5Yi4uODZhOTYxYmVkMzg5NmIwN2Vh
NmY0ZDYzNDk5YmJjZWZhOTAyZmM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTQz
OCwzMSArNDM4LDI1IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJl
dmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBzdGFydCA9IE1heExlbmd0aCk7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFy
dCA9IE1heExlbmd0aCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRo
KGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCopIGNv
bnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgc3RhcnRzV2l0aChTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChVQ2hhcikgY29uc3Q7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyKiwgdW5zaWduZWQgbWF0
Y2hMZW5ndGgpIGNvbnN0OwotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29s
IHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJl
dHVybiBzdGFydHNXaXRoKHByZWZpeCwgbWF0Y2hMZW5ndGggLSAxKTsgfQotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBib29sIGhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJpbmdJbXBsJiwgdW5z
aWduZWQgc3RhcnQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGhhc0luZml4
U3RhcnRpbmdBdChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCkgY29uc3Q7CiAKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBsKik7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCYpOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCopIGNv
bnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgU3RyaW5nSW1wbCYpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IGVuZHNXaXRoKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZW5kc1dpdGgoVUNoYXIpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgZW5kc1dpdGgoY29uc3Qg
Y2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBlbmRzV2l0aChwcmVm
aXgsIG1hdGNoTGVuZ3RoIC0gMSk7IH0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNJ
bmZpeEVuZGluZ0F0KGNvbnN0IFN0cmluZ0ltcGwmLCB1bnNpZ25lZCBlbmRPZmZzZXQpIGNvbnN0
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGhhc0luZml4RW5kaW5nQXQoU3RyaW5nVmll
dywgdW5zaWduZWQgZW5kKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3Ry
aW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgVUNoYXIpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBS
ZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nVmlldyk7CiAg
ICAgQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBj
b25zdCBjaGFyKiByZXBsYWNlbWVudCwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpIHsgcmV0
dXJuIHJlcGxhY2UocGF0dGVybiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHJlcGxh
Y2VtZW50KSwgcmVwbGFjZW1lbnRMZW5ndGgpOyB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJl
ZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkIHJlcGxh
Y2VtZW50TGVuZ3RoKTsKICAgICBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgY29uc3Qg
VUNoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgs
IFN0cmluZ1ZpZXcpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVDaGFyRGlyZWN0aW9uIGRl
ZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gbnVs
bHB0cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNzMwZGU5NWExZGM0ZGM1NGEy
YzkyYjcyYjQ1NmRmZTg5NzA2MmUzYi4uYTY1ZTAwOTFmYjc0NDZiNWEzNmIyOThiYTgyNWMwM2Jm
ZDJmNzI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTExNTcsNiArMTE1Nyw3NiBA
QCBpbmxpbmUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHNvdXJjZSwg
U3RyaW5nVmlldyBzdHJpbmdUb0ZpbmQsCiAgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzb3VyY2UuY2hhcmFjdGVyczE2KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJzMTYoKSwgc3Rh
cnQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOwogfQogCitpbmxpbmUgYm9vbCBzdGFydHNX
aXRoKFN0cmluZ1ZpZXcgcmVmZXJlbmNlLCBTdHJpbmdWaWV3IHByZWZpeCkKK3sKKyAgICB1bnNp
Z25lZCBwcmVmaXhMZW5ndGggPSBwcmVmaXgubGVuZ3RoKCk7CisgICAgaWYgKHByZWZpeExlbmd0
aCA+IHJlZmVyZW5jZS5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KHJlZmVyZW5jZS5pczhCaXQoKSkgeworICAgICAgICBpZiAocHJlZml4LmlzOEJpdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpLCBwcmVmaXguY2hh
cmFjdGVyczgoKSwgcHJlZml4TGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5j
ZS5jaGFyYWN0ZXJzOCgpLCBwcmVmaXguY2hhcmFjdGVyczE2KCksIHByZWZpeExlbmd0aCk7Cisg
ICAgfQorICAgIGlmIChwcmVmaXguaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBlcXVhbChyZWZl
cmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhMZW5ndGgp
OworICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFy
YWN0ZXJzMTYoKSwgcHJlZml4TGVuZ3RoKTsKK30KKworaW5saW5lIGJvb2wgc3RhcnRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgcmVmZXJlbmNlLCBTdHJpbmdWaWV3IHByZWZpeCkK
K3sKKyAgICB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSBwcmVmaXgubGVuZ3RoKCk7CisgICAgaWYg
KHByZWZpeExlbmd0aCA+IHJlZmVyZW5jZS5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKHJlZmVyZW5jZS5pczhCaXQoKSkgeworICAgICAgICBpZiAocHJlZml4Lmlz
OEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVmZXJl
bmNlLmNoYXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhMZW5ndGgpOwor
ICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2UuY2hhcmFjdGVy
czgoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOworICAgIH0KKyAgICBp
ZiAocHJlZml4LmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShyZWZlcmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhM
ZW5ndGgpOworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFy
YWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOworfQorCitp
bmxpbmUgYm9vbCBlbmRzV2l0aChTdHJpbmdWaWV3IHJlZmVyZW5jZSwgU3RyaW5nVmlldyBzdWZm
aXgpCit7CisgICAgdW5zaWduZWQgc3VmZml4TGVuZ3RoID0gc3VmZml4Lmxlbmd0aCgpOworICAg
IHVuc2lnbmVkIHJlZmVyZW5jZUxlbmd0aCA9IHJlZmVyZW5jZS5sZW5ndGgoKTsKKyAgICBpZiAo
c3VmZml4TGVuZ3RoID4gcmVmZXJlbmNlTGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHJlZmVyZW5jZUxlbmd0aCAtIHN1ZmZpeExlbmd0
aDsKKworICAgIGlmIChyZWZlcmVuY2UuaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKHN1ZmZpeC5p
czhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczgo
KSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczgoKSwgc3VmZml4TGVuZ3RoKTsKKyAg
ICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQs
IHN1ZmZpeC5jaGFyYWN0ZXJzMTYoKSwgc3VmZml4TGVuZ3RoKTsKKyAgICB9CisgICAgaWYgKHN1
ZmZpeC5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJz
MTYoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczgoKSwgc3VmZml4TGVuZ3RoKTsK
KyAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQs
IHN1ZmZpeC5jaGFyYWN0ZXJzMTYoKSwgc3VmZml4TGVuZ3RoKTsKK30KKworaW5saW5lIGJvb2wg
ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHJlZmVyZW5jZSwgU3RyaW5nVmll
dyBzdWZmaXgpCit7CisgICAgdW5zaWduZWQgc3VmZml4TGVuZ3RoID0gc3VmZml4Lmxlbmd0aCgp
OworICAgIHVuc2lnbmVkIHJlZmVyZW5jZUxlbmd0aCA9IHJlZmVyZW5jZS5sZW5ndGgoKTsKKyAg
ICBpZiAoc3VmZml4TGVuZ3RoID4gcmVmZXJlbmNlTGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHJlZmVyZW5jZUxlbmd0aCAtIHN1ZmZp
eExlbmd0aDsKKworICAgIGlmIChyZWZlcmVuY2UuaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKHN1
ZmZpeC5pczhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIHN1ZmZpeC5jaGFyYWN0ZXJz
OCgpLCBzdWZmaXhMZW5ndGgpOworICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShyZWZlcmVuY2UuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVy
czE2KCksIHN1ZmZpeExlbmd0aCk7CisgICAgfQorICAgIGlmIChzdWZmaXguaXM4Qml0KCkpCisg
ICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJz
MTYoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczgoKSwgc3VmZml4TGVuZ3RoKTsK
KyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2UuY2hhcmFjdGVyczE2
KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnMxNigpLCBzdWZmaXhMZW5ndGgpOwor
fQorCiBpbmxpbmUgc2l6ZV90IFN0cmluZzo6ZmluZChTdHJpbmdWaWV3IHN0cmluZykgY29uc3QK
IHsKICAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZykgOiBub3RGb3VuZDsK
QEAgLTEyMDMsMTMgKzEyNzMsNTAgQEAgaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFN0
cmluZ1ZpZXcgdGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQogICAgIHJldHVybiAqdGhp
czsKIH0KIAotaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCitpbmxpbmUgU3RyaW5n
JiBTdHJpbmc6OnJlcGxhY2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgU3RyaW5n
VmlldyByZXBsYWNlbWVudCkKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwgPSBt
X2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQpOworICAgIHJldHVybiAq
dGhpczsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwg
U3RyaW5nVmlldyByZXBsYWNlbWVudCkKIHsKICAgICBpZiAobV9pbXBsKQotICAgICAgICBtX2lt
cGwgPSBtX2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQuaW1wbCgpKTsK
KyAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldCwgcmVwbGFjZW1lbnQpOwog
ICAgIHJldHVybiAqdGhpczsKIH0KIAoraW5saW5lIGJvb2wgU3RyaW5nOjpzdGFydHNXaXRoKFN0
cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0
YXJ0c1dpdGgoc3RyaW5nKSA6IHN0cmluZy5pc0VtcHR5KCk7Cit9CisKK2lubGluZSBib29sIFN0
cmluZzo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25z
dAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShzdHJpbmcpIDogc3RyaW5nLmlzRW1wdHkoKTsKK30KKworaW5saW5lIGJvb2wgU3RyaW5n
OjplbmRzV2l0aChTdHJpbmdWaWV3IHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5lbmRzV2l0aChzdHJpbmcpIDogc3RyaW5nLmlzRW1wdHkoKTsKK30KKworaW5s
aW5lIGJvb2wgU3RyaW5nOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3Ry
aW5nKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nKSA6IHN0cmluZy5pc0VtcHR5KCk7Cit9CisKK2lubGluZSBib29s
IFN0cmluZzo6aGFzSW5maXhTdGFydGluZ0F0KFN0cmluZ1ZpZXcgcHJlZml4LCB1bnNpZ25lZCBz
dGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBsICYmIHByZWZpeCAmJiBtX2ltcGwtPmhh
c0luZml4U3RhcnRpbmdBdChwcmVmaXgsIHN0YXJ0KTsKK30KKworaW5saW5lIGJvb2wgU3RyaW5n
OjpoYXNJbmZpeEVuZGluZ0F0KFN0cmluZ1ZpZXcgc3VmZml4LCB1bnNpZ25lZCBlbmQpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faW1wbCAmJiBzdWZmaXggJiYgbV9pbXBsLT5oYXNJbmZpeEVuZGlu
Z0F0KHN1ZmZpeCwgZW5kKTsKK30KKwogaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kKFN0
cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9z
dHJpbmcuZmluZChzdHJpbmcsIHN0YXJ0KTsKQEAgLTEyMzUsNiArMTM0MiwyNiBAQCBpbmxpbmUg
Ym9vbCBBdG9tU3RyaW5nOjpjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3Ry
aW5nKSBjb25zdAogICAgIHJldHVybiBtX3N0cmluZy5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZyk7CiB9CiAKK2lubGluZSBib29sIEF0b21TdHJpbmc6OnN0YXJ0c1dpdGgoU3RyaW5n
VmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoc3Ry
aW5nKTsKK30KKworaW5saW5lIGJvb2wgQXRvbVN0cmluZzo6c3RhcnRzV2l0aElnbm9yaW5nQVND
SUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5z
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsKK30KKworaW5saW5lIGJvb2wgQXRv
bVN0cmluZzo6ZW5kc1dpdGgoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fc3RyaW5nLmVuZHNXaXRoKHN0cmluZyk7Cit9CisKK2lubGluZSBib29sIEF0b21TdHJpbmc6
OmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YXBwZW5kOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKaW5kZXggMjZhOTE1ZjhlMjFmODg0MDQ4ZTM4ZThkMTljMWIzNWEwYmQzODg1Ni4u
NWZlZjRjZmI4OTdjMWIzOTIyMTU3ZjA5NmYyNzEwYzcwZTNhNWQ5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCkBAIC0xODIsMTggKzE4MiwxNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWlu
c0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCkgY29uc3Q7CiAKLSAg
ICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5
KCk7IH0KLSAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcm
IHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nLmltcGwoKSkgOiBzdHJpbmcuaXNFbXB0eSgpOyB9CisgICAgYm9v
bCBzdGFydHNXaXRoKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgc3RhcnRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogICAgIGJvb2wgc3RhcnRzV2l0aChVQ2hh
ciBjaGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiBtX2ltcGwtPnN0YXJ0c1dpdGgo
Y2hhcmFjdGVyKTsgfQotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIHN0
YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCkgOiAhbWF0
Y2hMZW5ndGg7IH0KLSAgICBib29sIGhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJpbmcmIHBy
ZWZpeCwgdW5zaWduZWQgc3RhcnQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiBwcmVmaXguaW1w
bCgpICYmIG1faW1wbC0+aGFzSW5maXhTdGFydGluZ0F0KCpwcmVmaXguaW1wbCgpLCBzdGFydCk7
IH0KKyAgICBib29sIGhhc0luZml4U3RhcnRpbmdBdChTdHJpbmdWaWV3IHByZWZpeCwgdW5zaWdu
ZWQgc3RhcnQpIGNvbnN0OwogCi0gICAgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHN0cmlu
ZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aChzdHJpbmcuaW1wbCgp
KSA6IHN0cmluZy5pc0VtcHR5KCk7IH0KLSAgICBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5
KCk7IH0KKyAgICBib29sIGVuZHNXaXRoKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgZW5k
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKICAgICBib29sIGVuZHNX
aXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9pbXBsICYmIG1faW1wbC0+ZW5k
c1dpdGgoY2hhcmFjdGVyKTsgfQogICAgIGJvb2wgZW5kc1dpdGgoY2hhciBjaGFyYWN0ZXIpIGNv
bnN0IHsgcmV0dXJuIGVuZHNXaXRoKHN0YXRpY19jYXN0PFVDaGFyPihjaGFyYWN0ZXIpKTsgfQot
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIGVuZHNXaXRoKGNvbnN0IGNo
YXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5lbmRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4KSA6ICFtYXRjaExlbmd0aDsgfQotICAgIGJv
b2wgaGFzSW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmcmIHN1ZmZpeCwgdW5zaWduZWQgZW5kT2Zm
c2V0KSBjb25zdCB7IHJldHVybiBtX2ltcGwgJiYgc3VmZml4LmltcGwoKSAmJiBtX2ltcGwtPmhh
c0luZml4RW5kaW5nQXQoKnN1ZmZpeC5pbXBsKCksIGVuZE9mZnNldCk7IH0KKyAgICBib29sIGhh
c0luZml4RW5kaW5nQXQoU3RyaW5nVmlldyBzdWZmaXgsIHVuc2lnbmVkIGVuZCkgY29uc3Q7CiAK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKExDaGFyKTsKQEAgLTIwNCw5ICsyMDIsOSBA
QCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5zZXJ0KGNvbnN0IFN0cmlu
ZyYsIHVuc2lnbmVkIHBvc2l0aW9uKTsKIAogICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciB0YXJn
ZXQsIFVDaGFyIHJlcGxhY2VtZW50KTsKLSAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgdGFyZ2V0
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKKyAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIg
dGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KTsKICAgICBTdHJpbmcmIHJlcGxhY2UoU3Ry
aW5nVmlldyB0YXJnZXQsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQpOwotICAgIFN0cmluZyYgcmVw
bGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50KTsKKyAgICBTdHJpbmcmIHJlcGxhY2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxl
bmd0aCwgU3RyaW5nVmlldyByZXBsYWNlbWVudCk7CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hh
cmFjdGVyQ291bnQ+IFN0cmluZyYgcmVwbGFjZVdpdGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29u
c3QgY2hhciAoJnJlcGxhY2VtZW50KVtjaGFyYWN0ZXJDb3VudF0pOwogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgdHJ1bmNhdGUodW5zaWduZWQgbGVuZ3RoKTsKQEAgLTQ5OSwxMyArNDk3
LDYgQEAgaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwgVUNoYXIg
cmVwbGFjZW1lbnQpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1pbmxpbmUgU3RyaW5nJiBTdHJp
bmc6OnJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KQotewot
ICAgIGlmIChtX2ltcGwpCi0gICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQs
IHJlcGxhY2VtZW50LmltcGwoKSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCiB0ZW1wbGF0ZTx1
bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gQUxXQVlTX0lOTElORSBTdHJpbmcmIFN0cmluZzo6cmVw
bGFjZVdpdGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSkKIHsKICAgICBpZiAobV9pbXBsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
CmluZGV4IDJmMzNmMmIwNzJmYTNmZWY1ZDNhYjdkZDNhZjlhMjhhNjRhYjEwY2UuLjFjMDM0NTdl
ZGY4ODdmNzU5OTdjNDQ0NWYwZDM0YmZhZGEyMTdiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAKQEAgLTI5Niw3ICsyOTYsNyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RJUEFkZHJlc3MoU3Ry
aW5nVmlldyBzZHApCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSWdub3JlSWNlQ2FuZGlkYXRl
KGNvbnN0IFJUQ0ljZUNhbmRpZGF0ZSYgaWNlQ2FuZGlkYXRlKQogewogICAgIGF1dG8gYWRkcmVz
cyA9IGV4dHJhY3RJUEFkZHJlc3MoaWNlQ2FuZGlkYXRlLmNhbmRpZGF0ZSgpKTsKLSAgICBpZiAo
IWFkZHJlc3MuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmxvY2FsIl9zKSkKKyAgICBpZiAo
IWFkZHJlc3MuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmxvY2FsIikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmICghV1RGOjppc1ZlcnNpb240VVVJRChTdHJpbmdWaWV3IHsg
YWRkcmVzcyB9LnN1YnN0cmluZygwLCBhZGRyZXNzLmxlbmd0aCgpIC0gNikpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKaW5kZXggYzg3MzQxNDYxN2I4MWVjN2ExMTljMWMxNDMw
MDdkZDBkNzBkNzFjYS4uMTczNGU5OTRmOGZkNWM1ZjcyOTk2MmYzZmNlN2Q0Y2QwMjNkNWU3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGF0
aWMgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc29sdmVkVVJMJiBhLCBjb25zdCBSZXNvbHZlZFVS
TCYgYikKIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLyN1cmwtbG9jYWwt
dXJsLWZsYWcKIGJvb2wgUmVzb2x2ZWRVUkw6OmlzTG9jYWxVUkwoKSBjb25zdAogewotICAgIHJl
dHVybiBzcGVjaWZpZWRVUkxTdHJpbmcuc3RhcnRzV2l0aCgiIyIpOworICAgIHJldHVybiBzcGVj
aWZpZWRVUkxTdHJpbmcuc3RhcnRzV2l0aCgnIycpOwogfQogCiBzdGF0aWMgUmVzb2x2ZWRVUkwg
bWFrZVJlc29sdmVkVVJMKFVSTCYmIHJlc29sdmVkVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25zb2xlQ2xpZW50LmNwcAppbmRleCAwZWM0ZWFiMTY0ZTgyOGUwYTNmZDg3YjYyMTFiODQ3
ODUzMDZhN2YwLi5kZmVkYTRkYTVmZDZjNTRiOGVkODdlZGNiMzY3NDlkOGM4MGE4NTBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApAQCAtNDAxLDcgKzQwMSw3
IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmCiAgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzE4MDgzMz4gV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBPZmZzY3JlZW5D
YW52YXMgZm9yIENhbnZhcyByZWxhdGVkIG9wZXJhdGlvbnMKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIFN0cmluZyBiYXNlNjQ7Ci0gICAgICAgICAgICBpZiAocG9zc2libGVUYXJnZXQu
Z2V0U3RyaW5nKGxleGljYWxHbG9iYWxPYmplY3QsIGJhc2U2NCkgJiYgYmFzZTY0LnN0YXJ0c1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZSgiZGF0YToiX3MpICYmIGJhc2U2NC5sZW5ndGgoKSA+IDUpIHsK
KyAgICAgICAgICAgIGlmIChwb3NzaWJsZVRhcmdldC5nZXRTdHJpbmcobGV4aWNhbEdsb2JhbE9i
amVjdCwgYmFzZTY0KSAmJiBiYXNlNjQuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJkYXRh
OiIpICYmIGJhc2U2NC5sZW5ndGgoKSA+IDUpIHsKICAgICAgICAgICAgICAgICB0YXJnZXQgPSBw
b3NzaWJsZVRhcmdldDsKICAgICAgICAgICAgICAgICBkYXRhVVJMID0gYmFzZTY0OwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZS5jcHAKaW5kZXggMmZmZDI3ODljZTEwOWI0OWY2N2MxYTBkMjY0MTY1
ODY5OTE5ZGM0Ny4uNzFkYzZjYTIzNDNhMDNlYjI3NWM5MWI0ZWUxMWJjY2NmYWQ2ODI3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2UuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlOjpwYXRoTWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKIAogICAgIGF1dG8gcGF0
aCA9IFBBTDo6ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5wYXRoKCkpOwogCi0gICAgaWYg
KG1fcGF0aC5lbmRzV2l0aCgiLyIpKQorICAgIGlmIChtX3BhdGguZW5kc1dpdGgoJy8nKSkKICAg
ICAgICAgcmV0dXJuIHBhdGguc3RhcnRzV2l0aChtX3BhdGgpOwogCiAgICAgcmV0dXJuIHBhdGgg
PT0gbV9wYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCBjYzI5Y2Zi
NDY3M2M2NjIxMWRlMWE0MWVlMmJmNmEyZThiYTExZmQ1Li41ZDk2N2ViN2Q2ZjQ1ZTY1YjMxYmU5
Y2RhODViOTg5ZDJiYzE2YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApA
QCAtMTkxMSw4ICsxOTExLDggQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldFVu
bWFuZ2xlZEluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXJzWzJdLAogICAgIC8vIGNhdXNl
cyBhIHdhcm5pbmcgaW4gc29tZSBjb21waWxlcnMuIFRoZXJlIGlzIG5vIHBvaW50IHNob3dpbmcK
ICAgICAvLyB0aGlzIHdhcm5pbmcgdG8gdGhlIHVzZXIgc2luY2UgdGhleSBkaWRuJ3Qgd3JpdGUg
dGhlIGNvZGUgdGhhdAogICAgIC8vIGlzIGNhdXNpbmcgaXQuCi0gICAgc3RhdGljIGNvbnN0IE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gYW5nbGVXYXJuaW5nIHsgIldBUk5JTkc6IDA6MTogZXh0ZW5z
aW9uICdHTF9BUkJfZ3B1X3NoYWRlcjUnIGlzIG5vdCBzdXBwb3J0ZWRcbiJfcyB9OwotICAgIGlu
dCBzdGFydEZyb20gPSBsb2cuc3RhcnRzV2l0aChhbmdsZVdhcm5pbmcpID8gYW5nbGVXYXJuaW5n
LmdldCgpLmxlbmd0aCgpIDogMDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBhbmdsZVdhcm5pbmdb
XSA9ICJXQVJOSU5HOiAwOjE6IGV4dGVuc2lvbiAnR0xfQVJCX2dwdV9zaGFkZXI1JyBpcyBub3Qg
c3VwcG9ydGVkXG4iOworICAgIGludCBzdGFydEZyb20gPSBsb2cuc3RhcnRzV2l0aChhbmdsZVdh
cm5pbmcpID8gc2l6ZW9mKGFuZ2xlV2FybmluZykgLSAxIDogMDsKICAgICBwcm9jZXNzZWRMb2cu
YXBwZW5kKGxvZy5zdWJzdHJpbmcoc3RhcnRGcm9tLCBsb2cubGVuZ3RoKCkgLSBzdGFydEZyb20p
KTsKIAogICAgIExPRyhXZWJHTCwgIlVubWFuZ2xlZCBTaGFkZXJJbmZvTG9nOlxuJXMiLCBwcm9j
ZXNzZWRMb2cudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IDYyMTI5ZDIyZWE5MTkwNWI0Mjg0YmQzOTIwMzRk
NzlmNzEwYmFlYjYuLjQxZDY2YzQ0Y2MzNGNmZDIwYWY4NWVkMTdkMDY5M2JjMDJhNTJkNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtMjUwLDcgKzI1
MCw3IEBAIGJvb2wgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIu
aW8vZW5jcnlwdGVkLW1lZGlhLyNrZXktc3lzdGVtCiAgICAgLy8gIktleSBTeXN0ZW0gc3RyaW5n
cyBhcmUgY29tcGFyZWQgdXNpbmcgY2FzZS1zZW5zaXRpdmUgbWF0Y2hpbmcuIgotICAgIHJldHVy
biBrZXlTeXN0ZW0gPT0gImNvbS5hcHBsZS5mcHMiIHx8IGtleVN5c3RlbS5zdGFydHNXaXRoKCJj
b20uYXBwbGUuZnBzLiJfcyk7CisgICAgcmV0dXJuIGtleVN5c3RlbSA9PSAiY29tLmFwcGxlLmZw
cyIgfHwga2V5U3lzdGVtLnN0YXJ0c1dpdGgoImNvbS5hcHBsZS5mcHMuIik7CiB9CiAKIENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKGNvbnN0
IENETVByaXZhdGVDbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5jcHAKaW5kZXggMjljOWFiNGVlZGYyZDYzOWI0MWU4MmZhNmFjMmRmMzc5ZjRhMzQ3My4u
YzVmYjk2YmViNTkxN2JmN2VjMjlhNWRjYjY0MWVjY2QwOTk1ZGYwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6c3VwcG9ydHNDb250YWluZXJUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkKICAgICBpZiAoIWlzSW5XZWJQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmICghdHlwZS5zdGFydHNXaXRoKCJ2aWRlby8iX3MpKQorICAgIGlmICghdHlwZS5zdGFy
dHNXaXRoKCJ2aWRlby8iKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIEdT
dHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCkuaXNDb250YWluZXJUeXBlU3VwcG9y
dGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIHR5
cGUpOwpAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjYW5E
ZWNvZGVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgaWYgKG1pbWVUeXBlLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFtaW1lVHlwZS5zdGFydHNX
aXRoKCJ2aWRlby8iX3MpKQorICAgIGlmICghbWltZVR5cGUuc3RhcnRzV2l0aCgidmlkZW8vIikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIElkZWFsbHkgdGhpcyBkZWNvZGVyIHNo
b3VsZCBvcGVyYXRlIG9ubHkgZnJvbSB0aGUgV2ViUHJvY2VzcyAob3IgZnJvbSB0aGUgR1BVUHJv
Y2Vzcykgd2hpY2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggOWYyNzA3NGZjNzRhOTg1Y2Q5ODc0NTY5NzgyNzIxMGI5NzhkZWM1OC4uM2Mw
ZDhmNzNjNDJiOGQ0MmRjYmE3YmQyM2YwNzE3ZDY4ZmZlY2E0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI1ODIsNyArMjU4Miw3IEBA
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpz
dXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAv
LyBUaGlzIHBsYXllciBkb2Vzbid0IHN1cHBvcnQgcGljdHVyZXMgcmVuZGVyaW5nLgotICAgIGlm
IChwYXJhbWV0ZXJzLnR5cGUucmF3KCkuc3RhcnRzV2l0aCgiaW1hZ2UiX3MpKQorICAgIGlmIChw
YXJhbWV0ZXJzLnR5cGUucmF3KCkuc3RhcnRzV2l0aCgiaW1hZ2UiKSkKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKIAogICAgIGF1dG8mIGdzdFJlZ2lzdHJ5U2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcAppbmRleCA0YTllOGZhZTAzN2VlZjQwZGVkOWYyY2VhZjg3MmZhMTU4YTQzYWZiLi4yMDI3
NmE1MTI3YjU0ZjBjMjc4MDY1NTNlMmRmZGE1ZjQyMTc4NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTUyOCw3ICs1MjgsNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjaGVja1ZhcnlpbmdzUGFja2luZyhQbGF0Zm9ybUdMT2JqZWN0IHZlcnRl
eFNoYWRlcgogICAgICAgICBjb25zdCBTdHJpbmcmIHN5bWJvbE5hbWUgPSB2ZXJ0ZXhTeW1ib2wu
a2V5OwogICAgICAgICAvLyBUaGUgdmFyeWluZyBtYXAgaW5jbHVkZXMgdmFyaWFibGVzIGZvciBl
YWNoIGluZGV4IG9mIGFuIGFycmF5IHZhcmlhYmxlLgogICAgICAgICAvLyBXZSBvbmx5IHdhbnQg
YSBzaW5nbGUgdmFyaWFibGUgdG8gcmVwcmVzZW50IHRoZSBhcnJheS4KLSAgICAgICAgaWYgKHN5
bWJvbE5hbWUuZW5kc1dpdGgoIl0iKSkKKyAgICAgICAgaWYgKHN5bWJvbE5hbWUuZW5kc1dpdGgo
J10nKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIERvbid0IGNvdW50IGJ1
aWx0IGluIHZhcnlpbmdzLgpAQCAtMTk3NCw4ICsxOTc0LDggQEAgU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRVbm1hbmdsZWRJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
c1syXSwKICAgICAvLyBjYXVzZXMgYSB3YXJuaW5nIGluIHNvbWUgY29tcGlsZXJzLiBUaGVyZSBp
cyBubyBwb2ludCBzaG93aW5nCiAgICAgLy8gdGhpcyB3YXJuaW5nIHRvIHRoZSB1c2VyIHNpbmNl
IHRoZXkgZGlkbid0IHdyaXRlIHRoZSBjb2RlIHRoYXQKICAgICAvLyBpcyBjYXVzaW5nIGl0Lgot
ICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFuZ2xlV2FybmluZyB7ICJX
QVJOSU5HOiAwOjE6IGV4dGVuc2lvbiAnR0xfQVJCX2dwdV9zaGFkZXI1JyBpcyBub3Qgc3VwcG9y
dGVkXG4iX3MgfTsKLSAgICBpbnQgc3RhcnRGcm9tID0gbG9nLnN0YXJ0c1dpdGgoYW5nbGVXYXJu
aW5nKSA/IGFuZ2xlV2FybmluZy5nZXQoKS5sZW5ndGgoKSA6IDA7CisgICAgc3RhdGljIGNvbnN0
IGNoYXIgYW5nbGVXYXJuaW5nW10gPSAiV0FSTklORzogMDoxOiBleHRlbnNpb24gJ0dMX0FSQl9n
cHVfc2hhZGVyNScgaXMgbm90IHN1cHBvcnRlZFxuIjsKKyAgICBpbnQgc3RhcnRGcm9tID0gbG9n
LnN0YXJ0c1dpdGgoYW5nbGVXYXJuaW5nKSA/IHNpemVvZihhbmdsZVdhcm5pbmcpIC0gMSA6IDA7
CiAgICAgaW50IG1hdGNoZWRMZW5ndGggPSAwOwogCiAgICAgZG8gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA2YzlhOWRkNTVmNWE5YTY3OGI5YzAw
ZGFkYzRlNDU3YWM1YzUzMjU1Li42YjBkNjE4MTA3ZjFiOGU0M2E0NjAyZTBkYTA1NTMwNzFjNTc0
NWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAt
MTczLDcgKzE3Myw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250YWluZXJQcm9maWxlPiBNZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvCiAKICAgICBjb25zdCBjaGFy
KiBjb250YWluZXJDYXBzRGVzY3JpcHRpb24gPSAiIjsKICAgICBhdXRvIGNvbnRhaW5lclR5cGUg
PSBjb250ZW50VHlwZS5jb250YWluZXJUeXBlKCk7Ci0gICAgaWYgKGNvbnRhaW5lclR5cGUuZW5k
c1dpdGgoIm1wNCJfcykpCisgICAgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIm1wNCIpKQog
ICAgICAgICBjb250YWluZXJDYXBzRGVzY3JpcHRpb24gPSAidmlkZW8vcXVpY2t0aW1lLCB2YXJp
YW50PWlzbyI7CiAgICAgZWxzZQogICAgICAgICBjb250YWluZXJDYXBzRGVzY3JpcHRpb24gPSBj
b250YWluZXJUeXBlLnV0ZjgoKS5kYXRhKCk7CkBAIC0xODEsNyArMTgxLDcgQEAgR1JlZlB0cjxH
c3RFbmNvZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVy
Ojpjb250YWluZXJQcm8KICAgICBhdXRvIGNvbnRhaW5lckNhcHMgPSBhZG9wdEdSZWYoZ3N0X2Nh
cHNfZnJvbV9zdHJpbmcoY29udGFpbmVyQ2Fwc0Rlc2NyaXB0aW9uKSk7CiAgICAgYXV0byBwcm9m
aWxlID0gYWRvcHRHUmVmKGdzdF9lbmNvZGluZ19jb250YWluZXJfcHJvZmlsZV9uZXcobnVsbHB0
ciwgbnVsbHB0ciwgY29udGFpbmVyQ2Fwcy5nZXQoKSwgbnVsbHB0cikpOwogCi0gICAgaWYgKGNv
bnRhaW5lclR5cGUuZW5kc1dpdGgoIm1wNCJfcykpCisgICAgaWYgKGNvbnRhaW5lclR5cGUuZW5k
c1dpdGgoIm1wNCIpKQogICAgICAgICBnc3RfZW5jb2RpbmdfcHJvZmlsZV9zZXRfZWxlbWVudF9w
cm9wZXJ0aWVzKEdTVF9FTkNPRElOR19QUk9GSUxFKHByb2ZpbGUuZ2V0KCkpLCBnc3Rfc3RydWN0
dXJlX2Zyb21fc3RyaW5nKCJlbGVtZW50LXByb3BlcnRpZXMtbWFwLCBtYXA9e1ttcDRtdXgsZnJh
Z21lbnQtZHVyYXRpb249MTAwMCxmcmFnbWVudC1tb2RlPTAsc3RyZWFtYWJsZT0wLGZvcmNlLWNy
ZWF0ZS10aW1lY29kZS10cmFrPTFdfSIsIG51bGxwdHIpKTsKIAogICAgIGF1dG8gY29kZWNzID0g
Y29udGVudFR5cGUuY29kZWNzKCk7CkBAIC0xOTYsOSArMTk2LDkgQEAgR1JlZlB0cjxHc3RFbmNv
ZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250
YWluZXJQcm8KICAgICAgICAgICAgIHZpZGVvQ2Fwc05hbWUgPSAidmlkZW8veC1hdjEiX3M7CiAg
ICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJuIGNv
ZGVjLnN0YXJ0c1dpdGgoImF2YzEiX3MpOyB9KSAhPSBub3RGb3VuZCkKICAgICAgICAgICAgIHZp
ZGVvQ2Fwc05hbWUgPSAidmlkZW8veC1oMjY0Il9zOwotICAgICAgICBlbHNlIGlmIChjb250YWlu
ZXJUeXBlLmVuZHNXaXRoKCJ3ZWJtIl9zKSkKKyAgICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlw
ZS5lbmRzV2l0aCgid2VibSIpKQogICAgICAgICAgICAgdmlkZW9DYXBzTmFtZSA9ICJ2aWRlby94
LXZwOCJfczsKLSAgICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgibXA0Il9z
KSkKKyAgICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgibXA0IikpCiAgICAg
ICAgICAgICB2aWRlb0NhcHNOYW1lID0gInZpZGVvL3gtaDI2NCJfczsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBHU1RfV0FSTklORygiVmlkZW8gY29kZWMgZm9yICVzIG5vdCBzdXBwb3J0
ZWQiLCBjb250ZW50VHlwZS5yYXcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTIyMCw5ICsyMjAsOSBA
QCBHUmVmUHRyPEdzdEVuY29kaW5nQ29udGFpbmVyUHJvZmlsZT4gTWVkaWFSZWNvcmRlclByaXZh
dGVHU3RyZWFtZXI6OmNvbnRhaW5lclBybwogICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJh
dWRpby94LW9wdXMiOwogICAgICAgICBlbHNlIGlmIChjb2RlY3MuZmluZElmKFtdKGF1dG8mIGNv
ZGVjKSB7IHJldHVybiBjb2RlYy5zdGFydHNXaXRoKCJtcDRhIl9zKTsgfSkgIT0gbm90Rm91bmQp
CiAgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQi
X3M7Ci0gICAgICAgIGVsc2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iX3MpKQor
ICAgICAgICBlbHNlIGlmIChjb250YWluZXJUeXBlLmVuZHNXaXRoKCJ3ZWJtIikpCiAgICAgICAg
ICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwotICAgICAgICBlbHNlIGlm
IChjb250YWluZXJUeXBlLmVuZHNXaXRoKCJtcDQiX3MpKQorICAgICAgICBlbHNlIGlmIChjb250
YWluZXJUeXBlLmVuZHNXaXRoKCJtcDQiKSkKICAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAi
YXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249NCJfczsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBHU1RfV0FSTklORygiQXVkaW8gY29kZWMgZm9yICVzIG5vdCBzdXBwb3J0ZWQiLCBjb250ZW50
VHlwZS5yYXcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUGFyc2VkUmVxdWVzdFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUGFyc2VkUmVxdWVzdFJhbmdlLmNwcAppbmRleCA2ZGRmODllMzUxODk2
ZGZiYzNlMzQxZjk0MDNlMWI1ZmU4MjBmZTM5Li42YzlkYjE3ZWY4MTQzZTA0YjQ2MjU4NGQ5OTI1
YTE3YTUxNjdjMjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1BhcnNlZFJlcXVlc3RSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2UuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHN0ZDo6b3B0aW9uYWw8UGFyc2VkUmVxdWVzdFJhbmdlPiBQYXJzZWRSZXF1ZXN0
UmFuZ2U6OnBhcnNlKFN0cmluZ1ZpZXcgaW5wdXQpCiB7CiAgICAgLy8gaHR0cHM6Ly90b29scy5p
ZXRmLm9yZy9odG1sL3JmYzcyMzMjc2VjdGlvbi0yLjEgYnV0IGFzc3VtaW5nIHRoZXJlIHdpbGwg
YWx3YXlzIGJlIGEgYmVnaW4gYW5kIGFuIGVuZCBvciBwYXJzaW5nIHdpbGwgZmFpbAotICAgIGlm
ICghaW5wdXQuc3RhcnRzV2l0aChTdHJpbmdWaWV3KCJieXRlcz0iX3MpKSkKKyAgICBpZiAoIWlu
cHV0LnN0YXJ0c1dpdGgoU3RyaW5nVmlldygiYnl0ZXM9IikpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgc2l6ZV90IGJlZ2luIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggY2UxMWM3
ZDg2MWFhNDMwY2UyOGU1MjkyNzc3ZDJlNGJhMDJmZTU2Ni4uYWE2OTU1MGExZjA3NzlkMmM0NTI2
NTMyY2IzMTdjMjBlNWU3YzM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC00OTAsMTEgKzQ5MCwxMSBAQCBib29s
IENvb2tpZUphckRCOjpoYXNIdHRwT25seUNvb2tpZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZG9tYWluLCBjbwogCiBzdGF0aWMgYm9vbCBjaGVja1NlY3VyZUNvb2tpZShjb25z
dCBDb29raWUmIGNvb2tpZSkKIHsKLSAgICBpZiAoY29va2llLm5hbWUuc3RhcnRzV2l0aCgiX19T
ZWN1cmUtIl9zKSAmJiAhY29va2llLnNlY3VyZSkKKyAgICBpZiAoY29va2llLm5hbWUuc3RhcnRz
V2l0aCgiX19TZWN1cmUtIikgJiYgIWNvb2tpZS5zZWN1cmUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIC8vIENvb2tpZXMgZm9yIF9fSG9zdCBtdXN0IGhhdmUgdGhlIFNlY3VyZSBhdHRy
aWJ1dGUsIHBhdGggZXhwbGljaXRseSBzZXQgdG8gIi8iLCBhbmQgbm8gZG9tYWluIGF0dHJpYnV0
ZQotICAgIGlmIChjb29raWUubmFtZS5zdGFydHNXaXRoKCJfX0hvc3QtIl9zKSAmJiAoIWNvb2tp
ZS5zZWN1cmUgfHwgY29va2llLnBhdGggIT0gIi8iX3MgfHwgIWNvb2tpZS5kb21haW4uaXNFbXB0
eSgpKSkKKyAgICBpZiAoY29va2llLm5hbWUuc3RhcnRzV2l0aCgiX19Ib3N0LSIpICYmICghY29v
a2llLnNlY3VyZSB8fCBjb29raWUucGF0aCAhPSAiLyJfcyB8fCAhY29va2llLmRvbWFpbi5pc0Vt
cHR5KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0
b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBiNGYzZDg1NTEwNDJkOTU0ZGVjYWE5MTliMjAyMTYzMmZi
ODU3M2UyLi42YzE0NWFjZWU3NTg4ZDY5NWEzODdkMjdjYjljYjBjM2M4MzE0ZmU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2Fs
U3RvcmFnZU1hbmFnZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIGNvbnN0ZXhwciBhdXRvIGZpbGVO
YW1lID0gImxvY2Fsc3RvcmFnZS5zcWxpdGUzIl9zOwogLy8gV2Ugc2hvdWxkIG5vdCBpbmNsdWRl
IG9yaWdpbiBpbiBmaWxlIG5hbWUuCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+IGZpbGVOYW1lVG9PcmlnaW4oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkK
IHsKLSAgICBpZiAoIWZpbGVOYW1lLmVuZHNXaXRoKGZpbGVTdWZmaXgpKQorICAgIGlmICghZmls
ZU5hbWUuZW5kc1dpdGgoU3RyaW5nVmlldyB7IGZpbGVTdWZmaXggfSkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBhdXRvIHN1ZmZpeExlbmd0aCA9IHN0cmxlbihmaWxlU3Vm
Zml4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5k
ZXggNDdlOWRjYTUwMGIxMDY0MDFlZGNiZGZjYmVhODIwYjM1YmU5NjU0Mi4uZmQ3NGZlYWIxZDFl
MTJmYjA2MTJhMDg1NWRlNjhmYzc2NDFiMTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTQ0NTAsNyArNDQ1MCw3IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29uc3QgU2hh
cmVhYmxlQml0bWFwCiAKIHN0YXRpYyBib29sIG1hdGNoZXNFeHRlbnNpb25PckVxdWl2YWxlbnQo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiB7Ci0gICAg
cmV0dXJuIGZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi4iICsgZXh0ZW5zaW9u
KQorICAgIHJldHVybiBmaWxlbmFtZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG1ha2VTdHJp
bmcoJy4nLCBleHRlbnNpb24pKQogICAgICAgICB8fCAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2UoZXh0ZW5zaW9uLCAianBlZyIpICYmIGZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UoIi5qcGciKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjMmM0MGQzZDJhMTMz
ZjI4MTM0MTU2MDM0ZGU1NDE0MWE0Y2U5YzMyLi5mZWY2ZTJmMGQ1M2VhODdjZTQ4YzJjMjU4NWUx
MzgwZWJmM2Q0YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC0xMTc1LDcgKzExNzUsNyBAQCB2
b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNl
cyhUZXh0Q2hlY2tpbmdSZXN1bHQgYQogICAgICAgICBpZiAocmVwbGFjZW1lbnRMZW5ndGggPiAw
KSB7CiAgICAgICAgICAgICBOU1JhbmdlIHJlcGxhY2VkUmFuZ2UgPSBOU01ha2VSYW5nZShhY2Nl
cHRlZENhbmRpZGF0ZS5yYW5nZS5sb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGgpOwogICAgICAg
ICAgICAgTlNSYW5nZSBzb2Z0U3BhY2VSYW5nZSA9IE5TTWFrZVJhbmdlKE5TTWF4UmFuZ2UocmVw
bGFjZWRSYW5nZSkgLSAxLCAxKTsKLSAgICAgICAgICAgIGlmIChhY2NlcHRlZENhbmRpZGF0ZS5y
ZXBsYWNlbWVudC5lbmRzV2l0aCgiICIpKQorICAgICAgICAgICAgaWYgKGFjY2VwdGVkQ2FuZGlk
YXRlLnJlcGxhY2VtZW50LmVuZHNXaXRoKCcgJykpCiAgICAgICAgICAgICAgICAgWyhXZWJIVE1M
VmlldyAqKXZpZXcgX3NldFNvZnRTcGFjZVJhbmdlOnNvZnRTcGFjZVJhbmdlXTsKICAgICAgICAg
fQogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmlu
Z0ltcGwuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAK
aW5kZXggZDYyOWVmY2Q0NzM2MGI0NzgyZDgzNmEwZWU4YjkyNGRiN2U2ZTBjYi4uYTc2MmJlMGEy
MjcxYjg2N2Q2MjkwZGQyN2ExZDBiMzlkNTIyMTRkZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAKQEAgLTQyMCwxMCArNDIwLDEwIEBAIFRFU1QoV1RG
LCBTdHJpbmdJbXBsU3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlQmFzaWMpCiBURVNUKFdURiwg
U3RyaW5nSW1wbFN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhOdWxsKQogewogICAgIGF1
dG8gcmVmZXJlbmNlID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImFCY0RlRkciX3Mp
OwotICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZShudWxscHRyKSk7CisgICAgQVNTRVJUX0ZBTFNFKHJlZmVyZW5jZS0+c3RhcnRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9KSk7CiAKICAgICBhdXRvIGVtcHR5ID0gU3RyaW5n
SW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiIikpOwotICAgIEFT
U0VSVF9GQUxTRShlbXB0eS0+c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIpKTsK
KyAgICBBU1NFUlRfRkFMU0UoZW1wdHktPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdWaWV3IHsgfSkpOwogfQogCiBURVNUKFdURiwgU3RyaW5nSW1wbFN0YXJ0c1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZVdpdGhFbXB0eSkKQEAgLTUwOSwxMCArNTA5LDEwIEBAIFRFU1QoV1RGLCBTdHJp
bmdJbXBsRW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZUJhc2ljKQogVEVTVChXVEYsIFN0cmluZ0lt
cGxFbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlV2l0aE51bGwpCiB7CiAgICAgYXV0byByZWZlcmVu
Y2UgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYUJjRGVGRyJfcyk7Ci0gICAgQVNT
RVJUX0ZBTFNFKHJlZmVyZW5jZS0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShudWxscHRyKSk7
CisgICAgQVNTRVJUX0ZBTFNFKHJlZmVyZW5jZS0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdWaWV3IHsgfSkpOwogCiAgICAgYXV0byBlbXB0eSA9IFN0cmluZ0ltcGw6OmNyZWF0ZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIiIpKTsKLSAgICBBU1NFUlRfRkFMU0UoZW1w
dHktPmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UobnVsbHB0cikpOworICAgIEFTU0VSVF9GQUxT
RShlbXB0eS0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSkpOwogfQog
CiBURVNUKFdURiwgU3RyaW5nSW1wbEVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2VXaXRoRW1wdHkp
Cg==
</data>
<flag name="commit-queue"
          id="483723"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455666</attachid>
            <date>2022-03-24 12:34:02 -0700</date>
            <delta_ts>2022-03-24 14:19:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238333-20220324123401.patch</filename>
            <type>text/plain</type>
            <size>50832</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YWE2NWE0N2JkOThlOGI5M2I1ZjQ1N2IzNjRmZDdjOWJhMTczNmI5Li44YjA2ZjEwMTFiZmE1MDY1
NDMzYThiY2JkYzYyY2QwZTQwZWU5MzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMi0wMy0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFN0cmluZydzIHN0YXJ0c1dpdGgoKSAvIGVuZHNXaXRoKCkgLyByZXBsYWNlKCkg
c2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODMzMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGltZS9GaWxlQmFz
ZWRGdXp6ZXJBZ2VudC5jcHA6CisgICAgICAgIChKU0M6OkZpbGVCYXNlZEZ1enplckFnZW50Ojpn
ZXRQcmVkaWN0aW9uSW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OnNpbmd1bGFyVW5pdCk6CisgICAgICAgICogcnVu
dGltZS9UZW1wb3JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnNpbmd1bGFyVW5pdCk6CisK
IDIwMjItMDMtMjMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pT
Q10gRml4IHJlbW90ZUZ1bmN0aW9uQ2FsbEdlbmVyYXRvciBvbiBNSVBTCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDliYzMwYjhl
NmVjZDJkN2MzOWJjMjIwMDE1NzU5YmM0ODUyMWM3OWQuLjY4NWQ3YmJhMWI3MjZmMTJhYWE3NGNk
ZjFkNzVjMDY5ZWUxNTE3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjItMDMtMjQgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBzdGFydHNXaXRo
KCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBp
bnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzgzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBTdHJpbmcncyBzdGFydHNXaXRoKCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgp
IHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nLAorICAgICAg
ICB0byBhdm9pZCB1bm5lY2Vzc2FyeSBTdHJpbmcgY3JlYXRpb24gaW4gbWFueSBpbnN0YW5jZXMu
CisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmg6CisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nQ29tbW9uLmg6CisgICAgICAgIChXVEY6OnN0YXJ0c1dpdGgpOiBEZWxldGVkLgorICAg
ICAgICAoV1RGOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UpOiBEZWxldGVkLgorICAgICAg
ICAoV1RGOjplbmRzV2l0aCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
OgorICAgICAgICAoV1RGOjplcXVhbElubmVyKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6
c3RhcnRzV2l0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0YXJ0c1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Omhhc0lu
Zml4U3RhcnRpbmdBdCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmVuZHNXaXRo
KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSBj
b25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Omhhc0luZml4RW5kaW5nQXQgY29uc3Qp
OgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpyZXBsYWNlKToKKyAgICAgICAgKiB3dGYvdGV4
dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0YXJ0c1dpdGggY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjplbmRzV2l0aCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RG
OjpzdGFydHNXaXRoKToKKyAgICAgICAgKFdURjo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNl
KToKKyAgICAgICAgKFdURjo6ZW5kc1dpdGgpOgorICAgICAgICAoV1RGOjplbmRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAgICAgICAg
KFdURjo6U3RyaW5nOjpzdGFydHNXaXRoIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpz
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmc6
OmVuZHNXaXRoIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjplbmRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpoYXNJbmZpeFN0YXJ0aW5n
QXQgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmc6Omhhc0luZml4RW5kaW5nQXQgY29uc3Qp
OgorICAgICAgICAoV1RGOjpBdG9tU3RyaW5nOjpzdGFydHNXaXRoIGNvbnN0KToKKyAgICAgICAg
KFdURjo6QXRvbVN0cmluZzo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlIGNvbnN0KToKKyAg
ICAgICAgKFdURjo6QXRvbVN0cmluZzo6ZW5kc1dpdGggY29uc3QpOgorICAgICAgICAoV1RGOjpB
dG9tU3RyaW5nOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKiB3
dGYvdGV4dC9XVEZTdHJpbmcuaDoKKwogMjAyMi0wMy0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFN0cmluZydzIGZpbmQoKSAvIHJldmVyc2VGaW5kKCkgLyBy
ZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNDVlMjI5ZDQyMGJjYmFlM2EzZTEyOWEyOTMwZDI2YjliZjc2ZWEzLi44
NjNiNzBkZWYzOTdjMmRlNTFiYmZmYzg3YjkzY2NhYzU3Nzk4YzNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzQgQEAKKzIwMjItMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBTdHJpbmcncyBzdGFydHNXaXRoKCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgp
IHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgzMzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3Vs
ZElnbm9yZUljZUNhbmRpZGF0ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb2x2ZWRVUkw6OmlzTG9jYWxVUkwgY29uc3QpOgorICAgICAg
ICAqIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNv
bnNvbGVDbGllbnQ6OnNjcmVlbnNob3QpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2U6OnBhdGhNYXRjaGVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldFVubWFuZ2xlZEluZm9Mb2cpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRz
S2V5U3lzdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6c3VwcG9ydHNDb250YWluZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVj
b2RlckdTdHJlYW1lcjo6Y2FuRGVjb2RlVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjaGVja1Zhcnlp
bmdzUGFja2luZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9QYXJzZWRSZXF1
ZXN0UmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkUmVxdWVzdFJhbmdlOjpwYXJz
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNoZWNrU2VjdXJlQ29va2llKToKKwogMjAyMi0wMy0yNCAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0cmluZydzIGZpbmQoKSAvIHJl
dmVyc2VGaW5kKCkgLyByZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3Rl
YWQgb2YgYSBTdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBhNGM4MWI1MjQ1
N2Q5ODc1ZDI4MGY3NTBkMjU3MzVlZWU2NzBjNjhiLi4xYjA2MDNlNjA4NzY1NTg1NzFmNjFjZTNj
MzE1NDg3MWQ0MGQ1NGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMjItMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBTdHJpbmcncyBzdGFydHNXaXRoKCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgpIHNob3Vs
ZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgzMzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6aGFuZGxlQWNjZXB0ZWRD
YW5kaWRhdGVXaXRoU29mdFNwYWNlcyk6CisKIDIwMjItMDMtMTggIEpvbmF0aGFuIEJlZGFyZCAg
PGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgMTUuNF0gRml4IHVudXNlZCB2YXJp
YWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNl
ZEZ1enplckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNl
ZEZ1enplckFnZW50LmNwcAppbmRleCAxYjAzMTMwZjBhNWMwN2MzMzVjYzU4NTY4M2JiNjQ1ZWU1
M2UwOGJmLi5lNjhhMTQ0MzJkYzViMTg2YTE5NWJhNmQzMjA0Y2ZhNzdhNjg3MTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaWxlQmFzZWRGdXp6ZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVyQWdl
bnQuY3BwCkBAIC03OCw3ICs3OCw3IEBAIFNwZWN1bGF0ZWRUeXBlIEZpbGVCYXNlZEZ1enplckFn
ZW50OjpnZXRQcmVkaWN0aW9uSW50ZXJuYWwoQ29kZUJsb2NrKiBjb2RlQmxvY2ssCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG9yaWdpbmFsOwogICAgICAgICAgICAgaWYgKHNvdXJjZUFmdGVyRGl2
b3QuY29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZSgieWllbGQiKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gb3JpZ2luYWw7Ci0gICAgICAgICAgICBpZiAoc291cmNlQWZ0ZXJEaXZvdC5zdGFydHNX
aXRoKCdbJykgJiYgc291cmNlQWZ0ZXJEaXZvdC5lbmRzV2l0aCgiXSIpKQorICAgICAgICAgICAg
aWYgKHNvdXJjZUFmdGVyRGl2b3Quc3RhcnRzV2l0aCgnWycpICYmIHNvdXJjZUFmdGVyRGl2b3Qu
ZW5kc1dpdGgoJ10nKSkKICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWw7CiAgICAgICAg
ICAgICBpZiAoc291cmNlVXBUb0Rpdm90LmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoInlpZWxk
IikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRl
eCA5NWM0M2FmNzdlNzc5OWMyZWFiMzNlNzRmZTBhMTMxYzUwYTU2NjZhLi4wMjJlZGNmYjdkMTU3
MzE2YjcwMTIzMjMzYjI2ZmRhNTkzMGVkZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMjAzLDcg
KzIwMyw3IEBAIEpTT2JqZWN0KiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpyZXNvbHZlZE9wdGlv
bnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHN0YXRpYyBTdHJpbmdWaWV3IHNpbmd1
bGFyVW5pdChTdHJpbmdWaWV3IHVuaXQpCiB7CiAgICAgLy8gUGx1cmFscyBhcmUgYWxsb3dlZCwg
YnV0IHRoYW5rZnVsbHkgdGhleSdyZSBhbGwganVzdCBhIHNpbXBsZSAtcy4KLSAgICByZXR1cm4g
dW5pdC5lbmRzV2l0aCgicyIpID8gdW5pdC5sZWZ0KHVuaXQubGVuZ3RoKCkgLSAxKSA6IHVuaXQ7
CisgICAgcmV0dXJuIHVuaXQuZW5kc1dpdGgoJ3MnKSA/IHVuaXQubGVmdCh1bml0Lmxlbmd0aCgp
IC0gMSkgOiB1bml0OwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLXNpbmd1
bGFycmVsYXRpdmV0aW1ldW5pdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IDY2YjhiOTY1YzllZjI5Y2UwNTVmZTNmOTE5NWZlNGNk
MmFkMzAyMjQuLmM5ZDMwNTJhMzQwNGRjNzJlYjk4YjEwMjAzYzFmZTAyYjhhNDA0ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKQEAg
LTE0NSw3ICsxNDUsNyBAQCB2b2lkIFRlbXBvcmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0pCiBzdGF0aWMgU3RyaW5nVmlldyBzaW5ndWxhclVuaXQoU3RyaW5nVmlldyB1bml0KQogewog
ICAgIC8vIFBsdXJhbHMgYXJlIGFsbG93ZWQsIGJ1dCB0aGFua2Z1bGx5IHRoZXkncmUgYWxsIGp1
c3QgYSBzaW1wbGUgLXMuCi0gICAgcmV0dXJuIHVuaXQuZW5kc1dpdGgoInMiKSA/IHVuaXQubGVm
dCh1bml0Lmxlbmd0aCgpIC0gMSkgOiB1bml0OworICAgIHJldHVybiB1bml0LmVuZHNXaXRoKCdz
JykgPyB1bml0LmxlZnQodW5pdC5sZW5ndGgoKSAtIDEpIDogdW5pdDsKIH0KIAogLy8gRm9yIHVz
ZSBpbiBlcnJvciBtZXNzYWdlcyB3aGVyZSBhIHN0cmluZyB2YWx1ZSBpcyBwb3RlbnRpYWxseSB1
bmJvdW5kZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKaW5kZXggYzY2YzhjNWM4MWNkZDBiNmJi
MzA1NjcyYjA4NTMxZGEwYTc3MmJiMi4uMTM2YWM2MjM2NzY5NDUzNTk4MjRlNjcyYzM3YzdjOGU5
ZDRmNzZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKQEAgLTEyNCwxNSArMTI0LDEzIEBA
IHB1YmxpYzoKICAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIHVu
c2lnbmVkIHN0YXJ0KSBjb25zdDsKICAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rp
b24gbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZy5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsgfQogCi0gICAgYm9vbCBzdGFydHNXaXRo
KGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRo
KHN0cmluZyk7IH0KLSAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBT
dHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuc3RhcnRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlKHN0cmluZyk7IH0KKyAgICBib29sIHN0YXJ0c1dpdGgoU3RyaW5nVmlldykgY29u
c3Q7CisgICAgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29u
c3Q7CiAgICAgYm9vbCBzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmcuc3RhcnRzV2l0aChjaGFyYWN0ZXIpOyB9Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQg
bWF0Y2hMZW5ndGg+IGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyICgmcHJlZml4KVttYXRjaExl
bmd0aF0pIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHBy
ZWZpeCk7IH0KIAotICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoKHN0cmluZyk7IH0KLSAgICBib29sIGVuZHNXaXRo
SWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsgfQorICAgIGJvb2wgZW5k
c1dpdGgoU3RyaW5nVmlldykgY29uc3Q7CisgICAgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlD
YXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogICAgIGJvb2wgZW5kc1dpdGgoVUNoYXIgY2hhcmFjdGVy
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChjaGFyYWN0ZXIpOyB9Ci0gICAgdGVt
cGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgZW5kc1dpdGgoY29uc3QgY2hhciAoJnBy
ZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aDxtYXRj
aExlbmd0aD4ocHJlZml4KTsgfQogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEF0b21TdHJpbmcg
Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
QXRvbVN0cmluZyBjb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQ29tbW9uLmgKaW5kZXggZGE3OTM5ZWYzZGE3YWNlNmUwNjNlODE5NTgwZjAwMzk0ZTRi
NmFkMS4uYzc3MGUwNDVkMjBjY2UyMzNiZTA4ZjBkYjliZTZiZDgzNjhhZWVjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCkBAIC0zODEsODAgKzM4MSw2IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFN0cmluZ0NsYXNzQT4gYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKGNvbnN0
IFN0cmluZ0NsCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYS5jaGFyYWN0ZXJz
MTYoKSwgYiwgbGVuZ3RoKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3NBLCB0
eXBlbmFtZSBTdHJpbmdDbGFzc0I+Ci1ib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nQ2xhc3NB
JiByZWZlcmVuY2UsIGNvbnN0IFN0cmluZ0NsYXNzQiYgcHJlZml4KQotewotICAgIHVuc2lnbmVk
IHByZWZpeExlbmd0aCA9IHByZWZpeC5sZW5ndGgoKTsKLSAgICBpZiAocHJlZml4TGVuZ3RoID4g
cmVmZXJlbmNlLmxlbmd0aCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAocmVm
ZXJlbmNlLmlzOEJpdCgpKSB7Ci0gICAgICAgIGlmIChwcmVmaXguaXM4Qml0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNoYXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0
ZXJzOCgpLCBwcmVmaXhMZW5ndGgpOwotICAgICAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNo
YXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4TGVuZ3RoKTsKLSAgICB9
Ci0gICAgaWYgKHByZWZpeC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5j
ZS5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3RlcnM4KCksIHByZWZpeExlbmd0aCk7Ci0g
ICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3Rl
cnMxNigpLCBwcmVmaXhMZW5ndGgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFz
c0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNzQj4KLWJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlD
YXNlKGNvbnN0IFN0cmluZ0NsYXNzQSYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmdDbGFzc0ImIHBy
ZWZpeCkKLXsKLSAgICB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSBwcmVmaXgubGVuZ3RoKCk7Ci0g
ICAgaWYgKHByZWZpeExlbmd0aCA+IHJlZmVyZW5jZS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKHJlZmVyZW5jZS5pczhCaXQoKSkgewotICAgICAgICBpZiAocHJl
Zml4LmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
cmVmZXJlbmNlLmNoYXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhMZW5n
dGgpOwotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2UuY2hh
cmFjdGVyczgoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOwotICAgIH0K
LSAgICBpZiAocHJlZml4LmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShyZWZlcmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBw
cmVmaXhMZW5ndGgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5j
ZS5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmluZ0NsYXNz
Qj4KLWJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5nQ2xhc3NBJiByZWZlcmVuY2UsIGNvbnN0IFN0
cmluZ0NsYXNzQiYgc3VmZml4KQotewotICAgIHVuc2lnbmVkIHN1ZmZpeExlbmd0aCA9IHN1ZmZp
eC5sZW5ndGgoKTsKLSAgICB1bnNpZ25lZCByZWZlcmVuY2VMZW5ndGggPSByZWZlcmVuY2UubGVu
Z3RoKCk7Ci0gICAgaWYgKHN1ZmZpeExlbmd0aCA+IHJlZmVyZW5jZUxlbmd0aCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSByZWZlcmVuY2VMZW5n
dGggLSBzdWZmaXhMZW5ndGg7Ci0KLSAgICBpZiAocmVmZXJlbmNlLmlzOEJpdCgpKSB7Ci0gICAg
ICAgIGlmIChzdWZmaXguaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gZXF1YWwocmVmZXJl
bmNlLmNoYXJhY3RlcnM4KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCksIHN1
ZmZpeExlbmd0aCk7Ci0gICAgICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczgo
KSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZpeExlbmd0aCk7Ci0g
ICAgfQotICAgIGlmIChzdWZmaXguaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBlcXVhbChyZWZl
cmVuY2UuY2hhcmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCks
IHN1ZmZpeExlbmd0aCk7Ci0gICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYo
KSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZpeExlbmd0aCk7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0NsYXNzQSwgdHlwZW5hbWUgU3RyaW5nQ2xhc3NC
PgotYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0NsYXNzQSYgcmVm
ZXJlbmNlLCBjb25zdCBTdHJpbmdDbGFzc0ImIHN1ZmZpeCkKLXsKLSAgICB1bnNpZ25lZCBzdWZm
aXhMZW5ndGggPSBzdWZmaXgubGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQgcmVmZXJlbmNlTGVuZ3Ro
ID0gcmVmZXJlbmNlLmxlbmd0aCgpOwotICAgIGlmIChzdWZmaXhMZW5ndGggPiByZWZlcmVuY2VM
ZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
ID0gcmVmZXJlbmNlTGVuZ3RoIC0gc3VmZml4TGVuZ3RoOwotCi0gICAgaWYgKHJlZmVyZW5jZS5p
czhCaXQoKSkgewotICAgICAgICBpZiAoc3VmZml4LmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0
dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVmZXJlbmNlLmNoYXJhY3RlcnM4KCkgKyBzdGFy
dE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCksIHN1ZmZpeExlbmd0aCk7Ci0gICAgICAgIHJl
dHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpICsgc3Rh
cnRPZmZzZXQsIHN1ZmZpeC5jaGFyYWN0ZXJzMTYoKSwgc3VmZml4TGVuZ3RoKTsKLSAgICB9Ci0g
ICAgaWYgKHN1ZmZpeC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UocmVmZXJlbmNlLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIHN1ZmZpeC5jaGFy
YWN0ZXJzOCgpLCBzdWZmaXhMZW5ndGgpOwotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFj
dGVyczE2KCksIHN1ZmZpeExlbmd0aCk7Ci19Ci0KIHRlbXBsYXRlIDx0eXBlbmFtZSBTZWFyY2hD
aGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBNYXRjaENoYXJhY3RlclR5cGU+CiBzaXplX3QgZmluZEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFNlYXJjaENoYXJhY3RlclR5cGUqIHNvdXJjZSwgY29uc3Qg
TWF0Y2hDaGFyYWN0ZXJUeXBlKiBtYXRjaENoYXJhY3RlcnMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBzZWFyY2hMZW5ndGgsIHVuc2lnbmVkIG1hdGNoTGVuZ3RoKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggNmU2NTVjMTRlYTQ0NjJjOGVjYTBjMzk5YjkyM2Q4
MmUxNGY3YTM4OS4uYzc5MjUxNzkzYjdkYTI2Mzk1YzA5NmU0ZTIxM2MzOGU0YzJmYTcyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0xMDUzLDcgKzEwNTMsNyBAQCBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29uc3QgU3RyaW5nSW1wbCYgc3RyaW5nLCB1
bnNpZ25lZCBzdGFydCwgYwogICAgIHJldHVybiBlcXVhbChzdHJpbmcuY2hhcmFjdGVyczE2KCkg
KyBzdGFydCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1hdGNoU3RyaW5nKSwgbWF0
Y2hMZW5ndGgpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29u
c3QgU3RyaW5nSW1wbCYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCwgY29uc3QgU3RyaW5nSW1wbCYg
bWF0Y2hTdHJpbmcpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGVxdWFsSW5uZXIoY29uc3Qg
U3RyaW5nSW1wbCYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCwgU3RyaW5nVmlldyBtYXRjaFN0cmlu
ZykKIHsKICAgICBpZiAoc3RhcnQgPiBzdHJpbmcubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTEwNzIsMjQgKzEwNzIsMTQgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBl
cXVhbElubmVyKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZywgdW5zaWduZWQgc3RhcnQsIGMKICAg
ICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3RlcnMxNigpICsgc3RhcnQsIG1hdGNoU3RyaW5n
LmNoYXJhY3RlcnMxNigpLCBtYXRjaFN0cmluZy5sZW5ndGgoKSk7CiB9CiAKLWJvb2wgU3RyaW5n
SW1wbDo6c3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmcpIGNvbnN0Citib29sIFN0
cmluZ0ltcGw6OnN0YXJ0c1dpdGgoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuICFzdHJpbmcgfHwgOjpXVEY6OnN0YXJ0c1dpdGgoKnRoaXMsICpzdHJpbmcpOworICAgIHJl
dHVybiAhc3RyaW5nIHx8IDo6V1RGOjpzdGFydHNXaXRoKCp0aGlzLCBzdHJpbmcpOwogfQogCi1i
b29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nSW1wbCYgc3RyaW5nKSBjb25z
dAorYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmll
dyBwcmVmaXgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIDo6V1RGOjpzdGFydHNXaXRoKCp0aGlzLCBz
dHJpbmcpOwotfQotCi1ib29sIFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZShjb25zdCBTdHJpbmdJbXBsKiBwcmVmaXgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHByZWZpeCAm
JiA6OldURjo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlzLCAqcHJlZml4KTsKLX0K
LQotYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3Ry
aW5nSW1wbCYgcHJlZml4KSBjb25zdAotewotICAgIHJldHVybiA6OldURjo6c3RhcnRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKCp0aGlzLCBwcmVmaXgpOworICAgIHJldHVybiBwcmVmaXggJiYgOjpX
VEY6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgcHJlZml4KTsKIH0KIAogYm9v
bCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKQEAgLTExMDIs
MjkgKzEwOTIsMTkgQEAgYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKGNvbnN0IGNoYXIqIG1h
dGNoU3RyaW5nLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkgY29uc3QKICAgICByZXR1cm4gbWF0Y2hM
ZW5ndGggPD0gbGVuZ3RoKCkgJiYgZXF1YWxJbm5lcigqdGhpcywgMCwgbWF0Y2hTdHJpbmcsIG1h
dGNoTGVuZ3RoKTsKIH0KIAotYm9vbCBTdHJpbmdJbXBsOjpoYXNJbmZpeFN0YXJ0aW5nQXQoY29u
c3QgU3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAorYm9vbCBT
dHJpbmdJbXBsOjpoYXNJbmZpeFN0YXJ0aW5nQXQoU3RyaW5nVmlldyBtYXRjaFN0cmluZywgdW5z
aWduZWQgc3RhcnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGVxdWFsSW5uZXIoKnRoaXMsIHN0YXJ0
LCBtYXRjaFN0cmluZyk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgoU3RyaW5nSW1w
bCogc3VmZml4KQotewotICAgIHJldHVybiBzdWZmaXggJiYgOjpXVEY6OmVuZHNXaXRoKCp0aGlz
LCAqc3VmZml4KTsKLX0KLQotYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aChTdHJpbmdJbXBsJiBz
dWZmaXgpCi17Ci0gICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aCgqdGhpcywgc3VmZml4KTsKLX0K
LQotYm9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
Z0ltcGwqIHN1ZmZpeCkgY29uc3QKK2Jvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgoU3RyaW5nVmll
dyBzdWZmaXgpCiB7Ci0gICAgcmV0dXJuIHN1ZmZpeCAmJiA6OldURjo6ZW5kc1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZSgqdGhpcywgKnN1ZmZpeCk7CisgICAgcmV0dXJuIHN1ZmZpeCAmJiA6OldURjo6
ZW5kc1dpdGgoKnRoaXMsIHN1ZmZpeCk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsJiBzdWZmaXgpIGNvbnN0Citib29sIFN0
cmluZ0ltcGw6OmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdWZmaXgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIDo6V1RGOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCp0aGlz
LCBzdWZmaXgpOworICAgIHJldHVybiBzdWZmaXggJiYgOjpXVEY6OmVuZHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UoKnRoaXMsIHN1ZmZpeCk7CiB9CiAKIGJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgo
VUNoYXIgY2hhcmFjdGVyKSBjb25zdApAQCAtMTEzNyw5ICsxMTE3LDkgQEAgYm9vbCBTdHJpbmdJ
bXBsOjplbmRzV2l0aChjb25zdCBjaGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5n
dGgpIGNvbnN0CiAgICAgcmV0dXJuIG1hdGNoTGVuZ3RoIDw9IGxlbmd0aCgpICYmIGVxdWFsSW5u
ZXIoKnRoaXMsIGxlbmd0aCgpIC0gbWF0Y2hMZW5ndGgsIG1hdGNoU3RyaW5nLCBtYXRjaExlbmd0
aCk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6aGFzSW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmdJ
bXBsJiBtYXRjaFN0cmluZywgdW5zaWduZWQgZW5kT2Zmc2V0KSBjb25zdAorYm9vbCBTdHJpbmdJ
bXBsOjpoYXNJbmZpeEVuZGluZ0F0KFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGVu
ZCkgY29uc3QKIHsKLSAgICByZXR1cm4gZW5kT2Zmc2V0ID49IG1hdGNoU3RyaW5nLmxlbmd0aCgp
ICYmIGVxdWFsSW5uZXIoKnRoaXMsIGVuZE9mZnNldCAtIG1hdGNoU3RyaW5nLmxlbmd0aCgpLCBt
YXRjaFN0cmluZyk7CisgICAgcmV0dXJuIGVuZCA+PSBtYXRjaFN0cmluZy5sZW5ndGgoKSAmJiBl
cXVhbElubmVyKCp0aGlzLCBlbmQgLSBtYXRjaFN0cmluZy5sZW5ndGgoKSwgbWF0Y2hTdHJpbmcp
OwogfQogCiBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciB0YXJnZXQs
IFVDaGFyIHJlcGxhY2VtZW50KQpAQCAtMTIwMywyMyArMTE4MywyMyBAQCBSZWY8U3RyaW5nSW1w
bD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciB0YXJnZXQsIFVDaGFyIHJlcGxhY2VtZW50KQog
ICAgIHJldHVybiBuZXdJbXBsOwogfQogCi1SZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVw
bGFjZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsYWNlLCBTdHJpbmdJ
bXBsKiBzdHJpbmcpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZSh1bnNpZ25l
ZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsYWNlLCBTdHJpbmdWaWV3IHN0cmluZykK
IHsKICAgICBwb3NpdGlvbiA9IHN0ZDo6bWluKHBvc2l0aW9uLCBsZW5ndGgoKSk7CiAgICAgbGVu
Z3RoVG9SZXBsYWNlID0gc3RkOjptaW4obGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0
aW9uKTsKLSAgICB1bnNpZ25lZCBsZW5ndGhUb0luc2VydCA9IHN0cmluZyA/IHN0cmluZy0+bGVu
Z3RoKCkgOiAwOworICAgIHVuc2lnbmVkIGxlbmd0aFRvSW5zZXJ0ID0gc3RyaW5nLmxlbmd0aCgp
OwogICAgIGlmICghbGVuZ3RoVG9SZXBsYWNlICYmICFsZW5ndGhUb0luc2VydCkKICAgICAgICAg
cmV0dXJuICp0aGlzOwogCiAgICAgaWYgKChsZW5ndGgoKSAtIGxlbmd0aFRvUmVwbGFjZSkgPj0g
KE1heExlbmd0aCAtIGxlbmd0aFRvSW5zZXJ0KSkKICAgICAgICAgQ1JBU0goKTsKIAotICAgIGlm
IChpczhCaXQoKSAmJiAoIXN0cmluZyB8fCBzdHJpbmctPmlzOEJpdCgpKSkgeworICAgIGlmIChp
czhCaXQoKSAmJiAoIXN0cmluZyB8fCBzdHJpbmcuaXM4Qml0KCkpKSB7CiAgICAgICAgIExDaGFy
KiBkYXRhOwogICAgICAgICBhdXRvIG5ld0ltcGwgPSBjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0
aCgpIC0gbGVuZ3RoVG9SZXBsYWNlICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEpOwogICAgICAgICBj
b3B5Q2hhcmFjdGVycyhkYXRhLCBtX2RhdGE4LCBwb3NpdGlvbik7CiAgICAgICAgIGlmIChzdHJp
bmcpCi0gICAgICAgICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24sIHN0cmluZy0+
bV9kYXRhOCwgbGVuZ3RoVG9JbnNlcnQpOworICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0
YSArIHBvc2l0aW9uLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoVG9JbnNlcnQpOwogICAg
ICAgICBjb3B5Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24gKyBsZW5ndGhUb0luc2VydCwgbV9k
YXRhOCArIHBvc2l0aW9uICsgbGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0aW9uIC0g
bGVuZ3RoVG9SZXBsYWNlKTsKICAgICAgICAgcmV0dXJuIG5ld0ltcGw7CiAgICAgfQpAQCAtMTIz
MCwxMCArMTIxMCwxMCBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZSh1bnNp
Z25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsYWNlLAogICAgIGVsc2UKICAgICAg
ICAgY29weUNoYXJhY3RlcnMoZGF0YSwgbV9kYXRhMTYsIHBvc2l0aW9uKTsKICAgICBpZiAoc3Ry
aW5nKSB7Ci0gICAgICAgIGlmIChzdHJpbmctPmlzOEJpdCgpKQotICAgICAgICAgICAgY29weUNo
YXJhY3RlcnMoZGF0YSArIHBvc2l0aW9uLCBzdHJpbmctPm1fZGF0YTgsIGxlbmd0aFRvSW5zZXJ0
KTsKKyAgICAgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0
ZXJzKGRhdGEgKyBwb3NpdGlvbiwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aFRvSW5zZXJ0
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIHBvc2l0
aW9uLCBzdHJpbmctPm1fZGF0YTE2LCBsZW5ndGhUb0luc2VydCk7CisgICAgICAgICAgICBjb3B5
Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24sIHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3Ro
VG9JbnNlcnQpOwogICAgIH0KICAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgIGNvcHlDaGFyYWN0
ZXJzKGRhdGEgKyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0LCBtX2RhdGE4ICsgcG9zaXRpb24g
KyBsZW5ndGhUb1JlcGxhY2UsIGxlbmd0aCgpIC0gcG9zaXRpb24gLSBsZW5ndGhUb1JlcGxhY2Up
OwpAQCAtMTI0MiwxMyArMTIyMiwxMyBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVw
bGFjZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoVG9SZXBsYWNlLAogICAgIHJl
dHVybiBuZXdJbXBsOwogfQogCi1SZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShV
Q2hhciBwYXR0ZXJuLCBTdHJpbmdJbXBsKiByZXBsYWNlbWVudCkKK1JlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpyZXBsYWNlKFVDaGFyIHBhdHRlcm4sIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQp
CiB7CiAgICAgaWYgKCFyZXBsYWNlbWVudCkKICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIGlm
IChyZXBsYWNlbWVudC0+aXM4Qml0KCkpCi0gICAgICAgIHJldHVybiByZXBsYWNlKHBhdHRlcm4s
IHJlcGxhY2VtZW50LT5tX2RhdGE4LCByZXBsYWNlbWVudC0+bGVuZ3RoKCkpOwotICAgIHJldHVy
biByZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50LT5tX2RhdGExNiwgcmVwbGFjZW1lbnQtPmxl
bmd0aCgpKTsKKyAgICBpZiAocmVwbGFjZW1lbnQuaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBy
ZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50LmNoYXJhY3RlcnM4KCksIHJlcGxhY2VtZW50Lmxl
bmd0aCgpKTsKKyAgICByZXR1cm4gcmVwbGFjZShwYXR0ZXJuLCByZXBsYWNlbWVudC5jaGFyYWN0
ZXJzMTYoKSwgcmVwbGFjZW1lbnQubGVuZ3RoKCkpOwogfQogCiBSZWY8U3RyaW5nSW1wbD4gU3Ry
aW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBMQ2hhciogcmVwbGFjZW1lbnQs
IHVuc2lnbmVkIHJlcFN0ckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggOTQ5
NTBjMzU0NWEwZmFlM2YyZTkxYjZlN2E1OGNmNWEwZDY5NDM5Yi4uODZhOTYxYmVkMzg5NmIwN2Vh
NmY0ZDYzNDk5YmJjZWZhOTAyZmM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTQz
OCwzMSArNDM4LDI1IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJl
dmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBzdGFydCA9IE1heExlbmd0aCk7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFy
dCA9IE1heExlbmd0aCk7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRo
KGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCopIGNv
bnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgc3RhcnRzV2l0aChTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChVQ2hhcikgY29uc3Q7CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBjaGFyKiwgdW5zaWduZWQgbWF0
Y2hMZW5ndGgpIGNvbnN0OwotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29s
IHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJl
dHVybiBzdGFydHNXaXRoKHByZWZpeCwgbWF0Y2hMZW5ndGggLSAxKTsgfQotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBib29sIGhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJpbmdJbXBsJiwgdW5z
aWduZWQgc3RhcnQpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGhhc0luZml4
U3RhcnRpbmdBdChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCkgY29uc3Q7CiAKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aChTdHJpbmdJbXBsKik7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCYpOwotICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCopIGNv
bnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgU3RyaW5nSW1wbCYpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IGVuZHNXaXRoKFN0cmluZ1ZpZXcpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgZW5kc1dpdGgoVUNoYXIpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBib29sIGVuZHNXaXRoKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkgY29uc3Q7
Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQgbWF0Y2hMZW5ndGg+IGJvb2wgZW5kc1dpdGgoY29uc3Qg
Y2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBlbmRzV2l0aChwcmVm
aXgsIG1hdGNoTGVuZ3RoIC0gMSk7IH0KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNJ
bmZpeEVuZGluZ0F0KGNvbnN0IFN0cmluZ0ltcGwmLCB1bnNpZ25lZCBlbmRPZmZzZXQpIGNvbnN0
OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGhhc0luZml4RW5kaW5nQXQoU3RyaW5nVmll
dywgdW5zaWduZWQgZW5kKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3Ry
aW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgVUNoYXIpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBS
ZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgU3RyaW5nVmlldyk7CiAg
ICAgQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBj
b25zdCBjaGFyKiByZXBsYWNlbWVudCwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpIHsgcmV0
dXJuIHJlcGxhY2UocGF0dGVybiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHJlcGxh
Y2VtZW50KSwgcmVwbGFjZW1lbnRMZW5ndGgpOyB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJl
ZjxTdHJpbmdJbXBsPiByZXBsYWNlKFVDaGFyLCBjb25zdCBMQ2hhciosIHVuc2lnbmVkIHJlcGxh
Y2VtZW50TGVuZ3RoKTsKICAgICBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgY29uc3Qg
VUNoYXIqLCB1bnNpZ25lZCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpOwotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdJbXBsKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFJlZjxTdHJpbmdJbXBsPiByZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgs
IFN0cmluZ1ZpZXcpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFVDaGFyRGlyZWN0aW9uIGRl
ZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gbnVs
bHB0cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNzMwZGU5NWExZGM0ZGM1NGEy
YzkyYjcyYjQ1NmRmZTg5NzA2MmUzYi4uYTY1ZTAwOTFmYjc0NDZiNWEzNmIyOThiYTgyNWMwM2Jm
ZDJmNzI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTExNTcsNiArMTE1Nyw3NiBA
QCBpbmxpbmUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHNvdXJjZSwg
U3RyaW5nVmlldyBzdHJpbmdUb0ZpbmQsCiAgICAgcmV0dXJuIGZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzb3VyY2UuY2hhcmFjdGVyczE2KCksIHN0cmluZ1RvRmluZC5jaGFyYWN0ZXJzMTYoKSwgc3Rh
cnQsIHNlYXJjaExlbmd0aCwgbWF0Y2hMZW5ndGgpOwogfQogCitpbmxpbmUgYm9vbCBzdGFydHNX
aXRoKFN0cmluZ1ZpZXcgcmVmZXJlbmNlLCBTdHJpbmdWaWV3IHByZWZpeCkKK3sKKyAgICB1bnNp
Z25lZCBwcmVmaXhMZW5ndGggPSBwcmVmaXgubGVuZ3RoKCk7CisgICAgaWYgKHByZWZpeExlbmd0
aCA+IHJlZmVyZW5jZS5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KHJlZmVyZW5jZS5pczhCaXQoKSkgeworICAgICAgICBpZiAocHJlZml4LmlzOEJpdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpLCBwcmVmaXguY2hh
cmFjdGVyczgoKSwgcHJlZml4TGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5j
ZS5jaGFyYWN0ZXJzOCgpLCBwcmVmaXguY2hhcmFjdGVyczE2KCksIHByZWZpeExlbmd0aCk7Cisg
ICAgfQorICAgIGlmIChwcmVmaXguaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBlcXVhbChyZWZl
cmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhMZW5ndGgp
OworICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFy
YWN0ZXJzMTYoKSwgcHJlZml4TGVuZ3RoKTsKK30KKworaW5saW5lIGJvb2wgc3RhcnRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgcmVmZXJlbmNlLCBTdHJpbmdWaWV3IHByZWZpeCkK
K3sKKyAgICB1bnNpZ25lZCBwcmVmaXhMZW5ndGggPSBwcmVmaXgubGVuZ3RoKCk7CisgICAgaWYg
KHByZWZpeExlbmd0aCA+IHJlZmVyZW5jZS5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKHJlZmVyZW5jZS5pczhCaXQoKSkgeworICAgICAgICBpZiAocHJlZml4Lmlz
OEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVmZXJl
bmNlLmNoYXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhMZW5ndGgpOwor
ICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2UuY2hhcmFjdGVy
czgoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOworICAgIH0KKyAgICBp
ZiAocHJlZml4LmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShyZWZlcmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhM
ZW5ndGgpOworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFy
YWN0ZXJzMTYoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5ndGgpOworfQorCitp
bmxpbmUgYm9vbCBlbmRzV2l0aChTdHJpbmdWaWV3IHJlZmVyZW5jZSwgU3RyaW5nVmlldyBzdWZm
aXgpCit7CisgICAgdW5zaWduZWQgc3VmZml4TGVuZ3RoID0gc3VmZml4Lmxlbmd0aCgpOworICAg
IHVuc2lnbmVkIHJlZmVyZW5jZUxlbmd0aCA9IHJlZmVyZW5jZS5sZW5ndGgoKTsKKyAgICBpZiAo
c3VmZml4TGVuZ3RoID4gcmVmZXJlbmNlTGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHJlZmVyZW5jZUxlbmd0aCAtIHN1ZmZpeExlbmd0
aDsKKworICAgIGlmIChyZWZlcmVuY2UuaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKHN1ZmZpeC5p
czhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczgo
KSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczgoKSwgc3VmZml4TGVuZ3RoKTsKKyAg
ICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQs
IHN1ZmZpeC5jaGFyYWN0ZXJzMTYoKSwgc3VmZml4TGVuZ3RoKTsKKyAgICB9CisgICAgaWYgKHN1
ZmZpeC5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJz
MTYoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczgoKSwgc3VmZml4TGVuZ3RoKTsK
KyAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQs
IHN1ZmZpeC5jaGFyYWN0ZXJzMTYoKSwgc3VmZml4TGVuZ3RoKTsKK30KKworaW5saW5lIGJvb2wg
ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHJlZmVyZW5jZSwgU3RyaW5nVmll
dyBzdWZmaXgpCit7CisgICAgdW5zaWduZWQgc3VmZml4TGVuZ3RoID0gc3VmZml4Lmxlbmd0aCgp
OworICAgIHVuc2lnbmVkIHJlZmVyZW5jZUxlbmd0aCA9IHJlZmVyZW5jZS5sZW5ndGgoKTsKKyAg
ICBpZiAoc3VmZml4TGVuZ3RoID4gcmVmZXJlbmNlTGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHJlZmVyZW5jZUxlbmd0aCAtIHN1ZmZp
eExlbmd0aDsKKworICAgIGlmIChyZWZlcmVuY2UuaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKHN1
ZmZpeC5pczhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIHN1ZmZpeC5jaGFyYWN0ZXJz
OCgpLCBzdWZmaXhMZW5ndGgpOworICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShyZWZlcmVuY2UuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVy
czE2KCksIHN1ZmZpeExlbmd0aCk7CisgICAgfQorICAgIGlmIChzdWZmaXguaXM4Qml0KCkpCisg
ICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJz
MTYoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczgoKSwgc3VmZml4TGVuZ3RoKTsK
KyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2UuY2hhcmFjdGVyczE2
KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnMxNigpLCBzdWZmaXhMZW5ndGgpOwor
fQorCiBpbmxpbmUgc2l6ZV90IFN0cmluZzo6ZmluZChTdHJpbmdWaWV3IHN0cmluZykgY29uc3QK
IHsKICAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0cmluZykgOiBub3RGb3VuZDsK
QEAgLTEyMDMsMTMgKzEyNzMsNTAgQEAgaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFN0
cmluZ1ZpZXcgdGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KQogICAgIHJldHVybiAqdGhp
czsKIH0KIAotaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQpCitpbmxpbmUgU3RyaW5n
JiBTdHJpbmc6OnJlcGxhY2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgU3RyaW5n
VmlldyByZXBsYWNlbWVudCkKK3sKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwgPSBt
X2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQpOworICAgIHJldHVybiAq
dGhpczsKK30KKworaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwg
U3RyaW5nVmlldyByZXBsYWNlbWVudCkKIHsKICAgICBpZiAobV9pbXBsKQotICAgICAgICBtX2lt
cGwgPSBtX2ltcGwtPnJlcGxhY2Uoc3RhcnQsIGxlbmd0aCwgcmVwbGFjZW1lbnQuaW1wbCgpKTsK
KyAgICAgICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHRhcmdldCwgcmVwbGFjZW1lbnQpOwog
ICAgIHJldHVybiAqdGhpczsKIH0KIAoraW5saW5lIGJvb2wgU3RyaW5nOjpzdGFydHNXaXRoKFN0
cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0
YXJ0c1dpdGgoc3RyaW5nKSA6IHN0cmluZy5pc0VtcHR5KCk7Cit9CisKK2lubGluZSBib29sIFN0
cmluZzo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25z
dAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZShzdHJpbmcpIDogc3RyaW5nLmlzRW1wdHkoKTsKK30KKworaW5saW5lIGJvb2wgU3RyaW5n
OjplbmRzV2l0aChTdHJpbmdWaWV3IHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5lbmRzV2l0aChzdHJpbmcpIDogc3RyaW5nLmlzRW1wdHkoKTsKK30KKworaW5s
aW5lIGJvb2wgU3RyaW5nOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3Ry
aW5nKSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nKSA6IHN0cmluZy5pc0VtcHR5KCk7Cit9CisKK2lubGluZSBib29s
IFN0cmluZzo6aGFzSW5maXhTdGFydGluZ0F0KFN0cmluZ1ZpZXcgcHJlZml4LCB1bnNpZ25lZCBz
dGFydCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBsICYmIHByZWZpeCAmJiBtX2ltcGwtPmhh
c0luZml4U3RhcnRpbmdBdChwcmVmaXgsIHN0YXJ0KTsKK30KKworaW5saW5lIGJvb2wgU3RyaW5n
OjpoYXNJbmZpeEVuZGluZ0F0KFN0cmluZ1ZpZXcgc3VmZml4LCB1bnNpZ25lZCBlbmQpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faW1wbCAmJiBzdWZmaXggJiYgbV9pbXBsLT5oYXNJbmZpeEVuZGlu
Z0F0KHN1ZmZpeCwgZW5kKTsKK30KKwogaW5saW5lIHNpemVfdCBBdG9tU3RyaW5nOjpmaW5kKFN0
cmluZ1ZpZXcgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9z
dHJpbmcuZmluZChzdHJpbmcsIHN0YXJ0KTsKQEAgLTEyMzUsNiArMTM0MiwyNiBAQCBpbmxpbmUg
Ym9vbCBBdG9tU3RyaW5nOjpjb250YWluc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3Ry
aW5nKSBjb25zdAogICAgIHJldHVybiBtX3N0cmluZy5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZyk7CiB9CiAKK2lubGluZSBib29sIEF0b21TdHJpbmc6OnN0YXJ0c1dpdGgoU3RyaW5n
VmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoc3Ry
aW5nKTsKK30KKworaW5saW5lIGJvb2wgQXRvbVN0cmluZzo6c3RhcnRzV2l0aElnbm9yaW5nQVND
SUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5z
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsKK30KKworaW5saW5lIGJvb2wgQXRv
bVN0cmluZzo6ZW5kc1dpdGgoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fc3RyaW5nLmVuZHNXaXRoKHN0cmluZyk7Cit9CisKK2lubGluZSBib29sIEF0b21TdHJpbmc6
OmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc3RyaW5nLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YXBwZW5kOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKaW5kZXggMjZhOTE1ZjhlMjFmODg0MDQ4ZTM4ZThkMTljMWIzNWEwYmQzODg1Ni4u
NWZlZjRjZmI4OTdjMWIzOTIyMTU3ZjA5NmYyNzEwYzcwZTNhNWQ5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCkBAIC0xODIsMTggKzE4MiwxNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWlu
c0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCkgY29uc3Q7CiAKLSAg
ICBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1f
aW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0aChzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5
KCk7IH0KLSAgICBib29sIHN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcm
IHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nLmltcGwoKSkgOiBzdHJpbmcuaXNFbXB0eSgpOyB9CisgICAgYm9v
bCBzdGFydHNXaXRoKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgc3RhcnRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogICAgIGJvb2wgc3RhcnRzV2l0aChVQ2hh
ciBjaGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiBtX2ltcGwtPnN0YXJ0c1dpdGgo
Y2hhcmFjdGVyKTsgfQotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIHN0
YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClbbWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCkgOiAhbWF0
Y2hMZW5ndGg7IH0KLSAgICBib29sIGhhc0luZml4U3RhcnRpbmdBdChjb25zdCBTdHJpbmcmIHBy
ZWZpeCwgdW5zaWduZWQgc3RhcnQpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiBwcmVmaXguaW1w
bCgpICYmIG1faW1wbC0+aGFzSW5maXhTdGFydGluZ0F0KCpwcmVmaXguaW1wbCgpLCBzdGFydCk7
IH0KKyAgICBib29sIGhhc0luZml4U3RhcnRpbmdBdChTdHJpbmdWaWV3IHByZWZpeCwgdW5zaWdu
ZWQgc3RhcnQpIGNvbnN0OwogCi0gICAgYm9vbCBlbmRzV2l0aChjb25zdCBTdHJpbmcmIHN0cmlu
ZykgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0aChzdHJpbmcuaW1wbCgp
KSA6IHN0cmluZy5pc0VtcHR5KCk7IH0KLSAgICBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+
ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcuaW1wbCgpKSA6IHN0cmluZy5pc0VtcHR5
KCk7IH0KKyAgICBib29sIGVuZHNXaXRoKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgZW5k
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKICAgICBib29sIGVuZHNX
aXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9pbXBsICYmIG1faW1wbC0+ZW5k
c1dpdGgoY2hhcmFjdGVyKTsgfQogICAgIGJvb2wgZW5kc1dpdGgoY2hhciBjaGFyYWN0ZXIpIGNv
bnN0IHsgcmV0dXJuIGVuZHNXaXRoKHN0YXRpY19jYXN0PFVDaGFyPihjaGFyYWN0ZXIpKTsgfQot
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIGVuZHNXaXRoKGNvbnN0IGNo
YXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBs
LT5lbmRzV2l0aDxtYXRjaExlbmd0aD4ocHJlZml4KSA6ICFtYXRjaExlbmd0aDsgfQotICAgIGJv
b2wgaGFzSW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmcmIHN1ZmZpeCwgdW5zaWduZWQgZW5kT2Zm
c2V0KSBjb25zdCB7IHJldHVybiBtX2ltcGwgJiYgc3VmZml4LmltcGwoKSAmJiBtX2ltcGwtPmhh
c0luZml4RW5kaW5nQXQoKnN1ZmZpeC5pbXBsKCksIGVuZE9mZnNldCk7IH0KKyAgICBib29sIGhh
c0luZml4RW5kaW5nQXQoU3RyaW5nVmlldyBzdWZmaXgsIHVuc2lnbmVkIGVuZCkgY29uc3Q7CiAK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJik7CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKExDaGFyKTsKQEAgLTIwNCw5ICsyMDIsOSBA
QCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5zZXJ0KGNvbnN0IFN0cmlu
ZyYsIHVuc2lnbmVkIHBvc2l0aW9uKTsKIAogICAgIFN0cmluZyYgcmVwbGFjZShVQ2hhciB0YXJn
ZXQsIFVDaGFyIHJlcGxhY2VtZW50KTsKLSAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIgdGFyZ2V0
LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KTsKKyAgICBTdHJpbmcmIHJlcGxhY2UoVUNoYXIg
dGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KTsKICAgICBTdHJpbmcmIHJlcGxhY2UoU3Ry
aW5nVmlldyB0YXJnZXQsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQpOwotICAgIFN0cmluZyYgcmVw
bGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIHJlcGxh
Y2VtZW50KTsKKyAgICBTdHJpbmcmIHJlcGxhY2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxl
bmd0aCwgU3RyaW5nVmlldyByZXBsYWNlbWVudCk7CiAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hh
cmFjdGVyQ291bnQ+IFN0cmluZyYgcmVwbGFjZVdpdGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29u
c3QgY2hhciAoJnJlcGxhY2VtZW50KVtjaGFyYWN0ZXJDb3VudF0pOwogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgdHJ1bmNhdGUodW5zaWduZWQgbGVuZ3RoKTsKQEAgLTQ5OSwxMyArNDk3
LDYgQEAgaW5saW5lIFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwgVUNoYXIg
cmVwbGFjZW1lbnQpCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1pbmxpbmUgU3RyaW5nJiBTdHJp
bmc6OnJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KQotewot
ICAgIGlmIChtX2ltcGwpCi0gICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQs
IHJlcGxhY2VtZW50LmltcGwoKSk7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCiB0ZW1wbGF0ZTx1
bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gQUxXQVlTX0lOTElORSBTdHJpbmcmIFN0cmluZzo6cmVw
bGFjZVdpdGhMaXRlcmFsKFVDaGFyIHRhcmdldCwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2No
YXJhY3RlckNvdW50XSkKIHsKICAgICBpZiAobV9pbXBsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3Bw
CmluZGV4IDJmMzNmMmIwNzJmYTNmZWY1ZDNhYjdkZDNhZjlhMjhhNjRhYjEwY2UuLjFjMDM0NTdl
ZGY4ODdmNzU5OTdjNDQ0NWYwZDM0YmZhZGEyMTdiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAKQEAgLTI5Niw3ICsyOTYsNyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RJUEFkZHJlc3MoU3Ry
aW5nVmlldyBzZHApCiBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSWdub3JlSWNlQ2FuZGlkYXRl
KGNvbnN0IFJUQ0ljZUNhbmRpZGF0ZSYgaWNlQ2FuZGlkYXRlKQogewogICAgIGF1dG8gYWRkcmVz
cyA9IGV4dHJhY3RJUEFkZHJlc3MoaWNlQ2FuZGlkYXRlLmNhbmRpZGF0ZSgpKTsKLSAgICBpZiAo
IWFkZHJlc3MuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmxvY2FsIl9zKSkKKyAgICBpZiAo
IWFkZHJlc3MuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmxvY2FsIikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGlmICghV1RGOjppc1ZlcnNpb240VVVJRChTdHJpbmdWaWV3IHsg
YWRkcmVzcyB9LnN1YnN0cmluZygwLCBhZGRyZXNzLmxlbmd0aCgpIC0gNikpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKaW5kZXggYzg3MzQxNDYxN2I4MWVjN2ExMTljMWMxNDMw
MDdkZDBkNzBkNzFjYS4uMTczNGU5OTRmOGZkNWM1ZjcyOTk2MmYzZmNlN2Q0Y2QwMjNkNWU3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGF0
aWMgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc29sdmVkVVJMJiBhLCBjb25zdCBSZXNvbHZlZFVS
TCYgYikKIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdmFsdWVzLyN1cmwtbG9jYWwt
dXJsLWZsYWcKIGJvb2wgUmVzb2x2ZWRVUkw6OmlzTG9jYWxVUkwoKSBjb25zdAogewotICAgIHJl
dHVybiBzcGVjaWZpZWRVUkxTdHJpbmcuc3RhcnRzV2l0aCgiIyIpOworICAgIHJldHVybiBzcGVj
aWZpZWRVUkxTdHJpbmcuc3RhcnRzV2l0aCgnIycpOwogfQogCiBzdGF0aWMgUmVzb2x2ZWRVUkwg
bWFrZVJlc29sdmVkVVJMKFVSTCYmIHJlc29sdmVkVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25zb2xlQ2xpZW50LmNwcAppbmRleCAwZWM0ZWFiMTY0ZTgyOGUwYTNmZDg3YjYyMTFiODQ3
ODUzMDZhN2YwLi5kZmVkYTRkYTVmZDZjNTRiOGVkODdlZGNiMzY3NDlkOGM4MGE4NTBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcApAQCAtNDAxLDcgKzQwMSw3
IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjpKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmCiAgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzE4MDgzMz4gV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBPZmZzY3JlZW5D
YW52YXMgZm9yIENhbnZhcyByZWxhdGVkIG9wZXJhdGlvbnMKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIFN0cmluZyBiYXNlNjQ7Ci0gICAgICAgICAgICBpZiAocG9zc2libGVUYXJnZXQu
Z2V0U3RyaW5nKGxleGljYWxHbG9iYWxPYmplY3QsIGJhc2U2NCkgJiYgYmFzZTY0LnN0YXJ0c1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZSgiZGF0YToiX3MpICYmIGJhc2U2NC5sZW5ndGgoKSA+IDUpIHsK
KyAgICAgICAgICAgIGlmIChwb3NzaWJsZVRhcmdldC5nZXRTdHJpbmcobGV4aWNhbEdsb2JhbE9i
amVjdCwgYmFzZTY0KSAmJiBiYXNlNjQuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCJkYXRh
OiIpICYmIGJhc2U2NC5sZW5ndGgoKSA+IDUpIHsKICAgICAgICAgICAgICAgICB0YXJnZXQgPSBw
b3NzaWJsZVRhcmdldDsKICAgICAgICAgICAgICAgICBkYXRhVVJMID0gYmFzZTY0OwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZS5jcHAKaW5kZXggMmZmZDI3ODljZTEwOWI0OWY2N2MxYTBkMjY0MTY1
ODY5OTE5ZGM0Ny4uNzFkYzZjYTIzNDNhMDNlYjI3NWM5MWI0ZWUxMWJjY2NmYWQ2ODI3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2UuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlOjpwYXRoTWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKIAogICAgIGF1dG8gcGF0
aCA9IFBBTDo6ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5wYXRoKCkpOwogCi0gICAgaWYg
KG1fcGF0aC5lbmRzV2l0aCgiLyIpKQorICAgIGlmIChtX3BhdGguZW5kc1dpdGgoJy8nKSkKICAg
ICAgICAgcmV0dXJuIHBhdGguc3RhcnRzV2l0aChtX3BhdGgpOwogCiAgICAgcmV0dXJuIHBhdGgg
PT0gbV9wYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCBjYzI5Y2Zi
NDY3M2M2NjIxMWRlMWE0MWVlMmJmNmEyZThiYTExZmQ1Li41ZDk2N2ViN2Q2ZjQ1ZTY1YjMxYmU5
Y2RhODViOTg5ZDJiYzE2YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApA
QCAtMTkxMSw4ICsxOTExLDggQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OmdldFVu
bWFuZ2xlZEluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBzaGFkZXJzWzJdLAogICAgIC8vIGNhdXNl
cyBhIHdhcm5pbmcgaW4gc29tZSBjb21waWxlcnMuIFRoZXJlIGlzIG5vIHBvaW50IHNob3dpbmcK
ICAgICAvLyB0aGlzIHdhcm5pbmcgdG8gdGhlIHVzZXIgc2luY2UgdGhleSBkaWRuJ3Qgd3JpdGUg
dGhlIGNvZGUgdGhhdAogICAgIC8vIGlzIGNhdXNpbmcgaXQuCi0gICAgc3RhdGljIGNvbnN0IE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gYW5nbGVXYXJuaW5nIHsgIldBUk5JTkc6IDA6MTogZXh0ZW5z
aW9uICdHTF9BUkJfZ3B1X3NoYWRlcjUnIGlzIG5vdCBzdXBwb3J0ZWRcbiJfcyB9OwotICAgIGlu
dCBzdGFydEZyb20gPSBsb2cuc3RhcnRzV2l0aChhbmdsZVdhcm5pbmcpID8gYW5nbGVXYXJuaW5n
LmdldCgpLmxlbmd0aCgpIDogMDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBhbmdsZVdhcm5pbmdb
XSA9ICJXQVJOSU5HOiAwOjE6IGV4dGVuc2lvbiAnR0xfQVJCX2dwdV9zaGFkZXI1JyBpcyBub3Qg
c3VwcG9ydGVkXG4iOworICAgIGludCBzdGFydEZyb20gPSBsb2cuc3RhcnRzV2l0aChhbmdsZVdh
cm5pbmcpID8gc2l6ZW9mKGFuZ2xlV2FybmluZykgLSAxIDogMDsKICAgICBwcm9jZXNzZWRMb2cu
YXBwZW5kKGxvZy5zdWJzdHJpbmcoc3RhcnRGcm9tLCBsb2cubGVuZ3RoKCkgLSBzdGFydEZyb20p
KTsKIAogICAgIExPRyhXZWJHTCwgIlVubWFuZ2xlZCBTaGFkZXJJbmZvTG9nOlxuJXMiLCBwcm9j
ZXNzZWRMb2cudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWlu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RN
RmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IDYyMTI5ZDIyZWE5MTkwNWI0Mjg0YmQzOTIwMzRk
NzlmNzEwYmFlYjYuLjQxZDY2YzQ0Y2MzNGNmZDIwYWY4NWVkMTdkMDY5M2JjMDJhNTJkNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcApAQCAtMjUwLDcgKzI1
MCw3IEBAIGJvb2wgQ0RNRmFjdG9yeUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0tleVN5c3Rl
bShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIu
aW8vZW5jcnlwdGVkLW1lZGlhLyNrZXktc3lzdGVtCiAgICAgLy8gIktleSBTeXN0ZW0gc3RyaW5n
cyBhcmUgY29tcGFyZWQgdXNpbmcgY2FzZS1zZW5zaXRpdmUgbWF0Y2hpbmcuIgotICAgIHJldHVy
biBrZXlTeXN0ZW0gPT0gImNvbS5hcHBsZS5mcHMiIHx8IGtleVN5c3RlbS5zdGFydHNXaXRoKCJj
b20uYXBwbGUuZnBzLiJfcyk7CisgICAgcmV0dXJuIGtleVN5c3RlbSA9PSAiY29tLmFwcGxlLmZw
cyIgfHwga2V5U3lzdGVtLnN0YXJ0c1dpdGgoImNvbS5hcHBsZS5mcHMuIik7CiB9CiAKIENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nKGNvbnN0
IENETVByaXZhdGVDbGllbnQmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5jcHAKaW5kZXggMjljOWFiNGVlZGYyZDYzOWI0MWU4MmZhNmFjMmRmMzc5ZjRhMzQ3My4u
YzVmYjk2YmViNTkxN2JmN2VjMjlhNWRjYjY0MWVjY2QwOTk1ZGYwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEltYWdl
RGVjb2RlckdTdHJlYW1lcjo6c3VwcG9ydHNDb250YWluZXJUeXBlKGNvbnN0IFN0cmluZyYgdHlw
ZSkKICAgICBpZiAoIWlzSW5XZWJQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmICghdHlwZS5zdGFydHNXaXRoKCJ2aWRlby8iX3MpKQorICAgIGlmICghdHlwZS5zdGFy
dHNXaXRoKCJ2aWRlby8iKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIEdT
dHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCkuaXNDb250YWluZXJUeXBlU3VwcG9y
dGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIHR5
cGUpOwpAQCAtMTE1LDcgKzExNSw3IEBAIGJvb2wgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjYW5E
ZWNvZGVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgaWYgKG1pbWVUeXBlLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFtaW1lVHlwZS5zdGFydHNX
aXRoKCJ2aWRlby8iX3MpKQorICAgIGlmICghbWltZVR5cGUuc3RhcnRzV2l0aCgidmlkZW8vIikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIElkZWFsbHkgdGhpcyBkZWNvZGVyIHNo
b3VsZCBvcGVyYXRlIG9ubHkgZnJvbSB0aGUgV2ViUHJvY2VzcyAob3IgZnJvbSB0aGUgR1BVUHJv
Y2Vzcykgd2hpY2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggOWYyNzA3NGZjNzRhOTg1Y2Q5ODc0NTY5NzgyNzIxMGI5NzhkZWM1OC4uM2Mw
ZDhmNzNjNDJiOGQ0MmRjYmE3YmQyM2YwNzE3ZDY4ZmZlY2E0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI1ODIsNyArMjU4Miw3IEBA
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpz
dXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAv
LyBUaGlzIHBsYXllciBkb2Vzbid0IHN1cHBvcnQgcGljdHVyZXMgcmVuZGVyaW5nLgotICAgIGlm
IChwYXJhbWV0ZXJzLnR5cGUucmF3KCkuc3RhcnRzV2l0aCgiaW1hZ2UiX3MpKQorICAgIGlmIChw
YXJhbWV0ZXJzLnR5cGUucmF3KCkuc3RhcnRzV2l0aCgiaW1hZ2UiKSkKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKIAogICAgIGF1dG8mIGdzdFJlZ2lzdHJ5U2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6c2luZ2xldG9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcAppbmRleCA0YTllOGZhZTAzN2VlZjQwZGVkOWYyY2VhZjg3MmZhMTU4YTQzYWZiLi4yMDI3
NmE1MTI3YjU0ZjBjMjc4MDY1NTNlMmRmZGE1ZjQyMTc4NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTUyOCw3ICs1MjgsNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpjaGVja1ZhcnlpbmdzUGFja2luZyhQbGF0Zm9ybUdMT2JqZWN0IHZlcnRl
eFNoYWRlcgogICAgICAgICBjb25zdCBTdHJpbmcmIHN5bWJvbE5hbWUgPSB2ZXJ0ZXhTeW1ib2wu
a2V5OwogICAgICAgICAvLyBUaGUgdmFyeWluZyBtYXAgaW5jbHVkZXMgdmFyaWFibGVzIGZvciBl
YWNoIGluZGV4IG9mIGFuIGFycmF5IHZhcmlhYmxlLgogICAgICAgICAvLyBXZSBvbmx5IHdhbnQg
YSBzaW5nbGUgdmFyaWFibGUgdG8gcmVwcmVzZW50IHRoZSBhcnJheS4KLSAgICAgICAgaWYgKHN5
bWJvbE5hbWUuZW5kc1dpdGgoIl0iKSkKKyAgICAgICAgaWYgKHN5bWJvbE5hbWUuZW5kc1dpdGgo
J10nKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIERvbid0IGNvdW50IGJ1
aWx0IGluIHZhcnlpbmdzLgpAQCAtMTk3NCw4ICsxOTc0LDggQEAgU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpnZXRVbm1hbmdsZWRJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVy
c1syXSwKICAgICAvLyBjYXVzZXMgYSB3YXJuaW5nIGluIHNvbWUgY29tcGlsZXJzLiBUaGVyZSBp
cyBubyBwb2ludCBzaG93aW5nCiAgICAgLy8gdGhpcyB3YXJuaW5nIHRvIHRoZSB1c2VyIHNpbmNl
IHRoZXkgZGlkbid0IHdyaXRlIHRoZSBjb2RlIHRoYXQKICAgICAvLyBpcyBjYXVzaW5nIGl0Lgot
ICAgIHN0YXRpYyBjb25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFuZ2xlV2FybmluZyB7ICJX
QVJOSU5HOiAwOjE6IGV4dGVuc2lvbiAnR0xfQVJCX2dwdV9zaGFkZXI1JyBpcyBub3Qgc3VwcG9y
dGVkXG4iX3MgfTsKLSAgICBpbnQgc3RhcnRGcm9tID0gbG9nLnN0YXJ0c1dpdGgoYW5nbGVXYXJu
aW5nKSA/IGFuZ2xlV2FybmluZy5nZXQoKS5sZW5ndGgoKSA6IDA7CisgICAgc3RhdGljIGNvbnN0
IGNoYXIgYW5nbGVXYXJuaW5nW10gPSAiV0FSTklORzogMDoxOiBleHRlbnNpb24gJ0dMX0FSQl9n
cHVfc2hhZGVyNScgaXMgbm90IHN1cHBvcnRlZFxuIjsKKyAgICBpbnQgc3RhcnRGcm9tID0gbG9n
LnN0YXJ0c1dpdGgoYW5nbGVXYXJuaW5nKSA/IHNpemVvZihhbmdsZVdhcm5pbmcpIC0gMSA6IDA7
CiAgICAgaW50IG1hdGNoZWRMZW5ndGggPSAwOwogCiAgICAgZG8gewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA2YzlhOWRkNTVmNWE5YTY3OGI5YzAw
ZGFkYzRlNDU3YWM1YzUzMjU1Li42MDdmMzY2YmY3MmZjOGViNWNjYzNkODA1M2U2MDBjZTcwMjk3
YmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAt
MTczLDcgKzE3Myw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250YWluZXJQcm9maWxlPiBNZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvCiAKICAgICBjb25zdCBjaGFy
KiBjb250YWluZXJDYXBzRGVzY3JpcHRpb24gPSAiIjsKICAgICBhdXRvIGNvbnRhaW5lclR5cGUg
PSBjb250ZW50VHlwZS5jb250YWluZXJUeXBlKCk7Ci0gICAgaWYgKGNvbnRhaW5lclR5cGUuZW5k
c1dpdGgoIm1wNCJfcykpCisgICAgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIm1wNCIpKQog
ICAgICAgICBjb250YWluZXJDYXBzRGVzY3JpcHRpb24gPSAidmlkZW8vcXVpY2t0aW1lLCB2YXJp
YW50PWlzbyI7CiAgICAgZWxzZQogICAgICAgICBjb250YWluZXJDYXBzRGVzY3JpcHRpb24gPSBj
b250YWluZXJUeXBlLnV0ZjgoKS5kYXRhKCk7CkBAIC0xODEsNyArMTgxLDcgQEAgR1JlZlB0cjxH
c3RFbmNvZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVy
Ojpjb250YWluZXJQcm8KICAgICBhdXRvIGNvbnRhaW5lckNhcHMgPSBhZG9wdEdSZWYoZ3N0X2Nh
cHNfZnJvbV9zdHJpbmcoY29udGFpbmVyQ2Fwc0Rlc2NyaXB0aW9uKSk7CiAgICAgYXV0byBwcm9m
aWxlID0gYWRvcHRHUmVmKGdzdF9lbmNvZGluZ19jb250YWluZXJfcHJvZmlsZV9uZXcobnVsbHB0
ciwgbnVsbHB0ciwgY29udGFpbmVyQ2Fwcy5nZXQoKSwgbnVsbHB0cikpOwogCi0gICAgaWYgKGNv
bnRhaW5lclR5cGUuZW5kc1dpdGgoIm1wNCJfcykpCisgICAgaWYgKGNvbnRhaW5lclR5cGUuZW5k
c1dpdGgoIm1wNCIpKQogICAgICAgICBnc3RfZW5jb2RpbmdfcHJvZmlsZV9zZXRfZWxlbWVudF9w
cm9wZXJ0aWVzKEdTVF9FTkNPRElOR19QUk9GSUxFKHByb2ZpbGUuZ2V0KCkpLCBnc3Rfc3RydWN0
dXJlX2Zyb21fc3RyaW5nKCJlbGVtZW50LXByb3BlcnRpZXMtbWFwLCBtYXA9e1ttcDRtdXgsZnJh
Z21lbnQtZHVyYXRpb249MTAwMCxmcmFnbWVudC1tb2RlPTAsc3RyZWFtYWJsZT0wLGZvcmNlLWNy
ZWF0ZS10aW1lY29kZS10cmFrPTFdfSIsIG51bGxwdHIpKTsKIAogICAgIGF1dG8gY29kZWNzID0g
Y29udGVudFR5cGUuY29kZWNzKCk7CkBAIC0xOTQsMTEgKzE5NCwxMSBAQCBHUmVmUHRyPEdzdEVu
Y29kaW5nQ29udGFpbmVyUHJvZmlsZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNv
bnRhaW5lclBybwogICAgICAgICAgICAgdmlkZW9DYXBzTmFtZSA9ICJ2aWRlby94LXZwOSJfczsK
ICAgICAgICAgZWxzZSBpZiAoY29kZWNzLmNvbnRhaW5zKCJhdjEiX3MpKQogICAgICAgICAgICAg
dmlkZW9DYXBzTmFtZSA9ICJ2aWRlby94LWF2MSJfczsKLSAgICAgICAgZWxzZSBpZiAoY29kZWNz
LmZpbmRJZihbXShhdXRvJiBjb2RlYykgeyByZXR1cm4gY29kZWMuc3RhcnRzV2l0aCgiYXZjMSJf
cyk7IH0pICE9IG5vdEZvdW5kKQorICAgICAgICBlbHNlIGlmIChjb2RlY3MuZmluZElmKFtdKGF1
dG8mIGNvZGVjKSB7IHJldHVybiBjb2RlYy5zdGFydHNXaXRoKCJhdmMxIik7IH0pICE9IG5vdEZv
dW5kKQogICAgICAgICAgICAgdmlkZW9DYXBzTmFtZSA9ICJ2aWRlby94LWgyNjQiX3M7Ci0gICAg
ICAgIGVsc2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iX3MpKQorICAgICAgICBl
bHNlIGlmIChjb250YWluZXJUeXBlLmVuZHNXaXRoKCJ3ZWJtIikpCiAgICAgICAgICAgICB2aWRl
b0NhcHNOYW1lID0gInZpZGVvL3gtdnA4Il9zOwotICAgICAgICBlbHNlIGlmIChjb250YWluZXJU
eXBlLmVuZHNXaXRoKCJtcDQiX3MpKQorICAgICAgICBlbHNlIGlmIChjb250YWluZXJUeXBlLmVu
ZHNXaXRoKCJtcDQiKSkKICAgICAgICAgICAgIHZpZGVvQ2Fwc05hbWUgPSAidmlkZW8veC1oMjY0
Il9zOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJWaWRlbyBjb2Rl
YyBmb3IgJXMgbm90IHN1cHBvcnRlZCIsIGNvbnRlbnRUeXBlLnJhdygpLnV0ZjgoKS5kYXRhKCkp
OwpAQCAtMjE4LDExICsyMTgsMTEgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclByb2Zp
bGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICAgICAg
ICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC12b3JiaXMiX3M7CiAgICAgICAgIGVsc2UgaWYg
KGNvZGVjcy5jb250YWlucygib3B1cyJfcykpCiAgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0g
ImF1ZGlvL3gtb3B1cyI7Ci0gICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYg
Y29kZWMpIHsgcmV0dXJuIGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiX3MpOyB9KSAhPSBub3RGb3Vu
ZCkKKyAgICAgICAgZWxzZSBpZiAoY29kZWNzLmZpbmRJZihbXShhdXRvJiBjb2RlYykgeyByZXR1
cm4gY29kZWMuc3RhcnRzV2l0aCgibXA0YSIpOyB9KSAhPSBub3RGb3VuZCkKICAgICAgICAgICAg
IGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249NCJfczsKLSAgICAgICAg
ZWxzZSBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgid2VibSJfcykpCisgICAgICAgIGVsc2Ug
aWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKICAgICAgICAgICAgIGF1ZGlvQ2Fw
c05hbWUgPSAiYXVkaW8veC12b3JiaXMiX3M7Ci0gICAgICAgIGVsc2UgaWYgKGNvbnRhaW5lclR5
cGUuZW5kc1dpdGgoIm1wNCJfcykpCisgICAgICAgIGVsc2UgaWYgKGNvbnRhaW5lclR5cGUuZW5k
c1dpdGgoIm1wNCIpKQogICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby9tcGVnLCBt
cGVndmVyc2lvbj00Il9zOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEdTVF9XQVJOSU5H
KCJBdWRpbyBjb2RlYyBmb3IgJXMgbm90IHN1cHBvcnRlZCIsIGNvbnRlbnRUeXBlLnJhdygpLnV0
ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9QYXJzZWRSZXF1ZXN0UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9QYXJzZWRSZXF1ZXN0UmFuZ2UuY3BwCmluZGV4IDZkZGY4OWUzNTE4OTZkZmJjM2UzNDFmOTQw
M2UxYjVmZTgyMGZlMzkuLjZjOWRiMTdlZjgxNDNlMDRiNDYyNTg0ZDk5MjVhMTdhNTE2N2MyMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkUmVxdWVz
dFJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZFJl
cXVlc3RSYW5nZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3Rk
OjpvcHRpb25hbDxQYXJzZWRSZXF1ZXN0UmFuZ2U+IFBhcnNlZFJlcXVlc3RSYW5nZTo6cGFyc2Uo
U3RyaW5nVmlldyBpbnB1dCkKIHsKICAgICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwv
cmZjNzIzMyNzZWN0aW9uLTIuMSBidXQgYXNzdW1pbmcgdGhlcmUgd2lsbCBhbHdheXMgYmUgYSBi
ZWdpbiBhbmQgYW4gZW5kIG9yIHBhcnNpbmcgd2lsbCBmYWlsCi0gICAgaWYgKCFpbnB1dC5zdGFy
dHNXaXRoKFN0cmluZ1ZpZXcoImJ5dGVzPSJfcykpKQorICAgIGlmICghaW5wdXQuc3RhcnRzV2l0
aChTdHJpbmdWaWV3KCJieXRlcz0iKSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBzaXplX3QgYmVnaW4geyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCBjZTExYzdkODYxYWE0MzBjZTI4
ZTUyOTI3NzdkMmU0YmEwMmZlNTY2Li5hYTY5NTUwYTFmMDc3OWQyYzQ1MjY1MzJjYjMxN2MyMGU1
ZTdjMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVKYXJEQi5jcHAKQEAgLTQ5MCwxMSArNDkwLDExIEBAIGJvb2wgQ29va2llSmFyREI6
Omhhc0h0dHBPbmx5Q29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkb21h
aW4sIGNvCiAKIHN0YXRpYyBib29sIGNoZWNrU2VjdXJlQ29va2llKGNvbnN0IENvb2tpZSYgY29v
a2llKQogewotICAgIGlmIChjb29raWUubmFtZS5zdGFydHNXaXRoKCJfX1NlY3VyZS0iX3MpICYm
ICFjb29raWUuc2VjdXJlKQorICAgIGlmIChjb29raWUubmFtZS5zdGFydHNXaXRoKCJfX1NlY3Vy
ZS0iKSAmJiAhY29va2llLnNlY3VyZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
Q29va2llcyBmb3IgX19Ib3N0IG11c3QgaGF2ZSB0aGUgU2VjdXJlIGF0dHJpYnV0ZSwgcGF0aCBl
eHBsaWNpdGx5IHNldCB0byAiLyIsIGFuZCBubyBkb21haW4gYXR0cmlidXRlCi0gICAgaWYgKGNv
b2tpZS5uYW1lLnN0YXJ0c1dpdGgoIl9fSG9zdC0iX3MpICYmICghY29va2llLnNlY3VyZSB8fCBj
b29raWUucGF0aCAhPSAiLyJfcyB8fCAhY29va2llLmRvbWFpbi5pc0VtcHR5KCkpKQorICAgIGlm
IChjb29raWUubmFtZS5zdGFydHNXaXRoKCJfX0hvc3QtIikgJiYgKCFjb29raWUuc2VjdXJlIHx8
IGNvb2tpZS5wYXRoICE9ICIvIl9zIHx8ICFjb29raWUuZG9tYWluLmlzRW1wdHkoKSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIu
Y3BwCmluZGV4IGI0ZjNkODU1MTA0MmQ5NTRkZWNhYTkxOWIyMDIxNjMyZmI4NTczZTIuLjZjMTQ1
YWNlZTc1ODhkNjk1YTM4N2QyN2NiOWNiMGMzYzgzMTRmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdl
ci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgY29uc3RleHByIGF1dG8gZmlsZU5hbWUgPSAibG9jYWxz
dG9yYWdlLnNxbGl0ZTMiX3M7CiAvLyBXZSBzaG91bGQgbm90IGluY2x1ZGUgb3JpZ2luIGluIGZp
bGUgbmFtZS4KIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4gZmlsZU5hbWVUb09yaWdpbihjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogewotICAgIGlmICgh
ZmlsZU5hbWUuZW5kc1dpdGgoZmlsZVN1ZmZpeCkpCisgICAgaWYgKCFmaWxlTmFtZS5lbmRzV2l0
aChTdHJpbmdWaWV3IHsgZmlsZVN1ZmZpeCB9KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGF1dG8gc3VmZml4TGVuZ3RoID0gc3RybGVuKGZpbGVTdWZmaXgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCA0N2U5ZGNhNTAw
YjEwNjQwMWVkY2JkZmNiZWE4MjBiMzViZTk2NTQyLi5mZDc0ZmVhYjFkMWUxMmZiMDYxMmEwODU1
ZGU2OGZjNzY0MWIxMTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQpAQCAtNDQ1MCw3ICs0NDUwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c3RhcnRE
cmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiBpdGVtLCBjb25zdCBTaGFyZWFibGVCaXRtYXAK
IAogc3RhdGljIGJvb2wgbWF0Y2hlc0V4dGVuc2lvbk9yRXF1aXZhbGVudChjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKLSAgICByZXR1cm4gZmlsZW5h
bWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLiIgKyBleHRlbnNpb24pCisgICAgcmV0dXJu
IGZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UobWFrZVN0cmluZygnLicsIGV4dGVu
c2lvbikpCiAgICAgICAgIHx8IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShleHRlbnNp
b24sICJqcGVnIikgJiYgZmlsZW5hbWUuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmpwZyIp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4IGMyYzQwZDNkMmExMzNmMjgxMzQxNTYwMzRk
ZTU0MTQxYTRjZTljMzIuLmZlZjZlMmYwZDUzZWE4N2NlNDhjMmMyNTg1ZTEzODBlYmYzZDRiMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTExNzUsNyArMTE3NSw3IEBAIHZvaWQgV2ViRWRpdG9y
Q2xpZW50OjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZVdpdGhTb2Z0U3BhY2VzKFRleHRDaGVja2lu
Z1Jlc3VsdCBhCiAgICAgICAgIGlmIChyZXBsYWNlbWVudExlbmd0aCA+IDApIHsKICAgICAgICAg
ICAgIE5TUmFuZ2UgcmVwbGFjZWRSYW5nZSA9IE5TTWFrZVJhbmdlKGFjY2VwdGVkQ2FuZGlkYXRl
LnJhbmdlLmxvY2F0aW9uLCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgICAgICAgICBOU1Jhbmdl
IHNvZnRTcGFjZVJhbmdlID0gTlNNYWtlUmFuZ2UoTlNNYXhSYW5nZShyZXBsYWNlZFJhbmdlKSAt
IDEsIDEpOwotICAgICAgICAgICAgaWYgKGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50LmVu
ZHNXaXRoKCIgIikpCisgICAgICAgICAgICBpZiAoYWNjZXB0ZWRDYW5kaWRhdGUucmVwbGFjZW1l
bnQuZW5kc1dpdGgoJyAnKSkKICAgICAgICAgICAgICAgICBbKFdlYkhUTUxWaWV3ICopdmlldyBf
c2V0U29mdFNwYWNlUmFuZ2U6c29mdFNwYWNlUmFuZ2VdOwogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcAppbmRleCBkNjI5ZWZj
ZDQ3MzYwYjQ3ODJkODM2YTBlZThiOTI0ZGI3ZTZlMGNiLi5hNzYyYmUwYTIyNzFiODY3ZDYyOTBk
ZDI3YTFkMGIzOWQ1MjIxNGRmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9TdHJpbmdJbXBsLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdJbXBsLmNwcApAQCAtNDIwLDEwICs0MjAsMTAgQEAgVEVTVChXVEYsIFN0cmluZ0ltcGxT
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2VCYXNpYykKIFRFU1QoV1RGLCBTdHJpbmdJbXBsU3Rh
cnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlV2l0aE51bGwpCiB7CiAgICAgYXV0byByZWZlcmVuY2Ug
PSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYUJjRGVGRyJfcyk7Ci0gICAgQVNTRVJU
X0ZBTFNFKHJlZmVyZW5jZS0+c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIpKTsK
KyAgICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uo
U3RyaW5nVmlldyB7IH0pKTsKIAogICAgIGF1dG8gZW1wdHkgPSBTdHJpbmdJbXBsOjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCIiKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGVt
cHR5LT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UobnVsbHB0cikpOworICAgIEFTU0VSVF9G
QUxTRShlbXB0eS0+c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9KSk7
CiB9CiAKIFRFU1QoV1RGLCBTdHJpbmdJbXBsU3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlV2l0
aEVtcHR5KQpAQCAtNTA5LDEwICs1MDksMTAgQEAgVEVTVChXVEYsIFN0cmluZ0ltcGxFbmRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlQmFzaWMpCiBURVNUKFdURiwgU3RyaW5nSW1wbEVuZHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2VXaXRoTnVsbCkKIHsKICAgICBhdXRvIHJlZmVyZW5jZSA9IFN0cmluZ0lt
cGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJhQmNEZUZHIl9zKTsKLSAgICBBU1NFUlRfRkFMU0UocmVm
ZXJlbmNlLT5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIpKTsKKyAgICBBU1NFUlRf
RkFMU0UocmVmZXJlbmNlLT5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9
KSk7CiAKICAgICBhdXRvIGVtcHR5ID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPigiIikpOwotICAgIEFTU0VSVF9GQUxTRShlbXB0eS0+ZW5kc1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZShudWxscHRyKSk7CisgICAgQVNTRVJUX0ZBTFNFKGVtcHR5LT5lbmRz
V2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgeyB9KSk7CiB9CiAKIFRFU1QoV1RGLCBT
dHJpbmdJbXBsRW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhFbXB0eSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455682</attachid>
            <date>2022-03-24 14:19:57 -0700</date>
            <delta_ts>2022-03-24 17:14:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238333-20220324141956.patch</filename>
            <type>text/plain</type>
            <size>50770</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxODEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YWE2NWE0N2JkOThlOGI5M2I1ZjQ1N2IzNjRmZDdjOWJhMTczNmI5Li4zYzUwN2JiMDlmMjJmOTg0
NGIxOTZkOWQ2NmIxZWIyOWI5YzI2MDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMi0wMy0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFN0cmluZydzIHN0YXJ0c1dpdGgoKSAvIGVuZHNXaXRoKCkgLyByZXBsYWNlKCkg
c2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODMzMworCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAgICogcnVudGltZS9GaWxlQmFzZWRG
dXp6ZXJBZ2VudC5jcHA6CisgICAgICAgIChKU0M6OkZpbGVCYXNlZEZ1enplckFnZW50OjpnZXRQ
cmVkaWN0aW9uSW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZv
cm1hdC5jcHA6CisgICAgICAgIChKU0M6OnNpbmd1bGFyVW5pdCk6CisgICAgICAgICogcnVudGlt
ZS9UZW1wb3JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnNpbmd1bGFyVW5pdCk6CisKIDIw
MjItMDMtMjMgIEdlemEgTG9yZSAgPGdsb3JlQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10g
Rml4IHJlbW90ZUZ1bmN0aW9uQ2FsbEdlbmVyYXRvciBvbiBNSVBTCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDliYzMwYjhlNmVj
ZDJkN2MzOWJjMjIwMDE1NzU5YmM0ODUyMWM3OWQuLmRiMGNiODYxZmZiMzc4ZTE4ODNmY2E5YmUz
MmQ0YmQzYTU1ZTllMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjItMDMtMjQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcncyBzdGFydHNXaXRoKCkg
LyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgpIHNob3VsZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0
ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzgzMzMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAg
ICAgICBTdHJpbmcncyBzdGFydHNXaXRoKCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgpIHNob3Vs
ZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nLAorICAgICAgICB0byBh
dm9pZCB1bm5lY2Vzc2FyeSBTdHJpbmcgY3JlYXRpb24gaW4gbWFueSBpbnN0YW5jZXMuCisKKyAg
ICAgICAgKiB3dGYvdGV4dC9BdG9tU3RyaW5nLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5n
Q29tbW9uLmg6CisgICAgICAgIChXVEY6OnN0YXJ0c1dpdGgpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UpOiBEZWxldGVkLgorICAgICAgICAoV1RG
OjplbmRzV2l0aCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OmVuZHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAg
ICAgICAoV1RGOjplcXVhbElubmVyKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6c3RhcnRz
V2l0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0YXJ0c1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZSBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Omhhc0luZml4U3Rh
cnRpbmdBdCBjb25zdCk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmVuZHNXaXRoKToKKyAg
ICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSBjb25zdCk6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Omhhc0luZml4RW5kaW5nQXQgY29uc3QpOgorICAg
ICAgICAoV1RGOjpTdHJpbmdJbXBsOjpyZXBsYWNlKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdJbXBsLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnN0YXJ0c1dpdGggY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjplbmRzV2l0aCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RGOjpzdGFy
dHNXaXRoKToKKyAgICAgICAgKFdURjo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKToKKyAg
ICAgICAgKFdURjo6ZW5kc1dpdGgpOgorICAgICAgICAoV1RGOjplbmRzV2l0aElnbm9yaW5nQVND
SUlDYXNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpyZXBsYWNlKToKKyAgICAgICAgKFdURjo6
U3RyaW5nOjpzdGFydHNXaXRoIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpzdGFydHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UgY29uc3QpOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmVuZHNX
aXRoIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjplbmRzV2l0aElnbm9yaW5nQVNDSUlD
YXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpoYXNJbmZpeFN0YXJ0aW5nQXQgY29u
c3QpOgorICAgICAgICAoV1RGOjpTdHJpbmc6Omhhc0luZml4RW5kaW5nQXQgY29uc3QpOgorICAg
ICAgICAoV1RGOjpBdG9tU3RyaW5nOjpzdGFydHNXaXRoIGNvbnN0KToKKyAgICAgICAgKFdURjo6
QXRvbVN0cmluZzo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAg
KFdURjo6QXRvbVN0cmluZzo6ZW5kc1dpdGggY29uc3QpOgorICAgICAgICAoV1RGOjpBdG9tU3Ry
aW5nOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKiB3dGYvdGV4
dC9XVEZTdHJpbmcuaDoKKwogMjAyMi0wMy0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFN0cmluZydzIGZpbmQoKSAvIHJldmVyc2VGaW5kKCkgLyByZXBsYWNl
KCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3IGluc3RlYWQgb2YgYSBTdHJpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA4Y2U2MWJkNmNlZGU5NTI4ODZjNDRhYTM3MTk1NDUyMGMzYmM2MzQ4Li42NWZjMjcx
ODRkM2E0OGRjMzFkMTZhODA0NzFmNTFkNjk0Y2QzNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzQgQEAKKzIwMjItMDMtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBTdHJpbmcncyBzdGFydHNXaXRoKCkgLyBlbmRzV2l0aCgpIC8gcmVwbGFjZSgpIHNob3Vs
ZCB0YWtlIGluIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgzMzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBHZW9mZiBHYXJlbi4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZElnbm9yZUlj
ZUNhbmRpZGF0ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb2x2ZWRVUkw6OmlzTG9jYWxVUkwgY29uc3QpOgorICAgICAgICAqIHBhZ2Uv
UGFnZUNvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbnNvbGVDbGll
bnQ6OnNjcmVlbnNob3QpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGlj
eVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lTb3Vy
Y2U6OnBhdGhNYXRjaGVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OmdldFVubWFuZ2xlZEluZm9Mb2cpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDRE1GYWN0b3J5RmFpclBsYXlTdHJlYW1pbmc6OnN1cHBvcnRzS2V5U3lzdGVt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6c3Vw
cG9ydHNDb250YWluZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJl
YW1lcjo6Y2FuRGVjb2RlVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpjaGVja1ZhcnlpbmdzUGFja2lu
ZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9QYXJzZWRSZXF1ZXN0UmFuZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkUmVxdWVzdFJhbmdlOjpwYXJzZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNoZWNrU2VjdXJlQ29va2llKToKKwogMjAyMi0wMy0yNCAgSmVhbi1ZdmVzIEF2ZW5h
cmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIFNhZmFyaSBjYW4ndCBwbGF5IHZpZGVvIGNv
bXBsZXRlbHkgYXQgYmlsaWJpbGkuY29tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXgg
YTRjODFiNTI0NTdkOTg3NWQyODBmNzUwZDI1NzM1ZWVlNjcwYzY4Yi4uYWM5ZTM5ZTI2Zjc1MWU4
NTU4OTVlM2JhZTlhYzQ3MzNlMTg2NmJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDIyLTAzLTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgU3RyaW5nJ3Mgc3RhcnRzV2l0aCgpIC8gZW5kc1dpdGgoKSAvIHJlcGxh
Y2UoKSBzaG91bGQgdGFrZSBpbiBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBhIFN0cmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MzMzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW06CisgICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUFj
Y2VwdGVkQ2FuZGlkYXRlV2l0aFNvZnRTcGFjZXMpOgorCiAyMDIyLTAzLTE4ICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIDE1LjRdIEZpeCB1bnVz
ZWQgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
aWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
aWxlQmFzZWRGdXp6ZXJBZ2VudC5jcHAKaW5kZXggMWIwMzEzMGYwYTVjMDdjMzM1Y2M1ODU2ODNi
YjY0NWVlNTNlMDhiZi4uZTY4YTE0NDMyZGM1YjE4NmExOTViYTZkMzIwNGNmYTc3YTY4NzEzYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmlsZUJhc2VkRnV6emVy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbGVCYXNlZEZ1
enplckFnZW50LmNwcApAQCAtNzgsNyArNzgsNyBAQCBTcGVjdWxhdGVkVHlwZSBGaWxlQmFzZWRG
dXp6ZXJBZ2VudDo6Z2V0UHJlZGljdGlvbkludGVybmFsKENvZGVCbG9jayogY29kZUJsb2NrLAog
ICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbDsKICAgICAgICAgICAgIGlmIChzb3VyY2VB
ZnRlckRpdm90LmNvbnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoInlpZWxkIikpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG9yaWdpbmFsOwotICAgICAgICAgICAgaWYgKHNvdXJjZUFmdGVyRGl2b3Qu
c3RhcnRzV2l0aCgnWycpICYmIHNvdXJjZUFmdGVyRGl2b3QuZW5kc1dpdGgoIl0iKSkKKyAgICAg
ICAgICAgIGlmIChzb3VyY2VBZnRlckRpdm90LnN0YXJ0c1dpdGgoJ1snKSAmJiBzb3VyY2VBZnRl
ckRpdm90LmVuZHNXaXRoKCddJykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsOwog
ICAgICAgICAgICAgaWYgKHNvdXJjZVVwVG9EaXZvdC5jb250YWluc0lnbm9yaW5nQVNDSUlDYXNl
KCJ5aWVsZCIpKQogICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5j
cHAKaW5kZXggOTVjNDNhZjc3ZTc3OTljMmVhYjMzZTc0ZmUwYTEzMWM1MGE1NjY2YS4uMDIyZWRj
ZmI3ZDE1NzMxNmI3MDEyMzIzM2IyNmZkYTU5MzBlZGQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKQEAg
LTIwMyw3ICsyMDMsNyBAQCBKU09iamVjdCogSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6cmVzb2x2
ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiBzdGF0aWMgU3RyaW5nVmll
dyBzaW5ndWxhclVuaXQoU3RyaW5nVmlldyB1bml0KQogewogICAgIC8vIFBsdXJhbHMgYXJlIGFs
bG93ZWQsIGJ1dCB0aGFua2Z1bGx5IHRoZXkncmUgYWxsIGp1c3QgYSBzaW1wbGUgLXMuCi0gICAg
cmV0dXJuIHVuaXQuZW5kc1dpdGgoInMiKSA/IHVuaXQubGVmdCh1bml0Lmxlbmd0aCgpIC0gMSkg
OiB1bml0OworICAgIHJldHVybiB1bml0LmVuZHNXaXRoKCdzJykgPyB1bml0LmxlZnQodW5pdC5s
ZW5ndGgoKSAtIDEpIDogdW5pdDsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3Nl
Yy1zaW5ndWxhcnJlbGF0aXZldGltZXVuaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAppbmRleCA2NmI4Yjk2NWM5ZWYyOWNlMDU1ZmUzZjkx
OTVmZTRjZDJhZDMwMjI0Li5jOWQzMDUyYTM0MDRkYzcyZWI5OGIxMDIwM2MxZmUwMmI4YTQwNGRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3Qu
Y3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBUZW1wb3JhbE9iamVjdDo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQogc3RhdGljIFN0cmluZ1ZpZXcgc2luZ3VsYXJVbml0KFN0cmluZ1ZpZXcgdW5p
dCkKIHsKICAgICAvLyBQbHVyYWxzIGFyZSBhbGxvd2VkLCBidXQgdGhhbmtmdWxseSB0aGV5J3Jl
IGFsbCBqdXN0IGEgc2ltcGxlIC1zLgotICAgIHJldHVybiB1bml0LmVuZHNXaXRoKCJzIikgPyB1
bml0LmxlZnQodW5pdC5sZW5ndGgoKSAtIDEpIDogdW5pdDsKKyAgICByZXR1cm4gdW5pdC5lbmRz
V2l0aCgncycpID8gdW5pdC5sZWZ0KHVuaXQubGVuZ3RoKCkgLSAxKSA6IHVuaXQ7CiB9CiAKIC8v
IEZvciB1c2UgaW4gZXJyb3IgbWVzc2FnZXMgd2hlcmUgYSBzdHJpbmcgdmFsdWUgaXMgcG90ZW50
aWFsbHkgdW5ib3VuZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJp
bmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCmluZGV4IGM2NmM4YzVjODFj
ZGQwYjZiYjMwNTY3MmIwODUzMWRhMGE3NzJiYjIuLjEzNmFjNjIzNjc2OTQ1MzU5ODI0ZTY3MmMz
N2M3YzhlOWQ0Zjc2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmlu
Zy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCkBAIC0xMjQsMTUgKzEy
NCwxMyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdW
aWV3LCB1bnNpZ25lZCBzdGFydCkgY29uc3Q7CiAgICAgc2l6ZV90IGZpbmQoQ29kZVVuaXRNYXRj
aEZ1bmN0aW9uIG1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1
cm4gbV9zdHJpbmcuZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCk7IH0KIAotICAgIGJvb2wgc3Rh
cnRzV2l0aChjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuc3Rh
cnRzV2l0aChzdHJpbmcpOyB9Ci0gICAgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcpOyB9CisgICAgYm9vbCBzdGFydHNXaXRoKFN0cmluZ1Zp
ZXcpIGNvbnN0OworICAgIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1Zp
ZXcpIGNvbnN0OwogICAgIGJvb2wgc3RhcnRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0IHsg
cmV0dXJuIG1fc3RyaW5nLnN0YXJ0c1dpdGgoY2hhcmFjdGVyKTsgfQotICAgIHRlbXBsYXRlPHVu
c2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciAoJnByZWZpeClb
bWF0Y2hMZW5ndGhdKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5zdGFydHNXaXRoPG1hdGNoTGVu
Z3RoPihwcmVmaXgpOyB9CiAKLSAgICBib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZyYgc3RyaW5n
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChzdHJpbmcpOyB9Ci0gICAgYm9vbCBl
bmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7IH0KKyAgICBi
b29sIGVuZHNXaXRoKFN0cmluZ1ZpZXcpIGNvbnN0OworICAgIGJvb2wgZW5kc1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKICAgICBib29sIGVuZHNXaXRoKFVDaGFyIGNo
YXJhY3RlcikgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dpdGgoY2hhcmFjdGVyKTsgfQot
ICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIGVuZHNXaXRoKGNvbnN0IGNo
YXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuZW5kc1dp
dGg8bWF0Y2hMZW5ndGg+KHByZWZpeCk7IH0KIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBBdG9t
U3RyaW5nIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIEF0b21TdHJpbmcgY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmggYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0NvbW1vbi5oCmluZGV4IGRhNzkzOWVmM2RhN2FjZTZlMDYzZTgxOTU4MGYw
MDM5NGU0YjZhZDEuLmM3NzBlMDQ1ZDIwY2NlMjMzYmUwOGYwZGI5YmU2YmQ4MzY4YWVlYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdDb21tb24uaApAQCAtMzgxLDgwICszODEsNiBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0E+IGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1v
bihjb25zdCBTdHJpbmdDbAogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGEuY2hh
cmFjdGVyczE2KCksIGIsIGxlbmd0aCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ0Ns
YXNzQSwgdHlwZW5hbWUgU3RyaW5nQ2xhc3NCPgotYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmlu
Z0NsYXNzQSYgcmVmZXJlbmNlLCBjb25zdCBTdHJpbmdDbGFzc0ImIHByZWZpeCkKLXsKLSAgICB1
bnNpZ25lZCBwcmVmaXhMZW5ndGggPSBwcmVmaXgubGVuZ3RoKCk7Ci0gICAgaWYgKHByZWZpeExl
bmd0aCA+IHJlZmVyZW5jZS5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKHJlZmVyZW5jZS5pczhCaXQoKSkgewotICAgICAgICBpZiAocHJlZml4LmlzOEJpdCgpKQot
ICAgICAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpLCBwcmVmaXgu
Y2hhcmFjdGVyczgoKSwgcHJlZml4TGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGVxdWFsKHJlZmVy
ZW5jZS5jaGFyYWN0ZXJzOCgpLCBwcmVmaXguY2hhcmFjdGVyczE2KCksIHByZWZpeExlbmd0aCk7
Ci0gICAgfQotICAgIGlmIChwcmVmaXguaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBlcXVhbChy
ZWZlcmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzOCgpLCBwcmVmaXhMZW5n
dGgpOwotICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5j
aGFyYWN0ZXJzMTYoKSwgcHJlZml4TGVuZ3RoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3Ry
aW5nQ2xhc3NBLCB0eXBlbmFtZSBTdHJpbmdDbGFzc0I+Ci1ib29sIHN0YXJ0c1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdDbGFzc0EmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nQ2xh
c3NCJiBwcmVmaXgpCi17Ci0gICAgdW5zaWduZWQgcHJlZml4TGVuZ3RoID0gcHJlZml4Lmxlbmd0
aCgpOwotICAgIGlmIChwcmVmaXhMZW5ndGggPiByZWZlcmVuY2UubGVuZ3RoKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGlmIChyZWZlcmVuY2UuaXM4Qml0KCkpIHsKLSAgICAgICAg
aWYgKHByZWZpeC5pczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpLCBwcmVmaXguY2hhcmFjdGVyczgoKSwgcHJl
Zml4TGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVmZXJl
bmNlLmNoYXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4TGVuZ3RoKTsK
LSAgICB9Ci0gICAgaWYgKHByZWZpeC5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UocmVmZXJlbmNlLmNoYXJhY3RlcnMxNigpLCBwcmVmaXguY2hhcmFjdGVy
czgoKSwgcHJlZml4TGVuZ3RoKTsKLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShy
ZWZlcmVuY2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4TGVu
Z3RoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nQ2xhc3NBLCB0eXBlbmFtZSBTdHJp
bmdDbGFzc0I+Ci1ib29sIGVuZHNXaXRoKGNvbnN0IFN0cmluZ0NsYXNzQSYgcmVmZXJlbmNlLCBj
b25zdCBTdHJpbmdDbGFzc0ImIHN1ZmZpeCkKLXsKLSAgICB1bnNpZ25lZCBzdWZmaXhMZW5ndGgg
PSBzdWZmaXgubGVuZ3RoKCk7Ci0gICAgdW5zaWduZWQgcmVmZXJlbmNlTGVuZ3RoID0gcmVmZXJl
bmNlLmxlbmd0aCgpOwotICAgIGlmIChzdWZmaXhMZW5ndGggPiByZWZlcmVuY2VMZW5ndGgpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gcmVmZXJl
bmNlTGVuZ3RoIC0gc3VmZml4TGVuZ3RoOwotCi0gICAgaWYgKHJlZmVyZW5jZS5pczhCaXQoKSkg
ewotICAgICAgICBpZiAoc3VmZml4LmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIGVxdWFs
KHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpICsgc3RhcnRPZmZzZXQsIHN1ZmZpeC5jaGFyYWN0ZXJz
OCgpLCBzdWZmaXhMZW5ndGgpOwotICAgICAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNoYXJh
Y3RlcnM4KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnMxNigpLCBzdWZmaXhMZW5n
dGgpOwotICAgIH0KLSAgICBpZiAoc3VmZml4LmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gZXF1
YWwocmVmZXJlbmNlLmNoYXJhY3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIHN1ZmZpeC5jaGFyYWN0
ZXJzOCgpLCBzdWZmaXhMZW5ndGgpOwotICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFj
dGVyczE2KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnMxNigpLCBzdWZmaXhMZW5n
dGgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdDbGFzc0EsIHR5cGVuYW1lIFN0cmlu
Z0NsYXNzQj4KLWJvb2wgZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdDbGFz
c0EmIHJlZmVyZW5jZSwgY29uc3QgU3RyaW5nQ2xhc3NCJiBzdWZmaXgpCi17Ci0gICAgdW5zaWdu
ZWQgc3VmZml4TGVuZ3RoID0gc3VmZml4Lmxlbmd0aCgpOwotICAgIHVuc2lnbmVkIHJlZmVyZW5j
ZUxlbmd0aCA9IHJlZmVyZW5jZS5sZW5ndGgoKTsKLSAgICBpZiAoc3VmZml4TGVuZ3RoID4gcmVm
ZXJlbmNlTGVuZ3RoKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB1bnNpZ25lZCBzdGFy
dE9mZnNldCA9IHJlZmVyZW5jZUxlbmd0aCAtIHN1ZmZpeExlbmd0aDsKLQotICAgIGlmIChyZWZl
cmVuY2UuaXM4Qml0KCkpIHsKLSAgICAgICAgaWYgKHN1ZmZpeC5pczhCaXQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgp
ICsgc3RhcnRPZmZzZXQsIHN1ZmZpeC5jaGFyYWN0ZXJzOCgpLCBzdWZmaXhMZW5ndGgpOwotICAg
ICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2UuY2hhcmFjdGVyczgo
KSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZpeExlbmd0aCk7Ci0g
ICAgfQotICAgIGlmIChzdWZmaXguaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0T2Zmc2V0LCBzdWZm
aXguY2hhcmFjdGVyczgoKSwgc3VmZml4TGVuZ3RoKTsKLSAgICByZXR1cm4gZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShyZWZlcmVuY2UuY2hhcmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwgc3VmZml4
LmNoYXJhY3RlcnMxNigpLCBzdWZmaXhMZW5ndGgpOwotfQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
U2VhcmNoQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgTWF0Y2hDaGFyYWN0ZXJUeXBlPgogc2l6ZV90
IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTZWFyY2hDaGFyYWN0ZXJUeXBlKiBzb3VyY2Us
IGNvbnN0IE1hdGNoQ2hhcmFjdGVyVHlwZSogbWF0Y2hDaGFyYWN0ZXJzLCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgc2VhcmNoTGVuZ3RoLCB1bnNpZ25lZCBtYXRjaExlbmd0aCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDZlNjU1YzE0ZWE0NDYyYzhlY2EwYzM5
OWI5MjNkODJlMTRmN2EzODkuLmM3OTI1MTc5M2I3ZGEyNjM5NWMwOTZlNGUyMTNjMzhlNGMyZmE3
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtMTA1Myw3ICsxMDUzLDcgQEAg
QUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBlcXVhbElubmVyKGNvbnN0IFN0cmluZ0ltcGwmIHN0
cmluZywgdW5zaWduZWQgc3RhcnQsIGMKICAgICByZXR1cm4gZXF1YWwoc3RyaW5nLmNoYXJhY3Rl
cnMxNigpICsgc3RhcnQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtYXRjaFN0cmlu
ZyksIG1hdGNoTGVuZ3RoKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBlcXVhbElu
bmVyKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZywgdW5zaWduZWQgc3RhcnQsIGNvbnN0IFN0cmlu
Z0ltcGwmIG1hdGNoU3RyaW5nKQorQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBlcXVhbElubmVy
KGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZywgdW5zaWduZWQgc3RhcnQsIFN0cmluZ1ZpZXcgbWF0
Y2hTdHJpbmcpCiB7CiAgICAgaWYgKHN0YXJ0ID4gc3RyaW5nLmxlbmd0aCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMDcyLDI0ICsxMDcyLDE0IEBAIEFMV0FZU19JTkxJTkUgc3RhdGlj
IGJvb2wgZXF1YWxJbm5lcihjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0
LCBjCiAgICAgcmV0dXJuIGVxdWFsKHN0cmluZy5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0LCBtYXRj
aFN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbWF0Y2hTdHJpbmcubGVuZ3RoKCkpOwogfQogCi1ib29s
IFN0cmluZ0ltcGw6OnN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nKSBjb25zdAor
Ym9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAogewot
ICAgIHJldHVybiAhc3RyaW5nIHx8IDo6V1RGOjpzdGFydHNXaXRoKCp0aGlzLCAqc3RyaW5nKTsK
KyAgICByZXR1cm4gIXN0cmluZyB8fCA6OldURjo6c3RhcnRzV2l0aCgqdGhpcywgc3RyaW5nKTsK
IH0KIAotYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoKGNvbnN0IFN0cmluZ0ltcGwmIHN0cmlu
ZykgY29uc3QKK2Jvb2wgU3RyaW5nSW1wbDo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0
cmluZ1ZpZXcgcHJlZml4KSBjb25zdAogewotICAgIHJldHVybiA6OldURjo6c3RhcnRzV2l0aCgq
dGhpcywgc3RyaW5nKTsKLX0KLQotYm9vbCBTdHJpbmdJbXBsOjpzdGFydHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCogcHJlZml4KSBjb25zdAotewotICAgIHJldHVybiBw
cmVmaXggJiYgOjpXVEY6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgKnByZWZp
eCk7Ci19Ci0KLWJvb2wgU3RyaW5nSW1wbDo6c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNv
bnN0IFN0cmluZ0ltcGwmIHByZWZpeCkgY29uc3QKLXsKLSAgICByZXR1cm4gOjpXVEY6OnN0YXJ0
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqdGhpcywgcHJlZml4KTsKKyAgICByZXR1cm4gcHJlZml4
ICYmIDo6V1RGOjpzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoKnRoaXMsIHByZWZpeCk7CiB9
CiAKIGJvb2wgU3RyaW5nSW1wbDo6c3RhcnRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0CkBA
IC0xMTAyLDI5ICsxMDkyLDE5IEBAIGJvb2wgU3RyaW5nSW1wbDo6c3RhcnRzV2l0aChjb25zdCBj
aGFyKiBtYXRjaFN0cmluZywgdW5zaWduZWQgbWF0Y2hMZW5ndGgpIGNvbnN0CiAgICAgcmV0dXJu
IG1hdGNoTGVuZ3RoIDw9IGxlbmd0aCgpICYmIGVxdWFsSW5uZXIoKnRoaXMsIDAsIG1hdGNoU3Ry
aW5nLCBtYXRjaExlbmd0aCk7CiB9CiAKLWJvb2wgU3RyaW5nSW1wbDo6aGFzSW5maXhTdGFydGlu
Z0F0KGNvbnN0IFN0cmluZ0ltcGwmIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29uc3QK
K2Jvb2wgU3RyaW5nSW1wbDo6aGFzSW5maXhTdGFydGluZ0F0KFN0cmluZ1ZpZXcgbWF0Y2hTdHJp
bmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAogewogICAgIHJldHVybiBlcXVhbElubmVyKCp0aGlz
LCBzdGFydCwgbWF0Y2hTdHJpbmcpOwogfQogCi1ib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFN0
cmluZ0ltcGwqIHN1ZmZpeCkKLXsKLSAgICByZXR1cm4gc3VmZml4ICYmIDo6V1RGOjplbmRzV2l0
aCgqdGhpcywgKnN1ZmZpeCk7Ci19Ci0KLWJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGgoU3RyaW5n
SW1wbCYgc3VmZml4KQotewotICAgIHJldHVybiA6OldURjo6ZW5kc1dpdGgoKnRoaXMsIHN1ZmZp
eCk7Ci19Ci0KLWJvb2wgU3RyaW5nSW1wbDo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShjb25z
dCBTdHJpbmdJbXBsKiBzdWZmaXgpIGNvbnN0Citib29sIFN0cmluZ0ltcGw6OmVuZHNXaXRoKFN0
cmluZ1ZpZXcgc3VmZml4KQogewotICAgIHJldHVybiBzdWZmaXggJiYgOjpXVEY6OmVuZHNXaXRo
SWdub3JpbmdBU0NJSUNhc2UoKnRoaXMsICpzdWZmaXgpOworICAgIHJldHVybiBzdWZmaXggJiYg
OjpXVEY6OmVuZHNXaXRoKCp0aGlzLCBzdWZmaXgpOwogfQogCi1ib29sIFN0cmluZ0ltcGw6OmVu
ZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYgc3VmZml4KSBjb25zdAor
Ym9vbCBTdHJpbmdJbXBsOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3Vm
Zml4KSBjb25zdAogewotICAgIHJldHVybiA6OldURjo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZSgqdGhpcywgc3VmZml4KTsKKyAgICByZXR1cm4gc3VmZml4ICYmIDo6V1RGOjplbmRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKCp0aGlzLCBzdWZmaXgpOwogfQogCiBib29sIFN0cmluZ0ltcGw6OmVu
ZHNXaXRoKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKQEAgLTExMzcsOSArMTExNyw5IEBAIGJvb2wg
U3RyaW5nSW1wbDo6ZW5kc1dpdGgoY29uc3QgY2hhciogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIG1h
dGNoTGVuZ3RoKSBjb25zdAogICAgIHJldHVybiBtYXRjaExlbmd0aCA8PSBsZW5ndGgoKSAmJiBl
cXVhbElubmVyKCp0aGlzLCBsZW5ndGgoKSAtIG1hdGNoTGVuZ3RoLCBtYXRjaFN0cmluZywgbWF0
Y2hMZW5ndGgpOwogfQogCi1ib29sIFN0cmluZ0ltcGw6Omhhc0luZml4RW5kaW5nQXQoY29uc3Qg
U3RyaW5nSW1wbCYgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGVuZE9mZnNldCkgY29uc3QKK2Jvb2wg
U3RyaW5nSW1wbDo6aGFzSW5maXhFbmRpbmdBdChTdHJpbmdWaWV3IG1hdGNoU3RyaW5nLCB1bnNp
Z25lZCBlbmQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGVuZE9mZnNldCA+PSBtYXRjaFN0cmluZy5s
ZW5ndGgoKSAmJiBlcXVhbElubmVyKCp0aGlzLCBlbmRPZmZzZXQgLSBtYXRjaFN0cmluZy5sZW5n
dGgoKSwgbWF0Y2hTdHJpbmcpOworICAgIHJldHVybiBlbmQgPj0gbWF0Y2hTdHJpbmcubGVuZ3Ro
KCkgJiYgZXF1YWxJbm5lcigqdGhpcywgZW5kIC0gbWF0Y2hTdHJpbmcubGVuZ3RoKCksIG1hdGNo
U3RyaW5nKTsKIH0KIAogUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIg
dGFyZ2V0LCBVQ2hhciByZXBsYWNlbWVudCkKQEAgLTEyMDMsMjMgKzExODMsMjMgQEAgUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgdGFyZ2V0LCBVQ2hhciByZXBsYWNl
bWVudCkKICAgICByZXR1cm4gbmV3SW1wbDsKIH0KIAotUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OnJlcGxhY2UodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aFRvUmVwbGFjZSwg
U3RyaW5nSW1wbCogc3RyaW5nKQorUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2Uo
dW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aFRvUmVwbGFjZSwgU3RyaW5nVmlldyBz
dHJpbmcpCiB7CiAgICAgcG9zaXRpb24gPSBzdGQ6Om1pbihwb3NpdGlvbiwgbGVuZ3RoKCkpOwog
ICAgIGxlbmd0aFRvUmVwbGFjZSA9IHN0ZDo6bWluKGxlbmd0aFRvUmVwbGFjZSwgbGVuZ3RoKCkg
LSBwb3NpdGlvbik7Ci0gICAgdW5zaWduZWQgbGVuZ3RoVG9JbnNlcnQgPSBzdHJpbmcgPyBzdHJp
bmctPmxlbmd0aCgpIDogMDsKKyAgICB1bnNpZ25lZCBsZW5ndGhUb0luc2VydCA9IHN0cmluZy5s
ZW5ndGgoKTsKICAgICBpZiAoIWxlbmd0aFRvUmVwbGFjZSAmJiAhbGVuZ3RoVG9JbnNlcnQpCiAg
ICAgICAgIHJldHVybiAqdGhpczsKIAogICAgIGlmICgobGVuZ3RoKCkgLSBsZW5ndGhUb1JlcGxh
Y2UpID49IChNYXhMZW5ndGggLSBsZW5ndGhUb0luc2VydCkpCiAgICAgICAgIENSQVNIKCk7CiAK
LSAgICBpZiAoaXM4Qml0KCkgJiYgKCFzdHJpbmcgfHwgc3RyaW5nLT5pczhCaXQoKSkpIHsKKyAg
ICBpZiAoaXM4Qml0KCkgJiYgKCFzdHJpbmcgfHwgc3RyaW5nLmlzOEJpdCgpKSkgewogICAgICAg
ICBMQ2hhciogZGF0YTsKICAgICAgICAgYXV0byBuZXdJbXBsID0gY3JlYXRlVW5pbml0aWFsaXpl
ZChsZW5ndGgoKSAtIGxlbmd0aFRvUmVwbGFjZSArIGxlbmd0aFRvSW5zZXJ0LCBkYXRhKTsKICAg
ICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSwgbV9kYXRhOCwgcG9zaXRpb24pOwogICAgICAgICBp
ZiAoc3RyaW5nKQotICAgICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIHBvc2l0aW9uLCBz
dHJpbmctPm1fZGF0YTgsIGxlbmd0aFRvSW5zZXJ0KTsKKyAgICAgICAgICAgIGNvcHlDaGFyYWN0
ZXJzKGRhdGEgKyBwb3NpdGlvbiwgc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aFRvSW5zZXJ0
KTsKICAgICAgICAgY29weUNoYXJhY3RlcnMoZGF0YSArIHBvc2l0aW9uICsgbGVuZ3RoVG9JbnNl
cnQsIG1fZGF0YTggKyBwb3NpdGlvbiArIGxlbmd0aFRvUmVwbGFjZSwgbGVuZ3RoKCkgLSBwb3Np
dGlvbiAtIGxlbmd0aFRvUmVwbGFjZSk7CiAgICAgICAgIHJldHVybiBuZXdJbXBsOwogICAgIH0K
QEAgLTEyMzAsMTAgKzEyMTAsMTAgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxh
Y2UodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aFRvUmVwbGFjZSwKICAgICBlbHNl
CiAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEsIG1fZGF0YTE2LCBwb3NpdGlvbik7CiAgICAg
aWYgKHN0cmluZykgewotICAgICAgICBpZiAoc3RyaW5nLT5pczhCaXQoKSkKLSAgICAgICAgICAg
IGNvcHlDaGFyYWN0ZXJzKGRhdGEgKyBwb3NpdGlvbiwgc3RyaW5nLT5tX2RhdGE4LCBsZW5ndGhU
b0luc2VydCk7CisgICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisgICAgICAgICAgICBjb3B5
Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24sIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGhU
b0luc2VydCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvcHlDaGFyYWN0ZXJzKGRhdGEg
KyBwb3NpdGlvbiwgc3RyaW5nLT5tX2RhdGExNiwgbGVuZ3RoVG9JbnNlcnQpOworICAgICAgICAg
ICAgY29weUNoYXJhY3RlcnMoZGF0YSArIHBvc2l0aW9uLCBzdHJpbmcuY2hhcmFjdGVyczE2KCks
IGxlbmd0aFRvSW5zZXJ0KTsKICAgICB9CiAgICAgaWYgKGlzOEJpdCgpKQogICAgICAgICBjb3B5
Q2hhcmFjdGVycyhkYXRhICsgcG9zaXRpb24gKyBsZW5ndGhUb0luc2VydCwgbV9kYXRhOCArIHBv
c2l0aW9uICsgbGVuZ3RoVG9SZXBsYWNlLCBsZW5ndGgoKSAtIHBvc2l0aW9uIC0gbGVuZ3RoVG9S
ZXBsYWNlKTsKQEAgLTEyNDIsMTMgKzEyMjIsMTMgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OnJlcGxhY2UodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aFRvUmVwbGFjZSwK
ICAgICByZXR1cm4gbmV3SW1wbDsKIH0KIAotUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJl
cGxhY2UoVUNoYXIgcGF0dGVybiwgU3RyaW5nSW1wbCogcmVwbGFjZW1lbnQpCitSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBTdHJpbmdWaWV3IHJlcGxh
Y2VtZW50KQogewogICAgIGlmICghcmVwbGFjZW1lbnQpCiAgICAgICAgIHJldHVybiAqdGhpczsK
LSAgICBpZiAocmVwbGFjZW1lbnQtPmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gcmVwbGFjZShw
YXR0ZXJuLCByZXBsYWNlbWVudC0+bV9kYXRhOCwgcmVwbGFjZW1lbnQtPmxlbmd0aCgpKTsKLSAg
ICByZXR1cm4gcmVwbGFjZShwYXR0ZXJuLCByZXBsYWNlbWVudC0+bV9kYXRhMTYsIHJlcGxhY2Vt
ZW50LT5sZW5ndGgoKSk7CisgICAgaWYgKHJlcGxhY2VtZW50LmlzOEJpdCgpKQorICAgICAgICBy
ZXR1cm4gcmVwbGFjZShwYXR0ZXJuLCByZXBsYWNlbWVudC5jaGFyYWN0ZXJzOCgpLCByZXBsYWNl
bWVudC5sZW5ndGgoKSk7CisgICAgcmV0dXJuIHJlcGxhY2UocGF0dGVybiwgcmVwbGFjZW1lbnQu
Y2hhcmFjdGVyczE2KCksIHJlcGxhY2VtZW50Lmxlbmd0aCgpKTsKIH0KIAogUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgTENoYXIqIHJlcGxh
Y2VtZW50LCB1bnNpZ25lZCByZXBTdHJMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmlu
ZGV4IDk0OTUwYzM1NDVhMGZhZTNmMmU5MWI2ZTdhNThjZjVhMGQ2OTQzOWIuLjg2YTk2MWJlZDM4
OTZiMDdlYTZmNGQ2MzQ5OWJiY2VmYTkwMmZjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5o
CkBAIC00MzgsMzEgKzQzOCwyNSBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNp
emVfdCByZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQgc3RhcnQgPSBNYXhMZW5ndGgpOwogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5nVmlldywgdW5zaWdu
ZWQgc3RhcnQgPSBNYXhMZW5ndGgpOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3Rh
cnRzV2l0aChjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0lt
cGwqKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCYpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBib29sIHN0YXJ0c1dpdGgoU3RyaW5nVmlldykgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0
OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGgoVUNoYXIpIGNvbnN0Owog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIHN0YXJ0c1dpdGgoY29uc3QgY2hhciosIHVuc2ln
bmVkIG1hdGNoTGVuZ3RoKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0
aD4gYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29u
c3QgeyByZXR1cm4gc3RhcnRzV2l0aChwcmVmaXgsIG1hdGNoTGVuZ3RoIC0gMSk7IH0KLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3RyaW5nSW1w
bCYsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBo
YXNJbmZpeFN0YXJ0aW5nQXQoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQpIGNvbnN0OwogCi0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgZW5kc1dpdGgoU3RyaW5nSW1wbCopOwotICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKFN0cmluZ0ltcGwmKTsKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0lt
cGwqKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlbmRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBlbmRzV2l0aChTdHJpbmdWaWV3KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9v
bCBlbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpIGNvbnN0OwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIGVuZHNXaXRoKFVDaGFyKSBjb25zdDsKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBlbmRzV2l0aChjb25zdCBjaGFyKiwgdW5zaWduZWQgbWF0Y2hMZW5ndGgp
IGNvbnN0OwotICAgIHRlbXBsYXRlPHVuc2lnbmVkIG1hdGNoTGVuZ3RoPiBib29sIGVuZHNXaXRo
KGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3QgeyByZXR1cm4gZW5kc1dp
dGgocHJlZml4LCBtYXRjaExlbmd0aCAtIDEpOyB9Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgaGFzSW5maXhFbmRpbmdBdChjb25zdCBTdHJpbmdJbXBsJiwgdW5zaWduZWQgZW5kT2Zmc2V0
KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBoYXNJbmZpeEVuZGluZ0F0KFN0
cmluZ1ZpZXcsIHVuc2lnbmVkIGVuZCkgY29uc3Q7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
UmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFVDaGFyKTsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFN0cmluZ0ltcGwqKTsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIsIFN0cmluZ1Zp
ZXcpOwogICAgIEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIgcGF0
dGVybiwgY29uc3QgY2hhciogcmVwbGFjZW1lbnQsIHVuc2lnbmVkIHJlcGxhY2VtZW50TGVuZ3Ro
KSB7IHJldHVybiByZXBsYWNlKHBhdHRlcm4sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihyZXBsYWNlbWVudCksIHJlcGxhY2VtZW50TGVuZ3RoKTsgfQogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShVQ2hhciwgY29uc3QgTENoYXIqLCB1bnNpZ25l
ZCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UoVUNoYXIs
IGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgcmVwbGFjZW1lbnRMZW5ndGgpOwogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZShTdHJpbmdWaWV3LCBTdHJpbmdWaWV3
KTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmPFN0cmluZ0ltcGw+IHJlcGxhY2UodW5zaWdu
ZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgU3RyaW5nSW1wbCopOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBSZWY8U3RyaW5nSW1wbD4gcmVwbGFjZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQg
bGVuZ3RoLCBTdHJpbmdWaWV3KTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBVQ2hhckRpcmVj
dGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0
eSA9IG51bGxwdHIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1Zp
ZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDczMGRlOTVhMWRj
NGRjNTRhMmM5MmI3MmI0NTZkZmU4OTcwNjJlM2IuLmE2NWUwMDkxZmI3NDQ2YjVhMzZiMjk4YmE4
MjVjMDNiZmQyZjcyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC0xMTU3LDYgKzEx
NTcsNzYgQEAgaW5saW5lIHNpemVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBz
b3VyY2UsIFN0cmluZ1ZpZXcgc3RyaW5nVG9GaW5kLAogICAgIHJldHVybiBmaW5kSWdub3JpbmdB
U0NJSUNhc2Uoc291cmNlLmNoYXJhY3RlcnMxNigpLCBzdHJpbmdUb0ZpbmQuY2hhcmFjdGVyczE2
KCksIHN0YXJ0LCBzZWFyY2hMZW5ndGgsIG1hdGNoTGVuZ3RoKTsKIH0KIAoraW5saW5lIGJvb2wg
c3RhcnRzV2l0aChTdHJpbmdWaWV3IHJlZmVyZW5jZSwgU3RyaW5nVmlldyBwcmVmaXgpCit7Cisg
ICAgdW5zaWduZWQgcHJlZml4TGVuZ3RoID0gcHJlZml4Lmxlbmd0aCgpOworICAgIGlmIChwcmVm
aXhMZW5ndGggPiByZWZlcmVuY2UubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmIChyZWZlcmVuY2UuaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKHByZWZpeC5pczhCaXQo
KSkKKyAgICAgICAgICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczgoKSwgcHJl
Zml4LmNoYXJhY3RlcnM4KCksIHByZWZpeExlbmd0aCk7CisgICAgICAgIHJldHVybiBlcXVhbChy
ZWZlcmVuY2UuY2hhcmFjdGVyczgoKSwgcHJlZml4LmNoYXJhY3RlcnMxNigpLCBwcmVmaXhMZW5n
dGgpOworICAgIH0KKyAgICBpZiAocHJlZml4LmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gZXF1
YWwocmVmZXJlbmNlLmNoYXJhY3RlcnMxNigpLCBwcmVmaXguY2hhcmFjdGVyczgoKSwgcHJlZml4
TGVuZ3RoKTsKKyAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNoYXJhY3RlcnMxNigpLCBwcmVm
aXguY2hhcmFjdGVyczE2KCksIHByZWZpeExlbmd0aCk7Cit9CisKK2lubGluZSBib29sIHN0YXJ0
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHJlZmVyZW5jZSwgU3RyaW5nVmlldyBw
cmVmaXgpCit7CisgICAgdW5zaWduZWQgcHJlZml4TGVuZ3RoID0gcHJlZml4Lmxlbmd0aCgpOwor
ICAgIGlmIChwcmVmaXhMZW5ndGggPiByZWZlcmVuY2UubGVuZ3RoKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChyZWZlcmVuY2UuaXM4Qml0KCkpIHsKKyAgICAgICAgaWYgKHBy
ZWZpeC5pczhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KHJlZmVyZW5jZS5jaGFyYWN0ZXJzOCgpLCBwcmVmaXguY2hhcmFjdGVyczgoKSwgcHJlZml4TGVu
Z3RoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVmZXJlbmNlLmNo
YXJhY3RlcnM4KCksIHByZWZpeC5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4TGVuZ3RoKTsKKyAgICB9
CisgICAgaWYgKHByZWZpeC5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UocmVmZXJlbmNlLmNoYXJhY3RlcnMxNigpLCBwcmVmaXguY2hhcmFjdGVyczgoKSwg
cHJlZml4TGVuZ3RoKTsKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVu
Y2UuY2hhcmFjdGVyczE2KCksIHByZWZpeC5jaGFyYWN0ZXJzMTYoKSwgcHJlZml4TGVuZ3RoKTsK
K30KKworaW5saW5lIGJvb2wgZW5kc1dpdGgoU3RyaW5nVmlldyByZWZlcmVuY2UsIFN0cmluZ1Zp
ZXcgc3VmZml4KQoreworICAgIHVuc2lnbmVkIHN1ZmZpeExlbmd0aCA9IHN1ZmZpeC5sZW5ndGgo
KTsKKyAgICB1bnNpZ25lZCByZWZlcmVuY2VMZW5ndGggPSByZWZlcmVuY2UubGVuZ3RoKCk7Cisg
ICAgaWYgKHN1ZmZpeExlbmd0aCA+IHJlZmVyZW5jZUxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSByZWZlcmVuY2VMZW5ndGggLSBzdWZm
aXhMZW5ndGg7CisKKyAgICBpZiAocmVmZXJlbmNlLmlzOEJpdCgpKSB7CisgICAgICAgIGlmIChz
dWZmaXguaXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gZXF1YWwocmVmZXJlbmNlLmNoYXJh
Y3RlcnM4KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCksIHN1ZmZpeExlbmd0
aCk7CisgICAgICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hhcmFjdGVyczgoKSArIHN0YXJ0
T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZpeExlbmd0aCk7CisgICAgfQorICAg
IGlmIChzdWZmaXguaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBlcXVhbChyZWZlcmVuY2UuY2hh
cmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCksIHN1ZmZpeExl
bmd0aCk7CisgICAgcmV0dXJuIGVxdWFsKHJlZmVyZW5jZS5jaGFyYWN0ZXJzMTYoKSArIHN0YXJ0
T2Zmc2V0LCBzdWZmaXguY2hhcmFjdGVyczE2KCksIHN1ZmZpeExlbmd0aCk7Cit9CisKK2lubGlu
ZSBib29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyByZWZlcmVuY2UsIFN0
cmluZ1ZpZXcgc3VmZml4KQoreworICAgIHVuc2lnbmVkIHN1ZmZpeExlbmd0aCA9IHN1ZmZpeC5s
ZW5ndGgoKTsKKyAgICB1bnNpZ25lZCByZWZlcmVuY2VMZW5ndGggPSByZWZlcmVuY2UubGVuZ3Ro
KCk7CisgICAgaWYgKHN1ZmZpeExlbmd0aCA+IHJlZmVyZW5jZUxlbmd0aCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSByZWZlcmVuY2VMZW5ndGgg
LSBzdWZmaXhMZW5ndGg7CisKKyAgICBpZiAocmVmZXJlbmNlLmlzOEJpdCgpKSB7CisgICAgICAg
IGlmIChzdWZmaXguaXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShyZWZlcmVuY2UuY2hhcmFjdGVyczgoKSArIHN0YXJ0T2Zmc2V0LCBzdWZmaXguY2hh
cmFjdGVyczgoKSwgc3VmZml4TGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UocmVmZXJlbmNlLmNoYXJhY3RlcnM4KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNo
YXJhY3RlcnMxNigpLCBzdWZmaXhMZW5ndGgpOworICAgIH0KKyAgICBpZiAoc3VmZml4LmlzOEJp
dCgpKQorICAgICAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2UuY2hh
cmFjdGVyczE2KCkgKyBzdGFydE9mZnNldCwgc3VmZml4LmNoYXJhY3RlcnM4KCksIHN1ZmZpeExl
bmd0aCk7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVmZXJlbmNlLmNoYXJh
Y3RlcnMxNigpICsgc3RhcnRPZmZzZXQsIHN1ZmZpeC5jaGFyYWN0ZXJzMTYoKSwgc3VmZml4TGVu
Z3RoKTsKK30KKwogaW5saW5lIHNpemVfdCBTdHJpbmc6OmZpbmQoU3RyaW5nVmlldyBzdHJpbmcp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcpIDogbm90
Rm91bmQ7CkBAIC0xMjAzLDEzICsxMjczLDUwIEBAIGlubGluZSBTdHJpbmcmIFN0cmluZzo6cmVw
bGFjZShTdHJpbmdWaWV3IHRhcmdldCwgU3RyaW5nVmlldyByZXBsYWNlbWVudCkKICAgICByZXR1
cm4gKnRoaXM7CiB9CiAKLWlubGluZSBTdHJpbmcmIFN0cmluZzo6cmVwbGFjZSh1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50KQoraW5saW5l
IFN0cmluZyYgU3RyaW5nOjpyZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgs
IFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQpCit7CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9p
bXBsID0gbV9pbXBsLT5yZXBsYWNlKHN0YXJ0LCBsZW5ndGgsIHJlcGxhY2VtZW50KTsKKyAgICBy
ZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBTdHJpbmcmIFN0cmluZzo6cmVwbGFjZShVQ2hhciB0
YXJnZXQsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQpCiB7CiAgICAgaWYgKG1faW1wbCkKLSAgICAg
ICAgbV9pbXBsID0gbV9pbXBsLT5yZXBsYWNlKHN0YXJ0LCBsZW5ndGgsIHJlcGxhY2VtZW50Lmlt
cGwoKSk7CisgICAgICAgIG1faW1wbCA9IG1faW1wbC0+cmVwbGFjZSh0YXJnZXQsIHJlcGxhY2Vt
ZW50KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK2lubGluZSBib29sIFN0cmluZzo6c3RhcnRz
V2l0aChTdHJpbmdWaWV3IHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9p
bXBsLT5zdGFydHNXaXRoKHN0cmluZykgOiBzdHJpbmcuaXNFbXB0eSgpOworfQorCitpbmxpbmUg
Ym9vbCBTdHJpbmc6OnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmlu
ZykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nKSA6IHN0cmluZy5pc0VtcHR5KCk7Cit9CisKK2lubGluZSBib29s
IFN0cmluZzo6ZW5kc1dpdGgoU3RyaW5nVmlldyBzdHJpbmcpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGgoc3RyaW5nKSA6IHN0cmluZy5pc0VtcHR5KCk7Cit9
CisKK2lubGluZSBib29sIFN0cmluZzo6ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdW
aWV3IHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5lbmRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZykgOiBzdHJpbmcuaXNFbXB0eSgpOworfQorCitpbmxp
bmUgYm9vbCBTdHJpbmc6Omhhc0luZml4U3RhcnRpbmdBdChTdHJpbmdWaWV3IHByZWZpeCwgdW5z
aWduZWQgc3RhcnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1wbCAmJiBwcmVmaXggJiYgbV9p
bXBsLT5oYXNJbmZpeFN0YXJ0aW5nQXQocHJlZml4LCBzdGFydCk7Cit9CisKK2lubGluZSBib29s
IFN0cmluZzo6aGFzSW5maXhFbmRpbmdBdChTdHJpbmdWaWV3IHN1ZmZpeCwgdW5zaWduZWQgZW5k
KSBjb25zdAoreworICAgIHJldHVybiBtX2ltcGwgJiYgc3VmZml4ICYmIG1faW1wbC0+aGFzSW5m
aXhFbmRpbmdBdChzdWZmaXgsIGVuZCk7Cit9CisKIGlubGluZSBzaXplX3QgQXRvbVN0cmluZzo6
ZmluZChTdHJpbmdWaWV3IHN0cmluZywgdW5zaWduZWQgc3RhcnQpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fc3RyaW5nLmZpbmQoc3RyaW5nLCBzdGFydCk7CkBAIC0xMjM1LDYgKzEzNDIsMjYgQEAg
aW5saW5lIGJvb2wgQXRvbVN0cmluZzo6Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdW
aWV3IHN0cmluZykgY29uc3QKICAgICByZXR1cm4gbV9zdHJpbmcuY29udGFpbnNJZ25vcmluZ0FT
Q0lJQ2FzZShzdHJpbmcpOwogfQogCitpbmxpbmUgYm9vbCBBdG9tU3RyaW5nOjpzdGFydHNXaXRo
KFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAgIHJldHVybiBtX3N0cmluZy5zdGFydHNX
aXRoKHN0cmluZyk7Cit9CisKK2lubGluZSBib29sIEF0b21TdHJpbmc6OnN0YXJ0c1dpdGhJZ25v
cmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHN0cmluZykgY29uc3QKK3sKKyAgICByZXR1cm4gbV9z
dHJpbmcuc3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZyk7Cit9CisKK2lubGluZSBi
b29sIEF0b21TdHJpbmc6OmVuZHNXaXRoKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25zdAoreworICAg
IHJldHVybiBtX3N0cmluZy5lbmRzV2l0aChzdHJpbmcpOworfQorCitpbmxpbmUgYm9vbCBBdG9t
U3RyaW5nOjplbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25z
dAoreworICAgIHJldHVybiBtX3N0cmluZy5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKHN0cmlu
Zyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmFwcGVuZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5oCmluZGV4IDI2YTkxNWY4ZTIxZjg4NDA0OGUzOGU4ZDE5YzFiMzVhMGJk
Mzg4NTYuLjVmZWY0Y2ZiODk3YzFiMzkyMjE1N2YwOTZmMjcxMGM3MGUzYTVkOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaApAQCAtMTgyLDE4ICsxODIsMTYgQEAgcHVibGljOgogICAgIGJvb2wg
Y29udGFpbnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKICAgICBib29sIGNv
bnRhaW5zSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldywgdW5zaWduZWQgc3RhcnQpIGNvbnN0
OwogCi0gICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJl
dHVybiBtX2ltcGwgPyBtX2ltcGwtPnN0YXJ0c1dpdGgoc3RyaW5nLmltcGwoKSkgOiBzdHJpbmcu
aXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBzdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+c3RhcnRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZy5pbXBsKCkpIDogc3RyaW5nLmlzRW1wdHkoKTsgfQor
ICAgIGJvb2wgc3RhcnRzV2l0aChTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBib29sIHN0YXJ0c1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KSBjb25zdDsKICAgICBib29sIHN0YXJ0c1dp
dGgoVUNoYXIgY2hhcmFjdGVyKSBjb25zdCB7IHJldHVybiBtX2ltcGwgJiYgbV9pbXBsLT5zdGFy
dHNXaXRoKGNoYXJhY3Rlcik7IH0KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4g
Ym9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKCZwcmVmaXgpW21hdGNoTGVuZ3RoXSkgY29uc3Qg
eyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5zdGFydHNXaXRoPG1hdGNoTGVuZ3RoPihwcmVmaXgp
IDogIW1hdGNoTGVuZ3RoOyB9Ci0gICAgYm9vbCBoYXNJbmZpeFN0YXJ0aW5nQXQoY29uc3QgU3Ry
aW5nJiBwcmVmaXgsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdCB7IHJldHVybiBtX2ltcGwgJiYgcHJl
Zml4LmltcGwoKSAmJiBtX2ltcGwtPmhhc0luZml4U3RhcnRpbmdBdCgqcHJlZml4LmltcGwoKSwg
c3RhcnQpOyB9CisgICAgYm9vbCBoYXNJbmZpeFN0YXJ0aW5nQXQoU3RyaW5nVmlldyBwcmVmaXgs
IHVuc2lnbmVkIHN0YXJ0KSBjb25zdDsKIAotICAgIGJvb2wgZW5kc1dpdGgoY29uc3QgU3RyaW5n
JiBzdHJpbmcpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZW5kc1dpdGgoc3RyaW5n
LmltcGwoKSkgOiBzdHJpbmcuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBlbmRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBt
X2ltcGwtPmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLmltcGwoKSkgOiBzdHJpbmcu
aXNFbXB0eSgpOyB9CisgICAgYm9vbCBlbmRzV2l0aChTdHJpbmdWaWV3KSBjb25zdDsKKyAgICBi
b29sIGVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldykgY29uc3Q7CiAgICAgYm9v
bCBlbmRzV2l0aChVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCAmJiBtX2lt
cGwtPmVuZHNXaXRoKGNoYXJhY3Rlcik7IH0KICAgICBib29sIGVuZHNXaXRoKGNoYXIgY2hhcmFj
dGVyKSBjb25zdCB7IHJldHVybiBlbmRzV2l0aChzdGF0aWNfY2FzdDxVQ2hhcj4oY2hhcmFjdGVy
KSk7IH0KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBtYXRjaExlbmd0aD4gYm9vbCBlbmRzV2l0aChj
b25zdCBjaGFyICgmcHJlZml4KVttYXRjaExlbmd0aF0pIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/
IG1faW1wbC0+ZW5kc1dpdGg8bWF0Y2hMZW5ndGg+KHByZWZpeCkgOiAhbWF0Y2hMZW5ndGg7IH0K
LSAgICBib29sIGhhc0luZml4RW5kaW5nQXQoY29uc3QgU3RyaW5nJiBzdWZmaXgsIHVuc2lnbmVk
IGVuZE9mZnNldCkgY29uc3QgeyByZXR1cm4gbV9pbXBsICYmIHN1ZmZpeC5pbXBsKCkgJiYgbV9p
bXBsLT5oYXNJbmZpeEVuZGluZ0F0KCpzdWZmaXguaW1wbCgpLCBlbmRPZmZzZXQpOyB9CisgICAg
Ym9vbCBoYXNJbmZpeEVuZGluZ0F0KFN0cmluZ1ZpZXcgc3VmZml4LCB1bnNpZ25lZCBlbmQpIGNv
bnN0OwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYp
OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFwcGVuZChMQ2hhcik7CkBAIC0yMDQsOSAr
MjAyLDkgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGluc2VydChjb25z
dCBTdHJpbmcmLCB1bnNpZ25lZCBwb3NpdGlvbik7CiAKICAgICBTdHJpbmcmIHJlcGxhY2UoVUNo
YXIgdGFyZ2V0LCBVQ2hhciByZXBsYWNlbWVudCk7Ci0gICAgU3RyaW5nJiByZXBsYWNlKFVDaGFy
IHRhcmdldCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCk7CisgICAgU3RyaW5nJiByZXBsYWNl
KFVDaGFyIHRhcmdldCwgU3RyaW5nVmlldyByZXBsYWNlbWVudCk7CiAgICAgU3RyaW5nJiByZXBs
YWNlKFN0cmluZ1ZpZXcgdGFyZ2V0LCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KTsKLSAgICBTdHJp
bmcmIHJlcGxhY2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5n
JiByZXBsYWNlbWVudCk7CisgICAgU3RyaW5nJiByZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBsZW5ndGgsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQpOwogICAgIHRlbXBsYXRlPHVuc2ln
bmVkIGNoYXJhY3RlckNvdW50PiBTdHJpbmcmIHJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhciB0YXJn
ZXQsIGNvbnN0IGNoYXIgKCZyZXBsYWNlbWVudClbY2hhcmFjdGVyQ291bnRdKTsKIAogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHRydW5jYXRlKHVuc2lnbmVkIGxlbmd0aCk7CkBAIC00OTks
MTMgKzQ5Nyw2IEBAIGlubGluZSBTdHJpbmcmIFN0cmluZzo6cmVwbGFjZShVQ2hhciB0YXJnZXQs
IFVDaGFyIHJlcGxhY2VtZW50KQogICAgIHJldHVybiAqdGhpczsKIH0KIAotaW5saW5lIFN0cmlu
ZyYgU3RyaW5nOjpyZXBsYWNlKFVDaGFyIHRhcmdldCwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVu
dCkKLXsKLSAgICBpZiAobV9pbXBsKQotICAgICAgICBtX2ltcGwgPSBtX2ltcGwtPnJlcGxhY2Uo
dGFyZ2V0LCByZXBsYWNlbWVudC5pbXBsKCkpOwotICAgIHJldHVybiAqdGhpczsKLX0KLQogdGVt
cGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IEFMV0FZU19JTkxJTkUgU3RyaW5nJiBTdHJp
bmc6OnJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhciB0YXJnZXQsIGNvbnN0IGNoYXIgKCZjaGFyYWN0
ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCiB7CiAgICAgaWYgKG1faW1wbCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNwcAppbmRleCAyZjMzZjJiMDcyZmEzZmVmNWQzYWI3ZGQzYWY5YTI4YTY0YWIxMGNlLi4x
YzAzNDU3ZWRmODg3Zjc1OTk3YzQ0NDVmMGQzNGJmYWRhMjE3YjBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwCkBAIC0yOTYsNyArMjk2LDcgQEAgc3RhdGljIFN0cmluZyBleHRyYWN0SVBBZGRy
ZXNzKFN0cmluZ1ZpZXcgc2RwKQogc3RhdGljIGlubGluZSBib29sIHNob3VsZElnbm9yZUljZUNh
bmRpZGF0ZShjb25zdCBSVENJY2VDYW5kaWRhdGUmIGljZUNhbmRpZGF0ZSkKIHsKICAgICBhdXRv
IGFkZHJlc3MgPSBleHRyYWN0SVBBZGRyZXNzKGljZUNhbmRpZGF0ZS5jYW5kaWRhdGUoKSk7Ci0g
ICAgaWYgKCFhZGRyZXNzLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5sb2NhbCJfcykpCisg
ICAgaWYgKCFhZGRyZXNzLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5sb2NhbCIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIVdURjo6aXNWZXJzaW9uNFVVSUQoU3RyaW5n
VmlldyB7IGFkZHJlc3MgfS5zdWJzdHJpbmcoMCwgYWRkcmVzcy5sZW5ndGgoKSAtIDYpKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCmluZGV4IGM4NzM0MTQ2MTdiODFlYzdhMTE5
YzFjMTQzMDA3ZGQwZDcwZDcxY2EuLjE3MzRlOTk0ZjhmZDVjNWY3Mjk5NjJmM2ZjZTdkNGNkMDIz
ZDVlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKQEAgLTQzLDcgKzQzLDcg
QEAgc3RhdGljIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvbHZlZFVSTCYgYSwgY29uc3QgUmVz
b2x2ZWRVUkwmIGIpCiAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXZhbHVlcy8jdXJs
LWxvY2FsLXVybC1mbGFnCiBib29sIFJlc29sdmVkVVJMOjppc0xvY2FsVVJMKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gc3BlY2lmaWVkVVJMU3RyaW5nLnN0YXJ0c1dpdGgoIiMiKTsKKyAgICByZXR1
cm4gc3BlY2lmaWVkVVJMU3RyaW5nLnN0YXJ0c1dpdGgoJyMnKTsKIH0KIAogc3RhdGljIFJlc29s
dmVkVVJMIG1ha2VSZXNvbHZlZFVSTChVUkwmJiByZXNvbHZlZFVSTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKaW5kZXggMGVjNGVhYjE2NGU4MjhlMGEzZmQ4N2I2
MjExYjg0Nzg1MzA2YTdmMC4uZGZlZGE0ZGE1ZmQ2YzU0YjhlZDg3ZWRjYjM2NzQ5ZDhjODBhODUw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKQEAgLTQwMSw3
ICs0MDEsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFJlZgogICAgICAgICAgICAgLy8gRklYTUU6
IDxodHRwczovL3dlYmtpdC5vcmcvYi8xODA4MzM+IFdlYiBJbnNwZWN0b3I6IHN1cHBvcnQgT2Zm
c2NyZWVuQ2FudmFzIGZvciBDYW52YXMgcmVsYXRlZCBvcGVyYXRpb25zCiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBTdHJpbmcgYmFzZTY0OwotICAgICAgICAgICAgaWYgKHBvc3NpYmxl
VGFyZ2V0LmdldFN0cmluZyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBiYXNlNjQpICYmIGJhc2U2NC5z
dGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoImRhdGE6Il9zKSAmJiBiYXNlNjQubGVuZ3RoKCkg
PiA1KSB7CisgICAgICAgICAgICBpZiAocG9zc2libGVUYXJnZXQuZ2V0U3RyaW5nKGxleGljYWxH
bG9iYWxPYmplY3QsIGJhc2U2NCkgJiYgYmFzZTY0LnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZSgiZGF0YToiKSAmJiBiYXNlNjQubGVuZ3RoKCkgPiA1KSB7CiAgICAgICAgICAgICAgICAgdGFy
Z2V0ID0gcG9zc2libGVUYXJnZXQ7CiAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGJhc2U2NDsK
ICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCmluZGV4IDJmZmQyNzg5Y2UxMDliNDlmNjdjMWEw
ZDI2NDE2NTg2OTkxOWRjNDcuLjcxZGM2Y2EyMzQzYTAzZWIyNzVjOTFiNGVlMTFiY2NjZmFkNjgy
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlLmNwcApAQCAtODcsNyArODcsNyBAQCBib29sIENvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZTo6cGF0aE1hdGNoZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAKICAgICBh
dXRvIHBhdGggPSBQQUw6OmRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwucGF0aCgpKTsKIAot
ICAgIGlmIChtX3BhdGguZW5kc1dpdGgoIi8iKSkKKyAgICBpZiAobV9wYXRoLmVuZHNXaXRoKCcv
JykpCiAgICAgICAgIHJldHVybiBwYXRoLnN0YXJ0c1dpdGgobV9wYXRoKTsKIAogICAgIHJldHVy
biBwYXRoID09IG1fcGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXgg
Y2MyOWNmYjQ2NzNjNjYyMTFkZTFhNDFlZTJiZjZhMmU4YmExMWZkNS4uNjg2YzVmMjA5ODc2N2Zk
MmVhNTc1NDRlM2FjY2VlNGYyZTdiZTVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAKQEAgLTE5MTEsOCArMTkxMSw4IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHRHTEFOR0xF
OjpnZXRVbm1hbmdsZWRJbmZvTG9nKFBsYXRmb3JtR0xPYmplY3Qgc2hhZGVyc1syXSwKICAgICAv
LyBjYXVzZXMgYSB3YXJuaW5nIGluIHNvbWUgY29tcGlsZXJzLiBUaGVyZSBpcyBubyBwb2ludCBz
aG93aW5nCiAgICAgLy8gdGhpcyB3YXJuaW5nIHRvIHRoZSB1c2VyIHNpbmNlIHRoZXkgZGlkbid0
IHdyaXRlIHRoZSBjb2RlIHRoYXQKICAgICAvLyBpcyBjYXVzaW5nIGl0LgotICAgIHN0YXRpYyBj
b25zdCBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGFuZ2xlV2FybmluZyB7ICJXQVJOSU5HOiAwOjE6
IGV4dGVuc2lvbiAnR0xfQVJCX2dwdV9zaGFkZXI1JyBpcyBub3Qgc3VwcG9ydGVkXG4iX3MgfTsK
LSAgICBpbnQgc3RhcnRGcm9tID0gbG9nLnN0YXJ0c1dpdGgoYW5nbGVXYXJuaW5nKSA/IGFuZ2xl
V2FybmluZy5nZXQoKS5sZW5ndGgoKSA6IDA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGFu
Z2xlV2FybmluZ1tdID0gIldBUk5JTkc6IDA6MTogZXh0ZW5zaW9uICdHTF9BUkJfZ3B1X3NoYWRl
cjUnIGlzIG5vdCBzdXBwb3J0ZWRcbiI7CisgICAgaW50IHN0YXJ0RnJvbSA9IGxvZy5zdGFydHNX
aXRoKGFuZ2xlV2FybmluZykgPyBzdHJsZW4oYW5nbGVXYXJuaW5nKSA6IDA7CiAgICAgcHJvY2Vz
c2VkTG9nLmFwcGVuZChsb2cuc3Vic3RyaW5nKHN0YXJ0RnJvbSwgbG9nLmxlbmd0aCgpIC0gc3Rh
cnRGcm9tKSk7CiAKICAgICBMT0coV2ViR0wsICJVbm1hbmdsZWQgU2hhZGVySW5mb0xvZzpcbiVz
IiwgcHJvY2Vzc2VkTG9nLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlT
dHJlYW1pbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAppbmRleCA2MjEyOWQyMmVhOTE5MDViNDI4NGJk
MzkyMDM0ZDc5ZjcxMGJhZWI2Li40MWQ2NmM0NGNjMzRjZmQyMGFmODVlZDE3ZDA2OTNiYzAyYTUy
ZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKQEAgLTI1
MCw3ICsyNTAsNyBAQCBib29sIENETUZhY3RvcnlGYWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNL
ZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiB7CiAgICAgLy8gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8ja2V5LXN5c3RlbQogICAgIC8vICJLZXkgU3lzdGVt
IHN0cmluZ3MgYXJlIGNvbXBhcmVkIHVzaW5nIGNhc2Utc2Vuc2l0aXZlIG1hdGNoaW5nLiIKLSAg
ICByZXR1cm4ga2V5U3lzdGVtID09ICJjb20uYXBwbGUuZnBzIiB8fCBrZXlTeXN0ZW0uc3RhcnRz
V2l0aCgiY29tLmFwcGxlLmZwcy4iX3MpOworICAgIHJldHVybiBrZXlTeXN0ZW0gPT0gImNvbS5h
cHBsZS5mcHMiIHx8IGtleVN5c3RlbS5zdGFydHNXaXRoKCJjb20uYXBwbGUuZnBzLiIpOwogfQog
CiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zyhjb25zdCBDRE1Qcml2YXRlQ2xpZW50JiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuY3BwCmluZGV4IDI5YzlhYjRlZWRmMmQ2MzliNDFlODJmYTZhYzJkZjM3OWY0
YTM0NzMuLmM1ZmI5NmJlYjU5MTdiZjdlYzI5YTVkY2I2NDFlY2NkMDk5NWRmMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29k
ZXJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9v
bCBJbWFnZURlY29kZXJHU3RyZWFtZXI6OnN1cHBvcnRzQ29udGFpbmVyVHlwZShjb25zdCBTdHJp
bmcmIHR5cGUpCiAgICAgaWYgKCFpc0luV2ViUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAoIXR5cGUuc3RhcnRzV2l0aCgidmlkZW8vIl9zKSkKKyAgICBpZiAoIXR5
cGUuc3RhcnRzV2l0aCgidmlkZW8vIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJl
dHVybiBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OnNpbmdsZXRvbigpLmlzQ29udGFpbmVyVHlw
ZVN1cHBvcnRlZChHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkRlY29k
aW5nLCB0eXBlKTsKQEAgLTExNSw3ICsxMTUsNyBAQCBib29sIEltYWdlRGVjb2RlckdTdHJlYW1l
cjo6Y2FuRGVjb2RlVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIGlmIChtaW1lVHlw
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghbWltZVR5cGUu
c3RhcnRzV2l0aCgidmlkZW8vIl9zKSkKKyAgICBpZiAoIW1pbWVUeXBlLnN0YXJ0c1dpdGgoInZp
ZGVvLyIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBJZGVhbGx5IHRoaXMgZGVj
b2RlciBzaG91bGQgb3BlcmF0ZSBvbmx5IGZyb20gdGhlIFdlYlByb2Nlc3MgKG9yIGZyb20gdGhl
IEdQVVByb2Nlc3MpIHdoaWNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCmluZGV4IDlmMjcwNzRmYzc0YTk4NWNkOTg3NDU2OTc4MjcyMTBiOTc4ZGVj
NTguLjNjMGQ4ZjczYzQyYjhkNDJkY2JhN2JkMjNmMDcxN2Q2OGZmZWNhNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0yNTgyLDcgKzI1
ODIsNyBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRQogICAgICAgICByZXR1cm4gcmVzdWx0Owog
CiAgICAgLy8gVGhpcyBwbGF5ZXIgZG9lc24ndCBzdXBwb3J0IHBpY3R1cmVzIHJlbmRlcmluZy4K
LSAgICBpZiAocGFyYW1ldGVycy50eXBlLnJhdygpLnN0YXJ0c1dpdGgoImltYWdlIl9zKSkKKyAg
ICBpZiAocGFyYW1ldGVycy50eXBlLnJhdygpLnN0YXJ0c1dpdGgoImltYWdlIikpCiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAKICAgICBhdXRvJiBnc3RSZWdpc3RyeVNjYW5uZXIgPSBHU3RyZWFt
ZXJSZWdpc3RyeVNjYW5uZXI6OnNpbmdsZXRvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAKaW5kZXggNGE5ZThmYWUwMzdlZWY0MGRlZDlmMmNlYWY4NzJmYTE1OGE0M2Fm
Yi4uZDkyMDNmYzgxYmNhOTM0YTE0YjM2ZWFiY2NlY2YzYjJjZDMxNDY1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC01MjgsNyArNTI4LDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Y2hlY2tWYXJ5aW5nc1BhY2tpbmcoUGxhdGZvcm1HTE9iamVj
dCB2ZXJ0ZXhTaGFkZXIKICAgICAgICAgY29uc3QgU3RyaW5nJiBzeW1ib2xOYW1lID0gdmVydGV4
U3ltYm9sLmtleTsKICAgICAgICAgLy8gVGhlIHZhcnlpbmcgbWFwIGluY2x1ZGVzIHZhcmlhYmxl
cyBmb3IgZWFjaCBpbmRleCBvZiBhbiBhcnJheSB2YXJpYWJsZS4KICAgICAgICAgLy8gV2Ugb25s
eSB3YW50IGEgc2luZ2xlIHZhcmlhYmxlIHRvIHJlcHJlc2VudCB0aGUgYXJyYXkuCi0gICAgICAg
IGlmIChzeW1ib2xOYW1lLmVuZHNXaXRoKCJdIikpCisgICAgICAgIGlmIChzeW1ib2xOYW1lLmVu
ZHNXaXRoKCddJykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBEb24ndCBj
b3VudCBidWlsdCBpbiB2YXJ5aW5ncy4KQEAgLTE5NzQsOCArMTk3NCw4IEBAIFN0cmluZyBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6Z2V0VW5tYW5nbGVkSW5mb0xvZyhQbGF0Zm9ybUdMT2JqZWN0
IHNoYWRlcnNbMl0sCiAgICAgLy8gY2F1c2VzIGEgd2FybmluZyBpbiBzb21lIGNvbXBpbGVycy4g
VGhlcmUgaXMgbm8gcG9pbnQgc2hvd2luZwogICAgIC8vIHRoaXMgd2FybmluZyB0byB0aGUgdXNl
ciBzaW5jZSB0aGV5IGRpZG4ndCB3cml0ZSB0aGUgY29kZSB0aGF0CiAgICAgLy8gaXMgY2F1c2lu
ZyBpdC4KLSAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBhbmdsZVdhcm5p
bmcgeyAiV0FSTklORzogMDoxOiBleHRlbnNpb24gJ0dMX0FSQl9ncHVfc2hhZGVyNScgaXMgbm90
IHN1cHBvcnRlZFxuIl9zIH07Ci0gICAgaW50IHN0YXJ0RnJvbSA9IGxvZy5zdGFydHNXaXRoKGFu
Z2xlV2FybmluZykgPyBhbmdsZVdhcm5pbmcuZ2V0KCkubGVuZ3RoKCkgOiAwOworICAgIHN0YXRp
YyBjb25zdGV4cHIgY2hhciBhbmdsZVdhcm5pbmdbXSA9ICJXQVJOSU5HOiAwOjE6IGV4dGVuc2lv
biAnR0xfQVJCX2dwdV9zaGFkZXI1JyBpcyBub3Qgc3VwcG9ydGVkXG4iOworICAgIGludCBzdGFy
dEZyb20gPSBsb2cuc3RhcnRzV2l0aChhbmdsZVdhcm5pbmcpID8gc3RybGVuKGFuZ2xlV2Fybmlu
ZykgOiAwOwogICAgIGludCBtYXRjaGVkTGVuZ3RoID0gMDsKIAogICAgIGRvIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclBy
aXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNmM5YTlkZDU1ZjVhOWE2
NzhiOWMwMGRhZGM0ZTQ1N2FjNWM1MzI1NS4uNjA3ZjM2NmJmNzJmYzhlYjVjY2MzZDgwNTNlNjAw
Y2U3MDI5N2JhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKQEAgLTE3Myw3ICsxNzMsNyBAQCBHUmVmUHRyPEdzdEVuY29kaW5nQ29udGFpbmVyUHJvZmls
ZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclBybwogCiAgICAgY29u
c3QgY2hhciogY29udGFpbmVyQ2Fwc0Rlc2NyaXB0aW9uID0gIiI7CiAgICAgYXV0byBjb250YWlu
ZXJUeXBlID0gY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpOwotICAgIGlmIChjb250YWluZXJU
eXBlLmVuZHNXaXRoKCJtcDQiX3MpKQorICAgIGlmIChjb250YWluZXJUeXBlLmVuZHNXaXRoKCJt
cDQiKSkKICAgICAgICAgY29udGFpbmVyQ2Fwc0Rlc2NyaXB0aW9uID0gInZpZGVvL3F1aWNrdGlt
ZSwgdmFyaWFudD1pc28iOwogICAgIGVsc2UKICAgICAgICAgY29udGFpbmVyQ2Fwc0Rlc2NyaXB0
aW9uID0gY29udGFpbmVyVHlwZS51dGY4KCkuZGF0YSgpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIEdS
ZWZQdHI8R3N0RW5jb2RpbmdDb250YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y29udGFpbmVyUHJvCiAgICAgYXV0byBjb250YWluZXJDYXBzID0gYWRvcHRHUmVm
KGdzdF9jYXBzX2Zyb21fc3RyaW5nKGNvbnRhaW5lckNhcHNEZXNjcmlwdGlvbikpOwogICAgIGF1
dG8gcHJvZmlsZSA9IGFkb3B0R1JlZihnc3RfZW5jb2RpbmdfY29udGFpbmVyX3Byb2ZpbGVfbmV3
KG51bGxwdHIsIG51bGxwdHIsIGNvbnRhaW5lckNhcHMuZ2V0KCksIG51bGxwdHIpKTsKIAotICAg
IGlmIChjb250YWluZXJUeXBlLmVuZHNXaXRoKCJtcDQiX3MpKQorICAgIGlmIChjb250YWluZXJU
eXBlLmVuZHNXaXRoKCJtcDQiKSkKICAgICAgICAgZ3N0X2VuY29kaW5nX3Byb2ZpbGVfc2V0X2Vs
ZW1lbnRfcHJvcGVydGllcyhHU1RfRU5DT0RJTkdfUFJPRklMRShwcm9maWxlLmdldCgpKSwgZ3N0
X3N0cnVjdHVyZV9mcm9tX3N0cmluZygiZWxlbWVudC1wcm9wZXJ0aWVzLW1hcCwgbWFwPXtbbXA0
bXV4LGZyYWdtZW50LWR1cmF0aW9uPTEwMDAsZnJhZ21lbnQtbW9kZT0wLHN0cmVhbWFibGU9MCxm
b3JjZS1jcmVhdGUtdGltZWNvZGUtdHJhaz0xXX0iLCBudWxscHRyKSk7CiAKICAgICBhdXRvIGNv
ZGVjcyA9IGNvbnRlbnRUeXBlLmNvZGVjcygpOwpAQCAtMTk0LDExICsxOTQsMTEgQEAgR1JlZlB0
cjxHc3RFbmNvZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVh
bWVyOjpjb250YWluZXJQcm8KICAgICAgICAgICAgIHZpZGVvQ2Fwc05hbWUgPSAidmlkZW8veC12
cDkiX3M7CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5jb250YWlucygiYXYxIl9zKSkKICAgICAg
ICAgICAgIHZpZGVvQ2Fwc05hbWUgPSAidmlkZW8veC1hdjEiX3M7Ci0gICAgICAgIGVsc2UgaWYg
KGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJuIGNvZGVjLnN0YXJ0c1dpdGgo
ImF2YzEiX3MpOyB9KSAhPSBub3RGb3VuZCkKKyAgICAgICAgZWxzZSBpZiAoY29kZWNzLmZpbmRJ
ZihbXShhdXRvJiBjb2RlYykgeyByZXR1cm4gY29kZWMuc3RhcnRzV2l0aCgiYXZjMSIpOyB9KSAh
PSBub3RGb3VuZCkKICAgICAgICAgICAgIHZpZGVvQ2Fwc05hbWUgPSAidmlkZW8veC1oMjY0Il9z
OwotICAgICAgICBlbHNlIGlmIChjb250YWluZXJUeXBlLmVuZHNXaXRoKCJ3ZWJtIl9zKSkKKyAg
ICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgid2VibSIpKQogICAgICAgICAg
ICAgdmlkZW9DYXBzTmFtZSA9ICJ2aWRlby94LXZwOCJfczsKLSAgICAgICAgZWxzZSBpZiAoY29u
dGFpbmVyVHlwZS5lbmRzV2l0aCgibXA0Il9zKSkKKyAgICAgICAgZWxzZSBpZiAoY29udGFpbmVy
VHlwZS5lbmRzV2l0aCgibXA0IikpCiAgICAgICAgICAgICB2aWRlb0NhcHNOYW1lID0gInZpZGVv
L3gtaDI2NCJfczsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBHU1RfV0FSTklORygiVmlk
ZW8gY29kZWMgZm9yICVzIG5vdCBzdXBwb3J0ZWQiLCBjb250ZW50VHlwZS5yYXcoKS51dGY4KCku
ZGF0YSgpKTsKQEAgLTIxOCwxMSArMjE4LDExIEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250YWlu
ZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvCiAg
ICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBl
bHNlIGlmIChjb2RlY3MuY29udGFpbnMoIm9wdXMiX3MpKQogICAgICAgICAgICAgYXVkaW9DYXBz
TmFtZSA9ICJhdWRpby94LW9wdXMiOwotICAgICAgICBlbHNlIGlmIChjb2RlY3MuZmluZElmKFtd
KGF1dG8mIGNvZGVjKSB7IHJldHVybiBjb2RlYy5zdGFydHNXaXRoKCJtcDRhIl9zKTsgfSkgIT0g
bm90Rm91bmQpCisgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMp
IHsgcmV0dXJuIGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAg
ICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7Ci0g
ICAgICAgIGVsc2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iX3MpKQorICAgICAg
ICBlbHNlIGlmIChjb250YWluZXJUeXBlLmVuZHNXaXRoKCJ3ZWJtIikpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwotICAgICAgICBlbHNlIGlmIChjb250
YWluZXJUeXBlLmVuZHNXaXRoKCJtcDQiX3MpKQorICAgICAgICBlbHNlIGlmIChjb250YWluZXJU
eXBlLmVuZHNXaXRoKCJtcDQiKSkKICAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8v
bXBlZywgbXBlZ3ZlcnNpb249NCJfczsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBHU1Rf
V0FSTklORygiQXVkaW8gY29kZWMgZm9yICVzIG5vdCBzdXBwb3J0ZWQiLCBjb250ZW50VHlwZS5y
YXcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkUmVxdWVzdFJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkUmVxdWVzdFJhbmdlLmNwcAppbmRleCA2ZGRmODllMzUxODk2ZGZiYzNl
MzQxZjk0MDNlMWI1ZmU4MjBmZTM5Li41OTk1YmE4ODc4ODA1M2ExZGU0YTVmYmNlNjA0OGE1YjE5
Yzg2MmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNl
ZFJlcXVlc3RSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
YXJzZWRSZXF1ZXN0UmFuZ2UuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHN0ZDo6b3B0aW9uYWw8UGFyc2VkUmVxdWVzdFJhbmdlPiBQYXJzZWRSZXF1ZXN0UmFuZ2U6
OnBhcnNlKFN0cmluZ1ZpZXcgaW5wdXQpCiB7CiAgICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9y
Zy9odG1sL3JmYzcyMzMjc2VjdGlvbi0yLjEgYnV0IGFzc3VtaW5nIHRoZXJlIHdpbGwgYWx3YXlz
IGJlIGEgYmVnaW4gYW5kIGFuIGVuZCBvciBwYXJzaW5nIHdpbGwgZmFpbAotICAgIGlmICghaW5w
dXQuc3RhcnRzV2l0aChTdHJpbmdWaWV3KCJieXRlcz0iX3MpKSkKKyAgICBpZiAoIWlucHV0LnN0
YXJ0c1dpdGgoImJ5dGVzPSIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
c2l6ZV90IGJlZ2luIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggY2UxMWM3ZDg2MWFhNDMwY2UyOGU1Mjky
Nzc3ZDJlNGJhMDJmZTU2Ni4uYWE2OTU1MGExZjA3NzlkMmM0NTI2NTMyY2IzMTdjMjBlNWU3YzM3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyREIuY3BwCkBAIC00OTAsMTEgKzQ5MCwxMSBAQCBib29sIENvb2tpZUphckRCOjpoYXNI
dHRwT25seUNvb2tpZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBj
bwogCiBzdGF0aWMgYm9vbCBjaGVja1NlY3VyZUNvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkK
IHsKLSAgICBpZiAoY29va2llLm5hbWUuc3RhcnRzV2l0aCgiX19TZWN1cmUtIl9zKSAmJiAhY29v
a2llLnNlY3VyZSkKKyAgICBpZiAoY29va2llLm5hbWUuc3RhcnRzV2l0aCgiX19TZWN1cmUtIikg
JiYgIWNvb2tpZS5zZWN1cmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIENvb2tp
ZXMgZm9yIF9fSG9zdCBtdXN0IGhhdmUgdGhlIFNlY3VyZSBhdHRyaWJ1dGUsIHBhdGggZXhwbGlj
aXRseSBzZXQgdG8gIi8iLCBhbmQgbm8gZG9tYWluIGF0dHJpYnV0ZQotICAgIGlmIChjb29raWUu
bmFtZS5zdGFydHNXaXRoKCJfX0hvc3QtIl9zKSAmJiAoIWNvb2tpZS5zZWN1cmUgfHwgY29va2ll
LnBhdGggIT0gIi8iX3MgfHwgIWNvb2tpZS5kb21haW4uaXNFbXB0eSgpKSkKKyAgICBpZiAoY29v
a2llLm5hbWUuc3RhcnRzV2l0aCgiX19Ib3N0LSIpICYmICghY29va2llLnNlY3VyZSB8fCBjb29r
aWUucGF0aCAhPSAiLyJfcyB8fCAhY29va2llLmRvbWFpbi5pc0VtcHR5KCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcApp
bmRleCBiNGYzZDg1NTEwNDJkOTU0ZGVjYWE5MTliMjAyMTYzMmZiODU3M2UyLi42YzE0NWFjZWU3
NTg4ZDY5NWEzODdkMjdjYjljYjBjM2M4MzE0ZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3Bw
CkBAIC00Miw3ICs0Miw3IEBAIGNvbnN0ZXhwciBhdXRvIGZpbGVOYW1lID0gImxvY2Fsc3RvcmFn
ZS5zcWxpdGUzIl9zOwogLy8gV2Ugc2hvdWxkIG5vdCBpbmNsdWRlIG9yaWdpbiBpbiBmaWxlIG5h
bWUuCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IGZp
bGVOYW1lVG9PcmlnaW4oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKIHsKLSAgICBpZiAoIWZpbGVO
YW1lLmVuZHNXaXRoKGZpbGVTdWZmaXgpKQorICAgIGlmICghZmlsZU5hbWUuZW5kc1dpdGgoU3Ry
aW5nVmlldyB7IGZpbGVTdWZmaXggfSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBhdXRvIHN1ZmZpeExlbmd0aCA9IHN0cmxlbihmaWxlU3VmZml4KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNDdlOWRjYTUwMGIxMDY0
MDFlZGNiZGZjYmVhODIwYjM1YmU5NjU0Mi4uZmQ3NGZlYWIxZDFlMTJmYjA2MTJhMDg1NWRlNjhm
Yzc2NDFiMTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0KQEAgLTQ0NTAsNyArNDQ1MCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnN0YXJ0RHJhZyhj
b25zdCBXZWJDb3JlOjpEcmFnSXRlbSYgaXRlbSwgY29uc3QgU2hhcmVhYmxlQml0bWFwCiAKIHN0
YXRpYyBib29sIG1hdGNoZXNFeHRlbnNpb25PckVxdWl2YWxlbnQoY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCiB7Ci0gICAgcmV0dXJuIGZpbGVuYW1lLmVu
ZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi4iICsgZXh0ZW5zaW9uKQorICAgIHJldHVybiBmaWxl
bmFtZS5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG1ha2VTdHJpbmcoJy4nLCBleHRlbnNpb24p
KQogICAgICAgICB8fCAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZXh0ZW5zaW9uLCAi
anBlZyIpICYmIGZpbGVuYW1lLmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoIi5qcGciKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBjMmM0MGQzZDJhMTMzZjI4MTM0MTU2MDM0ZGU1NDE0
MWE0Y2U5YzMyLi5mZWY2ZTJmMGQ1M2VhODdjZTQ4YzJjMjU4NWUxMzgwZWJmM2Q0YjA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50Lm1tCkBAIC0xMTc1LDcgKzExNzUsNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVu
dDo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGVXaXRoU29mdFNwYWNlcyhUZXh0Q2hlY2tpbmdSZXN1
bHQgYQogICAgICAgICBpZiAocmVwbGFjZW1lbnRMZW5ndGggPiAwKSB7CiAgICAgICAgICAgICBO
U1JhbmdlIHJlcGxhY2VkUmFuZ2UgPSBOU01ha2VSYW5nZShhY2NlcHRlZENhbmRpZGF0ZS5yYW5n
ZS5sb2NhdGlvbiwgcmVwbGFjZW1lbnRMZW5ndGgpOwogICAgICAgICAgICAgTlNSYW5nZSBzb2Z0
U3BhY2VSYW5nZSA9IE5TTWFrZVJhbmdlKE5TTWF4UmFuZ2UocmVwbGFjZWRSYW5nZSkgLSAxLCAx
KTsKLSAgICAgICAgICAgIGlmIChhY2NlcHRlZENhbmRpZGF0ZS5yZXBsYWNlbWVudC5lbmRzV2l0
aCgiICIpKQorICAgICAgICAgICAgaWYgKGFjY2VwdGVkQ2FuZGlkYXRlLnJlcGxhY2VtZW50LmVu
ZHNXaXRoKCcgJykpCiAgICAgICAgICAgICAgICAgWyhXZWJIVE1MVmlldyAqKXZpZXcgX3NldFNv
ZnRTcGFjZVJhbmdlOnNvZnRTcGFjZVJhbmdlXTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAKaW5kZXggZDYyOWVmY2Q0NzM2
MGI0NzgyZDgzNmEwZWU4YjkyNGRiN2U2ZTBjYi4uYTc2MmJlMGEyMjcxYjg2N2Q2MjkwZGQyN2Ex
ZDBiMzlkNTIyMTRkZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
U3RyaW5nSW1wbC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5n
SW1wbC5jcHAKQEAgLTQyMCwxMCArNDIwLDEwIEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBsU3RhcnRz
V2l0aElnbm9yaW5nQVNDSUlDYXNlQmFzaWMpCiBURVNUKFdURiwgU3RyaW5nSW1wbFN0YXJ0c1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhOdWxsKQogewogICAgIGF1dG8gcmVmZXJlbmNlID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImFCY0RlRkciX3MpOwotICAgIEFTU0VSVF9GQUxT
RShyZWZlcmVuY2UtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShudWxscHRyKSk7CisgICAg
QVNTRVJUX0ZBTFNFKHJlZmVyZW5jZS0+c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKFN0cmlu
Z1ZpZXcgeyB9KSk7CiAKICAgICBhdXRvIGVtcHR5ID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiIikpOwotICAgIEFTU0VSVF9GQUxTRShlbXB0eS0+
c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIpKTsKKyAgICBBU1NFUlRfRkFMU0Uo
ZW1wdHktPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSkpOwogfQog
CiBURVNUKFdURiwgU3RyaW5nSW1wbFN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhFbXB0
eSkKQEAgLTUwOSwxMCArNTA5LDEwIEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBsRW5kc1dpdGhJZ25v
cmluZ0FTQ0lJQ2FzZUJhc2ljKQogVEVTVChXVEYsIFN0cmluZ0ltcGxFbmRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlV2l0aE51bGwpCiB7CiAgICAgYXV0byByZWZlcmVuY2UgPSBTdHJpbmdJbXBsOjpj
cmVhdGVGcm9tTGl0ZXJhbCgiYUJjRGVGRyJfcyk7Ci0gICAgQVNTRVJUX0ZBTFNFKHJlZmVyZW5j
ZS0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShudWxscHRyKSk7CisgICAgQVNTRVJUX0ZBTFNF
KHJlZmVyZW5jZS0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSkpOwog
CiAgICAgYXV0byBlbXB0eSA9IFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oIiIpKTsKLSAgICBBU1NFUlRfRkFMU0UoZW1wdHktPmVuZHNXaXRoSWdub3Jp
bmdBU0NJSUNhc2UobnVsbHB0cikpOworICAgIEFTU0VSVF9GQUxTRShlbXB0eS0+ZW5kc1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IHsgfSkpOwogfQogCiBURVNUKFdURiwgU3RyaW5n
SW1wbEVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2VXaXRoRW1wdHkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>