<?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>150555</bug_id>
          
          <creation_ts>2015-10-26 04:25:32 -0700</creation_ts>
          <short_desc>Replace 0 and NULL with nullptr in WebCore/editing.</short_desc>
          <delta_ts>2015-10-28 10:10:48 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hunseop Jeong">hs85.jeong</reporter>
          <assigned_to name="Hunseop Jeong">hs85.jeong</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1136507</commentid>
    <comment_count>0</comment_count>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-10-26 04:25:32 -0700</bug_when>
    <thetext>Use the &apos;nullptr&apos; instead of &apos;0&apos; and &apos;NULL&apos; in WebCore/editing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136508</commentid>
    <comment_count>1</comment_count>
      <attachid>264042</attachid>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-10-26 04:32:10 -0700</bug_when>
    <thetext>Created attachment 264042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136545</commentid>
    <comment_count>2</comment_count>
      <attachid>264042</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-26 10:21:16 -0700</bug_when>
    <thetext>Comment on attachment 264042
Patch

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

&gt; Source/WebCore/editing/ApplyStyleCommand.cpp:133
&gt; -    , m_isInlineElementToRemoveFunction(0)
&gt; +    , m_isInlineElementToRemoveFunction(nullptr)

Better in a case like this to move the initialization to nullptr to the class definition and remove it from all of the constructors.

&gt; Source/WebCore/editing/ApplyStyleCommand.cpp:563
&gt; +    RefPtr&lt;ContainerNode&gt; startDummySpanAncestor = nullptr;
&gt; +    RefPtr&lt;ContainerNode&gt; endDummySpanAncestor = nullptr;

No need to initialize RefPtr to null; it’s null even if you don’t specify anything. It’s only raw pointers that need nullptr.

&gt; Source/WebCore/editing/DeleteSelectionCommand.cpp:108
&gt; +    , m_startBlock(nullptr)
&gt; +    , m_endBlock(nullptr)
&gt; +    , m_typingStyle(nullptr)
&gt; +    , m_deleteIntoBlockquoteStyle(nullptr)

Better in a case like this to move the initialization to nullptr to the class definition and remove it from the constructor.

&gt; Source/WebCore/editing/EditCommand.cpp:43
&gt; +    , m_parent(nullptr)

Better in a case like this to move the initialization to nullptr to the class definition and remove it from all of the constructors.

&gt; Source/WebCore/editing/EditingStyle.cpp:178
&gt; +    , m_tagName(nullptr)

Better in a case like this to move the initialization to nullptr to the class definition and remove it from all of the constructors.

&gt; Source/WebCore/editing/EditorCommand.cpp:1680
&gt; +    : m_command(nullptr)

Better in a case like this to move the initialization to nullptr to the class definition and remove it from all of the constructors.

&gt; Source/WebCore/editing/RenderedPosition.cpp:68
&gt; +    : m_renderer(nullptr)
&gt; +    , m_inlineBox(nullptr)

Better in a case like this to move the initialization to nullptr to the class definition and remove it from all of the constructors.

&gt; Source/WebCore/editing/RenderedPosition.h:96
&gt; +    : m_renderer(nullptr)
&gt; +    , m_inlineBox(nullptr)

Better in a case like this to move the initialization to nullptr to the class definition and remove it from all of the constructors.

&gt; Source/WebCore/editing/SmartReplaceCF.cpp:40
&gt; +    static CFMutableCharacterSetRef preSmartSet = nullptr;
&gt; +    static CFMutableCharacterSetRef postSmartSet = nullptr;

No need to initialize a global variable (static) to nullptr. That will happen even if it’s not specified. Better to just remove the initialization entirely.

&gt; Source/WebCore/editing/SpellChecker.cpp:47
&gt; +    : m_checker(nullptr)

Better in a case like this to move the initialization to nullptr to the class definition and remove it from the constructor.

&gt; Source/WebCore/editing/VisibleUnits.cpp:140
&gt; +CachedLogicallyOrderedLeafBoxes::CachedLogicallyOrderedLeafBoxes() : m_rootInlineBox(nullptr) { };

Better in a case like this to move the initialization to nullptr to the class definition and remove it from the constructor. Also, there’s an extra semicolon here. And no good reason to format this all on one long line instead of normal formatting.

&gt; Source/WebCore/editing/ios/EditorIOS.mm:125
&gt; +    const char *newValue = nil;

This use of nil is incorrect. You should only use nil for Objective-C object pointers, not plain C ones. It would be OK to use nullptr here.

&gt; Source/WebCore/editing/ios/EditorIOS.mm:207
&gt; +    const Font* font = nil;

This use of nil is incorrect. You should only use nil for Objective-C object pointers, not C++ object pointers. It would be OK to use nullptr here.

&gt; Source/WebCore/editing/mac/EditorMac.mm:130
&gt; +    const Font* font = nil;

This use of nil is incorrect. You should only use nil for Objective-C object pointers, not C++ object pointers. It would be OK to use nullptr here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136786</commentid>
    <comment_count>3</comment_count>
      <attachid>264125</attachid>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-10-27 01:58:11 -0700</bug_when>
    <thetext>Created attachment 264125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136787</commentid>
    <comment_count>4</comment_count>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-10-27 01:58:44 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 264042 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264042&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/ApplyStyleCommand.cpp:133
&gt; &gt; -    , m_isInlineElementToRemoveFunction(0)
&gt; &gt; +    , m_isInlineElementToRemoveFunction(nullptr)
&gt; 
&gt; Better in a case like this to move the initialization to nullptr to the
&gt; class definition and remove it from all of the constructors.
I moved the initialization to nullptr to the class definition and remove it from all of the constructors except the &apos;m_isInlineElementToRemoveFunction(isInlineElementToRemoveFunction)&apos; in the last constructor.
&gt; 
&gt; &gt; Source/WebCore/editing/ApplyStyleCommand.cpp:563
&gt; &gt; +    RefPtr&lt;ContainerNode&gt; startDummySpanAncestor = nullptr;
&gt; &gt; +    RefPtr&lt;ContainerNode&gt; endDummySpanAncestor = nullptr;
&gt; 
&gt; No need to initialize RefPtr to null; it’s null even if you don’t specify
&gt; anything. It’s only raw pointers that need nullptr.
I see. Do I leave the RefPtr without initialization in this case?
&gt; 
&gt; &gt; Source/WebCore/editing/DeleteSelectionCommand.cpp:108
&gt; &gt; +    , m_startBlock(nullptr)
&gt; &gt; +    , m_endBlock(nullptr)
&gt; &gt; +    , m_typingStyle(nullptr)
&gt; &gt; +    , m_deleteIntoBlockquoteStyle(nullptr)
&gt; 
&gt; Better in a case like this to move the initialization to nullptr to the
&gt; class definition and remove it from the constructor.
I removed the initialization to nullptr from all of the contructors but I didn&apos;t move the initialization to class definition because it was RefPtr.
&gt; 
&gt; &gt; Source/WebCore/editing/EditCommand.cpp:43
&gt; &gt; +    , m_parent(nullptr)
&gt; 
&gt; Better in a case like this to move the initialization to nullptr to the
&gt; class definition and remove it from all of the constructors.
I moved the initialization to nullptr to the class definition and removed it from all of the contructors.
&gt; 
&gt; &gt; Source/WebCore/editing/EditingStyle.cpp:178
&gt; &gt; +    , m_tagName(nullptr)
&gt; 
&gt; Better in a case like this to move the initialization to nullptr to the
&gt; class definition and remove it from all of the constructors.
I moved the initialization to nullptr to the class definition and removed it from the contructor.
&gt; 
&gt; &gt; Source/WebCore/editing/EditorCommand.cpp:1680
&gt; &gt; +    : m_command(nullptr)
&gt; 
&gt; Better in a case like this to move the initialization to nullptr to the
&gt; class definition and remove it from all of the constructors.
I moved the initialization to nullptr to the class definition and removed it from the contructor.
&gt; 
&gt; &gt; Source/WebCore/editing/RenderedPosition.cpp:68
&gt; &gt; +    : m_renderer(nullptr)
&gt; &gt; +    , m_inlineBox(nullptr)
&gt; 
&gt; Better in a case like this to move the initialization to nullptr to the
&gt; class definition and remove it from all of the constructors.
I moved the initialization to nullptr to the class definition and removed it from all of the contructors.
&gt; 
&gt; &gt; Source/WebCore/editing/RenderedPosition.h:96
&gt; &gt; +    : m_renderer(nullptr)
&gt; &gt; +    , m_inlineBox(nullptr)
&gt; 
&gt; Better in a case like this to move the initialization to nullptr to the
&gt; class definition and remove it from all of the constructors.
I moved the initialization to nullptr to the class definition and removed it from all of the contructors.
&gt; 
&gt; &gt; Source/WebCore/editing/SmartReplaceCF.cpp:40
&gt; &gt; +    static CFMutableCharacterSetRef preSmartSet = nullptr;
&gt; &gt; +    static CFMutableCharacterSetRef postSmartSet = nullptr;
&gt; 
&gt; No need to initialize a global variable (static) to nullptr. That will
&gt; happen even if it’s not specified. Better to just remove the initialization
&gt; entirely.
I see. I removed the initialization entirely.
&gt; 
&gt; &gt; Source/WebCore/editing/SpellChecker.cpp:47
&gt; &gt; +    : m_checker(nullptr)
&gt; 
&gt; Better in a case like this to move the initialization to nullptr to the
&gt; class definition and remove it from the constructor.
I moved the initialization to nullptr to the class definition and removed it from the contructor.
&gt; 
&gt; &gt; Source/WebCore/editing/VisibleUnits.cpp:140
&gt; &gt; +CachedLogicallyOrderedLeafBoxes::CachedLogicallyOrderedLeafBoxes() : m_rootInlineBox(nullptr) { };
&gt; 
&gt; Better in a case like this to move the initialization to nullptr to the
&gt; class definition and remove it from the constructor. Also, there’s an extra
&gt; semicolon here. And no good reason to format this all on one long line
&gt; instead of normal formatting.
I moved the initialization to nullptr to the class definition and removed it from the constructor. And changed the format to follow the normal formatting.

&gt; 
&gt; &gt; Source/WebCore/editing/ios/EditorIOS.mm:125
&gt; &gt; +    const char *newValue = nil;
&gt; 
&gt; This use of nil is incorrect. You should only use nil for Objective-C object
&gt; pointers, not plain C ones. It would be OK to use nullptr here.
Changed to nullptr.
&gt; 
&gt; &gt; Source/WebCore/editing/ios/EditorIOS.mm:207
&gt; &gt; +    const Font* font = nil;
&gt; 
&gt; This use of nil is incorrect. You should only use nil for Objective-C object
&gt; pointers, not C++ object pointers. It would be OK to use nullptr here.
Ditto.
&gt; 
&gt; &gt; Source/WebCore/editing/mac/EditorMac.mm:130
&gt; &gt; +    const Font* font = nil;
&gt; 
&gt; This use of nil is incorrect. You should only use nil for Objective-C object
&gt; pointers, not C++ object pointers. It would be OK to use nullptr here.
Ditto.

Darin, Thanks for the review.
I always learn many things from you.
Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136970</commentid>
    <comment_count>5</comment_count>
      <attachid>264125</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-27 16:24:54 -0700</bug_when>
    <thetext>Comment on attachment 264125
Patch

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

&gt; Source/WebCore/editing/mac/AlternativeTextUIController.mm:53
&gt;      HashMapType::const_iterator itr = m_alternativesObjectMap.find(context);
&gt;      if (itr == m_alternativesObjectMap.end())
&gt; -        return NULL;
&gt; +        return nil;
&gt;      return itr-&gt;value.get();

I just realized that all this logic is doing the same thing get would do, since the default value is nil. We can just write:

    return m_alternativesObjectMap.get(context);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137070</commentid>
    <comment_count>6</comment_count>
      <attachid>264198</attachid>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-10-28 00:22:41 -0700</bug_when>
    <thetext>Created attachment 264198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137072</commentid>
    <comment_count>7</comment_count>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-10-28 00:40:10 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 264125 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264125&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/mac/AlternativeTextUIController.mm:53
&gt; &gt;      HashMapType::const_iterator itr = m_alternativesObjectMap.find(context);
&gt; &gt;      if (itr == m_alternativesObjectMap.end())
&gt; &gt; -        return NULL;
&gt; &gt; +        return nil;
&gt; &gt;      return itr-&gt;value.get();
&gt; 
&gt; I just realized that all this logic is doing the same thing get would do,
&gt; since the default value is nil. We can just write:
&gt; 
&gt;     return m_alternativesObjectMap.get(context);

If we used the &apos;return m_alternativesObjectMap.get(context)&apos;, we got the build break because alternativesObjectMap value is RetainPtr.
Is it correct to use the &apos;m_alternativesObjectMap.get(context).get()&apos;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137078</commentid>
    <comment_count>8</comment_count>
      <attachid>264201</attachid>
    <who name="Hunseop Jeong">hs85.jeong</who>
    <bug_when>2015-10-28 01:20:06 -0700</bug_when>
    <thetext>Created attachment 264201
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137136</commentid>
    <comment_count>9</comment_count>
      <attachid>264201</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-28 09:16:54 -0700</bug_when>
    <thetext>Comment on attachment 264201
Patch

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

&gt; Source/WebCore/editing/mac/AlternativeTextUIController.mm:50
&gt; +    return m_alternativesObjectMap.get(context).get();

Yes, this is correct.

For RefPtr, we have traits that make hash maps know how to return raw pointers instead of returning RetainPtr, but I guess we didn’t do that for RetainPtr. Someone can come back and fix that at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137161</commentid>
    <comment_count>10</comment_count>
      <attachid>264201</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-28 10:10:44 -0700</bug_when>
    <thetext>Comment on attachment 264201
Patch

Clearing flags on attachment: 264201

Committed r191671: &lt;http://trac.webkit.org/changeset/191671&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137162</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-28 10:10:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264042</attachid>
            <date>2015-10-26 04:32:10 -0700</date>
            <delta_ts>2015-10-27 01:58:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150555-20151026203120.patch</filename>
            <type>text/plain</type>
            <size>35113</size>
            <attacher name="Hunseop Jeong">hs85.jeong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTU4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE1LTEwLTI2ICBIdW5zZW9w
IEplb25nICA8aHM4NS5qZW9uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBSZXBsYWNlIDAgYW5k
IE5VTEwgd2l0aCBudWxscHRyIGluIFdlYkNvcmUvZWRpdGluZy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDU1NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
IGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OkFwcGx5U3R5
bGVDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdEFu
Y2VzdG9yc1dpdGhVbmljb2RlQmlkaSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29t
bWFuZDo6YXBwbHlJbmxpbmVTdHlsZSk6CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnNob3VsZFJlbW92
ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmFw
cGx5Q29tbWFuZFRvQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRD
b21tYW5kOjpkZWxldGVJbnNpZ25pZmljYW50VGV4dCk6CisgICAgICAgICogZWRpdGluZy9EZWxl
dGVTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlv
bkNvbW1hbmQ6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZDo6aW5pdGlhbGl6ZVN0YXJ0RW5kKToKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5kOjpFZGl0
Q29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVsZW1lbnRFcXVpdmFsZW50OjpIVE1MRWxlbWVudEVxdWl2YWxlbnQpOgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudCk6CisgICAgICAgICog
ZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb21tYW5kSXNTdXBwb3J0ZWRGcm9tTWVudU9yS2V5
QmluZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OkNvbW1hbmQ6OkNvbW1hbmQpOgor
ICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NhcmV0Q29udHJvbGxlcjo6c2V0Q2FyZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVNlbGVjdGlvbjo6ZGlyZWN0aW9uT2ZTZWxlY3Rpb24pOgorICAgICAgICAqIGVkaXRp
bmcvTWFya3VwQWNjdW11bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWFya3VwQWNjdW11
bGF0b3I6OmVudGl0eU1hc2tGb3JUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3Vt
dWxhdG9yLmg6CisgICAgICAgICogZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlbmRlcmVyRnJvbVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlcmVkUG9zaXRpb246OlJlbmRlcmVkUG9zaXRpb24pOgorICAgICAgICAqIGVkaXRpbmcvUmVu
ZGVyZWRQb3NpdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJlZFBv
c2l0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNw
YW5zKToKKyAgICAgICAgKiBlZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNldE5vZGVBdHRyaWJ1dGVDb21tYW5kOjpkb1VuYXBwbHkpOgorICAg
ICAgICAqIGVkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
U21hcnRTZXQpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0OjpTcGVsbENoZWNrUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6ZGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6OlNw
ZWxsQ2hlY2tSZXF1ZXN0OjpzZXRDaGVja2VyQW5kU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U3BlbGxDaGVja1JlcXVlc3Q6OnJlcXVlc3RlckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJD
b3JlOjpTcGVsbENoZWNrZXI6OlNwZWxsQ2hlY2tlcik6CisgICAgICAgICogZWRpdGluZy9WaXNp
YmxlUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpsZWZ0
VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWaXNpYmxlUG9z
aXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWaXNpYmxlUG9zaXRpb246OmxvY2FsQ2FyZXRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmVu
Y2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZExvZ2ljYWxseU9yZGVyZWRMZWFmQm94ZXM6
OkNhY2hlZExvZ2ljYWxseU9yZGVyZWRMZWFmQm94ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlczo6cHJldmlvdXNUZXh0T3JMaW5lQnJlYWtCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6dmlzdWFsV29yZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OnByZXZpb3VzTGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRMaW5lUG9z
aXRpb24pOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6aGln
aGVzdE5vZGVUb1JlbW92ZUluUHJ1bmluZyk6CisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGlu
Zy5oOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKToKKyAg
ICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0
aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29udGV4dENvbnRy
b2xsZXI6OmFsdGVybmF0aXZlc0ZvckNvbnRleHQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zm9udEZvclNlbGVjdGlvbik6
CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAqIGVkaXRpbmcvbWFya3Vw
Lmg6CisKIDIwMTUtMTAtMjUgIEh1bnNlb3AgSmVvbmcgIDxoczg1Lmplb25nQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFVzZSBtb2Rlcm4gZm9yLWxvb3BzIGluIFdlYkNvcmUvZWRpdGluZy4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCShyZXZp
c2lvbiAxOTE1NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIEFwcGx5U3R5bGVDb21tYW5k
OjpBcHBseVN0eWxlQ29tbWFuZChEb2MKICAgICAsIG1fZW5kKGVuZGluZ1NlbGVjdGlvbigpLmVu
ZCgpLnVwc3RyZWFtKCkpCiAgICAgLCBtX3VzZUVuZGluZ1NlbGVjdGlvbih0cnVlKQogICAgICwg
bV9yZW1vdmVPbmx5KGZhbHNlKQotICAgICwgbV9pc0lubGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0
aW9uKDApCisgICAgLCBtX2lzSW5saW5lRWxlbWVudFRvUmVtb3ZlRnVuY3Rpb24obnVsbHB0cikK
IHsKIH0KIApAQCAtMTQyLDcgKzE0Miw3IEBAIEFwcGx5U3R5bGVDb21tYW5kOjpBcHBseVN0eWxl
Q29tbWFuZChEb2MKICAgICAsIG1fZW5kKGVuZCkKICAgICAsIG1fdXNlRW5kaW5nU2VsZWN0aW9u
KGZhbHNlKQogICAgICwgbV9yZW1vdmVPbmx5KGZhbHNlKQotICAgICwgbV9pc0lubGluZUVsZW1l
bnRUb1JlbW92ZUZ1bmN0aW9uKDApCisgICAgLCBtX2lzSW5saW5lRWxlbWVudFRvUmVtb3ZlRnVu
Y3Rpb24obnVsbHB0cikKIHsKIH0KIApAQCAtMTU1LDcgKzE1NSw3IEBAIEFwcGx5U3R5bGVDb21t
YW5kOjpBcHBseVN0eWxlQ29tbWFuZChQYXMKICAgICAsIG1fdXNlRW5kaW5nU2VsZWN0aW9uKHRy
dWUpCiAgICAgLCBtX3N0eWxlZElubGluZUVsZW1lbnQoZWxlbWVudCkKICAgICAsIG1fcmVtb3Zl
T25seShyZW1vdmVPbmx5KQotICAgICwgbV9pc0lubGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9u
KDApCisgICAgLCBtX2lzSW5saW5lRWxlbWVudFRvUmVtb3ZlRnVuY3Rpb24obnVsbHB0cikKIHsK
IH0KIApAQCAtNDY4LDggKzQ2OCw4IEBAIEhUTUxFbGVtZW50KiBBcHBseVN0eWxlQ29tbWFuZDo6
c3BsaXRBbmMKICAgICBpZiAoIWJsb2NrIHx8IGJsb2NrID09IG5vZGUpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgTm9kZSogaGlnaGVzdEFuY2VzdG9yV2l0aFVuaWNvZGVCaWRpID0gMDsKLSAg
ICBOb2RlKiBuZXh0SGlnaGVzdEFuY2VzdG9yV2l0aFVuaWNvZGVCaWRpID0gMDsKKyAgICBOb2Rl
KiBoaWdoZXN0QW5jZXN0b3JXaXRoVW5pY29kZUJpZGkgPSBudWxscHRyOworICAgIE5vZGUqIG5l
eHRIaWdoZXN0QW5jZXN0b3JXaXRoVW5pY29kZUJpZGkgPSBudWxscHRyOwogICAgIGludCBoaWdo
ZXN0QW5jZXN0b3JVbmljb2RlQmlkaSA9IDA7CiAgICAgZm9yIChOb2RlKiBuID0gbm9kZS0+cGFy
ZW50Tm9kZSgpOyBuICE9IGJsb2NrOyBuID0gbi0+cGFyZW50Tm9kZSgpKSB7CiAgICAgICAgIGlu
dCB1bmljb2RlQmlkaSA9IHRvSWRlbnRpZmllcihDb21wdXRlZFN0eWxlRXh0cmFjdG9yKG4pLnBy
b3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlVbmljb2RlQmlkaSkpOwpAQCAtNDgzLDcgKzQ4Myw3IEBA
IEhUTUxFbGVtZW50KiBBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRBbmMKICAgICBpZiAoIWhpZ2hl
c3RBbmNlc3RvcldpdGhVbmljb2RlQmlkaSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBIVE1M
RWxlbWVudCogdW5zcGxpdEFuY2VzdG9yID0gMDsKKyAgICBIVE1MRWxlbWVudCogdW5zcGxpdEFu
Y2VzdG9yID0gbnVsbHB0cjsKIAogICAgIFdyaXRpbmdEaXJlY3Rpb24gaGlnaGVzdEFuY2VzdG9y
RGlyZWN0aW9uOwogICAgIGlmIChhbGxvd2VkRGlyZWN0aW9uICE9IE5hdHVyYWxXcml0aW5nRGly
ZWN0aW9uCkBAIC01NTksOCArNTU5LDggQEAgc3RhdGljIE5vZGUqIGhpZ2hlc3RFbWJlZGRpbmdB
bmNlc3RvcihObwogCiB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlKEVk
aXRpbmdTdHlsZSogc3R5bGUpCiB7Ci0gICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHN0YXJ0RHVt
bXlTcGFuQW5jZXN0b3IgPSAwOwotICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBlbmREdW1teVNw
YW5BbmNlc3RvciA9IDA7CisgICAgUmVmUHRyPENvbnRhaW5lck5vZGU+IHN0YXJ0RHVtbXlTcGFu
QW5jZXN0b3IgPSBudWxscHRyOworICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBlbmREdW1teVNw
YW5BbmNlc3RvciA9IG51bGxwdHI7CiAKICAgICAvLyB1cGRhdGUgZG9jdW1lbnQgbGF5b3V0IG9u
Y2UgYmVmb3JlIHJlbW92aW5nIHN0eWxlcwogICAgIC8vIHNvIHRoYXQgd2UgYXZvaWQgdGhlIGV4
cGVuc2Ugb2YgdXBkYXRpbmcgYmVmb3JlIGVhY2ggYW5kIGV2ZXJ5IGNhbGwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHJldmlzaW9uIDE5MTU1NikK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAkod29ya2luZyBj
b3B5KQpAQCAtNzcsMTEgKzc3LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N0eWxlZElubGlu
ZUVsZW1lbnRUb1JlbW92ZShFbGVtZW50KikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRBcHBseUlu
bGluZVN0eWxlVG9SdW4oRWRpdGluZ1N0eWxlKiwgTm9kZSogcnVuU3RhcnQsIE5vZGUqIHBhc3RF
bmROb2RlKTsKICAgICB2b2lkIHJlbW92ZUNvbmZsaWN0aW5nSW5saW5lU3R5bGVGcm9tUnVuKEVk
aXRpbmdTdHlsZSosIFJlZlB0cjxOb2RlPiYgcnVuU3RhcnQsIFJlZlB0cjxOb2RlPiYgcnVuRW5k
LCBQYXNzUmVmUHRyPE5vZGU+IHBhc3RFbmROb2RlKTsKLSAgICBib29sIHJlbW92ZUlubGluZVN0
eWxlRnJvbUVsZW1lbnQoRWRpdGluZ1N0eWxlKiwgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4sIElu
bGluZVN0eWxlUmVtb3ZhbE1vZGUgPSBSZW1vdmVJZk5lZWRlZCwgRWRpdGluZ1N0eWxlKiBleHRy
YWN0ZWRTdHlsZSA9IDApOworICAgIGJvb2wgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChF
ZGl0aW5nU3R5bGUqLCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiwgSW5saW5lU3R5bGVSZW1vdmFs
TW9kZSA9IFJlbW92ZUlmTmVlZGVkLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlID0gbnVs
bHB0cik7CiAgICAgaW5saW5lIGJvb2wgc2hvdWxkUmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVu
dChFZGl0aW5nU3R5bGUqIHN0eWxlLCBIVE1MRWxlbWVudCogZWxlbWVudCkge3JldHVybiByZW1v
dmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLCBlbGVtZW50LCBSZW1vdmVOb25lKTt9CiAg
ICAgdm9pZCByZXBsYWNlV2l0aFNwYW5PclJlbW92ZUlmV2l0aG91dEF0dHJpYnV0ZXMoSFRNTEVs
ZW1lbnQqJik7CiAgICAgYm9vbCByZW1vdmVJbXBsaWNpdGx5U3R5bGVkRWxlbWVudChFZGl0aW5n
U3R5bGUqLCBIVE1MRWxlbWVudCosIElubGluZVN0eWxlUmVtb3ZhbE1vZGUsIEVkaXRpbmdTdHls
ZSogZXh0cmFjdGVkU3R5bGUpOwotICAgIGJvb2wgcmVtb3ZlQ1NTU3R5bGUoRWRpdGluZ1N0eWxl
KiwgSFRNTEVsZW1lbnQqLCBJbmxpbmVTdHlsZVJlbW92YWxNb2RlID0gUmVtb3ZlSWZOZWVkZWQs
IEVkaXRpbmdTdHlsZSogZXh0cmFjdGVkU3R5bGUgPSAwKTsKKyAgICBib29sIHJlbW92ZUNTU1N0
eWxlKEVkaXRpbmdTdHlsZSosIEhUTUxFbGVtZW50KiwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSA9
IFJlbW92ZUlmTmVlZGVkLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlID0gbnVsbHB0cik7
CiAgICAgSFRNTEVsZW1lbnQqIGhpZ2hlc3RBbmNlc3RvcldpdGhDb25mbGljdGluZ0lubGluZVN0
eWxlKEVkaXRpbmdTdHlsZSosIE5vZGUqKTsKICAgICB2b2lkIGFwcGx5SW5saW5lU3R5bGVUb1B1
c2hEb3duKE5vZGUqLCBFZGl0aW5nU3R5bGUqKTsKICAgICB2b2lkIHB1c2hEb3duSW5saW5lU3R5
bGVBcm91bmROb2RlKEVkaXRpbmdTdHlsZSosIE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiAxOTE1NTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6
OmFwcGx5Q29tbWFuZFQKICAgICBjb21tYW5kLT5zZXRQYXJlbnQodGhpcyk7CiAgICAgY29tbWFu
ZC0+ZG9BcHBseSgpOwogICAgIGlmIChjb21tYW5kLT5pc1NpbXBsZUVkaXRDb21tYW5kKCkpIHsK
LSAgICAgICAgY29tbWFuZC0+c2V0UGFyZW50KDApOworICAgICAgICBjb21tYW5kLT5zZXRQYXJl
bnQobnVsbHB0cik7CiAgICAgICAgIGVuc3VyZUNvbXBvc2l0aW9uKCktPmFwcGVuZCh0b1NpbXBs
ZUVkaXRDb21tYW5kKGNvbW1hbmQuZ2V0KCkpKTsKICAgICB9CiAgICAgbV9jb21tYW5kcy5hcHBl
bmQoY29tbWFuZC5yZWxlYXNlKCkpOwpAQCAtODIzLDcgKzgyMyw3IEBAIHZvaWQgQ29tcG9zaXRl
RWRpdENvbW1hbmQ6OmRlbGV0ZUluc2lnbmkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWdu
ZWQgcmVtb3ZlZCA9IDA7Ci0gICAgSW5saW5lVGV4dEJveCogcHJldkJveCA9IDA7CisgICAgSW5s
aW5lVGV4dEJveCogcHJldkJveCA9IG51bGxwdHI7CiAgICAgU3RyaW5nIHN0cjsKIAogICAgIC8v
IFRoaXMgbG9vcCBzdHJ1Y3R1cmUgd29ya3MgdG8gcHJvY2VzcyBhbGwgZ2FwcyBwcmVjZWRpbmcg
YSBib3gsCkBAIC04NTIsNyArODUyLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVs
ZXRlSW5zaWduaQogICAgICAgICAgICAgaWYgKCsrc29ydGVkVGV4dEJveGVzUG9zaXRpb24gPCBz
b3J0ZWRUZXh0Qm94ZXMuc2l6ZSgpKQogICAgICAgICAgICAgICAgIGJveCA9IHNvcnRlZFRleHRC
b3hlc1tzb3J0ZWRUZXh0Qm94ZXNQb3NpdGlvbl07CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgYm94ID0gMDsKKyAgICAgICAgICAgICAgICBib3ggPSBudWxscHRyOwogICAgICAg
ICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDE5MTU1NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgz
LDEwICs4MywxMCBAQCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpEZWxldGVTZWxlY3Rpb25DCiAg
ICAgLCBtX3BydW5lU3RhcnRCbG9ja0lmTmVjZXNzYXJ5KGZhbHNlKQogICAgICwgbV9zdGFydHNB
dEVtcHR5TGluZShmYWxzZSkKICAgICAsIG1fc2FuaXRpemVNYXJrdXAoc2FuaXRpemVNYXJrdXAp
Ci0gICAgLCBtX3N0YXJ0QmxvY2soMCkKLSAgICAsIG1fZW5kQmxvY2soMCkKLSAgICAsIG1fdHlw
aW5nU3R5bGUoMCkKLSAgICAsIG1fZGVsZXRlSW50b0Jsb2NrcXVvdGVTdHlsZSgwKQorICAgICwg
bV9zdGFydEJsb2NrKG51bGxwdHIpCisgICAgLCBtX2VuZEJsb2NrKG51bGxwdHIpCisgICAgLCBt
X3R5cGluZ1N0eWxlKG51bGxwdHIpCisgICAgLCBtX2RlbGV0ZUludG9CbG9ja3F1b3RlU3R5bGUo
bnVsbHB0cikKIHsKIH0KIApAQCAtMTAyLDE3ICsxMDIsMTcgQEAgRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZDo6RGVsZXRlU2VsZWN0aW9uQwogICAgICwgbV9zdGFydHNBdEVtcHR5TGluZShmYWxzZSkK
ICAgICAsIG1fc2FuaXRpemVNYXJrdXAoc2FuaXRpemVNYXJrdXApCiAgICAgLCBtX3NlbGVjdGlv
blRvRGVsZXRlKHNlbGVjdGlvbikKLSAgICAsIG1fc3RhcnRCbG9jaygwKQotICAgICwgbV9lbmRC
bG9jaygwKQotICAgICwgbV90eXBpbmdTdHlsZSgwKQotICAgICwgbV9kZWxldGVJbnRvQmxvY2tx
dW90ZVN0eWxlKDApCisgICAgLCBtX3N0YXJ0QmxvY2sobnVsbHB0cikKKyAgICAsIG1fZW5kQmxv
Y2sobnVsbHB0cikKKyAgICAsIG1fdHlwaW5nU3R5bGUobnVsbHB0cikKKyAgICAsIG1fZGVsZXRl
SW50b0Jsb2NrcXVvdGVTdHlsZShudWxscHRyKQogewogfQogCiB2b2lkIERlbGV0ZVNlbGVjdGlv
bkNvbW1hbmQ6OmluaXRpYWxpemVTdGFydEVuZChQb3NpdGlvbiYgc3RhcnQsIFBvc2l0aW9uJiBl
bmQpCiB7Ci0gICAgTm9kZSogc3RhcnRTcGVjaWFsQ29udGFpbmVyID0gMDsKLSAgICBOb2RlKiBl
bmRTcGVjaWFsQ29udGFpbmVyID0gMDsKKyAgICBOb2RlKiBzdGFydFNwZWNpYWxDb250YWluZXIg
PSBudWxscHRyOworICAgIE5vZGUqIGVuZFNwZWNpYWxDb250YWluZXIgPSBudWxscHRyOwogIAog
ICAgIHN0YXJ0ID0gbV9zZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpOwogICAgIGVuZCA9IG1fc2Vs
ZWN0aW9uVG9EZWxldGUuZW5kKCk7CkBAIC0xMjksOCArMTI5LDggQEAgdm9pZCBEZWxldGVTZWxl
Y3Rpb25Db21tYW5kOjppbml0aWFsaXplUwogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgd2hp
bGUgKDEpIHsKLSAgICAgICAgc3RhcnRTcGVjaWFsQ29udGFpbmVyID0gMDsKLSAgICAgICAgZW5k
U3BlY2lhbENvbnRhaW5lciA9IDA7CisgICAgICAgIHN0YXJ0U3BlY2lhbENvbnRhaW5lciA9IG51
bGxwdHI7CisgICAgICAgIGVuZFNwZWNpYWxDb250YWluZXIgPSBudWxscHRyOwogICAgIAogICAg
ICAgICBQb3NpdGlvbiBzID0gcG9zaXRpb25CZWZvcmVDb250YWluaW5nU3BlY2lhbEVsZW1lbnQo
c3RhcnQsICZzdGFydFNwZWNpYWxDb250YWluZXIpOwogICAgICAgICBQb3NpdGlvbiBlID0gcG9z
aXRpb25BZnRlckNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudChlbmQsICZlbmRTcGVjaWFsQ29udGFp
bmVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCShyZXZpc2lv
biAxOTE1NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEVkaXRD
b21tYW5kOjpFZGl0Q29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIEVkaXRBY3Rpb24gZWRpdGlu
Z0FjdGlvbikKICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX3BhcmVudCgwKQor
ICAgICwgbV9wYXJlbnQobnVsbHB0cikKICAgICAsIG1fZWRpdGluZ0FjdGlvbihlZGl0aW5nQWN0
aW9uKQogewogICAgIEFTU0VSVChkb2N1bWVudC5mcmFtZSgpKTsKQEAgLTUwLDcgKzUwLDcgQEAg
RWRpdENvbW1hbmQ6OkVkaXRDb21tYW5kKERvY3VtZW50JiBkb2N1bQogCiBFZGl0Q29tbWFuZDo6
RWRpdENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBz
dGFydGluZ1NlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5nU2VsZWN0aW9u
KQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fcGFyZW50KDApCisgICAgLCBt
X3BhcmVudChudWxscHRyKQogewogICAgIEFTU0VSVChkb2N1bWVudC5mcmFtZSgpKTsKICAgICBz
ZXRTdGFydGluZ1NlbGVjdGlvbihzdGFydGluZ1NlbGVjdGlvbik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCShyZXZpc2lvbiAxOTE1NTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NSw3
ICsxNzUsNyBAQCBwcm90ZWN0ZWQ6CiAKIEhUTUxFbGVtZW50RXF1aXZhbGVudDo6SFRNTEVsZW1l
bnRFcXVpdmFsZW50KENTU1Byb3BlcnR5SUQgaWQpCiAgICAgOiBtX3Byb3BlcnR5SUQoaWQpCi0g
ICAgLCBtX3RhZ05hbWUoMCkKKyAgICAsIG1fdGFnTmFtZShudWxscHRyKQogewogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgJKHJldmlzaW9uIDE5MTU1NikKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzNiw3ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gY29uZmxpY3Rz
V2l0aElubGluZVN0eWxlT2ZFbGVtZW50KGVsZW1lbnQsICZuZXdJbmxpbmVTdHlsZSwgZXh0cmFj
dGVkU3R5bGUpOwogICAgIH0KLSAgICBib29sIGNvbmZsaWN0c1dpdGhJbXBsaWNpdFN0eWxlT2ZF
bGVtZW50KEhUTUxFbGVtZW50KiwgRWRpdGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSA9IDAsIFNo
b3VsZEV4dHJhY3RNYXRjaGluZ1N0eWxlID0gRG9Ob3RFeHRyYWN0TWF0Y2hpbmdTdHlsZSkgY29u
c3Q7CisgICAgYm9vbCBjb25mbGljdHNXaXRoSW1wbGljaXRTdHlsZU9mRWxlbWVudChIVE1MRWxl
bWVudCosIEVkaXRpbmdTdHlsZSogZXh0cmFjdGVkU3R5bGUgPSBudWxscHRyLCBTaG91bGRFeHRy
YWN0TWF0Y2hpbmdTdHlsZSA9IERvTm90RXh0cmFjdE1hdGNoaW5nU3R5bGUpIGNvbnN0OwogICAg
IGJvb2wgY29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkF0dHJpYnV0ZXMoSFRNTEVsZW1lbnQq
KSBjb25zdDsKICAgICBib29sIGV4dHJhY3RDb25mbGljdGluZ0ltcGxpY2l0U3R5bGVPZkF0dHJp
YnV0ZXMoSFRNTEVsZW1lbnQqLCBTaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24sIEVkaXRp
bmdTdHlsZSogZXh0cmFjdGVkU3R5bGUsCiAgICAgICAgICAgICBWZWN0b3I8UXVhbGlmaWVkTmFt
ZT4mIGNvbmZsaWN0aW5nQXR0cmlidXRlcywgU2hvdWxkRXh0cmFjdE1hdGNoaW5nU3R5bGUpIGNv
bnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZpc2lvbiAxOTE1NTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsMTQg
KzIwNCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIENvbW1hbmQoKTsKICAg
ICAgICAgQ29tbWFuZChjb25zdCBFZGl0b3JJbnRlcm5hbENvbW1hbmQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBQYXNzUmVmUHRyPEZyYW1lPik7CiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBleGVjdXRlKGNvbnN0IFN0cmluZyYgcGFyYW1ldGVyID0gU3RyaW5nKCksIEV2ZW50KiB0cmln
Z2VyaW5nRXZlbnQgPSAwKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVj
dXRlKGNvbnN0IFN0cmluZyYgcGFyYW1ldGVyID0gU3RyaW5nKCksIEV2ZW50KiB0cmlnZ2VyaW5n
RXZlbnQgPSBudWxscHRyKSBjb25zdDsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBleGVj
dXRlKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpIGNvbnN0OwogCiAgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaXNTdXBwb3J0ZWQoKSBjb25zdDsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc0VuYWJsZWQoRXZlbnQqIHRyaWdnZXJpbmdFdmVudCA9IDApIGNvbnN0OworICAgICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGlzRW5hYmxlZChFdmVudCogdHJpZ2dlcmluZ0V2ZW50ID0gbnVs
bHB0cikgY29uc3Q7CiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgVHJpU3RhdGUgc3RhdGUoRXZl
bnQqIHRyaWdnZXJpbmdFdmVudCA9IDApIGNvbnN0OwotICAgICAgICBTdHJpbmcgdmFsdWUoRXZl
bnQqIHRyaWdnZXJpbmdFdmVudCA9IDApIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBU
cmlTdGF0ZSBzdGF0ZShFdmVudCogdHJpZ2dlcmluZ0V2ZW50ID0gbnVsbHB0cikgY29uc3Q7Cisg
ICAgICAgIFN0cmluZyB2YWx1ZShFdmVudCogdHJpZ2dlcmluZ0V2ZW50ID0gbnVsbHB0cikgY29u
c3Q7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1RleHRJbnNlcnRpb24oKSBjb25z
dDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCShyZXZp
c2lvbiAxOTE1NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjc3LDcgKzE2NzcsNyBAQCBib29sIEVkaXRvcjo6Y29tbWFu
ZElzU3VwcG9ydGVkRnJvbU1lbnVPCiB9CiAKIEVkaXRvcjo6Q29tbWFuZDo6Q29tbWFuZCgpCi0g
ICAgOiBtX2NvbW1hbmQoMCkKKyAgICA6IG1fY29tbWFuZChudWxscHRyKQogewogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gMTkx
NTU2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIERyYWdDYXJldENvbnRyb2xsZXI6OnNl
dENhcmV0UG9zaXRpCiAgICAgICAgIGludmFsaWRhdGVDYXJldFJlY3Qobm9kZSk7CiAgICAgbV9w
b3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIHNldENhcmV0UmVjdE5lZWRzVXBkYXRlKCk7Ci0gICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gMDsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBudWxscHRy
OwogICAgIGlmIChOb2RlKiBub2RlID0gbV9wb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRlcHJl
Y2F0ZWROb2RlKCkpIHsKICAgICAgICAgaW52YWxpZGF0ZUNhcmV0UmVjdChub2RlKTsKICAgICAg
ICAgZG9jdW1lbnQgPSAmbm9kZS0+ZG9jdW1lbnQoKTsKQEAgLTU1Miw4ICs1NTIsOCBAQCBUZXh0
RGlyZWN0aW9uIEZyYW1lU2VsZWN0aW9uOjpkaXJlY3Rpb25PCiAKIFRleHREaXJlY3Rpb24gRnJh
bWVTZWxlY3Rpb246OmRpcmVjdGlvbk9mU2VsZWN0aW9uKCkKIHsKLSAgICBJbmxpbmVCb3gqIHN0
YXJ0Qm94ID0gMDsKLSAgICBJbmxpbmVCb3gqIGVuZEJveCA9IDA7CisgICAgSW5saW5lQm94KiBz
dGFydEJveCA9IG51bGxwdHI7CisgICAgSW5saW5lQm94KiBlbmRCb3ggPSBudWxscHRyOwogICAg
IGludCB1bnVzZWRPZmZzZXQ7CiAgICAgLy8gQ2FjaGUgdGhlIFZpc2libGVQb3NpdGlvbnMgYmVj
YXVzZSB2aXNpYmxlU3RhcnQoKSBhbmQgdmlzaWJsZUVuZCgpCiAgICAgLy8gY2FuIGNhdXNlIGxh
eW91dCwgd2hpY2ggaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW52YWxpZGF0ZSBsaW5lYm94ZXMuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAkocmV2
aXNpb24gMTkxNTU2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNyw3ICszMjcsNyBAQCBFbnRpdHlNYXNrIE1hcmt1
cEFjY3VtdWxhdG9yOjplbnRpdHlNYXNrCiAgICAgaWYgKCF0ZXh0LmRvY3VtZW50KCkuaXNIVE1M
RG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIEVudGl0eU1hc2tJblBDREFUQTsKIAotICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUqIHBhcmVudE5hbWUgPSAwOworICAgIGNvbnN0IFF1YWxpZmllZE5h
bWUqIHBhcmVudE5hbWUgPSBudWxscHRyOwogICAgIGlmICh0ZXh0LnBhcmVudEVsZW1lbnQoKSkK
ICAgICAgICAgcGFyZW50TmFtZSA9ICZ0ZXh0LnBhcmVudEVsZW1lbnQoKS0+dGFnUU5hbWUoKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuaAkocmV2
aXNpb24gMTkxNTU2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIGVudW0gRW50aXR5TWFzayB7CiAv
LyBGSVhNRTogTm9uY29weWFibGU/CiBjbGFzcyBNYXJrdXBBY2N1bXVsYXRvciB7CiBwdWJsaWM6
Ci0gICAgTWFya3VwQWNjdW11bGF0b3IoVmVjdG9yPE5vZGUqPiosIEVBYnNvbHV0ZVVSTHMsIGNv
bnN0IFJhbmdlKiA9IDAsIEVGcmFnbWVudFNlcmlhbGl6YXRpb24gPSBIVE1MRnJhZ21lbnRTZXJp
YWxpemF0aW9uKTsKKyAgICBNYXJrdXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiwgRUFic29s
dXRlVVJMcywgY29uc3QgUmFuZ2UqID0gbnVsbHB0ciwgRUZyYWdtZW50U2VyaWFsaXphdGlvbiA9
IEhUTUxGcmFnbWVudFNlcmlhbGl6YXRpb24pOwogICAgIHZpcnR1YWwgfk1hcmt1cEFjY3VtdWxh
dG9yKCk7CiAKICAgICBTdHJpbmcgc2VyaWFsaXplTm9kZXMoTm9kZSYgdGFyZ2V0Tm9kZSwgRUNo
aWxkcmVuT25seSwgVmVjdG9yPFF1YWxpZmllZE5hbWU+KiB0YWdOYW1lc1RvU2tpcCA9IG51bGxw
dHIpOwpAQCAtODUsNyArODUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGFwcGVu
ZFRleHQoU3RyaW5nQnVpbGRlciYsIGNvbnN0IFRleHQmKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kRWxlbWVudChTdHJpbmdCdWlsZGVyJiwgY29uc3QgRWxlbWVudCYsIE5hbWVzcGFjZXMqKTsK
IAotICAgIHZvaWQgYXBwZW5kU3RhcnRUYWcoY29uc3QgTm9kZSYsIE5hbWVzcGFjZXMqID0gMCk7
CisgICAgdm9pZCBhcHBlbmRTdGFydFRhZyhjb25zdCBOb2RlJiwgTmFtZXNwYWNlcyogPSBudWxs
cHRyKTsKIAogICAgIHZvaWQgYXBwZW5kT3BlblRhZyhTdHJpbmdCdWlsZGVyJiwgY29uc3QgRWxl
bWVudCYsIE5hbWVzcGFjZXMqKTsKICAgICB2b2lkIGFwcGVuZENsb3NlVGFnKFN0cmluZ0J1aWxk
ZXImLCBjb25zdCBFbGVtZW50Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRl
cmVkUG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVu
ZGVyZWRQb3NpdGlvbi5jcHAJKHJldmlzaW9uIDE5MTU1NikKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyRnJvbVBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBBU1NFUlQo
cG9zaXRpb24uaXNOb3ROdWxsKCkpOwotICAgIE5vZGUqIHJlbmRlcmVyTm9kZSA9IDA7CisgICAg
Tm9kZSogcmVuZGVyZXJOb2RlID0gbnVsbHB0cjsKICAgICBzd2l0Y2ggKHBvc2l0aW9uLmFuY2hv
clR5cGUoKSkgewogICAgIGNhc2UgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjoK
ICAgICAgICAgcmVuZGVyZXJOb2RlID0gcG9zaXRpb24uY29tcHV0ZU5vZGVBZnRlclBvc2l0aW9u
KCk7CkBAIC02NCw4ICs2NCw4IEBAIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ckZyb20KIH0KIAogUmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHBvc2l0aW9uKQotICAgIDogbV9yZW5kZXJlcigwKQotICAgICwgbV9pbmxp
bmVCb3goMCkKKyAgICA6IG1fcmVuZGVyZXIobnVsbHB0cikKKyAgICAsIG1faW5saW5lQm94KG51
bGxwdHIpCiAgICAgLCBtX29mZnNldCgwKQogICAgICwgbV9wcmV2TGVhZkNoaWxkKHVuY2FjaGVk
SW5saW5lQm94KCkpCiAgICAgLCBtX25leHRMZWFmQ2hpbGQodW5jYWNoZWRJbmxpbmVCb3goKSkK
QEAgLTgwLDggKzgwLDggQEAgUmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbihjb25z
dAogfQogCiBSZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJlZFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9u
JiBwb3NpdGlvbiwgRUFmZmluaXR5IGFmZmluaXR5KQotICAgIDogbV9yZW5kZXJlcigwKQotICAg
ICwgbV9pbmxpbmVCb3goMCkKKyAgICA6IG1fcmVuZGVyZXIobnVsbHB0cikKKyAgICAsIG1faW5s
aW5lQm94KG51bGxwdHIpCiAgICAgLCBtX29mZnNldCgwKQogICAgICwgbV9wcmV2TGVhZkNoaWxk
KHVuY2FjaGVkSW5saW5lQm94KCkpCiAgICAgLCBtX25leHRMZWFmQ2hpbGQodW5jYWNoZWRJbmxp
bmVCb3goKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5o
CShyZXZpc2lvbiAxOTE1NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9z
aXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgUG9z
aXRpb24gcG9zaXRpb25BdExlZnRCb3VuZGFyeU9mQmlEaVJ1bigpIGNvbnN0OwogICAgIFBvc2l0
aW9uIHBvc2l0aW9uQXRSaWdodEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3Q7CiAKLSAgICBJbnRS
ZWN0IGFic29sdXRlUmVjdChMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSAwKSBj
b25zdDsKKyAgICBJbnRSZWN0IGFic29sdXRlUmVjdChMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9F
bmRPZkxpbmUgPSBudWxscHRyKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgUmVuZGVyZWRQb3NpdGlvbiYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC05
Miw4ICs5Miw4IEBAIHByaXZhdGU6CiB9OwogCiBpbmxpbmUgUmVuZGVyZWRQb3NpdGlvbjo6UmVu
ZGVyZWRQb3NpdGlvbigpCi0gICAgOiBtX3JlbmRlcmVyKDApCi0gICAgLCBtX2lubGluZUJveCgw
KQorICAgIDogbV9yZW5kZXJlcihudWxscHRyKQorICAgICwgbV9pbmxpbmVCb3gobnVsbHB0cikK
ICAgICAsIG1fb2Zmc2V0KDApCiAgICAgLCBtX3ByZXZMZWFmQ2hpbGQodW5jYWNoZWRJbmxpbmVC
b3goKSkKICAgICAsIG1fbmV4dExlYWZDaGlsZCh1bmNhY2hlZElubGluZUJveCgpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAJKHJldmlzaW9uIDE5MTU1NikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzUsNyArNzc1LDcgQEAgc3Rh
dGljIGJvb2wgaGFuZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydAogLy8gb3IgYXQgY29weSB0aW1l
Lgogdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyhJbnNlcnRl
ZE5vZGVzJiBpbnNlcnRlZE5vZGVzKQogewotICAgIEhUTUxFbGVtZW50KiB3cmFwcGluZ1N0eWxl
U3BhbiA9IDA7CisgICAgSFRNTEVsZW1lbnQqIHdyYXBwaW5nU3R5bGVTcGFuID0gbnVsbHB0cjsK
ICAgICAvLyBUaGUgc3R5bGUgc3BhbiB0aGF0IGNvbnRhaW5zIHRoZSBzb3VyY2UgZG9jdW1lbnQn
cyBkZWZhdWx0IHN0eWxlIHNob3VsZCBiZSBhdAogICAgIC8vIHRoZSB0b3Agb2YgdGhlIGZyYWdt
ZW50LCBidXQgTWFpbCBzb21ldGltZXMgYWRkcyBhIHdyYXBwZXIgKGZvciBQYXN0ZSBBcyBRdW90
YXRpb24pLAogICAgIC8vIHNvIHNlYXJjaCBmb3IgdGhlIHRvcCBsZXZlbCBzdHlsZSBzcGFuIGlu
c3RlYWQgb2YgYXNzdW1pbmcgaXQncyBhdCB0aGUgdG9wLgpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDE5
MTU1NikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgU2V0Tm9kZUF0dHJpYnV0
ZUNvbW1hbmQ6OmRvQXBwbHkoKQogdm9pZCBTZXROb2RlQXR0cmlidXRlQ29tbWFuZDo6ZG9VbmFw
cGx5KCkKIHsKICAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShtX2F0dHJpYnV0ZSwgbV9vbGRW
YWx1ZSk7Ci0gICAgQXRvbWljU3RyaW5nSW1wbCogbnVsbFN0cmluZyA9IDA7CisgICAgQXRvbWlj
U3RyaW5nSW1wbCogbnVsbFN0cmluZyA9IG51bGxwdHI7CiAgICAgbV9vbGRWYWx1ZSA9IG51bGxT
dHJpbmc7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlQ0Yu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlQ0Yu
Y3BwCShyZXZpc2lvbiAxOTE1NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVw
bGFjZUNGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOCArMzYsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgZ2V0U21hcnRTZXQoYm9v
bCBpc1ByZXZpb3VzQ2hhcmFjdGVyKQogewotICAgIHN0YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJT
ZXRSZWYgcHJlU21hcnRTZXQgPSBOVUxMOyAKLSAgICBzdGF0aWMgQ0ZNdXRhYmxlQ2hhcmFjdGVy
U2V0UmVmIHBvc3RTbWFydFNldCA9IE5VTEw7CisgICAgc3RhdGljIENGTXV0YWJsZUNoYXJhY3Rl
clNldFJlZiBwcmVTbWFydFNldCA9IG51bGxwdHI7CisgICAgc3RhdGljIENGTXV0YWJsZUNoYXJh
Y3RlclNldFJlZiBwb3N0U21hcnRTZXQgPSBudWxscHRyOwogICAgIENGTXV0YWJsZUNoYXJhY3Rl
clNldFJlZiBzbWFydFNldCA9IGlzUHJldmlvdXNDaGFyYWN0ZXIgPyBwcmVTbWFydFNldCA6IHBv
c3RTbWFydFNldDsKICAgICBpZiAoIXNtYXJ0U2V0KSB7CiAgICAgICAgIHNtYXJ0U2V0ID0gQ0ZD
aGFyYWN0ZXJTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAkocmV2aXNpb24gMTkxNTU2KQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw3ICs0NCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNwZWxsQ2hlY2tSZXF1ZXN0
OjpTcGVsbENoZWNrUmVxdWVzdChQYXNzUmVmUHRyPFJhbmdlPiBjaGVja2luZ1JhbmdlLCBQYXNz
UmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBUZXh0Q2hl
Y2tpbmdUeXBlTWFzayBtYXNrLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSkK
LSAgICA6IG1fY2hlY2tlcigwKQorICAgIDogbV9jaGVja2VyKG51bGxwdHIpCiAgICAgLCBtX2No
ZWNraW5nUmFuZ2UoY2hlY2tpbmdSYW5nZSkKICAgICAsIG1fcGFyYWdyYXBoUmFuZ2UocGFyYWdy
YXBoUmFuZ2UpCiAgICAgLCBtX3Jvb3RFZGl0YWJsZUVsZW1lbnQobV9jaGVja2luZ1JhbmdlLT5z
dGFydENvbnRhaW5lcigpLnJvb3RFZGl0YWJsZUVsZW1lbnQoKSkKQEAgLTc5LDcgKzc5LDcgQEAg
dm9pZCBTcGVsbENoZWNrUmVxdWVzdDo6ZGlkU3VjY2VlZChjb25zdAogICAgIGlmICghbV9jaGVj
a2VyKQogICAgICAgICByZXR1cm47CiAgICAgbV9jaGVja2VyLT5kaWRDaGVja1N1Y2NlZWQobV9y
ZXF1ZXN0RGF0YS5zZXF1ZW5jZSgpLCByZXN1bHRzKTsKLSAgICBtX2NoZWNrZXIgPSAwOworICAg
IG1fY2hlY2tlciA9IG51bGxwdHI7CiB9CiAKIHZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OmRpZENh
bmNlbCgpCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OmRpZENhbmNl
bCgpCiAgICAgaWYgKCFtX2NoZWNrZXIpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NoZWNrZXIt
PmRpZENoZWNrQ2FuY2VsKG1fcmVxdWVzdERhdGEuc2VxdWVuY2UoKSk7Ci0gICAgbV9jaGVja2Vy
ID0gMDsKKyAgICBtX2NoZWNrZXIgPSBudWxscHRyOwogfQogCiB2b2lkIFNwZWxsQ2hlY2tSZXF1
ZXN0OjpzZXRDaGVja2VyQW5kU2VxdWVuY2UoU3BlbGxDaGVja2VyKiByZXF1ZXN0ZXIsIGludCBz
ZXF1ZW5jZSkKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFNwZWxsQ2hlY2tSZXF1ZXN0OjpzZXRD
aGVja2VyQW5kU2VxCiAKIHZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OnJlcXVlc3RlckRlc3Ryb3ll
ZCgpCiB7Ci0gICAgbV9jaGVja2VyID0gMDsKKyAgICBtX2NoZWNrZXIgPSBudWxscHRyOwogfQog
CiBTcGVsbENoZWNrZXI6OlNwZWxsQ2hlY2tlcihGcmFtZSYgZnJhbWUpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCShyZXZpc2lvbiAxOTE1NTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3Myw3ICsxNzMsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1
YWxseURpCiAKICAgICAgICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IHByaW1hcnlEaXJl
Y3Rpb24pIHsKICAgICAgICAgICAgICAgICBpZiAoIXByZXZCb3gpIHsKLSAgICAgICAgICAgICAg
ICAgICAgSW5saW5lQm94KiBsb2dpY2FsU3RhcnQgPSAwOworICAgICAgICAgICAgICAgICAgICBJ
bmxpbmVCb3gqIGxvZ2ljYWxTdGFydCA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChwcmltYXJ5RGlyZWN0aW9uID09IExUUiA/IGJveC0+cm9vdCgpLmdldExvZ2ljYWxTdGFydEJv
eFdpdGhOb2RlKGxvZ2ljYWxTdGFydCkgOiBib3gtPnJvb3QoKS5nZXRMb2dpY2FsRW5kQm94V2l0
aE5vZGUobG9naWNhbFN0YXJ0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgYm94ID0gbG9n
aWNhbFN0YXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5yZW5k
ZXJlcigpOwpAQCAtMzM4LDcgKzMzOCw3IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6cmln
aHRWaXN1YWxseUQKIAogICAgICAgICAgICAgaWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gcHJpbWFy
eURpcmVjdGlvbikgewogICAgICAgICAgICAgICAgIGlmICghbmV4dEJveCkgewotICAgICAgICAg
ICAgICAgICAgICBJbmxpbmVCb3gqIGxvZ2ljYWxFbmQgPSAwOworICAgICAgICAgICAgICAgICAg
ICBJbmxpbmVCb3gqIGxvZ2ljYWxFbmQgPSBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICBp
ZiAocHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBib3gtPnJvb3QoKS5nZXRMb2dpY2FsRW5kQm94
V2l0aE5vZGUobG9naWNhbEVuZCkgOiBib3gtPnJvb3QoKS5nZXRMb2dpY2FsU3RhcnRCb3hXaXRo
Tm9kZShsb2dpY2FsRW5kKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgYm94ID0gbG9naWNh
bEVuZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIo
KTsKQEAgLTYwMCw3ICs2MDAsNyBAQCBVQ2hhcjMyIFZpc2libGVQb3NpdGlvbjo6Y2hhcmFjdGVy
QWZ0ZXIoCiBMYXlvdXRSZWN0IFZpc2libGVQb3NpdGlvbjo6bG9jYWxDYXJldFJlY3QoUmVuZGVy
T2JqZWN0KiYgcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAgaWYgKG1fZGVlcFBvc2l0aW9uLmlzTnVs
bCgpKSB7Ci0gICAgICAgIHJlbmRlcmVyID0gMDsKKyAgICAgICAgcmVuZGVyZXIgPSBudWxscHRy
OwogICAgICAgICByZXR1cm4gSW50UmVjdCgpOwogICAgIH0KICAgICBOb2RlKiBub2RlID0gbV9k
ZWVwUG9zaXRpb24uYW5jaG9yTm9kZSgpOwpAQCAtNzE0LDcgKzcxNCw3IEBAIGJvb2wgc2V0RW5k
KFJhbmdlICpyLCBjb25zdCBWaXNpYmxlUG9zaXQKIEVsZW1lbnQqIGVuY2xvc2luZ0Jsb2NrRmxv
d0VsZW1lbnQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCiB7CiAgICAg
aWYgKHZpc2libGVQb3NpdGlvbi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmV0dXJuIGRlcHJlY2F0ZWRFbmNsb3NpbmdCbG9j
a0Zsb3dFbGVtZW50KHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWRO
b2RlKCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAko
cmV2aXNpb24gMTkxNTU2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8SW5saW5lQm94Kj4gbV9sZWFmQm94ZXM7CiB9OwogCi1DYWNoZWRMb2dpY2FsbHlPcmRlcmVk
TGVhZkJveGVzOjpDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzKCkgOiBtX3Jvb3RJbmxp
bmVCb3goMCkgeyB9OworQ2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlczo6Q2FjaGVkTG9n
aWNhbGx5T3JkZXJlZExlYWZCb3hlcygpIDogbV9yb290SW5saW5lQm94KG51bGxwdHIpIHsgfTsK
IAogY29uc3QgSW5saW5lQm94KiBDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzOjpwcmV2
aW91c1RleHRPckxpbmVCcmVha0JveChjb25zdCBSb290SW5saW5lQm94KiByb290LCBjb25zdCBJ
bmxpbmVUZXh0Qm94KiBib3gpCiB7CkBAIC0zNDYsOSArMzQ2LDkgQEAgc3RhdGljIFZpc2libGVQ
b3NpdGlvbiB2aXN1YWxXb3JkUG9zaXRpbwogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KCk7CiAKICAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uID0gZGlyZWN0aW9uT2ZFbmNs
b3NpbmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7Ci0gICAgSW5saW5l
Qm94KiBwcmV2aW91c2x5VmlzaXRlZEJveCA9IDA7CisgICAgSW5saW5lQm94KiBwcmV2aW91c2x5
VmlzaXRlZEJveCA9IG51bGxwdHI7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnQgPSB2aXNp
YmxlUG9zaXRpb247Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIgPSAwOworICAgIFRleHRC
cmVha0l0ZXJhdG9yKiBpdGVyID0gbnVsbHB0cjsKIAogICAgIENhY2hlZExvZ2ljYWxseU9yZGVy
ZWRMZWFmQm94ZXMgbGVhZkJveGVzOwogICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gc3RyaW5nOwpA
QCAtOTU3LDcgKzk1Nyw3IEBAIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVQb3NpdGlvbihj
b24KICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7
CiAKLSAgICBSb290SW5saW5lQm94KiByb290ID0gMDsKKyAgICBSb290SW5saW5lQm94KiByb290
ID0gbnVsbHB0cjsKICAgICBJbmxpbmVCb3gqIGJveDsKICAgICBpbnQgaWdub3JlZENhcmV0T2Zm
c2V0OwogICAgIHZpc2libGVQb3NpdGlvbi5nZXRJbmxpbmVCb3hBbmRPZmZzZXQoYm94LCBpZ25v
cmVkQ2FyZXRPZmZzZXQpOwpAQCAtOTY2LDcgKzk2Niw3IEBAIFZpc2libGVQb3NpdGlvbiBwcmV2
aW91c0xpbmVQb3NpdGlvbihjb24KICAgICAgICAgLy8gV2Ugd2FudCB0byBza2lwIHplcm8gaGVp
Z2h0IGJveGVzLgogICAgICAgICAvLyBUaGlzIGNvdWxkIGhhcHBlbiBpbiBjYXNlIGl0IGlzIGEg
VHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LgogICAgICAgICBpZiAoIXJvb3QgfHwgIXJvb3Qt
PmxvZ2ljYWxIZWlnaHQoKSB8fCAhcm9vdC0+Zmlyc3RMZWFmQ2hpbGQoKSkKLSAgICAgICAgICAg
IHJvb3QgPSAwOworICAgICAgICAgICAgcm9vdCA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYg
KCFyb290KSB7CkBAIC0xMDEyLDcgKzEwMTIsNyBAQCBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVQ
b3NpdGlvbihjb25zdCBWCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIFZpc2li
bGVQb3NpdGlvbigpOwogCi0gICAgUm9vdElubGluZUJveCogcm9vdCA9IDA7CisgICAgUm9vdElu
bGluZUJveCogcm9vdCA9IG51bGxwdHI7CiAgICAgSW5saW5lQm94KiBib3g7CiAgICAgaW50IGln
bm9yZWRDYXJldE9mZnNldDsKICAgICB2aXNpYmxlUG9zaXRpb24uZ2V0SW5saW5lQm94QW5kT2Zm
c2V0KGJveCwgaWdub3JlZENhcmV0T2Zmc2V0KTsKQEAgLTEwMjEsNyArMTAyMSw3IEBAIFZpc2li
bGVQb3NpdGlvbiBuZXh0TGluZVBvc2l0aW9uKGNvbnN0IFYKICAgICAgICAgLy8gV2Ugd2FudCB0
byBza2lwIHplcm8gaGVpZ2h0IGJveGVzLgogICAgICAgICAvLyBUaGlzIGNvdWxkIGhhcHBlbiBp
biBjYXNlIGl0IGlzIGEgVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LgogICAgICAgICBpZiAo
IXJvb3QgfHwgIXJvb3QtPmxvZ2ljYWxIZWlnaHQoKSB8fCAhcm9vdC0+Zmlyc3RMZWFmQ2hpbGQo
KSkKLSAgICAgICAgICAgIHJvb3QgPSAwOworICAgICAgICAgICAgcm9vdCA9IG51bGxwdHI7CiAg
ICAgfQogCiAgICAgaWYgKCFyb290KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxl
ZGl0aW5nLmNwcAkocmV2aXNpb24gMTkxNTU2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9o
dG1sZWRpdGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyMyw3ICs2MjMsNyBAQCBOb2RlKiBl
bmNsb3NpbmdOb2RlT2ZUeXBlKGNvbnN0IFBvc2l0aW9uCiAKIE5vZGUqIGhpZ2hlc3RFbmNsb3Np
bmdOb2RlT2ZUeXBlKGNvbnN0IFBvc2l0aW9uJiBwLCBib29sICgqbm9kZUlzT2ZUeXBlKShjb25z
dCBOb2RlKiksIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlLCBOb2RlKiBzdGF5V2l0
aGluKQogewotICAgIE5vZGUqIGhpZ2hlc3QgPSAwOworICAgIE5vZGUqIGhpZ2hlc3QgPSBudWxs
cHRyOwogICAgIE5vZGUqIHJvb3QgPSBydWxlID09IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5
ID8gaGlnaGVzdEVkaXRhYmxlUm9vdChwKSA6IDA7CiAgICAgZm9yIChOb2RlKiBuID0gcC5jb250
YWluZXJOb2RlKCk7IG4gJiYgbiAhPSBzdGF5V2l0aGluOyBuID0gbi0+cGFyZW50Tm9kZSgpKSB7
CiAgICAgICAgIGlmIChyb290ICYmICFuLT5oYXNFZGl0YWJsZVN0eWxlKCkpCkBAIC02NTMsNyAr
NjUzLDcgQEAgc3RhdGljIGJvb2wgaGFzQVJlbmRlcmVkRGVzY2VuZGFudChOb2RlKgogCiBOb2Rl
KiBoaWdoZXN0Tm9kZVRvUmVtb3ZlSW5QcnVuaW5nKE5vZGUqIG5vZGUpCiB7Ci0gICAgTm9kZSog
cHJldmlvdXNOb2RlID0gMDsKKyAgICBOb2RlKiBwcmV2aW91c05vZGUgPSBudWxscHRyOwogICAg
IE5vZGUqIHJvb3RFZGl0YWJsZUVsZW1lbnQgPSBub2RlID8gbm9kZS0+cm9vdEVkaXRhYmxlRWxl
bWVudCgpIDogMDsKICAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkg
ewogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHJldmlzaW9uIDE5MTU1
NikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNyArNTcsNyBAQCBOb2RlKiBoaWdoZXN0QW5jZXN0b3IoTm9kZSopOwogTm9kZSog
aGlnaGVzdEVkaXRhYmxlUm9vdChjb25zdCBQb3NpdGlvbiYsIEVkaXRhYmxlVHlwZSA9IENvbnRl
bnRJc0VkaXRhYmxlKTsKIAogTm9kZSogaGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5cGUoY29uc3Qg
UG9zaXRpb24mLCBib29sICgqbm9kZUlzT2ZUeXBlKShjb25zdCBOb2RlKiksCi0gICAgRWRpdGlu
Z0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnksIE5vZGUq
IHN0YXlXaXRoaW4gPSAwKTsKKyAgICBFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgPSBDYW5u
b3RDcm9zc0VkaXRpbmdCb3VuZGFyeSwgTm9kZSogc3RheVdpdGhpbiA9IG51bGxwdHIpOwogTm9k
ZSogaGlnaGVzdE5vZGVUb1JlbW92ZUluUHJ1bmluZyhOb2RlKik7CiBOb2RlKiBsb3dlc3RFZGl0
YWJsZUFuY2VzdG9yKE5vZGUqKTsKIApAQCAtMTQzLDkgKzE0Myw5IEBAIFBvc2l0aW9uIG5leHRW
aXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKGMKIFBvc2l0aW9uIHByZXZpb3VzVmlzdWFsbHlEaXN0
aW5jdENhbmRpZGF0ZShjb25zdCBQb3NpdGlvbiYpOwogCiBQb3NpdGlvbiBwb3NpdGlvbk91dHNp
ZGVUYWJTcGFuKGNvbnN0IFBvc2l0aW9uJik7Ci1Qb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUNvbnRh
aW5pbmdTcGVjaWFsRWxlbWVudChjb25zdCBQb3NpdGlvbiYsIE5vZGUqKiBjb250YWluaW5nU3Bl
Y2lhbEVsZW1lbnQgPSAwKTsKLVBvc2l0aW9uIHBvc2l0aW9uQWZ0ZXJDb250YWluaW5nU3BlY2lh
bEVsZW1lbnQoY29uc3QgUG9zaXRpb24mLCBOb2RlKiogY29udGFpbmluZ1NwZWNpYWxFbGVtZW50
ID0gMCk7Ci1Qb3NpdGlvbiBwb3NpdGlvbk91dHNpZGVDb250YWluaW5nU3BlY2lhbEVsZW1lbnQo
Y29uc3QgUG9zaXRpb24mLCBOb2RlKiogY29udGFpbmluZ1NwZWNpYWxFbGVtZW50ID0gMCk7CitQ
b3NpdGlvbiBwb3NpdGlvbkJlZm9yZUNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudChjb25zdCBQb3Np
dGlvbiYsIE5vZGUqKiBjb250YWluaW5nU3BlY2lhbEVsZW1lbnQgPSBudWxscHRyKTsKK1Bvc2l0
aW9uIHBvc2l0aW9uQWZ0ZXJDb250YWluaW5nU3BlY2lhbEVsZW1lbnQoY29uc3QgUG9zaXRpb24m
LCBOb2RlKiogY29udGFpbmluZ1NwZWNpYWxFbGVtZW50ID0gbnVsbHB0cik7CitQb3NpdGlvbiBw
b3NpdGlvbk91dHNpZGVDb250YWluaW5nU3BlY2lhbEVsZW1lbnQoY29uc3QgUG9zaXRpb24mLCBO
b2RlKiogY29udGFpbmluZ1NwZWNpYWxFbGVtZW50ID0gbnVsbHB0cik7CiAKIGlubGluZSBQb3Np
dGlvbiBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUoTm9kZSogbm9kZSkKIHsKQEAgLTIxNSw3
ICsyMTUsNyBAQCBSZWY8SFRNTEVsZW1lbnQ+IGNyZWF0ZUhUTUxFbGVtZW50KERvY3VtCiBSZWY8
SFRNTEVsZW1lbnQ+IGNyZWF0ZUhUTUxFbGVtZW50KERvY3VtZW50JiwgY29uc3QgQXRvbWljU3Ry
aW5nJik7CiAKIEhUTUxFbGVtZW50KiBlbmNsb3NpbmdMaXN0KE5vZGUqKTsKLUhUTUxFbGVtZW50
KiBvdXRlcm1vc3RFbmNsb3NpbmdMaXN0KE5vZGUqLCBOb2RlKiByb290TGlzdCA9IDApOworSFRN
TEVsZW1lbnQqIG91dGVybW9zdEVuY2xvc2luZ0xpc3QoTm9kZSosIE5vZGUqIHJvb3RMaXN0ID0g
bnVsbHB0cik7CiBOb2RlKiBlbmNsb3NpbmdMaXN0Q2hpbGQoTm9kZSopOwogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lvbiAxOTE1
NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvciBmaW5hbCA6
IHB1CiBwdWJsaWM6CiAgICAgZW51bSBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgeyBEb2VzRnVsbHlT
ZWxlY3ROb2RlLCBEb2VzTm90RnVsbHlTZWxlY3ROb2RlIH07CiAKLSAgICBTdHlsZWRNYXJrdXBB
Y2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFic29sdXRlVVJMcywgRUFubm90YXRl
Rm9ySW50ZXJjaGFuZ2UsIGNvbnN0IFJhbmdlKiwgYm9vbCBuZWVkc1Bvc2l0aW9uU3R5bGVDb252
ZXJzaW9uLCBOb2RlKiBoaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkID0gMCk7CisgICAgU3R5bGVk
TWFya3VwQWNjdW11bGF0b3IoVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBYnNvbHV0ZVVSTHMsIEVB
bm5vdGF0ZUZvckludGVyY2hhbmdlLCBjb25zdCBSYW5nZSosIGJvb2wgbmVlZHNQb3NpdGlvblN0
eWxlQ29udmVyc2lvbiwgTm9kZSogaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZCA9IG51bGxwdHIp
OwogCiAgICAgTm9kZSogc2VyaWFsaXplTm9kZXMoTm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0
RW5kKTsKICAgICB2b2lkIHdyYXBXaXRoTm9kZShOb2RlJiwgYm9vbCBjb252ZXJ0QmxvY2tzVG9J
bmxpbmVzID0gZmFsc2UsIFJhbmdlRnVsbHlTZWxlY3RzTm9kZSA9IERvZXNGdWxseVNlbGVjdE5v
ZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCShyZXZpc2lvbiAxOTE1NTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2
Myw3IEBAIHZvaWQgcmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KENvbnRhaW4KIHZvaWQgcmVw
bGFjZUNoaWxkcmVuV2l0aFRleHQoQ29udGFpbmVyTm9kZSYsIGNvbnN0IFN0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmKTsKIAogU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSYsIFZlY3RvcjxO
b2RlKj4qID0gbnVsbHB0ciwgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgPSBEb05vdEFubm90YXRl
Rm9ySW50ZXJjaGFuZ2UsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9IGZhbHNlLCBFQWJz
b2x1dGVVUkxzID0gRG9Ob3RSZXNvbHZlVVJMcyk7Ci1TdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0
IE5vZGUmLCBFQ2hpbGRyZW5Pbmx5ID0gSW5jbHVkZU5vZGUsIFZlY3RvcjxOb2RlKj4qID0gbnVs
bHB0ciwgRUFic29sdXRlVVJMcyA9IERvTm90UmVzb2x2ZVVSTHMsIFZlY3RvcjxRdWFsaWZpZWRO
YW1lPiogdGFnTmFtZXNUb1NraXAgPSAwLCBFRnJhZ21lbnRTZXJpYWxpemF0aW9uID0gSFRNTEZy
YWdtZW50U2VyaWFsaXphdGlvbik7CitTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUmLCBF
Q2hpbGRyZW5Pbmx5ID0gSW5jbHVkZU5vZGUsIFZlY3RvcjxOb2RlKj4qID0gbnVsbHB0ciwgRUFi
c29sdXRlVVJMcyA9IERvTm90UmVzb2x2ZVVSTHMsIFZlY3RvcjxRdWFsaWZpZWROYW1lPiogdGFn
TmFtZXNUb1NraXAgPSBudWxscHRyLCBFRnJhZ21lbnRTZXJpYWxpemF0aW9uID0gSFRNTEZyYWdt
ZW50U2VyaWFsaXphdGlvbik7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVGdWxsTWFy
a3VwKGNvbnN0IE5vZGUmKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVGdWxsTWFya3Vw
KGNvbnN0IFJhbmdlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9T
Lm1tCShyZXZpc2lvbiAxOTE1NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0
b3JJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIEVkaXRvcjo6
c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0
dXJuOwogICAgICAgICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IE5VTEw7CisgICAgY29u
c3QgY2hhciAqbmV3VmFsdWUgPSBuaWw7CiAgICAgRVRleHRBbGlnbiB0ZXh0QWxpZ24gPSAqdmFs
dWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICAgICAgY2FzZSBUQVNUQVJUOgpAQCAt
MjA0LDcgKzIwNCw3IEBAIGNvbnN0IEZvbnQqIEVkaXRvcjo6Zm9udEZvclNlbGVjdGlvbihib28K
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBjb25zdCBGb250KiBmb250ID0g
MDsKKyAgICBjb25zdCBGb250KiBmb250ID0gbmlsOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2Ug
PSBtX2ZyYW1lLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgaWYgKE5vZGUq
IHN0YXJ0Tm9kZSA9IGFkanVzdGVkU2VsZWN0aW9uU3RhcnRGb3JTdHlsZUNvbXB1dGF0aW9uKG1f
ZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpLmRlcHJlY2F0ZWROb2RlKCkpIHsKICAgICAg
ICAgTm9kZSogcGFzdEVuZCA9IHJhbmdlLT5wYXN0TGFzdE5vZGUoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRy
b2xsZXIubW0JKHJldmlzaW9uIDE5MTU1NikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNDksNyAr
NDksNyBAQCBOU1RleHRBbHRlcm5hdGl2ZXMqIEFsdGVybmF0aXZlVGV4dFVJQ29uCiB7CiAgICAg
SGFzaE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGl0ciA9IG1fYWx0ZXJuYXRpdmVzT2JqZWN0TWFw
LmZpbmQoY29udGV4dCk7CiAgICAgaWYgKGl0ciA9PSBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5l
bmQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0
dXJuIGl0ci0+dmFsdWUuZ2V0KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW0JKHJldmlzaW9uIDE5MTU1NikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw3IEBAIGNv
bnN0IEZvbnQqIEVkaXRvcjo6Zm9udEZvclNlbGVjdGlvbihib28KICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBjb25zdCBGb250KiBmb250ID0gMDsKKyAgICBjb25zdCBGb250
KiBmb250ID0gbmlsOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBtX2ZyYW1lLnNlbGVjdGlv
bigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgTm9kZSogc3RhcnROb2RlID0gYWRqdXN0ZWRT
ZWxlY3Rpb25TdGFydEZvclN0eWxlQ29tcHV0YXRpb24obV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKSkuZGVwcmVjYXRlZE5vZGUoKTsKICAgICBpZiAocmFuZ2UgJiYgc3RhcnROb2RlKSB7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264125</attachid>
            <date>2015-10-27 01:58:11 -0700</date>
            <delta_ts>2015-10-28 00:22:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150555-20151027175719.patch</filename>
            <type>text/plain</type>
            <size>37462</size>
            <attacher name="Hunseop Jeong">hs85.jeong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg4IEBACisyMDE1LTEwLTI3ICBIdW5zZW9w
IEplb25nICA8aHM4NS5qZW9uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBSZXBsYWNlIDAgYW5k
IE5VTEwgd2l0aCBudWxscHRyIGluIFdlYkNvcmUvZWRpdGluZy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDU1NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJl
IGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OkFwcGx5U3R5
bGVDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdEFu
Y2VzdG9yc1dpdGhVbmljb2RlQmlkaSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29t
bWFuZDo6YXBwbHlJbmxpbmVTdHlsZSk6CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnNob3VsZFJlbW92
ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmFw
cGx5Q29tbWFuZFRvQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRD
b21tYW5kOjpkZWxldGVJbnNpZ25pZmljYW50VGV4dCk6CisgICAgICAgICogZWRpdGluZy9EZWxl
dGVTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlv
bkNvbW1hbmQ6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZDo6aW5pdGlhbGl6ZVN0YXJ0RW5kKToKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5kOjpFZGl0
Q29tbWFuZCk6CisgICAgICAgICogZWRpdGluZy9FZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGVk
aXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50RXF1
aXZhbGVudDo6SFRNTEVsZW1lbnRFcXVpdmFsZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRp
bmdTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRo
SW5saW5lU3R5bGVPZkVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6Y29tbWFuZElzU3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpDb21tYW5kOjpDb21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDYXJldENvbnRyb2xsZXI6OnNl
dENhcmV0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmRpcmVj
dGlvbk9mU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjplbnRpdHlNYXNrRm9yVGV4
dCk6CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5oOgorICAgICAgICAqIGVk
aXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJlckZy
b21Qb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJl
ZFBvc2l0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6dW5jYWNoZWRJbmxpbmVCb3gpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbik6CisgICAgICAgICogZWRp
dGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6CisgICAgICAgICogZWRpdGlu
Zy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXROb2Rl
QXR0cmlidXRlQ29tbWFuZDo6ZG9VbmFwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL1NtYXJ0UmVw
bGFjZUNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFNtYXJ0U2V0KToKKyAgICAgICAgKiBl
ZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVx
dWVzdDo6U3BlbGxDaGVja1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja1Jl
cXVlc3Q6OmRpZFN1Y2NlZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja1JlcXVlc3Q6
OmRpZENhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6c2V0Q2hl
Y2tlckFuZFNlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0Ojpy
ZXF1ZXN0ZXJEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpTcGVs
bENoZWNrZXIpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmg6CisgICAgICAgICog
ZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBv
c2l0aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OmxvY2FsQ2FyZXRSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcv
VmlzaWJsZVVuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZExvZ2ljYWxseU9yZGVy
ZWRMZWFmQm94ZXM6OkNhY2hlZExvZ2ljYWxseU9yZGVyZWRMZWFmQm94ZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlczo6cHJldmlvdXNUZXh0T3JM
aW5lQnJlYWtCb3gpOgorICAgICAgICAoV2ViQ29yZTo6dmlzdWFsV29yZFBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OnByZXZpb3VzTGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Om5leHRMaW5lUG9zaXRpb24pOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6aGlnaGVzdE5vZGVUb1JlbW92ZUluUHJ1bmluZyk6CisgICAgICAgICogZWRpdGlu
Zy9odG1sZWRpdGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RQb3NpdGlvbkluT3JCZWZv
cmVOb2RlKToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKToKKyAg
ICAgICAgKiBlZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW06CisgICAg
ICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0
Q29udGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0ZvckNvbnRleHQpOgorICAgICAgICAqIGVk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zm9udEZv
clNlbGVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAqIGVk
aXRpbmcvbWFya3VwLmg6CisKIDIwMTUtMTAtMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIE1ha2UgSURCS2V5RGF0YSBmcm9tIGEgc3RydWN0IHRvIGEgY2xh
c3MuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNw
cAkocmV2aXNpb24gMTkxNjE2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxl
Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNiBAQCBBcHBseVN0eWxl
Q29tbWFuZDo6QXBwbHlTdHlsZUNvbW1hbmQoRG9jCiAgICAgLCBtX2VuZChlbmRpbmdTZWxlY3Rp
b24oKS5lbmQoKS51cHN0cmVhbSgpKQogICAgICwgbV91c2VFbmRpbmdTZWxlY3Rpb24odHJ1ZSkK
ICAgICAsIG1fcmVtb3ZlT25seShmYWxzZSkKLSAgICAsIG1faXNJbmxpbmVFbGVtZW50VG9SZW1v
dmVGdW5jdGlvbigwKQogewogfQogCkBAIC0xNDIsNyArMTQxLDYgQEAgQXBwbHlTdHlsZUNvbW1h
bmQ6OkFwcGx5U3R5bGVDb21tYW5kKERvYwogICAgICwgbV9lbmQoZW5kKQogICAgICwgbV91c2VF
bmRpbmdTZWxlY3Rpb24oZmFsc2UpCiAgICAgLCBtX3JlbW92ZU9ubHkoZmFsc2UpCi0gICAgLCBt
X2lzSW5saW5lRWxlbWVudFRvUmVtb3ZlRnVuY3Rpb24oMCkKIHsKIH0KIApAQCAtMTU1LDcgKzE1
Myw2IEBAIEFwcGx5U3R5bGVDb21tYW5kOjpBcHBseVN0eWxlQ29tbWFuZChQYXMKICAgICAsIG1f
dXNlRW5kaW5nU2VsZWN0aW9uKHRydWUpCiAgICAgLCBtX3N0eWxlZElubGluZUVsZW1lbnQoZWxl
bWVudCkKICAgICAsIG1fcmVtb3ZlT25seShyZW1vdmVPbmx5KQotICAgICwgbV9pc0lubGluZUVs
ZW1lbnRUb1JlbW92ZUZ1bmN0aW9uKDApCiB7CiB9CiAKQEAgLTQ2OCw4ICs0NjUsOCBAQCBIVE1M
RWxlbWVudCogQXBwbHlTdHlsZUNvbW1hbmQ6OnNwbGl0QW5jCiAgICAgaWYgKCFibG9jayB8fCBi
bG9jayA9PSBub2RlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIE5vZGUqIGhpZ2hlc3RBbmNl
c3RvcldpdGhVbmljb2RlQmlkaSA9IDA7Ci0gICAgTm9kZSogbmV4dEhpZ2hlc3RBbmNlc3Rvcldp
dGhVbmljb2RlQmlkaSA9IDA7CisgICAgTm9kZSogaGlnaGVzdEFuY2VzdG9yV2l0aFVuaWNvZGVC
aWRpID0gbnVsbHB0cjsKKyAgICBOb2RlKiBuZXh0SGlnaGVzdEFuY2VzdG9yV2l0aFVuaWNvZGVC
aWRpID0gbnVsbHB0cjsKICAgICBpbnQgaGlnaGVzdEFuY2VzdG9yVW5pY29kZUJpZGkgPSAwOwog
ICAgIGZvciAoTm9kZSogbiA9IG5vZGUtPnBhcmVudE5vZGUoKTsgbiAhPSBibG9jazsgbiA9IG4t
PnBhcmVudE5vZGUoKSkgewogICAgICAgICBpbnQgdW5pY29kZUJpZGkgPSB0b0lkZW50aWZpZXIo
Q29tcHV0ZWRTdHlsZUV4dHJhY3RvcihuKS5wcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5VW5pY29k
ZUJpZGkpKTsKQEAgLTQ4Myw3ICs0ODAsNyBAQCBIVE1MRWxlbWVudCogQXBwbHlTdHlsZUNvbW1h
bmQ6OnNwbGl0QW5jCiAgICAgaWYgKCFoaWdoZXN0QW5jZXN0b3JXaXRoVW5pY29kZUJpZGkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgSFRNTEVsZW1lbnQqIHVuc3BsaXRBbmNlc3RvciA9IDA7
CisgICAgSFRNTEVsZW1lbnQqIHVuc3BsaXRBbmNlc3RvciA9IG51bGxwdHI7CiAKICAgICBXcml0
aW5nRGlyZWN0aW9uIGhpZ2hlc3RBbmNlc3RvckRpcmVjdGlvbjsKICAgICBpZiAoYWxsb3dlZERp
cmVjdGlvbiAhPSBOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbgpAQCAtNTU5LDggKzU1Niw4IEBAIHN0
YXRpYyBOb2RlKiBoaWdoZXN0RW1iZWRkaW5nQW5jZXN0b3IoTm8KIAogdm9pZCBBcHBseVN0eWxl
Q29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZShFZGl0aW5nU3R5bGUqIHN0eWxlKQogewotICAgIFJl
ZlB0cjxDb250YWluZXJOb2RlPiBzdGFydER1bW15U3BhbkFuY2VzdG9yID0gMDsKLSAgICBSZWZQ
dHI8Q29udGFpbmVyTm9kZT4gZW5kRHVtbXlTcGFuQW5jZXN0b3IgPSAwOworICAgIFJlZlB0cjxD
b250YWluZXJOb2RlPiBzdGFydER1bW15U3BhbkFuY2VzdG9yOworICAgIFJlZlB0cjxDb250YWlu
ZXJOb2RlPiBlbmREdW1teVNwYW5BbmNlc3RvcjsKIAogICAgIC8vIHVwZGF0ZSBkb2N1bWVudCBs
YXlvdXQgb25jZSBiZWZvcmUgcmVtb3Zpbmcgc3R5bGVzCiAgICAgLy8gc28gdGhhdCB3ZSBhdm9p
ZCB0aGUgZXhwZW5zZSBvZiB1cGRhdGluZyBiZWZvcmUgZWFjaCBhbmQgZXZlcnkgY2FsbApJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAkocmV2aXNpb24g
MTkxNjE2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03NywxMSArNzcsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIGlzU3R5
bGVkSW5saW5lRWxlbWVudFRvUmVtb3ZlKEVsZW1lbnQqKSBjb25zdDsKICAgICBib29sIHNob3Vs
ZEFwcGx5SW5saW5lU3R5bGVUb1J1bihFZGl0aW5nU3R5bGUqLCBOb2RlKiBydW5TdGFydCwgTm9k
ZSogcGFzdEVuZE5vZGUpOwogICAgIHZvaWQgcmVtb3ZlQ29uZmxpY3RpbmdJbmxpbmVTdHlsZUZy
b21SdW4oRWRpdGluZ1N0eWxlKiwgUmVmUHRyPE5vZGU+JiBydW5TdGFydCwgUmVmUHRyPE5vZGU+
JiBydW5FbmQsIFBhc3NSZWZQdHI8Tm9kZT4gcGFzdEVuZE5vZGUpOwotICAgIGJvb2wgcmVtb3Zl
SW5saW5lU3R5bGVGcm9tRWxlbWVudChFZGl0aW5nU3R5bGUqLCBQYXNzUmVmUHRyPEhUTUxFbGVt
ZW50PiwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSA9IFJlbW92ZUlmTmVlZGVkLCBFZGl0aW5nU3R5
bGUqIGV4dHJhY3RlZFN0eWxlID0gMCk7CisgICAgYm9vbCByZW1vdmVJbmxpbmVTdHlsZUZyb21F
bGVtZW50KEVkaXRpbmdTdHlsZSosIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+LCBJbmxpbmVTdHls
ZVJlbW92YWxNb2RlID0gUmVtb3ZlSWZOZWVkZWQsIEVkaXRpbmdTdHlsZSogZXh0cmFjdGVkU3R5
bGUgPSBudWxscHRyKTsKICAgICBpbmxpbmUgYm9vbCBzaG91bGRSZW1vdmVJbmxpbmVTdHlsZUZy
b21FbGVtZW50KEVkaXRpbmdTdHlsZSogc3R5bGUsIEhUTUxFbGVtZW50KiBlbGVtZW50KSB7cmV0
dXJuIHJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUsIGVsZW1lbnQsIFJlbW92ZU5v
bmUpO30KICAgICB2b2lkIHJlcGxhY2VXaXRoU3Bhbk9yUmVtb3ZlSWZXaXRob3V0QXR0cmlidXRl
cyhIVE1MRWxlbWVudComKTsKICAgICBib29sIHJlbW92ZUltcGxpY2l0bHlTdHlsZWRFbGVtZW50
KEVkaXRpbmdTdHlsZSosIEhUTUxFbGVtZW50KiwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSwgRWRp
dGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSk7Ci0gICAgYm9vbCByZW1vdmVDU1NTdHlsZShFZGl0
aW5nU3R5bGUqLCBIVE1MRWxlbWVudCosIElubGluZVN0eWxlUmVtb3ZhbE1vZGUgPSBSZW1vdmVJ
Zk5lZWRlZCwgRWRpdGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSA9IDApOworICAgIGJvb2wgcmVt
b3ZlQ1NTU3R5bGUoRWRpdGluZ1N0eWxlKiwgSFRNTEVsZW1lbnQqLCBJbmxpbmVTdHlsZVJlbW92
YWxNb2RlID0gUmVtb3ZlSWZOZWVkZWQsIEVkaXRpbmdTdHlsZSogZXh0cmFjdGVkU3R5bGUgPSBu
dWxscHRyKTsKICAgICBIVE1MRWxlbWVudCogaGlnaGVzdEFuY2VzdG9yV2l0aENvbmZsaWN0aW5n
SW5saW5lU3R5bGUoRWRpdGluZ1N0eWxlKiwgTm9kZSopOwogICAgIHZvaWQgYXBwbHlJbmxpbmVT
dHlsZVRvUHVzaERvd24oTm9kZSosIEVkaXRpbmdTdHlsZSopOwogICAgIHZvaWQgcHVzaERvd25J
bmxpbmVTdHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0eWxlKiwgTm9kZSopOwpAQCAtMTI3LDcgKzEy
Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZUVuZGluZ1NlbGVjdGlvbjsKICAgICBSZWZQ
dHI8RWxlbWVudD4gbV9zdHlsZWRJbmxpbmVFbGVtZW50OwogICAgIGJvb2wgbV9yZW1vdmVPbmx5
OwotICAgIElzSW5saW5lRWxlbWVudFRvUmVtb3ZlRnVuY3Rpb24gbV9pc0lubGluZUVsZW1lbnRU
b1JlbW92ZUZ1bmN0aW9uOworICAgIElzSW5saW5lRWxlbWVudFRvUmVtb3ZlRnVuY3Rpb24gbV9p
c0lubGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9uIHsgbnVsbHB0ciB9OwogfTsKIAogZW51bSBT
aG91bGRTdHlsZUF0dHJpYnV0ZUJlRW1wdHkgeyBBbGxvd05vbkVtcHR5U3R5bGVBdHRyaWJ1dGUs
IFN0eWxlQXR0cmlidXRlU2hvdWxkQmVFbXB0eSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDE5MTYxNikKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YXBw
bHlDb21tYW5kVAogICAgIGNvbW1hbmQtPnNldFBhcmVudCh0aGlzKTsKICAgICBjb21tYW5kLT5k
b0FwcGx5KCk7CiAgICAgaWYgKGNvbW1hbmQtPmlzU2ltcGxlRWRpdENvbW1hbmQoKSkgewotICAg
ICAgICBjb21tYW5kLT5zZXRQYXJlbnQoMCk7CisgICAgICAgIGNvbW1hbmQtPnNldFBhcmVudChu
dWxscHRyKTsKICAgICAgICAgZW5zdXJlQ29tcG9zaXRpb24oKS0+YXBwZW5kKHRvU2ltcGxlRWRp
dENvbW1hbmQoY29tbWFuZC5nZXQoKSkpOwogICAgIH0KICAgICBtX2NvbW1hbmRzLmFwcGVuZChj
b21tYW5kLnJlbGVhc2UoKSk7CkBAIC04MjUsNyArODI1LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6ZGVsZXRlSW5zaWduaQogICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCBy
ZW1vdmVkID0gMDsKLSAgICBJbmxpbmVUZXh0Qm94KiBwcmV2Qm94ID0gMDsKKyAgICBJbmxpbmVU
ZXh0Qm94KiBwcmV2Qm94ID0gbnVsbHB0cjsKICAgICBTdHJpbmcgc3RyOwogCiAgICAgLy8gVGhp
cyBsb29wIHN0cnVjdHVyZSB3b3JrcyB0byBwcm9jZXNzIGFsbCBnYXBzIHByZWNlZGluZyBhIGJv
eCwKQEAgLTg1NCw3ICs4NTQsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVJ
bnNpZ25pCiAgICAgICAgICAgICBpZiAoKytzb3J0ZWRUZXh0Qm94ZXNQb3NpdGlvbiA8IHNvcnRl
ZFRleHRCb3hlcy5zaXplKCkpCiAgICAgICAgICAgICAgICAgYm94ID0gc29ydGVkVGV4dEJveGVz
W3NvcnRlZFRleHRCb3hlc1Bvc2l0aW9uXTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBib3ggPSAwOworICAgICAgICAgICAgICAgIGJveCA9IG51bGxwdHI7CiAgICAgICAgIH0K
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxl
Y3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24gMTkxNjE2KQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsMTAg
KzgzLDYgQEAgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6RGVsZXRlU2VsZWN0aW9uQwogICAgICwg
bV9wcnVuZVN0YXJ0QmxvY2tJZk5lY2Vzc2FyeShmYWxzZSkKICAgICAsIG1fc3RhcnRzQXRFbXB0
eUxpbmUoZmFsc2UpCiAgICAgLCBtX3Nhbml0aXplTWFya3VwKHNhbml0aXplTWFya3VwKQotICAg
ICwgbV9zdGFydEJsb2NrKDApCi0gICAgLCBtX2VuZEJsb2NrKDApCi0gICAgLCBtX3R5cGluZ1N0
eWxlKDApCi0gICAgLCBtX2RlbGV0ZUludG9CbG9ja3F1b3RlU3R5bGUoMCkKIHsKIH0KIApAQCAt
MTAyLDE3ICs5OCwxMyBAQCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpEZWxldGVTZWxlY3Rpb25D
CiAgICAgLCBtX3N0YXJ0c0F0RW1wdHlMaW5lKGZhbHNlKQogICAgICwgbV9zYW5pdGl6ZU1hcmt1
cChzYW5pdGl6ZU1hcmt1cCkKICAgICAsIG1fc2VsZWN0aW9uVG9EZWxldGUoc2VsZWN0aW9uKQot
ICAgICwgbV9zdGFydEJsb2NrKDApCi0gICAgLCBtX2VuZEJsb2NrKDApCi0gICAgLCBtX3R5cGlu
Z1N0eWxlKDApCi0gICAgLCBtX2RlbGV0ZUludG9CbG9ja3F1b3RlU3R5bGUoMCkKIHsKIH0KIAog
dm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjppbml0aWFsaXplU3RhcnRFbmQoUG9zaXRpb24m
IHN0YXJ0LCBQb3NpdGlvbiYgZW5kKQogewotICAgIE5vZGUqIHN0YXJ0U3BlY2lhbENvbnRhaW5l
ciA9IDA7Ci0gICAgTm9kZSogZW5kU3BlY2lhbENvbnRhaW5lciA9IDA7CisgICAgTm9kZSogc3Rh
cnRTcGVjaWFsQ29udGFpbmVyID0gbnVsbHB0cjsKKyAgICBOb2RlKiBlbmRTcGVjaWFsQ29udGFp
bmVyID0gbnVsbHB0cjsKICAKICAgICBzdGFydCA9IG1fc2VsZWN0aW9uVG9EZWxldGUuc3RhcnQo
KTsKICAgICBlbmQgPSBtX3NlbGVjdGlvblRvRGVsZXRlLmVuZCgpOwpAQCAtMTI5LDggKzEyMSw4
IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aW5pdGlhbGl6ZVMKICAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIHN0YXJ0U3BlY2lhbENvbnRhaW5l
ciA9IDA7Ci0gICAgICAgIGVuZFNwZWNpYWxDb250YWluZXIgPSAwOworICAgICAgICBzdGFydFNw
ZWNpYWxDb250YWluZXIgPSBudWxscHRyOworICAgICAgICBlbmRTcGVjaWFsQ29udGFpbmVyID0g
bnVsbHB0cjsKICAgICAKICAgICAgICAgUG9zaXRpb24gcyA9IHBvc2l0aW9uQmVmb3JlQ29udGFp
bmluZ1NwZWNpYWxFbGVtZW50KHN0YXJ0LCAmc3RhcnRTcGVjaWFsQ29udGFpbmVyKTsKICAgICAg
ICAgUG9zaXRpb24gZSA9IHBvc2l0aW9uQWZ0ZXJDb250YWluaW5nU3BlY2lhbEVsZW1lbnQoZW5k
LCAmZW5kU3BlY2lhbENvbnRhaW5lcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRD
b21tYW5kLmNwcAkocmV2aXNpb24gMTkxNjE2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBFZGl0Q29tbWFuZDo6RWRpdENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50
LCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24pCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQot
ICAgICwgbV9wYXJlbnQoMCkKICAgICAsIG1fZWRpdGluZ0FjdGlvbihlZGl0aW5nQWN0aW9uKQog
ewogICAgIEFTU0VSVChkb2N1bWVudC5mcmFtZSgpKTsKQEAgLTUwLDcgKzQ5LDYgQEAgRWRpdENv
bW1hbmQ6OkVkaXRDb21tYW5kKERvY3VtZW50JiBkb2N1bQogCiBFZGl0Q29tbWFuZDo6RWRpdENv
bW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzdGFydGlu
Z1NlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5nU2VsZWN0aW9uKQogICAg
IDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fcGFyZW50KDApCiB7CiAgICAgQVNTRVJU
KGRvY3VtZW50LmZyYW1lKCkpOwogICAgIHNldFN0YXJ0aW5nU2VsZWN0aW9uKHN0YXJ0aW5nU2Vs
ZWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgJKHJldmlzaW9u
IDE5MTYxNikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIFJlZjxEb2N1bWVudD4gbV9k
b2N1bWVudDsKICAgICBWaXNpYmxlU2VsZWN0aW9uIG1fc3RhcnRpbmdTZWxlY3Rpb247CiAgICAg
VmlzaWJsZVNlbGVjdGlvbiBtX2VuZGluZ1NlbGVjdGlvbjsKLSAgICBDb21wb3NpdGVFZGl0Q29t
bWFuZCogbV9wYXJlbnQ7CisgICAgQ29tcG9zaXRlRWRpdENvbW1hbmQqIG1fcGFyZW50IHsgbnVs
bHB0ciB9OwogICAgIEVkaXRBY3Rpb24gbV9lZGl0aW5nQWN0aW9uIHsgRWRpdEFjdGlvblVuc3Bl
Y2lmaWVkIH07CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHls
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUu
Y3BwCShyZXZpc2lvbiAxOTE2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdT
dHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MCwxMiArMTcwLDExIEBAIHByb3RlY3RlZDoK
ICAgICBIVE1MRWxlbWVudEVxdWl2YWxlbnQoQ1NTUHJvcGVydHlJRCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSk7CiAgICAgY29uc3QgQ1NTUHJvcGVydHlJRCBtX3Byb3BlcnR5SUQ7CiAg
ICAgY29uc3QgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX3ByaW1pdGl2ZVZhbHVlOwotICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUqIG1fdGFnTmFtZTsgLy8gV2UgY2FuIHN0b3JlIGEgcG9pbnRl
ciBiZWNhdXNlIEhUTUwgdGFnIG5hbWVzIGFyZSBjb25zdCBnbG9iYWwuCisgICAgY29uc3QgUXVh
bGlmaWVkTmFtZSogbV90YWdOYW1lIHsgbnVsbHB0ciB9OyAvLyBXZSBjYW4gc3RvcmUgYSBwb2lu
dGVyIGJlY2F1c2UgSFRNTCB0YWcgbmFtZXMgYXJlIGNvbnN0IGdsb2JhbC4KIH07CiAKIEhUTUxF
bGVtZW50RXF1aXZhbGVudDo6SFRNTEVsZW1lbnRFcXVpdmFsZW50KENTU1Byb3BlcnR5SUQgaWQp
CiAgICAgOiBtX3Byb3BlcnR5SUQoaWQpCi0gICAgLCBtX3RhZ05hbWUoMCkKIHsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCShyZXZpc2lvbiAxOTE2MTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGNvbmZsaWN0
c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChlbGVtZW50LCAmbmV3SW5saW5lU3R5bGUsIGV4dHJh
Y3RlZFN0eWxlKTsKICAgICB9Ci0gICAgYm9vbCBjb25mbGljdHNXaXRoSW1wbGljaXRTdHlsZU9m
RWxlbWVudChIVE1MRWxlbWVudCosIEVkaXRpbmdTdHlsZSogZXh0cmFjdGVkU3R5bGUgPSAwLCBT
aG91bGRFeHRyYWN0TWF0Y2hpbmdTdHlsZSA9IERvTm90RXh0cmFjdE1hdGNoaW5nU3R5bGUpIGNv
bnN0OworICAgIGJvb2wgY29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoSFRNTEVs
ZW1lbnQqLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlID0gbnVsbHB0ciwgU2hvdWxkRXh0
cmFjdE1hdGNoaW5nU3R5bGUgPSBEb05vdEV4dHJhY3RNYXRjaGluZ1N0eWxlKSBjb25zdDsKICAg
ICBib29sIGNvbmZsaWN0c1dpdGhJbXBsaWNpdFN0eWxlT2ZBdHRyaWJ1dGVzKEhUTUxFbGVtZW50
KikgY29uc3Q7CiAgICAgYm9vbCBleHRyYWN0Q29uZmxpY3RpbmdJbXBsaWNpdFN0eWxlT2ZBdHRy
aWJ1dGVzKEhUTUxFbGVtZW50KiwgU2hvdWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uLCBFZGl0
aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlLAogICAgICAgICAgICAgVmVjdG9yPFF1YWxpZmllZE5h
bWU+JiBjb25mbGljdGluZ0F0dHJpYnV0ZXMsIFNob3VsZEV4dHJhY3RNYXRjaGluZ1N0eWxlKSBj
b25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkocmV2aXNpb24gMTkxNjE2KQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDE5
ICsyMDQsMTkgQEAgcHVibGljOgogICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb21tYW5kKCk7CiAg
ICAgICAgIENvbW1hbmQoY29uc3QgRWRpdG9ySW50ZXJuYWxDb21tYW5kKiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSwgUGFzc1JlZlB0cjxGcmFtZT4pOwogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgZXhlY3V0ZShjb25zdCBTdHJpbmcmIHBhcmFtZXRlciA9IFN0cmluZygpLCBFdmVudCogdHJp
Z2dlcmluZ0V2ZW50ID0gMCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZXhl
Y3V0ZShjb25zdCBTdHJpbmcmIHBhcmFtZXRlciA9IFN0cmluZygpLCBFdmVudCogdHJpZ2dlcmlu
Z0V2ZW50ID0gbnVsbHB0cikgY29uc3Q7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZXhl
Y3V0ZShFdmVudCogdHJpZ2dlcmluZ0V2ZW50KSBjb25zdDsKIAogICAgICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGlzU3VwcG9ydGVkKCkgY29uc3Q7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaXNFbmFibGVkKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSAwKSBjb25zdDsKKyAgICAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VuYWJsZWQoRXZlbnQqIHRyaWdnZXJpbmdFdmVudCA9IG51
bGxwdHIpIGNvbnN0OwogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIFRyaVN0YXRlIHN0YXRlKEV2
ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSAwKSBjb25zdDsKLSAgICAgICAgU3RyaW5nIHZhbHVlKEV2
ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSAwKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
VHJpU3RhdGUgc3RhdGUoRXZlbnQqIHRyaWdnZXJpbmdFdmVudCA9IG51bGxwdHIpIGNvbnN0Owor
ICAgICAgICBTdHJpbmcgdmFsdWUoRXZlbnQqIHRyaWdnZXJpbmdFdmVudCA9IG51bGxwdHIpIGNv
bnN0OwogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNUZXh0SW5zZXJ0aW9uKCkgY29u
c3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBjb25zdCBFZGl0b3JJbnRlcm5hbENvbW1hbmQq
IG1fY29tbWFuZDsKKyAgICAgICAgY29uc3QgRWRpdG9ySW50ZXJuYWxDb21tYW5kKiBtX2NvbW1h
bmQgeyBudWxscHRyIH07CiAgICAgICAgIEVkaXRvckNvbW1hbmRTb3VyY2UgbV9zb3VyY2U7CiAg
ICAgICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKICAgICB9OwpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCShyZXZpc2lvbiAxOTE2MTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjc3
LDcgKzE2NzcsNiBAQCBib29sIEVkaXRvcjo6Y29tbWFuZElzU3VwcG9ydGVkRnJvbU1lbnVPCiB9
CiAKIEVkaXRvcjo6Q29tbWFuZDo6Q29tbWFuZCgpCi0gICAgOiBtX2NvbW1hbmQoMCkKIHsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHJldmlz
aW9uIDE5MTYxNikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBEcmFnQ2FyZXRDb250cm9s
bGVyOjpzZXRDYXJldFBvc2l0aQogICAgICAgICBpbnZhbGlkYXRlQ2FyZXRSZWN0KG5vZGUpOwog
ICAgIG1fcG9zaXRpb24gPSBwb3NpdGlvbjsKICAgICBzZXRDYXJldFJlY3ROZWVkc1VwZGF0ZSgp
OwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IDA7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
bnVsbHB0cjsKICAgICBpZiAoTm9kZSogbm9kZSA9IG1fcG9zaXRpb24uZGVlcEVxdWl2YWxlbnQo
KS5kZXByZWNhdGVkTm9kZSgpKSB7CiAgICAgICAgIGludmFsaWRhdGVDYXJldFJlY3Qobm9kZSk7
CiAgICAgICAgIGRvY3VtZW50ID0gJm5vZGUtPmRvY3VtZW50KCk7CkBAIC01NTIsOCArNTUyLDgg
QEAgVGV4dERpcmVjdGlvbiBGcmFtZVNlbGVjdGlvbjo6ZGlyZWN0aW9uTwogCiBUZXh0RGlyZWN0
aW9uIEZyYW1lU2VsZWN0aW9uOjpkaXJlY3Rpb25PZlNlbGVjdGlvbigpCiB7Ci0gICAgSW5saW5l
Qm94KiBzdGFydEJveCA9IDA7Ci0gICAgSW5saW5lQm94KiBlbmRCb3ggPSAwOworICAgIElubGlu
ZUJveCogc3RhcnRCb3ggPSBudWxscHRyOworICAgIElubGluZUJveCogZW5kQm94ID0gbnVsbHB0
cjsKICAgICBpbnQgdW51c2VkT2Zmc2V0OwogICAgIC8vIENhY2hlIHRoZSBWaXNpYmxlUG9zaXRp
b25zIGJlY2F1c2UgdmlzaWJsZVN0YXJ0KCkgYW5kIHZpc2libGVFbmQoKQogICAgIC8vIGNhbiBj
YXVzZSBsYXlvdXQsIHdoaWNoIGhhcyB0aGUgcG90ZW50aWFsIHRvIGludmFsaWRhdGUgbGluZWJv
eGVzLgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5j
cHAJKHJldmlzaW9uIDE5MTYxNikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNj
dW11bGF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjcsNyArMzI3LDcgQEAgRW50aXR5TWFz
ayBNYXJrdXBBY2N1bXVsYXRvcjo6ZW50aXR5TWFzawogICAgIGlmICghdGV4dC5kb2N1bWVudCgp
LmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBFbnRpdHlNYXNrSW5QQ0RBVEE7CiAK
LSAgICBjb25zdCBRdWFsaWZpZWROYW1lKiBwYXJlbnROYW1lID0gMDsKKyAgICBjb25zdCBRdWFs
aWZpZWROYW1lKiBwYXJlbnROYW1lID0gbnVsbHB0cjsKICAgICBpZiAodGV4dC5wYXJlbnRFbGVt
ZW50KCkpCiAgICAgICAgIHBhcmVudE5hbWUgPSAmdGV4dC5wYXJlbnRFbGVtZW50KCktPnRhZ1FO
YW1lKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9y
LmgJKHJldmlzaW9uIDE5MTYxNikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNj
dW11bGF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBlbnVtIEVudGl0eU1h
c2sgewogLy8gRklYTUU6IE5vbmNvcHlhYmxlPwogY2xhc3MgTWFya3VwQWNjdW11bGF0b3Igewog
cHVibGljOgotICAgIE1hcmt1cEFjY3VtdWxhdG9yKFZlY3RvcjxOb2RlKj4qLCBFQWJzb2x1dGVV
UkxzLCBjb25zdCBSYW5nZSogPSAwLCBFRnJhZ21lbnRTZXJpYWxpemF0aW9uID0gSFRNTEZyYWdt
ZW50U2VyaWFsaXphdGlvbik7CisgICAgTWFya3VwQWNjdW11bGF0b3IoVmVjdG9yPE5vZGUqPios
IEVBYnNvbHV0ZVVSTHMsIGNvbnN0IFJhbmdlKiA9IG51bGxwdHIsIEVGcmFnbWVudFNlcmlhbGl6
YXRpb24gPSBIVE1MRnJhZ21lbnRTZXJpYWxpemF0aW9uKTsKICAgICB2aXJ0dWFsIH5NYXJrdXBB
Y2N1bXVsYXRvcigpOwogCiAgICAgU3RyaW5nIHNlcmlhbGl6ZU5vZGVzKE5vZGUmIHRhcmdldE5v
ZGUsIEVDaGlsZHJlbk9ubHksIFZlY3RvcjxRdWFsaWZpZWROYW1lPiogdGFnTmFtZXNUb1NraXAg
PSBudWxscHRyKTsKQEAgLTg1LDcgKzg1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9p
ZCBhcHBlbmRUZXh0KFN0cmluZ0J1aWxkZXImLCBjb25zdCBUZXh0Jik7CiAgICAgdmlydHVhbCB2
b2lkIGFwcGVuZEVsZW1lbnQoU3RyaW5nQnVpbGRlciYsIGNvbnN0IEVsZW1lbnQmLCBOYW1lc3Bh
Y2VzKik7CiAKLSAgICB2b2lkIGFwcGVuZFN0YXJ0VGFnKGNvbnN0IE5vZGUmLCBOYW1lc3BhY2Vz
KiA9IDApOworICAgIHZvaWQgYXBwZW5kU3RhcnRUYWcoY29uc3QgTm9kZSYsIE5hbWVzcGFjZXMq
ID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGFwcGVuZE9wZW5UYWcoU3RyaW5nQnVpbGRlciYsIGNv
bnN0IEVsZW1lbnQmLCBOYW1lc3BhY2VzKik7CiAgICAgdm9pZCBhcHBlbmRDbG9zZVRhZyhTdHJp
bmdCdWlsZGVyJiwgY29uc3QgRWxlbWVudCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW5kZXJlZFBvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCShyZXZpc2lvbiAxOTE2MTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0
KiByZW5kZXJlckZyb21Qb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAgICAg
QVNTRVJUKHBvc2l0aW9uLmlzTm90TnVsbCgpKTsKLSAgICBOb2RlKiByZW5kZXJlck5vZGUgPSAw
OworICAgIE5vZGUqIHJlbmRlcmVyTm9kZSA9IG51bGxwdHI7CiAgICAgc3dpdGNoIChwb3NpdGlv
bi5hbmNob3JUeXBlKCkpIHsKICAgICBjYXNlIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5B
bmNob3I6CiAgICAgICAgIHJlbmRlcmVyTm9kZSA9IHBvc2l0aW9uLmNvbXB1dGVOb2RlQWZ0ZXJQ
b3NpdGlvbigpOwpAQCAtNjQsOSArNjQsNyBAQCBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCog
cmVuZGVyZXJGcm9tCiB9CiAKIFJlbmRlcmVkUG9zaXRpb246OlJlbmRlcmVkUG9zaXRpb24oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKLSAgICA6IG1fcmVuZGVyZXIoMCkKLSAgICAs
IG1faW5saW5lQm94KDApCi0gICAgLCBtX29mZnNldCgwKQorICAgIDogbV9vZmZzZXQoMCkKICAg
ICAsIG1fcHJldkxlYWZDaGlsZCh1bmNhY2hlZElubGluZUJveCgpKQogICAgICwgbV9uZXh0TGVh
ZkNoaWxkKHVuY2FjaGVkSW5saW5lQm94KCkpCiB7CkBAIC04MCw5ICs3OCw3IEBAIFJlbmRlcmVk
UG9zaXRpb246OlJlbmRlcmVkUG9zaXRpb24oY29uc3QKIH0KIAogUmVuZGVyZWRQb3NpdGlvbjo6
UmVuZGVyZWRQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIEVBZmZpbml0eSBhZmZp
bml0eSkKLSAgICA6IG1fcmVuZGVyZXIoMCkKLSAgICAsIG1faW5saW5lQm94KDApCi0gICAgLCBt
X29mZnNldCgwKQorICAgIDogbV9vZmZzZXQoMCkKICAgICAsIG1fcHJldkxlYWZDaGlsZCh1bmNh
Y2hlZElubGluZUJveCgpKQogICAgICwgbV9uZXh0TGVhZkNoaWxkKHVuY2FjaGVkSW5saW5lQm94
KCkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaAko
cmV2aXNpb24gMTkxNjE2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIFBvc2l0
aW9uIHBvc2l0aW9uQXRMZWZ0Qm91bmRhcnlPZkJpRGlSdW4oKSBjb25zdDsKICAgICBQb3NpdGlv
biBwb3NpdGlvbkF0UmlnaHRCb3VuZGFyeU9mQmlEaVJ1bigpIGNvbnN0OwogCi0gICAgSW50UmVj
dCBhYnNvbHV0ZVJlY3QoTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gMCkgY29u
c3Q7CisgICAgSW50UmVjdCBhYnNvbHV0ZVJlY3QoTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5k
T2ZMaW5lID0gbnVsbHB0cikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFJlbmRlcmVkUG9zaXRpb24mKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtODAs
OCArODAsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgYXRMZWZ0Qm91bmRhcnlPZkJpZGlSdW4oU2hv
dWxkTWF0Y2hCaWRpTGV2ZWwsIHVuc2lnbmVkIGNoYXIgYmlkaUxldmVsT2ZSdW4pIGNvbnN0Owog
ICAgIGJvb2wgYXRSaWdodEJvdW5kYXJ5T2ZCaWRpUnVuKFNob3VsZE1hdGNoQmlkaUxldmVsLCB1
bnNpZ25lZCBjaGFyIGJpZGlMZXZlbE9mUnVuKSBjb25zdDsKIAotICAgIFJlbmRlck9iamVjdCog
bV9yZW5kZXJlcjsKLSAgICBJbmxpbmVCb3gqIG1faW5saW5lQm94OworICAgIFJlbmRlck9iamVj
dCogbV9yZW5kZXJlciB7IG51bGxwdHIgfTsKKyAgICBJbmxpbmVCb3gqIG1faW5saW5lQm94IHsg
bnVsbHB0ciB9OwogICAgIGludCBtX29mZnNldDsKIAogICAgIHN0YXRpYyBJbmxpbmVCb3gqIHVu
Y2FjaGVkSW5saW5lQm94KCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxJbmxpbmVCb3gqPigx
KTsgfQpAQCAtOTIsOSArOTIsNyBAQCBwcml2YXRlOgogfTsKIAogaW5saW5lIFJlbmRlcmVkUG9z
aXRpb246OlJlbmRlcmVkUG9zaXRpb24oKQotICAgIDogbV9yZW5kZXJlcigwKQotICAgICwgbV9p
bmxpbmVCb3goMCkKLSAgICAsIG1fb2Zmc2V0KDApCisgICAgOiBtX29mZnNldCgwKQogICAgICwg
bV9wcmV2TGVhZkNoaWxkKHVuY2FjaGVkSW5saW5lQm94KCkpCiAgICAgLCBtX25leHRMZWFmQ2hp
bGQodW5jYWNoZWRJbmxpbmVCb3goKSkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiAxOTE2MTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzc1LDcgKzc3NSw3IEBAIHN0YXRpYyBib29sIGhhbmRsZVN0eWxlU3Bh
bnNCZWZvcmVJbnNlcnQKIC8vIG9yIGF0IGNvcHkgdGltZS4KIHZvaWQgUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoSW5zZXJ0ZWROb2RlcyYgaW5zZXJ0ZWROb2RlcykK
IHsKLSAgICBIVE1MRWxlbWVudCogd3JhcHBpbmdTdHlsZVNwYW4gPSAwOworICAgIEhUTUxFbGVt
ZW50KiB3cmFwcGluZ1N0eWxlU3BhbiA9IG51bGxwdHI7CiAgICAgLy8gVGhlIHN0eWxlIHNwYW4g
dGhhdCBjb250YWlucyB0aGUgc291cmNlIGRvY3VtZW50J3MgZGVmYXVsdCBzdHlsZSBzaG91bGQg
YmUgYXQKICAgICAvLyB0aGUgdG9wIG9mIHRoZSBmcmFnbWVudCwgYnV0IE1haWwgc29tZXRpbWVz
IGFkZHMgYSB3cmFwcGVyIChmb3IgUGFzdGUgQXMgUXVvdGF0aW9uKSwKICAgICAvLyBzbyBzZWFy
Y2ggZm9yIHRoZSB0b3AgbGV2ZWwgc3R5bGUgc3BhbiBpbnN0ZWFkIG9mIGFzc3VtaW5nIGl0J3Mg
YXQgdGhlIHRvcC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0
ZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0Tm9k
ZUF0dHJpYnV0ZUNvbW1hbmQuY3BwCShyZXZpc2lvbiAxOTE2MTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDksNyArNDksNyBAQCB2b2lkIFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kOjpkb0FwcGx5KCkKIHZv
aWQgU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiB7CiAgICAgbV9lbGVtZW50
LT5zZXRBdHRyaWJ1dGUobV9hdHRyaWJ1dGUsIG1fb2xkVmFsdWUpOwotICAgIEF0b21pY1N0cmlu
Z0ltcGwqIG51bGxTdHJpbmcgPSAwOworICAgIEF0b21pY1N0cmluZ0ltcGwqIG51bGxTdHJpbmcg
PSBudWxscHRyOwogICAgIG1fb2xkVmFsdWUgPSBudWxsU3RyaW5nOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZUNGLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZUNGLmNwcAkocmV2aXNpb24gMTkxNjE2KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDggKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgQ0ZNdXRh
YmxlQ2hhcmFjdGVyU2V0UmVmIGdldFNtYXJ0U2V0KGJvb2wgaXNQcmV2aW91c0NoYXJhY3RlcikK
IHsKLSAgICBzdGF0aWMgQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmIHByZVNtYXJ0U2V0ID0gTlVM
TDsgCi0gICAgc3RhdGljIENGTXV0YWJsZUNoYXJhY3RlclNldFJlZiBwb3N0U21hcnRTZXQgPSBO
VUxMOworICAgIHN0YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgcHJlU21hcnRTZXQ7Cisg
ICAgc3RhdGljIENGTXV0YWJsZUNoYXJhY3RlclNldFJlZiBwb3N0U21hcnRTZXQ7CiAgICAgQ0ZN
dXRhYmxlQ2hhcmFjdGVyU2V0UmVmIHNtYXJ0U2V0ID0gaXNQcmV2aW91c0NoYXJhY3RlciA/IHBy
ZVNtYXJ0U2V0IDogcG9zdFNtYXJ0U2V0OwogICAgIGlmICghc21hcnRTZXQpIHsKICAgICAgICAg
c21hcnRTZXQgPSBDRkNoYXJhY3RlclNldENyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCShyZXZpc2lv
biAxOTE2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3Bl
bGxDaGVja1JlcXVlc3Q6OlNwZWxsQ2hlY2tSZXF1ZXN0KFBhc3NSZWZQdHI8UmFuZ2U+IGNoZWNr
aW5nUmFuZ2UsIFBhc3NSZWZQdHI8UmFuZ2U+IHBhcmFncmFwaFJhbmdlLCBjb25zdCBTdHJpbmcm
IHRleHQsIFRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBl
IHByb2Nlc3NUeXBlKQotICAgIDogbV9jaGVja2VyKDApCi0gICAgLCBtX2NoZWNraW5nUmFuZ2Uo
Y2hlY2tpbmdSYW5nZSkKKyAgICA6IG1fY2hlY2tpbmdSYW5nZShjaGVja2luZ1JhbmdlKQogICAg
ICwgbV9wYXJhZ3JhcGhSYW5nZShwYXJhZ3JhcGhSYW5nZSkKICAgICAsIG1fcm9vdEVkaXRhYmxl
RWxlbWVudChtX2NoZWNraW5nUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkucm9vdEVkaXRhYmxlRWxl
bWVudCgpKQogICAgICwgbV9yZXF1ZXN0RGF0YSh1bnJlcXVlc3RlZFRleHRDaGVja2luZ1NlcXVl
bmNlLCB0ZXh0LCBtYXNrLCBwcm9jZXNzVHlwZSkKQEAgLTc5LDcgKzc4LDcgQEAgdm9pZCBTcGVs
bENoZWNrUmVxdWVzdDo6ZGlkU3VjY2VlZChjb25zdAogICAgIGlmICghbV9jaGVja2VyKQogICAg
ICAgICByZXR1cm47CiAgICAgbV9jaGVja2VyLT5kaWRDaGVja1N1Y2NlZWQobV9yZXF1ZXN0RGF0
YS5zZXF1ZW5jZSgpLCByZXN1bHRzKTsKLSAgICBtX2NoZWNrZXIgPSAwOworICAgIG1fY2hlY2tl
ciA9IG51bGxwdHI7CiB9CiAKIHZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OmRpZENhbmNlbCgpCkBA
IC04Nyw3ICs4Niw3IEBAIHZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OmRpZENhbmNlbCgpCiAgICAg
aWYgKCFtX2NoZWNrZXIpCiAgICAgICAgIHJldHVybjsKICAgICBtX2NoZWNrZXItPmRpZENoZWNr
Q2FuY2VsKG1fcmVxdWVzdERhdGEuc2VxdWVuY2UoKSk7Ci0gICAgbV9jaGVja2VyID0gMDsKKyAg
ICBtX2NoZWNrZXIgPSBudWxscHRyOwogfQogCiB2b2lkIFNwZWxsQ2hlY2tSZXF1ZXN0OjpzZXRD
aGVja2VyQW5kU2VxdWVuY2UoU3BlbGxDaGVja2VyKiByZXF1ZXN0ZXIsIGludCBzZXF1ZW5jZSkK
QEAgLTEwMCw3ICs5OSw3IEBAIHZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OnNldENoZWNrZXJBbmRT
ZXEKIAogdm9pZCBTcGVsbENoZWNrUmVxdWVzdDo6cmVxdWVzdGVyRGVzdHJveWVkKCkKIHsKLSAg
ICBtX2NoZWNrZXIgPSAwOworICAgIG1fY2hlY2tlciA9IG51bGxwdHI7CiB9CiAKIFNwZWxsQ2hl
Y2tlcjo6U3BlbGxDaGVja2VyKEZyYW1lJiBmcmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU3BlbGxDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TcGVsbENoZWNrZXIuaAkocmV2aXNpb24gMTkxNjE2KQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbENoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIFNwZWxsQ2hlY2tSZXF1ZXN0KFBhc3NSZWZQdHI8UmFuZ2U+IGNo
ZWNraW5nUmFuZ2UsIFBhc3NSZWZQdHI8UmFuZ2U+IHBhcmFncmFwaFJhbmdlLCBjb25zdCBTdHJp
bmcmLCBUZXh0Q2hlY2tpbmdUeXBlTWFzaywgVGV4dENoZWNraW5nUHJvY2Vzc1R5cGUpOwogCi0g
ICAgU3BlbGxDaGVja2VyKiBtX2NoZWNrZXI7CisgICAgU3BlbGxDaGVja2VyKiBtX2NoZWNrZXIg
eyBudWxscHRyIH07CiAgICAgUmVmUHRyPFJhbmdlPiBtX2NoZWNraW5nUmFuZ2U7CiAgICAgUmVm
UHRyPFJhbmdlPiBtX3BhcmFncmFwaFJhbmdlOwogICAgIFJlZlB0cjxFbGVtZW50PiBtX3Jvb3RF
ZGl0YWJsZUVsZW1lbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3Np
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9z
aXRpb24uY3BwCShyZXZpc2lvbiAxOTE2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVQb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw3ICsxNzMsNyBAQCBQb3Np
dGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpCiAKICAgICAgICAgICAgIGlmIChi
b3gtPmRpcmVjdGlvbigpID09IHByaW1hcnlEaXJlY3Rpb24pIHsKICAgICAgICAgICAgICAgICBp
ZiAoIXByZXZCb3gpIHsKLSAgICAgICAgICAgICAgICAgICAgSW5saW5lQm94KiBsb2dpY2FsU3Rh
cnQgPSAwOworICAgICAgICAgICAgICAgICAgICBJbmxpbmVCb3gqIGxvZ2ljYWxTdGFydCA9IG51
bGxwdHI7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5RGlyZWN0aW9uID09IExUUiA/
IGJveC0+cm9vdCgpLmdldExvZ2ljYWxTdGFydEJveFdpdGhOb2RlKGxvZ2ljYWxTdGFydCkgOiBi
b3gtPnJvb3QoKS5nZXRMb2dpY2FsRW5kQm94V2l0aE5vZGUobG9naWNhbFN0YXJ0KSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgYm94ID0gbG9naWNhbFN0YXJ0OwogICAgICAgICAgICAgICAg
ICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5yZW5kZXJlcigpOwpAQCAtMzM4LDcgKzMzOCw3IEBA
IFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6cmlnaHRWaXN1YWxseUQKIAogICAgICAgICAgICAg
aWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gcHJpbWFyeURpcmVjdGlvbikgewogICAgICAgICAgICAg
ICAgIGlmICghbmV4dEJveCkgewotICAgICAgICAgICAgICAgICAgICBJbmxpbmVCb3gqIGxvZ2lj
YWxFbmQgPSAwOworICAgICAgICAgICAgICAgICAgICBJbmxpbmVCb3gqIGxvZ2ljYWxFbmQgPSBu
dWxscHRyOwogICAgICAgICAgICAgICAgICAgICBpZiAocHJpbWFyeURpcmVjdGlvbiA9PSBMVFIg
PyBib3gtPnJvb3QoKS5nZXRMb2dpY2FsRW5kQm94V2l0aE5vZGUobG9naWNhbEVuZCkgOiBib3gt
PnJvb3QoKS5nZXRMb2dpY2FsU3RhcnRCb3hXaXRoTm9kZShsb2dpY2FsRW5kKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgYm94ID0gbG9naWNhbEVuZDsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsKQEAgLTYwMCw3ICs2MDAsNyBAQCBVQ2hh
cjMyIFZpc2libGVQb3NpdGlvbjo6Y2hhcmFjdGVyQWZ0ZXIoCiBMYXlvdXRSZWN0IFZpc2libGVQ
b3NpdGlvbjo6bG9jYWxDYXJldFJlY3QoUmVuZGVyT2JqZWN0KiYgcmVuZGVyZXIpIGNvbnN0CiB7
CiAgICAgaWYgKG1fZGVlcFBvc2l0aW9uLmlzTnVsbCgpKSB7Ci0gICAgICAgIHJlbmRlcmVyID0g
MDsKKyAgICAgICAgcmVuZGVyZXIgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gSW50UmVjdCgp
OwogICAgIH0KICAgICBOb2RlKiBub2RlID0gbV9kZWVwUG9zaXRpb24uYW5jaG9yTm9kZSgpOwpA
QCAtNzE0LDcgKzcxNCw3IEBAIGJvb2wgc2V0RW5kKFJhbmdlICpyLCBjb25zdCBWaXNpYmxlUG9z
aXQKIEVsZW1lbnQqIGVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiB2aXNpYmxlUG9zaXRpb24pCiB7CiAgICAgaWYgKHZpc2libGVQb3NpdGlvbi5pc051bGwo
KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
cmV0dXJuIGRlcHJlY2F0ZWRFbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KHZpc2libGVQb3NpdGlv
bi5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCkpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAkocmV2aXNpb24gMTkxNjE2KQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMs
MTEgKzEzMywxMyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFZlY3RvcjxJbmxpbmVCb3gqPiYgY29s
bGVjdEJveGVzKGNvbnN0IFJvb3RJbmxpbmVCb3gqKTsKICAgICBpbnQgYm94SW5kZXhJbkxlYXZl
cyhjb25zdCBJbmxpbmVUZXh0Qm94KikgY29uc3Q7CiAKLSAgICBjb25zdCBSb290SW5saW5lQm94
KiBtX3Jvb3RJbmxpbmVCb3g7CisgICAgY29uc3QgUm9vdElubGluZUJveCogbV9yb290SW5saW5l
Qm94IHsgbnVsbHB0ciB9OwogICAgIFZlY3RvcjxJbmxpbmVCb3gqPiBtX2xlYWZCb3hlczsKIH07
CiAKLUNhY2hlZExvZ2ljYWxseU9yZGVyZWRMZWFmQm94ZXM6OkNhY2hlZExvZ2ljYWxseU9yZGVy
ZWRMZWFmQm94ZXMoKSA6IG1fcm9vdElubGluZUJveCgwKSB7IH07CitDYWNoZWRMb2dpY2FsbHlP
cmRlcmVkTGVhZkJveGVzOjpDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzKCkKK3sKK30K
IAogY29uc3QgSW5saW5lQm94KiBDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzOjpwcmV2
aW91c1RleHRPckxpbmVCcmVha0JveChjb25zdCBSb290SW5saW5lQm94KiByb290LCBjb25zdCBJ
bmxpbmVUZXh0Qm94KiBib3gpCiB7CkBAIC0zNDYsOSArMzQ4LDkgQEAgc3RhdGljIFZpc2libGVQ
b3NpdGlvbiB2aXN1YWxXb3JkUG9zaXRpbwogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
KCk7CiAKICAgICBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uID0gZGlyZWN0aW9uT2ZFbmNs
b3NpbmdCbG9jayh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSk7Ci0gICAgSW5saW5l
Qm94KiBwcmV2aW91c2x5VmlzaXRlZEJveCA9IDA7CisgICAgSW5saW5lQm94KiBwcmV2aW91c2x5
VmlzaXRlZEJveCA9IG51bGxwdHI7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGN1cnJlbnQgPSB2aXNp
YmxlUG9zaXRpb247Ci0gICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ZXIgPSAwOworICAgIFRleHRC
cmVha0l0ZXJhdG9yKiBpdGVyID0gbnVsbHB0cjsKIAogICAgIENhY2hlZExvZ2ljYWxseU9yZGVy
ZWRMZWFmQm94ZXMgbGVhZkJveGVzOwogICAgIFZlY3RvcjxVQ2hhciwgMTAyND4gc3RyaW5nOwpA
QCAtOTU3LDcgKzk1OSw3IEBAIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVQb3NpdGlvbihj
b24KICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7
CiAKLSAgICBSb290SW5saW5lQm94KiByb290ID0gMDsKKyAgICBSb290SW5saW5lQm94KiByb290
ID0gbnVsbHB0cjsKICAgICBJbmxpbmVCb3gqIGJveDsKICAgICBpbnQgaWdub3JlZENhcmV0T2Zm
c2V0OwogICAgIHZpc2libGVQb3NpdGlvbi5nZXRJbmxpbmVCb3hBbmRPZmZzZXQoYm94LCBpZ25v
cmVkQ2FyZXRPZmZzZXQpOwpAQCAtOTY2LDcgKzk2OCw3IEBAIFZpc2libGVQb3NpdGlvbiBwcmV2
aW91c0xpbmVQb3NpdGlvbihjb24KICAgICAgICAgLy8gV2Ugd2FudCB0byBza2lwIHplcm8gaGVp
Z2h0IGJveGVzLgogICAgICAgICAvLyBUaGlzIGNvdWxkIGhhcHBlbiBpbiBjYXNlIGl0IGlzIGEg
VHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LgogICAgICAgICBpZiAoIXJvb3QgfHwgIXJvb3Qt
PmxvZ2ljYWxIZWlnaHQoKSB8fCAhcm9vdC0+Zmlyc3RMZWFmQ2hpbGQoKSkKLSAgICAgICAgICAg
IHJvb3QgPSAwOworICAgICAgICAgICAgcm9vdCA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYg
KCFyb290KSB7CkBAIC0xMDEyLDcgKzEwMTQsNyBAQCBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVQ
b3NpdGlvbihjb25zdCBWCiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIFZpc2li
bGVQb3NpdGlvbigpOwogCi0gICAgUm9vdElubGluZUJveCogcm9vdCA9IDA7CisgICAgUm9vdElu
bGluZUJveCogcm9vdCA9IG51bGxwdHI7CiAgICAgSW5saW5lQm94KiBib3g7CiAgICAgaW50IGln
bm9yZWRDYXJldE9mZnNldDsKICAgICB2aXNpYmxlUG9zaXRpb24uZ2V0SW5saW5lQm94QW5kT2Zm
c2V0KGJveCwgaWdub3JlZENhcmV0T2Zmc2V0KTsKQEAgLTEwMjEsNyArMTAyMyw3IEBAIFZpc2li
bGVQb3NpdGlvbiBuZXh0TGluZVBvc2l0aW9uKGNvbnN0IFYKICAgICAgICAgLy8gV2Ugd2FudCB0
byBza2lwIHplcm8gaGVpZ2h0IGJveGVzLgogICAgICAgICAvLyBUaGlzIGNvdWxkIGhhcHBlbiBp
biBjYXNlIGl0IGlzIGEgVHJhaWxpbmdGbG9hdHNSb290SW5saW5lQm94LgogICAgICAgICBpZiAo
IXJvb3QgfHwgIXJvb3QtPmxvZ2ljYWxIZWlnaHQoKSB8fCAhcm9vdC0+Zmlyc3RMZWFmQ2hpbGQo
KSkKLSAgICAgICAgICAgIHJvb3QgPSAwOworICAgICAgICAgICAgcm9vdCA9IG51bGxwdHI7CiAg
ICAgfQogCiAgICAgaWYgKCFyb290KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxl
ZGl0aW5nLmNwcAkocmV2aXNpb24gMTkxNjE2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9o
dG1sZWRpdGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyMyw3ICs2MjMsNyBAQCBOb2RlKiBl
bmNsb3NpbmdOb2RlT2ZUeXBlKGNvbnN0IFBvc2l0aW9uCiAKIE5vZGUqIGhpZ2hlc3RFbmNsb3Np
bmdOb2RlT2ZUeXBlKGNvbnN0IFBvc2l0aW9uJiBwLCBib29sICgqbm9kZUlzT2ZUeXBlKShjb25z
dCBOb2RlKiksIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlLCBOb2RlKiBzdGF5V2l0
aGluKQogewotICAgIE5vZGUqIGhpZ2hlc3QgPSAwOworICAgIE5vZGUqIGhpZ2hlc3QgPSBudWxs
cHRyOwogICAgIE5vZGUqIHJvb3QgPSBydWxlID09IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5
ID8gaGlnaGVzdEVkaXRhYmxlUm9vdChwKSA6IDA7CiAgICAgZm9yIChOb2RlKiBuID0gcC5jb250
YWluZXJOb2RlKCk7IG4gJiYgbiAhPSBzdGF5V2l0aGluOyBuID0gbi0+cGFyZW50Tm9kZSgpKSB7
CiAgICAgICAgIGlmIChyb290ICYmICFuLT5oYXNFZGl0YWJsZVN0eWxlKCkpCkBAIC02NTMsNyAr
NjUzLDcgQEAgc3RhdGljIGJvb2wgaGFzQVJlbmRlcmVkRGVzY2VuZGFudChOb2RlKgogCiBOb2Rl
KiBoaWdoZXN0Tm9kZVRvUmVtb3ZlSW5QcnVuaW5nKE5vZGUqIG5vZGUpCiB7Ci0gICAgTm9kZSog
cHJldmlvdXNOb2RlID0gMDsKKyAgICBOb2RlKiBwcmV2aW91c05vZGUgPSBudWxscHRyOwogICAg
IE5vZGUqIHJvb3RFZGl0YWJsZUVsZW1lbnQgPSBub2RlID8gbm9kZS0+cm9vdEVkaXRhYmxlRWxl
bWVudCgpIDogMDsKICAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkg
ewogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHJldmlzaW9uIDE5MTYx
NikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNyArNTcsNyBAQCBOb2RlKiBoaWdoZXN0QW5jZXN0b3IoTm9kZSopOwogTm9kZSog
aGlnaGVzdEVkaXRhYmxlUm9vdChjb25zdCBQb3NpdGlvbiYsIEVkaXRhYmxlVHlwZSA9IENvbnRl
bnRJc0VkaXRhYmxlKTsKIAogTm9kZSogaGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5cGUoY29uc3Qg
UG9zaXRpb24mLCBib29sICgqbm9kZUlzT2ZUeXBlKShjb25zdCBOb2RlKiksCi0gICAgRWRpdGlu
Z0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnksIE5vZGUq
IHN0YXlXaXRoaW4gPSAwKTsKKyAgICBFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgPSBDYW5u
b3RDcm9zc0VkaXRpbmdCb3VuZGFyeSwgTm9kZSogc3RheVdpdGhpbiA9IG51bGxwdHIpOwogTm9k
ZSogaGlnaGVzdE5vZGVUb1JlbW92ZUluUHJ1bmluZyhOb2RlKik7CiBOb2RlKiBsb3dlc3RFZGl0
YWJsZUFuY2VzdG9yKE5vZGUqKTsKIApAQCAtMTQzLDkgKzE0Myw5IEBAIFBvc2l0aW9uIG5leHRW
aXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKGMKIFBvc2l0aW9uIHByZXZpb3VzVmlzdWFsbHlEaXN0
aW5jdENhbmRpZGF0ZShjb25zdCBQb3NpdGlvbiYpOwogCiBQb3NpdGlvbiBwb3NpdGlvbk91dHNp
ZGVUYWJTcGFuKGNvbnN0IFBvc2l0aW9uJik7Ci1Qb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUNvbnRh
aW5pbmdTcGVjaWFsRWxlbWVudChjb25zdCBQb3NpdGlvbiYsIE5vZGUqKiBjb250YWluaW5nU3Bl
Y2lhbEVsZW1lbnQgPSAwKTsKLVBvc2l0aW9uIHBvc2l0aW9uQWZ0ZXJDb250YWluaW5nU3BlY2lh
bEVsZW1lbnQoY29uc3QgUG9zaXRpb24mLCBOb2RlKiogY29udGFpbmluZ1NwZWNpYWxFbGVtZW50
ID0gMCk7Ci1Qb3NpdGlvbiBwb3NpdGlvbk91dHNpZGVDb250YWluaW5nU3BlY2lhbEVsZW1lbnQo
Y29uc3QgUG9zaXRpb24mLCBOb2RlKiogY29udGFpbmluZ1NwZWNpYWxFbGVtZW50ID0gMCk7CitQ
b3NpdGlvbiBwb3NpdGlvbkJlZm9yZUNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudChjb25zdCBQb3Np
dGlvbiYsIE5vZGUqKiBjb250YWluaW5nU3BlY2lhbEVsZW1lbnQgPSBudWxscHRyKTsKK1Bvc2l0
aW9uIHBvc2l0aW9uQWZ0ZXJDb250YWluaW5nU3BlY2lhbEVsZW1lbnQoY29uc3QgUG9zaXRpb24m
LCBOb2RlKiogY29udGFpbmluZ1NwZWNpYWxFbGVtZW50ID0gbnVsbHB0cik7CitQb3NpdGlvbiBw
b3NpdGlvbk91dHNpZGVDb250YWluaW5nU3BlY2lhbEVsZW1lbnQoY29uc3QgUG9zaXRpb24mLCBO
b2RlKiogY29udGFpbmluZ1NwZWNpYWxFbGVtZW50ID0gbnVsbHB0cik7CiAKIGlubGluZSBQb3Np
dGlvbiBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUoTm9kZSogbm9kZSkKIHsKQEAgLTIxNSw3
ICsyMTUsNyBAQCBSZWY8SFRNTEVsZW1lbnQ+IGNyZWF0ZUhUTUxFbGVtZW50KERvY3VtCiBSZWY8
SFRNTEVsZW1lbnQ+IGNyZWF0ZUhUTUxFbGVtZW50KERvY3VtZW50JiwgY29uc3QgQXRvbWljU3Ry
aW5nJik7CiAKIEhUTUxFbGVtZW50KiBlbmNsb3NpbmdMaXN0KE5vZGUqKTsKLUhUTUxFbGVtZW50
KiBvdXRlcm1vc3RFbmNsb3NpbmdMaXN0KE5vZGUqLCBOb2RlKiByb290TGlzdCA9IDApOworSFRN
TEVsZW1lbnQqIG91dGVybW9zdEVuY2xvc2luZ0xpc3QoTm9kZSosIE5vZGUqIHJvb3RMaXN0ID0g
bnVsbHB0cik7CiBOb2RlKiBlbmNsb3NpbmdMaXN0Q2hpbGQoTm9kZSopOwogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lvbiAxOTE2
MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExOCw3ICsxMTgsNyBAQCBjbGFzcyBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvciBmaW5hbCA6
IHB1CiBwdWJsaWM6CiAgICAgZW51bSBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgeyBEb2VzRnVsbHlT
ZWxlY3ROb2RlLCBEb2VzTm90RnVsbHlTZWxlY3ROb2RlIH07CiAKLSAgICBTdHlsZWRNYXJrdXBB
Y2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFic29sdXRlVVJMcywgRUFubm90YXRl
Rm9ySW50ZXJjaGFuZ2UsIGNvbnN0IFJhbmdlKiwgYm9vbCBuZWVkc1Bvc2l0aW9uU3R5bGVDb252
ZXJzaW9uLCBOb2RlKiBoaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkID0gMCk7CisgICAgU3R5bGVk
TWFya3VwQWNjdW11bGF0b3IoVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBYnNvbHV0ZVVSTHMsIEVB
bm5vdGF0ZUZvckludGVyY2hhbmdlLCBjb25zdCBSYW5nZSosIGJvb2wgbmVlZHNQb3NpdGlvblN0
eWxlQ29udmVyc2lvbiwgTm9kZSogaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZCA9IG51bGxwdHIp
OwogCiAgICAgTm9kZSogc2VyaWFsaXplTm9kZXMoTm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0
RW5kKTsKICAgICB2b2lkIHdyYXBXaXRoTm9kZShOb2RlJiwgYm9vbCBjb252ZXJ0QmxvY2tzVG9J
bmxpbmVzID0gZmFsc2UsIFJhbmdlRnVsbHlTZWxlY3RzTm9kZSA9IERvZXNGdWxseVNlbGVjdE5v
ZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCShyZXZpc2lvbiAxOTE2MTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2
Myw3IEBAIHZvaWQgcmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KENvbnRhaW4KIHZvaWQgcmVw
bGFjZUNoaWxkcmVuV2l0aFRleHQoQ29udGFpbmVyTm9kZSYsIGNvbnN0IFN0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmKTsKIAogU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSYsIFZlY3RvcjxO
b2RlKj4qID0gbnVsbHB0ciwgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgPSBEb05vdEFubm90YXRl
Rm9ySW50ZXJjaGFuZ2UsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9IGZhbHNlLCBFQWJz
b2x1dGVVUkxzID0gRG9Ob3RSZXNvbHZlVVJMcyk7Ci1TdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0
IE5vZGUmLCBFQ2hpbGRyZW5Pbmx5ID0gSW5jbHVkZU5vZGUsIFZlY3RvcjxOb2RlKj4qID0gbnVs
bHB0ciwgRUFic29sdXRlVVJMcyA9IERvTm90UmVzb2x2ZVVSTHMsIFZlY3RvcjxRdWFsaWZpZWRO
YW1lPiogdGFnTmFtZXNUb1NraXAgPSAwLCBFRnJhZ21lbnRTZXJpYWxpemF0aW9uID0gSFRNTEZy
YWdtZW50U2VyaWFsaXphdGlvbik7CitTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUmLCBF
Q2hpbGRyZW5Pbmx5ID0gSW5jbHVkZU5vZGUsIFZlY3RvcjxOb2RlKj4qID0gbnVsbHB0ciwgRUFi
c29sdXRlVVJMcyA9IERvTm90UmVzb2x2ZVVSTHMsIFZlY3RvcjxRdWFsaWZpZWROYW1lPiogdGFn
TmFtZXNUb1NraXAgPSBudWxscHRyLCBFRnJhZ21lbnRTZXJpYWxpemF0aW9uID0gSFRNTEZyYWdt
ZW50U2VyaWFsaXphdGlvbik7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVGdWxsTWFy
a3VwKGNvbnN0IE5vZGUmKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVGdWxsTWFya3Vw
KGNvbnN0IFJhbmdlJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9T
Lm1tCShyZXZpc2lvbiAxOTE2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0
b3JJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIEVkaXRvcjo6
c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0
dXJuOwogICAgICAgICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IE5VTEw7CisgICAgY29u
c3QgY2hhciAqbmV3VmFsdWUgPSBudWxscHRyOwogICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduID0g
KnZhbHVlOwogICAgIHN3aXRjaCAodGV4dEFsaWduKSB7CiAgICAgICAgIGNhc2UgVEFTVEFSVDoK
QEAgLTIwNCw3ICsyMDQsNyBAQCBjb25zdCBGb250KiBFZGl0b3I6OmZvbnRGb3JTZWxlY3Rpb24o
Ym9vCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgY29uc3QgRm9udCogZm9u
dCA9IDA7CisgICAgY29uc3QgRm9udCogZm9udCA9IG51bGxwdHI7CiAgICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IG1fZnJhbWUuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBp
ZiAoTm9kZSogc3RhcnROb2RlID0gYWRqdXN0ZWRTZWxlY3Rpb25TdGFydEZvclN0eWxlQ29tcHV0
YXRpb24obV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSkuZGVwcmVjYXRlZE5vZGUoKSkg
ewogICAgICAgICBOb2RlKiBwYXN0RW5kID0gcmFuZ2UtPnBhc3RMYXN0Tm9kZSgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4
dFVJQ29udHJvbGxlci5tbQkocmV2aXNpb24gMTkxNjE2KQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw3ICs0OSw3IEBAIE5TVGV4dEFsdGVybmF0aXZlcyogQWx0ZXJuYXRpdmVUZXh0VUlDb24K
IHsKICAgICBIYXNoTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgaXRyID0gbV9hbHRlcm5hdGl2ZXNP
YmplY3RNYXAuZmluZChjb250ZXh0KTsKICAgICBpZiAoaXRyID09IG1fYWx0ZXJuYXRpdmVzT2Jq
ZWN0TWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIG5pbDsK
ICAgICByZXR1cm4gaXRyLT52YWx1ZS5nZXQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbQkocmV2aXNpb24gMTkxNjE2KQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3
LDcgQEAgY29uc3QgRm9udCogRWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKGJvbwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGNvbnN0IEZvbnQqIGZvbnQgPSAwOworICAgIGNv
bnN0IEZvbnQqIGZvbnQgPSBudWxscHRyOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBtX2Zy
YW1lLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgTm9kZSogc3RhcnROb2Rl
ID0gYWRqdXN0ZWRTZWxlY3Rpb25TdGFydEZvclN0eWxlQ29tcHV0YXRpb24obV9mcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKSkuZGVwcmVjYXRlZE5vZGUoKTsKICAgICBpZiAocmFuZ2UgJiYg
c3RhcnROb2RlKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264198</attachid>
            <date>2015-10-28 00:22:41 -0700</date>
            <delta_ts>2015-10-28 01:19:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150555-20151028162149.patch</filename>
            <type>text/plain</type>
            <size>37728</size>
            <attacher name="Hunseop Jeong">hs85.jeong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg4IEBACisyMDE1LTEwLTI3ICBIdW5zZW9w
IEplb25nICA8aHM4NS5qZW9uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBSZXBsYWNlIDAgYW5k
IE5VTEwgd2l0aCBudWxscHRyIGluIFdlYkNvcmUvZWRpdGluZy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDU1NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlz
IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OkFwcGx5U3R5bGVD
b21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdEFuY2Vz
dG9yc1dpdGhVbmljb2RlQmlkaSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFu
ZDo6YXBwbHlJbmxpbmVTdHlsZSk6CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnNob3VsZFJlbW92ZUlu
bGluZVN0eWxlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGx5
Q29tbWFuZFRvQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21t
YW5kOjpkZWxldGVJbnNpZ25pZmljYW50VGV4dCk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVT
ZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNv
bW1hbmQ6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRl
U2VsZWN0aW9uQ29tbWFuZDo6aW5pdGlhbGl6ZVN0YXJ0RW5kKToKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5kOjpFZGl0Q29t
bWFuZCk6CisgICAgICAgICogZWRpdGluZy9FZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGVkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50RXF1aXZh
bGVudDo6SFRNTEVsZW1lbnRFcXVpdmFsZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdT
dHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5s
aW5lU3R5bGVPZkVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
Y29tbWFuZElzU3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpDb21tYW5kOjpDb21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDYXJldENvbnRyb2xsZXI6OnNldENh
cmV0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmRpcmVjdGlv
bk9mU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjplbnRpdHlNYXNrRm9yVGV4dCk6
CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5oOgorICAgICAgICAqIGVkaXRp
bmcvUmVuZGVyZWRQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJlckZyb21Q
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJlZFBv
c2l0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyZWRQb3NpdGlvbjo6dW5jYWNoZWRJbmxpbmVCb3gpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbik6CisgICAgICAgICogZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6CisgICAgICAgICogZWRpdGluZy9T
ZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXROb2RlQXR0
cmlidXRlQ29tbWFuZDo6ZG9VbmFwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL1NtYXJ0UmVwbGFj
ZUNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFNtYXJ0U2V0KToKKyAgICAgICAgKiBlZGl0
aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVz
dDo6U3BlbGxDaGVja1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja1JlcXVl
c3Q6OmRpZFN1Y2NlZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja1JlcXVlc3Q6OmRp
ZENhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6c2V0Q2hlY2tl
ckFuZFNlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0OjpyZXF1
ZXN0ZXJEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpTcGVsbENo
ZWNrZXIpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmg6CisgICAgICAgICogZWRp
dGluZy9WaXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0
aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpW
aXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OmxvY2FsQ2FyZXRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvVmlz
aWJsZVVuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZExvZ2ljYWxseU9yZGVyZWRM
ZWFmQm94ZXM6OkNhY2hlZExvZ2ljYWxseU9yZGVyZWRMZWFmQm94ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlczo6cHJldmlvdXNUZXh0T3JMaW5l
QnJlYWtCb3gpOgorICAgICAgICAoV2ViQ29yZTo6dmlzdWFsV29yZFBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OnByZXZpb3VzTGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om5l
eHRMaW5lUG9zaXRpb24pOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6aGlnaGVzdE5vZGVUb1JlbW92ZUluUHJ1bmluZyk6CisgICAgICAgICogZWRpdGluZy9o
dG1sZWRpdGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RQb3NpdGlvbkluT3JCZWZvcmVO
b2RlKToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW06CisgICAgICAg
IChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29u
dGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0ZvckNvbnRleHQpOgorICAgICAgICAqIGVkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zm9udEZvclNl
bGVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAqIGVkaXRp
bmcvbWFya3VwLmg6CisKIDIwMTUtMTAtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBpZCBvZiBpZnJhbWUgaW5jb3JyZWN0bHkgc2V0cyB3aW5kb3cgbmFtZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHJl
dmlzaW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDYgQEAgQXBwbHlTdHlsZUNvbW1h
bmQ6OkFwcGx5U3R5bGVDb21tYW5kKERvYwogICAgICwgbV9lbmQoZW5kaW5nU2VsZWN0aW9uKCku
ZW5kKCkudXBzdHJlYW0oKSkKICAgICAsIG1fdXNlRW5kaW5nU2VsZWN0aW9uKHRydWUpCiAgICAg
LCBtX3JlbW92ZU9ubHkoZmFsc2UpCi0gICAgLCBtX2lzSW5saW5lRWxlbWVudFRvUmVtb3ZlRnVu
Y3Rpb24oMCkKIHsKIH0KIApAQCAtMTQyLDcgKzE0MSw2IEBAIEFwcGx5U3R5bGVDb21tYW5kOjpB
cHBseVN0eWxlQ29tbWFuZChEb2MKICAgICAsIG1fZW5kKGVuZCkKICAgICAsIG1fdXNlRW5kaW5n
U2VsZWN0aW9uKGZhbHNlKQogICAgICwgbV9yZW1vdmVPbmx5KGZhbHNlKQotICAgICwgbV9pc0lu
bGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9uKDApCiB7CiB9CiAKQEAgLTE1NSw3ICsxNTMsNiBA
QCBBcHBseVN0eWxlQ29tbWFuZDo6QXBwbHlTdHlsZUNvbW1hbmQoUGFzCiAgICAgLCBtX3VzZUVu
ZGluZ1NlbGVjdGlvbih0cnVlKQogICAgICwgbV9zdHlsZWRJbmxpbmVFbGVtZW50KGVsZW1lbnQp
CiAgICAgLCBtX3JlbW92ZU9ubHkocmVtb3ZlT25seSkKLSAgICAsIG1faXNJbmxpbmVFbGVtZW50
VG9SZW1vdmVGdW5jdGlvbigwKQogewogfQogCkBAIC00NjgsOCArNDY1LDggQEAgSFRNTEVsZW1l
bnQqIEFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdEFuYwogICAgIGlmICghYmxvY2sgfHwgYmxvY2sg
PT0gbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBOb2RlKiBoaWdoZXN0QW5jZXN0b3JX
aXRoVW5pY29kZUJpZGkgPSAwOwotICAgIE5vZGUqIG5leHRIaWdoZXN0QW5jZXN0b3JXaXRoVW5p
Y29kZUJpZGkgPSAwOworICAgIE5vZGUqIGhpZ2hlc3RBbmNlc3RvcldpdGhVbmljb2RlQmlkaSA9
IG51bGxwdHI7CisgICAgTm9kZSogbmV4dEhpZ2hlc3RBbmNlc3RvcldpdGhVbmljb2RlQmlkaSA9
IG51bGxwdHI7CiAgICAgaW50IGhpZ2hlc3RBbmNlc3RvclVuaWNvZGVCaWRpID0gMDsKICAgICBm
b3IgKE5vZGUqIG4gPSBub2RlLT5wYXJlbnROb2RlKCk7IG4gIT0gYmxvY2s7IG4gPSBuLT5wYXJl
bnROb2RlKCkpIHsKICAgICAgICAgaW50IHVuaWNvZGVCaWRpID0gdG9JZGVudGlmaWVyKENvbXB1
dGVkU3R5bGVFeHRyYWN0b3IobikucHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRp
KSk7CkBAIC00ODMsNyArNDgwLDcgQEAgSFRNTEVsZW1lbnQqIEFwcGx5U3R5bGVDb21tYW5kOjpz
cGxpdEFuYwogICAgIGlmICghaGlnaGVzdEFuY2VzdG9yV2l0aFVuaWNvZGVCaWRpKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIEhUTUxFbGVtZW50KiB1bnNwbGl0QW5jZXN0b3IgPSAwOworICAg
IEhUTUxFbGVtZW50KiB1bnNwbGl0QW5jZXN0b3IgPSBudWxscHRyOwogCiAgICAgV3JpdGluZ0Rp
cmVjdGlvbiBoaWdoZXN0QW5jZXN0b3JEaXJlY3Rpb247CiAgICAgaWYgKGFsbG93ZWREaXJlY3Rp
b24gIT0gTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24KQEAgLTU1OSw4ICs1NTYsOCBAQCBzdGF0aWMg
Tm9kZSogaGlnaGVzdEVtYmVkZGluZ0FuY2VzdG9yKE5vCiAKIHZvaWQgQXBwbHlTdHlsZUNvbW1h
bmQ6OmFwcGx5SW5saW5lU3R5bGUoRWRpdGluZ1N0eWxlKiBzdHlsZSkKIHsKLSAgICBSZWZQdHI8
Q29udGFpbmVyTm9kZT4gc3RhcnREdW1teVNwYW5BbmNlc3RvciA9IDA7Ci0gICAgUmVmUHRyPENv
bnRhaW5lck5vZGU+IGVuZER1bW15U3BhbkFuY2VzdG9yID0gMDsKKyAgICBSZWZQdHI8Q29udGFp
bmVyTm9kZT4gc3RhcnREdW1teVNwYW5BbmNlc3RvcjsKKyAgICBSZWZQdHI8Q29udGFpbmVyTm9k
ZT4gZW5kRHVtbXlTcGFuQW5jZXN0b3I7CiAKICAgICAvLyB1cGRhdGUgZG9jdW1lbnQgbGF5b3V0
IG9uY2UgYmVmb3JlIHJlbW92aW5nIHN0eWxlcwogICAgIC8vIHNvIHRoYXQgd2UgYXZvaWQgdGhl
IGV4cGVuc2Ugb2YgdXBkYXRpbmcgYmVmb3JlIGVhY2ggYW5kIGV2ZXJ5IGNhbGwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHJldmlzaW9uIDE5MTY1
MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzcsMTEgKzc3LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N0eWxlZElu
bGluZUVsZW1lbnRUb1JlbW92ZShFbGVtZW50KikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRBcHBs
eUlubGluZVN0eWxlVG9SdW4oRWRpdGluZ1N0eWxlKiwgTm9kZSogcnVuU3RhcnQsIE5vZGUqIHBh
c3RFbmROb2RlKTsKICAgICB2b2lkIHJlbW92ZUNvbmZsaWN0aW5nSW5saW5lU3R5bGVGcm9tUnVu
KEVkaXRpbmdTdHlsZSosIFJlZlB0cjxOb2RlPiYgcnVuU3RhcnQsIFJlZlB0cjxOb2RlPiYgcnVu
RW5kLCBQYXNzUmVmUHRyPE5vZGU+IHBhc3RFbmROb2RlKTsKLSAgICBib29sIHJlbW92ZUlubGlu
ZVN0eWxlRnJvbUVsZW1lbnQoRWRpdGluZ1N0eWxlKiwgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4s
IElubGluZVN0eWxlUmVtb3ZhbE1vZGUgPSBSZW1vdmVJZk5lZWRlZCwgRWRpdGluZ1N0eWxlKiBl
eHRyYWN0ZWRTdHlsZSA9IDApOworICAgIGJvb2wgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVu
dChFZGl0aW5nU3R5bGUqLCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiwgSW5saW5lU3R5bGVSZW1v
dmFsTW9kZSA9IFJlbW92ZUlmTmVlZGVkLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlID0g
bnVsbHB0cik7CiAgICAgaW5saW5lIGJvb2wgc2hvdWxkUmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxl
bWVudChFZGl0aW5nU3R5bGUqIHN0eWxlLCBIVE1MRWxlbWVudCogZWxlbWVudCkge3JldHVybiBy
ZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLCBlbGVtZW50LCBSZW1vdmVOb25lKTt9
CiAgICAgdm9pZCByZXBsYWNlV2l0aFNwYW5PclJlbW92ZUlmV2l0aG91dEF0dHJpYnV0ZXMoSFRN
TEVsZW1lbnQqJik7CiAgICAgYm9vbCByZW1vdmVJbXBsaWNpdGx5U3R5bGVkRWxlbWVudChFZGl0
aW5nU3R5bGUqLCBIVE1MRWxlbWVudCosIElubGluZVN0eWxlUmVtb3ZhbE1vZGUsIEVkaXRpbmdT
dHlsZSogZXh0cmFjdGVkU3R5bGUpOwotICAgIGJvb2wgcmVtb3ZlQ1NTU3R5bGUoRWRpdGluZ1N0
eWxlKiwgSFRNTEVsZW1lbnQqLCBJbmxpbmVTdHlsZVJlbW92YWxNb2RlID0gUmVtb3ZlSWZOZWVk
ZWQsIEVkaXRpbmdTdHlsZSogZXh0cmFjdGVkU3R5bGUgPSAwKTsKKyAgICBib29sIHJlbW92ZUNT
U1N0eWxlKEVkaXRpbmdTdHlsZSosIEhUTUxFbGVtZW50KiwgSW5saW5lU3R5bGVSZW1vdmFsTW9k
ZSA9IFJlbW92ZUlmTmVlZGVkLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlID0gbnVsbHB0
cik7CiAgICAgSFRNTEVsZW1lbnQqIGhpZ2hlc3RBbmNlc3RvcldpdGhDb25mbGljdGluZ0lubGlu
ZVN0eWxlKEVkaXRpbmdTdHlsZSosIE5vZGUqKTsKICAgICB2b2lkIGFwcGx5SW5saW5lU3R5bGVU
b1B1c2hEb3duKE5vZGUqLCBFZGl0aW5nU3R5bGUqKTsKICAgICB2b2lkIHB1c2hEb3duSW5saW5l
U3R5bGVBcm91bmROb2RlKEVkaXRpbmdTdHlsZSosIE5vZGUqKTsKQEAgLTEyNyw3ICsxMjcsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VFbmRpbmdTZWxlY3Rpb247CiAgICAgUmVmUHRyPEVs
ZW1lbnQ+IG1fc3R5bGVkSW5saW5lRWxlbWVudDsKICAgICBib29sIG1fcmVtb3ZlT25seTsKLSAg
ICBJc0lubGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9uIG1faXNJbmxpbmVFbGVtZW50VG9SZW1v
dmVGdW5jdGlvbjsKKyAgICBJc0lubGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9uIG1faXNJbmxp
bmVFbGVtZW50VG9SZW1vdmVGdW5jdGlvbiB7IG51bGxwdHIgfTsKIH07CiAKIGVudW0gU2hvdWxk
U3R5bGVBdHRyaWJ1dGVCZUVtcHR5IHsgQWxsb3dOb25FbXB0eVN0eWxlQXR0cmlidXRlLCBTdHls
ZUF0dHJpYnV0ZVNob3VsZEJlRW1wdHkgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Q29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiAxOTE2NTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGx5Q29t
bWFuZFQKICAgICBjb21tYW5kLT5zZXRQYXJlbnQodGhpcyk7CiAgICAgY29tbWFuZC0+ZG9BcHBs
eSgpOwogICAgIGlmIChjb21tYW5kLT5pc1NpbXBsZUVkaXRDb21tYW5kKCkpIHsKLSAgICAgICAg
Y29tbWFuZC0+c2V0UGFyZW50KDApOworICAgICAgICBjb21tYW5kLT5zZXRQYXJlbnQobnVsbHB0
cik7CiAgICAgICAgIGVuc3VyZUNvbXBvc2l0aW9uKCktPmFwcGVuZCh0b1NpbXBsZUVkaXRDb21t
YW5kKGNvbW1hbmQuZ2V0KCkpKTsKICAgICB9CiAgICAgbV9jb21tYW5kcy5hcHBlbmQoY29tbWFu
ZC5yZWxlYXNlKCkpOwpAQCAtODI1LDcgKzgyNSw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1h
bmQ6OmRlbGV0ZUluc2lnbmkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgcmVtb3Zl
ZCA9IDA7Ci0gICAgSW5saW5lVGV4dEJveCogcHJldkJveCA9IDA7CisgICAgSW5saW5lVGV4dEJv
eCogcHJldkJveCA9IG51bGxwdHI7CiAgICAgU3RyaW5nIHN0cjsKIAogICAgIC8vIFRoaXMgbG9v
cCBzdHJ1Y3R1cmUgd29ya3MgdG8gcHJvY2VzcyBhbGwgZ2FwcyBwcmVjZWRpbmcgYSBib3gsCkBA
IC04NTQsNyArODU0LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRlSW5zaWdu
aQogICAgICAgICAgICAgaWYgKCsrc29ydGVkVGV4dEJveGVzUG9zaXRpb24gPCBzb3J0ZWRUZXh0
Qm94ZXMuc2l6ZSgpKQogICAgICAgICAgICAgICAgIGJveCA9IHNvcnRlZFRleHRCb3hlc1tzb3J0
ZWRUZXh0Qm94ZXNQb3NpdGlvbl07CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
Ym94ID0gMDsKKyAgICAgICAgICAgICAgICBib3ggPSBudWxscHRyOwogICAgICAgICB9CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9u
Q29tbWFuZC5jcHAJKHJldmlzaW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEwICs4Myw2
IEBAIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OkRlbGV0ZVNlbGVjdGlvbkMKICAgICAsIG1fcHJ1
bmVTdGFydEJsb2NrSWZOZWNlc3NhcnkoZmFsc2UpCiAgICAgLCBtX3N0YXJ0c0F0RW1wdHlMaW5l
KGZhbHNlKQogICAgICwgbV9zYW5pdGl6ZU1hcmt1cChzYW5pdGl6ZU1hcmt1cCkKLSAgICAsIG1f
c3RhcnRCbG9jaygwKQotICAgICwgbV9lbmRCbG9jaygwKQotICAgICwgbV90eXBpbmdTdHlsZSgw
KQotICAgICwgbV9kZWxldGVJbnRvQmxvY2txdW90ZVN0eWxlKDApCiB7CiB9CiAKQEAgLTEwMiwx
NyArOTgsMTMgQEAgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6RGVsZXRlU2VsZWN0aW9uQwogICAg
ICwgbV9zdGFydHNBdEVtcHR5TGluZShmYWxzZSkKICAgICAsIG1fc2FuaXRpemVNYXJrdXAoc2Fu
aXRpemVNYXJrdXApCiAgICAgLCBtX3NlbGVjdGlvblRvRGVsZXRlKHNlbGVjdGlvbikKLSAgICAs
IG1fc3RhcnRCbG9jaygwKQotICAgICwgbV9lbmRCbG9jaygwKQotICAgICwgbV90eXBpbmdTdHls
ZSgwKQotICAgICwgbV9kZWxldGVJbnRvQmxvY2txdW90ZVN0eWxlKDApCiB7CiB9CiAKIHZvaWQg
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aW5pdGlhbGl6ZVN0YXJ0RW5kKFBvc2l0aW9uJiBzdGFy
dCwgUG9zaXRpb24mIGVuZCkKIHsKLSAgICBOb2RlKiBzdGFydFNwZWNpYWxDb250YWluZXIgPSAw
OwotICAgIE5vZGUqIGVuZFNwZWNpYWxDb250YWluZXIgPSAwOworICAgIE5vZGUqIHN0YXJ0U3Bl
Y2lhbENvbnRhaW5lciA9IG51bGxwdHI7CisgICAgTm9kZSogZW5kU3BlY2lhbENvbnRhaW5lciA9
IG51bGxwdHI7CiAgCiAgICAgc3RhcnQgPSBtX3NlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCk7CiAg
ICAgZW5kID0gbV9zZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKTsKQEAgLTEyOSw4ICsxMjEsOCBAQCB2
b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmluaXRpYWxpemVTCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICB3aGlsZSAoMSkgewotICAgICAgICBzdGFydFNwZWNpYWxDb250YWluZXIgPSAw
OwotICAgICAgICBlbmRTcGVjaWFsQ29udGFpbmVyID0gMDsKKyAgICAgICAgc3RhcnRTcGVjaWFs
Q29udGFpbmVyID0gbnVsbHB0cjsKKyAgICAgICAgZW5kU3BlY2lhbENvbnRhaW5lciA9IG51bGxw
dHI7CiAgICAgCiAgICAgICAgIFBvc2l0aW9uIHMgPSBwb3NpdGlvbkJlZm9yZUNvbnRhaW5pbmdT
cGVjaWFsRWxlbWVudChzdGFydCwgJnN0YXJ0U3BlY2lhbENvbnRhaW5lcik7CiAgICAgICAgIFBv
c2l0aW9uIGUgPSBwb3NpdGlvbkFmdGVyQ29udGFpbmluZ1NwZWNpYWxFbGVtZW50KGVuZCwgJmVu
ZFNwZWNpYWxDb250YWluZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29t
bWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFu
ZC5jcHAJKHJldmlzaW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENv
bW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgRWRp
dEFjdGlvbiBlZGl0aW5nQWN0aW9uKQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAs
IG1fcGFyZW50KDApCiAgICAgLCBtX2VkaXRpbmdBY3Rpb24oZWRpdGluZ0FjdGlvbikKIHsKICAg
ICBBU1NFUlQoZG9jdW1lbnQuZnJhbWUoKSk7CkBAIC01MCw3ICs0OSw2IEBAIEVkaXRDb21tYW5k
OjpFZGl0Q29tbWFuZChEb2N1bWVudCYgZG9jdW0KIAogRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5k
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc3RhcnRpbmdTZWxl
Y3Rpb24sIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGVuZGluZ1NlbGVjdGlvbikKICAgICA6IG1f
ZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX3BhcmVudCgwKQogewogICAgIEFTU0VSVChkb2N1
bWVudC5mcmFtZSgpKTsKICAgICBzZXRTdGFydGluZ1NlbGVjdGlvbihzdGFydGluZ1NlbGVjdGlv
bik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCShyZXZpc2lvbiAxOTE2
NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1l
bnQ7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBtX3N0YXJ0aW5nU2VsZWN0aW9uOwogICAgIFZpc2li
bGVTZWxlY3Rpb24gbV9lbmRpbmdTZWxlY3Rpb247Ci0gICAgQ29tcG9zaXRlRWRpdENvbW1hbmQq
IG1fcGFyZW50OworICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kKiBtX3BhcmVudCB7IG51bGxwdHIg
fTsKICAgICBFZGl0QWN0aW9uIG1fZWRpdGluZ0FjdGlvbiB7IEVkaXRBY3Rpb25VbnNwZWNpZmll
ZCB9OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAko
cmV2aXNpb24gMTkxNjUyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsMTIgKzE3MCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAg
SFRNTEVsZW1lbnRFcXVpdmFsZW50KENTU1Byb3BlcnR5SUQsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUpOwogICAgIGNvbnN0IENTU1Byb3BlcnR5SUQgbV9wcm9wZXJ0eUlEOwogICAgIGNv
bnN0IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9wcmltaXRpdmVWYWx1ZTsKLSAgICBjb25z
dCBRdWFsaWZpZWROYW1lKiBtX3RhZ05hbWU7IC8vIFdlIGNhbiBzdG9yZSBhIHBvaW50ZXIgYmVj
YXVzZSBIVE1MIHRhZyBuYW1lcyBhcmUgY29uc3QgZ2xvYmFsLgorICAgIGNvbnN0IFF1YWxpZmll
ZE5hbWUqIG1fdGFnTmFtZSB7IG51bGxwdHIgfTsgLy8gV2UgY2FuIHN0b3JlIGEgcG9pbnRlciBi
ZWNhdXNlIEhUTUwgdGFnIG5hbWVzIGFyZSBjb25zdCBnbG9iYWwuCiB9OwogCiBIVE1MRWxlbWVu
dEVxdWl2YWxlbnQ6OkhUTUxFbGVtZW50RXF1aXZhbGVudChDU1NQcm9wZXJ0eUlEIGlkKQogICAg
IDogbV9wcm9wZXJ0eUlEKGlkKQotICAgICwgbV90YWdOYW1lKDApCiB7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAkocmV2aXNpb24gMTkxNjUyKQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2
LDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBjb25mbGljdHNXaXRo
SW5saW5lU3R5bGVPZkVsZW1lbnQoZWxlbWVudCwgJm5ld0lubGluZVN0eWxlLCBleHRyYWN0ZWRT
dHlsZSk7CiAgICAgfQotICAgIGJvb2wgY29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1l
bnQoSFRNTEVsZW1lbnQqLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlID0gMCwgU2hvdWxk
RXh0cmFjdE1hdGNoaW5nU3R5bGUgPSBEb05vdEV4dHJhY3RNYXRjaGluZ1N0eWxlKSBjb25zdDsK
KyAgICBib29sIGNvbmZsaWN0c1dpdGhJbXBsaWNpdFN0eWxlT2ZFbGVtZW50KEhUTUxFbGVtZW50
KiwgRWRpdGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSA9IG51bGxwdHIsIFNob3VsZEV4dHJhY3RN
YXRjaGluZ1N0eWxlID0gRG9Ob3RFeHRyYWN0TWF0Y2hpbmdTdHlsZSkgY29uc3Q7CiAgICAgYm9v
bCBjb25mbGljdHNXaXRoSW1wbGljaXRTdHlsZU9mQXR0cmlidXRlcyhIVE1MRWxlbWVudCopIGNv
bnN0OwogICAgIGJvb2wgZXh0cmFjdENvbmZsaWN0aW5nSW1wbGljaXRTdHlsZU9mQXR0cmlidXRl
cyhIVE1MRWxlbWVudCosIFNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbiwgRWRpdGluZ1N0
eWxlKiBleHRyYWN0ZWRTdHlsZSwKICAgICAgICAgICAgIFZlY3RvcjxRdWFsaWZpZWROYW1lPiYg
Y29uZmxpY3RpbmdBdHRyaWJ1dGVzLCBTaG91bGRFeHRyYWN0TWF0Y2hpbmdTdHlsZSkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHJldmlzaW9uIDE5MTY1MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNCwxOSArMjA0
LDE5IEBAIHB1YmxpYzoKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgQ29tbWFuZCgpOwogICAgICAg
ICBDb21tYW5kKGNvbnN0IEVkaXRvckludGVybmFsQ29tbWFuZCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIFBhc3NSZWZQdHI8RnJhbWU+KTsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4
ZWN1dGUoY29uc3QgU3RyaW5nJiBwYXJhbWV0ZXIgPSBTdHJpbmcoKSwgRXZlbnQqIHRyaWdnZXJp
bmdFdmVudCA9IDApIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGUo
Y29uc3QgU3RyaW5nJiBwYXJhbWV0ZXIgPSBTdHJpbmcoKSwgRXZlbnQqIHRyaWdnZXJpbmdFdmVu
dCA9IG51bGxwdHIpIGNvbnN0OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGUo
RXZlbnQqIHRyaWdnZXJpbmdFdmVudCkgY29uc3Q7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc1N1cHBvcnRlZCgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
RW5hYmxlZChFdmVudCogdHJpZ2dlcmluZ0V2ZW50ID0gMCkgY29uc3Q7CisgICAgICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNFbmFibGVkKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSBudWxscHRy
KSBjb25zdDsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCBUcmlTdGF0ZSBzdGF0ZShFdmVudCog
dHJpZ2dlcmluZ0V2ZW50ID0gMCkgY29uc3Q7Ci0gICAgICAgIFN0cmluZyB2YWx1ZShFdmVudCog
dHJpZ2dlcmluZ0V2ZW50ID0gMCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIFRyaVN0
YXRlIHN0YXRlKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSBudWxscHRyKSBjb25zdDsKKyAgICAg
ICAgU3RyaW5nIHZhbHVlKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSBudWxscHRyKSBjb25zdDsK
IAogICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVGV4dEluc2VydGlvbigpIGNvbnN0Owog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgY29uc3QgRWRpdG9ySW50ZXJuYWxDb21tYW5kKiBtX2Nv
bW1hbmQ7CisgICAgICAgIGNvbnN0IEVkaXRvckludGVybmFsQ29tbWFuZCogbV9jb21tYW5kIHsg
bnVsbHB0ciB9OwogICAgICAgICBFZGl0b3JDb21tYW5kU291cmNlIG1fc291cmNlOwogICAgICAg
ICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcAkocmV2aXNpb24gMTkxNjUyKQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3Nyw3ICsx
Njc3LDYgQEAgYm9vbCBFZGl0b3I6OmNvbW1hbmRJc1N1cHBvcnRlZEZyb21NZW51TwogfQogCiBF
ZGl0b3I6OkNvbW1hbmQ6OkNvbW1hbmQoKQotICAgIDogbV9jb21tYW5kKDApCiB7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAx
OTE2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgRHJhZ0NhcmV0Q29udHJvbGxlcjo6
c2V0Q2FyZXRQb3NpdGkKICAgICAgICAgaW52YWxpZGF0ZUNhcmV0UmVjdChub2RlKTsKICAgICBt
X3Bvc2l0aW9uID0gcG9zaXRpb247CiAgICAgc2V0Q2FyZXRSZWN0TmVlZHNVcGRhdGUoKTsKLSAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSAwOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG51bGxw
dHI7CiAgICAgaWYgKE5vZGUqIG5vZGUgPSBtX3Bvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkuZGVw
cmVjYXRlZE5vZGUoKSkgewogICAgICAgICBpbnZhbGlkYXRlQ2FyZXRSZWN0KG5vZGUpOwogICAg
ICAgICBkb2N1bWVudCA9ICZub2RlLT5kb2N1bWVudCgpOwpAQCAtNTUyLDggKzU1Miw4IEBAIFRl
eHREaXJlY3Rpb24gRnJhbWVTZWxlY3Rpb246OmRpcmVjdGlvbk8KIAogVGV4dERpcmVjdGlvbiBG
cmFtZVNlbGVjdGlvbjo6ZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKQogewotICAgIElubGluZUJveCog
c3RhcnRCb3ggPSAwOwotICAgIElubGluZUJveCogZW5kQm94ID0gMDsKKyAgICBJbmxpbmVCb3gq
IHN0YXJ0Qm94ID0gbnVsbHB0cjsKKyAgICBJbmxpbmVCb3gqIGVuZEJveCA9IG51bGxwdHI7CiAg
ICAgaW50IHVudXNlZE9mZnNldDsKICAgICAvLyBDYWNoZSB0aGUgVmlzaWJsZVBvc2l0aW9ucyBi
ZWNhdXNlIHZpc2libGVTdGFydCgpIGFuZCB2aXNpYmxlRW5kKCkKICAgICAvLyBjYW4gY2F1c2Ug
bGF5b3V0LCB3aGljaCBoYXMgdGhlIHBvdGVudGlhbCB0byBpbnZhbGlkYXRlIGxpbmVib3hlcy4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCShy
ZXZpc2lvbiAxOTE2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDcgKzMyNyw3IEBAIEVudGl0eU1hc2sgTWFy
a3VwQWNjdW11bGF0b3I6OmVudGl0eU1hc2sKICAgICBpZiAoIXRleHQuZG9jdW1lbnQoKS5pc0hU
TUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gRW50aXR5TWFza0luUENEQVRBOwogCi0gICAg
Y29uc3QgUXVhbGlmaWVkTmFtZSogcGFyZW50TmFtZSA9IDA7CisgICAgY29uc3QgUXVhbGlmaWVk
TmFtZSogcGFyZW50TmFtZSA9IG51bGxwdHI7CiAgICAgaWYgKHRleHQucGFyZW50RWxlbWVudCgp
KQogICAgICAgICBwYXJlbnROYW1lID0gJnRleHQucGFyZW50RWxlbWVudCgpLT50YWdRTmFtZSgp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5oCShy
ZXZpc2lvbiAxOTE2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxh
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgZW51bSBFbnRpdHlNYXNrIHsK
IC8vIEZJWE1FOiBOb25jb3B5YWJsZT8KIGNsYXNzIE1hcmt1cEFjY3VtdWxhdG9yIHsKIHB1Ymxp
YzoKLSAgICBNYXJrdXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiwgRUFic29sdXRlVVJMcywg
Y29uc3QgUmFuZ2UqID0gMCwgRUZyYWdtZW50U2VyaWFsaXphdGlvbiA9IEhUTUxGcmFnbWVudFNl
cmlhbGl6YXRpb24pOworICAgIE1hcmt1cEFjY3VtdWxhdG9yKFZlY3RvcjxOb2RlKj4qLCBFQWJz
b2x1dGVVUkxzLCBjb25zdCBSYW5nZSogPSBudWxscHRyLCBFRnJhZ21lbnRTZXJpYWxpemF0aW9u
ID0gSFRNTEZyYWdtZW50U2VyaWFsaXphdGlvbik7CiAgICAgdmlydHVhbCB+TWFya3VwQWNjdW11
bGF0b3IoKTsKIAogICAgIFN0cmluZyBzZXJpYWxpemVOb2RlcyhOb2RlJiB0YXJnZXROb2RlLCBF
Q2hpbGRyZW5Pbmx5LCBWZWN0b3I8UXVhbGlmaWVkTmFtZT4qIHRhZ05hbWVzVG9Ta2lwID0gbnVs
bHB0cik7CkBAIC04NSw3ICs4NSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kVGV4dChTdHJpbmdCdWlsZGVyJiwgY29uc3QgVGV4dCYpOwogICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmRFbGVtZW50KFN0cmluZ0J1aWxkZXImLCBjb25zdCBFbGVtZW50JiwgTmFtZXNwYWNlcyop
OwogCi0gICAgdm9pZCBhcHBlbmRTdGFydFRhZyhjb25zdCBOb2RlJiwgTmFtZXNwYWNlcyogPSAw
KTsKKyAgICB2b2lkIGFwcGVuZFN0YXJ0VGFnKGNvbnN0IE5vZGUmLCBOYW1lc3BhY2VzKiA9IG51
bGxwdHIpOwogCiAgICAgdm9pZCBhcHBlbmRPcGVuVGFnKFN0cmluZ0J1aWxkZXImLCBjb25zdCBF
bGVtZW50JiwgTmFtZXNwYWNlcyopOwogICAgIHZvaWQgYXBwZW5kQ2xvc2VUYWcoU3RyaW5nQnVp
bGRlciYsIGNvbnN0IEVsZW1lbnQmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVu
ZGVyZWRQb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZW5kZXJlZFBvc2l0aW9uLmNwcAkocmV2aXNpb24gMTkxNjUyKQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogcmVu
ZGVyZXJGcm9tUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogewogICAgIEFTU0VS
VChwb3NpdGlvbi5pc05vdE51bGwoKSk7Ci0gICAgTm9kZSogcmVuZGVyZXJOb2RlID0gMDsKKyAg
ICBOb2RlKiByZW5kZXJlck5vZGUgPSBudWxscHRyOwogICAgIHN3aXRjaCAocG9zaXRpb24uYW5j
aG9yVHlwZSgpKSB7CiAgICAgY2FzZSBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9y
OgogICAgICAgICByZW5kZXJlck5vZGUgPSBwb3NpdGlvbi5jb21wdXRlTm9kZUFmdGVyUG9zaXRp
b24oKTsKQEAgLTY0LDkgKzY0LDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyRnJvbQogfQogCiBSZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJlZFBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgcG9zaXRpb24pCi0gICAgOiBtX3JlbmRlcmVyKDApCi0gICAgLCBtX2lu
bGluZUJveCgwKQotICAgICwgbV9vZmZzZXQoMCkKKyAgICA6IG1fb2Zmc2V0KDApCiAgICAgLCBt
X3ByZXZMZWFmQ2hpbGQodW5jYWNoZWRJbmxpbmVCb3goKSkKICAgICAsIG1fbmV4dExlYWZDaGls
ZCh1bmNhY2hlZElubGluZUJveCgpKQogewpAQCAtODAsOSArNzgsNyBAQCBSZW5kZXJlZFBvc2l0
aW9uOjpSZW5kZXJlZFBvc2l0aW9uKGNvbnN0CiB9CiAKIFJlbmRlcmVkUG9zaXRpb246OlJlbmRl
cmVkUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBFQWZmaW5pdHkgYWZmaW5pdHkp
Ci0gICAgOiBtX3JlbmRlcmVyKDApCi0gICAgLCBtX2lubGluZUJveCgwKQotICAgICwgbV9vZmZz
ZXQoMCkKKyAgICA6IG1fb2Zmc2V0KDApCiAgICAgLCBtX3ByZXZMZWFmQ2hpbGQodW5jYWNoZWRJ
bmxpbmVCb3goKSkKICAgICAsIG1fbmV4dExlYWZDaGlsZCh1bmNhY2hlZElubGluZUJveCgpKQog
ewpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmgJKHJldmlz
aW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBQb3NpdGlvbiBw
b3NpdGlvbkF0TGVmdEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3Q7CiAgICAgUG9zaXRpb24gcG9z
aXRpb25BdFJpZ2h0Qm91bmRhcnlPZkJpRGlSdW4oKSBjb25zdDsKIAotICAgIEludFJlY3QgYWJz
b2x1dGVSZWN0KExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDApIGNvbnN0Owor
ICAgIEludFJlY3QgYWJzb2x1dGVSZWN0KExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGlu
ZSA9IG51bGxwdHIpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBSZW5kZXJlZFBvc2l0aW9uJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTgwLDggKzgw
LDggQEAgcHJpdmF0ZToKICAgICBib29sIGF0TGVmdEJvdW5kYXJ5T2ZCaWRpUnVuKFNob3VsZE1h
dGNoQmlkaUxldmVsLCB1bnNpZ25lZCBjaGFyIGJpZGlMZXZlbE9mUnVuKSBjb25zdDsKICAgICBi
b29sIGF0UmlnaHRCb3VuZGFyeU9mQmlkaVJ1bihTaG91bGRNYXRjaEJpZGlMZXZlbCwgdW5zaWdu
ZWQgY2hhciBiaWRpTGV2ZWxPZlJ1bikgY29uc3Q7CiAKLSAgICBSZW5kZXJPYmplY3QqIG1fcmVu
ZGVyZXI7Ci0gICAgSW5saW5lQm94KiBtX2lubGluZUJveDsKKyAgICBSZW5kZXJPYmplY3QqIG1f
cmVuZGVyZXIgeyBudWxscHRyIH07CisgICAgSW5saW5lQm94KiBtX2lubGluZUJveCB7IG51bGxw
dHIgfTsKICAgICBpbnQgbV9vZmZzZXQ7CiAKICAgICBzdGF0aWMgSW5saW5lQm94KiB1bmNhY2hl
ZElubGluZUJveCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5saW5lQm94Kj4oMSk7IH0K
QEAgLTkyLDkgKzkyLDcgQEAgcHJpdmF0ZToKIH07CiAKIGlubGluZSBSZW5kZXJlZFBvc2l0aW9u
OjpSZW5kZXJlZFBvc2l0aW9uKCkKLSAgICA6IG1fcmVuZGVyZXIoMCkKLSAgICAsIG1faW5saW5l
Qm94KDApCi0gICAgLCBtX29mZnNldCgwKQorICAgIDogbV9vZmZzZXQoMCkKICAgICAsIG1fcHJl
dkxlYWZDaGlsZCh1bmNhY2hlZElubGluZUJveCgpKQogICAgICwgbV9uZXh0TGVhZkNoaWxkKHVu
Y2FjaGVkSW5saW5lQm94KCkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24gMTkxNjUyKQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc3NSw3ICs3NzUsNyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVTdHlsZVNwYW5zQmVm
b3JlSW5zZXJ0CiAvLyBvciBhdCBjb3B5IHRpbWUuCiB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpoYW5kbGVTdHlsZVNwYW5zKEluc2VydGVkTm9kZXMmIGluc2VydGVkTm9kZXMpCiB7Ci0g
ICAgSFRNTEVsZW1lbnQqIHdyYXBwaW5nU3R5bGVTcGFuID0gMDsKKyAgICBIVE1MRWxlbWVudCog
d3JhcHBpbmdTdHlsZVNwYW4gPSBudWxscHRyOwogICAgIC8vIFRoZSBzdHlsZSBzcGFuIHRoYXQg
Y29udGFpbnMgdGhlIHNvdXJjZSBkb2N1bWVudCdzIGRlZmF1bHQgc3R5bGUgc2hvdWxkIGJlIGF0
CiAgICAgLy8gdGhlIHRvcCBvZiB0aGUgZnJhZ21lbnQsIGJ1dCBNYWlsIHNvbWV0aW1lcyBhZGRz
IGEgd3JhcHBlciAoZm9yIFBhc3RlIEFzIFF1b3RhdGlvbiksCiAgICAgLy8gc28gc2VhcmNoIGZv
ciB0aGUgdG9wIGxldmVsIHN0eWxlIHNwYW4gaW5zdGVhZCBvZiBhc3N1bWluZyBpdCdzIGF0IHRo
ZSB0b3AuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21t
YW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRy
aWJ1dGVDb21tYW5kLmNwcAkocmV2aXNpb24gMTkxNjUyKQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcg
KzQ5LDcgQEAgdm9pZCBTZXROb2RlQXR0cmlidXRlQ29tbWFuZDo6ZG9BcHBseSgpCiB2b2lkIFNl
dE5vZGVBdHRyaWJ1dGVDb21tYW5kOjpkb1VuYXBwbHkoKQogewogICAgIG1fZWxlbWVudC0+c2V0
QXR0cmlidXRlKG1fYXR0cmlidXRlLCBtX29sZFZhbHVlKTsKLSAgICBBdG9taWNTdHJpbmdJbXBs
KiBudWxsU3RyaW5nID0gMDsKKyAgICBBdG9taWNTdHJpbmdJbXBsKiBudWxsU3RyaW5nID0gbnVs
bHB0cjsKICAgICBtX29sZFZhbHVlID0gbnVsbFN0cmluZzsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAJKHJldmlzaW9uIDE5MTY1MikKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw4ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIENGTXV0YWJsZUNo
YXJhY3RlclNldFJlZiBnZXRTbWFydFNldChib29sIGlzUHJldmlvdXNDaGFyYWN0ZXIpCiB7Ci0g
ICAgc3RhdGljIENGTXV0YWJsZUNoYXJhY3RlclNldFJlZiBwcmVTbWFydFNldCA9IE5VTEw7IAot
ICAgIHN0YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgcG9zdFNtYXJ0U2V0ID0gTlVMTDsK
KyAgICBzdGF0aWMgQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmIHByZVNtYXJ0U2V0OworICAgIHN0
YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgcG9zdFNtYXJ0U2V0OwogICAgIENGTXV0YWJs
ZUNoYXJhY3RlclNldFJlZiBzbWFydFNldCA9IGlzUHJldmlvdXNDaGFyYWN0ZXIgPyBwcmVTbWFy
dFNldCA6IHBvc3RTbWFydFNldDsKICAgICBpZiAoIXNtYXJ0U2V0KSB7CiAgICAgICAgIHNtYXJ0
U2V0ID0gQ0ZDaGFyYWN0ZXJTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAkocmV2aXNpb24gMTkx
NjUyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NCw4ICs0NCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNwZWxsQ2hl
Y2tSZXF1ZXN0OjpTcGVsbENoZWNrUmVxdWVzdChQYXNzUmVmUHRyPFJhbmdlPiBjaGVja2luZ1Jh
bmdlLCBQYXNzUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBUZXh0Q2hlY2tpbmdUeXBlTWFzayBtYXNrLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSBwcm9j
ZXNzVHlwZSkKLSAgICA6IG1fY2hlY2tlcigwKQotICAgICwgbV9jaGVja2luZ1JhbmdlKGNoZWNr
aW5nUmFuZ2UpCisgICAgOiBtX2NoZWNraW5nUmFuZ2UoY2hlY2tpbmdSYW5nZSkKICAgICAsIG1f
cGFyYWdyYXBoUmFuZ2UocGFyYWdyYXBoUmFuZ2UpCiAgICAgLCBtX3Jvb3RFZGl0YWJsZUVsZW1l
bnQobV9jaGVja2luZ1JhbmdlLT5zdGFydENvbnRhaW5lcigpLnJvb3RFZGl0YWJsZUVsZW1lbnQo
KSkKICAgICAsIG1fcmVxdWVzdERhdGEodW5yZXF1ZXN0ZWRUZXh0Q2hlY2tpbmdTZXF1ZW5jZSwg
dGV4dCwgbWFzaywgcHJvY2Vzc1R5cGUpCkBAIC03OSw3ICs3OCw3IEBAIHZvaWQgU3BlbGxDaGVj
a1JlcXVlc3Q6OmRpZFN1Y2NlZWQoY29uc3QKICAgICBpZiAoIW1fY2hlY2tlcikKICAgICAgICAg
cmV0dXJuOwogICAgIG1fY2hlY2tlci0+ZGlkQ2hlY2tTdWNjZWVkKG1fcmVxdWVzdERhdGEuc2Vx
dWVuY2UoKSwgcmVzdWx0cyk7Ci0gICAgbV9jaGVja2VyID0gMDsKKyAgICBtX2NoZWNrZXIgPSBu
dWxscHRyOwogfQogCiB2b2lkIFNwZWxsQ2hlY2tSZXF1ZXN0OjpkaWRDYW5jZWwoKQpAQCAtODcs
NyArODYsNyBAQCB2b2lkIFNwZWxsQ2hlY2tSZXF1ZXN0OjpkaWRDYW5jZWwoKQogICAgIGlmICgh
bV9jaGVja2VyKQogICAgICAgICByZXR1cm47CiAgICAgbV9jaGVja2VyLT5kaWRDaGVja0NhbmNl
bChtX3JlcXVlc3REYXRhLnNlcXVlbmNlKCkpOwotICAgIG1fY2hlY2tlciA9IDA7CisgICAgbV9j
aGVja2VyID0gbnVsbHB0cjsKIH0KIAogdm9pZCBTcGVsbENoZWNrUmVxdWVzdDo6c2V0Q2hlY2tl
ckFuZFNlcXVlbmNlKFNwZWxsQ2hlY2tlciogcmVxdWVzdGVyLCBpbnQgc2VxdWVuY2UpCkBAIC0x
MDAsNyArOTksNyBAQCB2b2lkIFNwZWxsQ2hlY2tSZXF1ZXN0OjpzZXRDaGVja2VyQW5kU2VxCiAK
IHZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OnJlcXVlc3RlckRlc3Ryb3llZCgpCiB7Ci0gICAgbV9j
aGVja2VyID0gMDsKKyAgICBtX2NoZWNrZXIgPSBudWxscHRyOwogfQogCiBTcGVsbENoZWNrZXI6
OlNwZWxsQ2hlY2tlcihGcmFtZSYgZnJhbWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NwZWxsQ2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmgJKHJldmlzaW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BlbGxDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBTcGVsbENoZWNrUmVxdWVzdChQYXNzUmVmUHRyPFJhbmdlPiBjaGVja2lu
Z1JhbmdlLCBQYXNzUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSwgY29uc3QgU3RyaW5nJiwg
VGV4dENoZWNraW5nVHlwZU1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlKTsKIAotICAgIFNw
ZWxsQ2hlY2tlciogbV9jaGVja2VyOworICAgIFNwZWxsQ2hlY2tlciogbV9jaGVja2VyIHsgbnVs
bHB0ciB9OwogICAgIFJlZlB0cjxSYW5nZT4gbV9jaGVja2luZ1JhbmdlOwogICAgIFJlZlB0cjxS
YW5nZT4gbV9wYXJhZ3JhcGhSYW5nZTsKICAgICBSZWZQdHI8RWxlbWVudD4gbV9yb290RWRpdGFi
bGVFbGVtZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9u
LmNwcAkocmV2aXNpb24gMTkxNjUyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
UG9zaXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNyArMTczLDcgQEAgUG9zaXRpb24g
VmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaQogCiAgICAgICAgICAgICBpZiAoYm94LT5k
aXJlY3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFw
cmV2Qm94KSB7Ci0gICAgICAgICAgICAgICAgICAgIElubGluZUJveCogbG9naWNhbFN0YXJ0ID0g
MDsKKyAgICAgICAgICAgICAgICAgICAgSW5saW5lQm94KiBsb2dpY2FsU3RhcnQgPSBudWxscHRy
OwogICAgICAgICAgICAgICAgICAgICBpZiAocHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBib3gt
PnJvb3QoKS5nZXRMb2dpY2FsU3RhcnRCb3hXaXRoTm9kZShsb2dpY2FsU3RhcnQpIDogYm94LT5y
b290KCkuZ2V0TG9naWNhbEVuZEJveFdpdGhOb2RlKGxvZ2ljYWxTdGFydCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJveCA9IGxvZ2ljYWxTdGFydDsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsKQEAgLTMzOCw3ICszMzgsNyBAQCBQb3Np
dGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlECiAKICAgICAgICAgICAgIGlmIChi
b3gtPmRpcmVjdGlvbigpID09IHByaW1hcnlEaXJlY3Rpb24pIHsKICAgICAgICAgICAgICAgICBp
ZiAoIW5leHRCb3gpIHsKLSAgICAgICAgICAgICAgICAgICAgSW5saW5lQm94KiBsb2dpY2FsRW5k
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgSW5saW5lQm94KiBsb2dpY2FsRW5kID0gbnVsbHB0
cjsKICAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gYm94
LT5yb290KCkuZ2V0TG9naWNhbEVuZEJveFdpdGhOb2RlKGxvZ2ljYWxFbmQpIDogYm94LT5yb290
KCkuZ2V0TG9naWNhbFN0YXJ0Qm94V2l0aE5vZGUobG9naWNhbEVuZCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJveCA9IGxvZ2ljYWxFbmQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7CkBAIC02MDAsNyArNjAwLDcgQEAgVUNoYXIzMiBW
aXNpYmxlUG9zaXRpb246OmNoYXJhY3RlckFmdGVyKAogTGF5b3V0UmVjdCBWaXNpYmxlUG9zaXRp
b246OmxvY2FsQ2FyZXRSZWN0KFJlbmRlck9iamVjdComIHJlbmRlcmVyKSBjb25zdAogewogICAg
IGlmIChtX2RlZXBQb3NpdGlvbi5pc051bGwoKSkgewotICAgICAgICByZW5kZXJlciA9IDA7Cisg
ICAgICAgIHJlbmRlcmVyID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKICAg
ICB9CiAgICAgTm9kZSogbm9kZSA9IG1fZGVlcFBvc2l0aW9uLmFuY2hvck5vZGUoKTsKQEAgLTcx
NCw3ICs3MTQsNyBAQCBib29sIHNldEVuZChSYW5nZSAqciwgY29uc3QgVmlzaWJsZVBvc2l0CiBF
bGVtZW50KiBlbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dmlzaWJsZVBvc2l0aW9uKQogewogICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVy
biBkZXByZWNhdGVkRW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudCh2aXNpYmxlUG9zaXRpb24uZGVl
cEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHJldmlzaW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDExICsx
MzMsMTMgQEAgcHJpdmF0ZToKICAgICBjb25zdCBWZWN0b3I8SW5saW5lQm94Kj4mIGNvbGxlY3RC
b3hlcyhjb25zdCBSb290SW5saW5lQm94Kik7CiAgICAgaW50IGJveEluZGV4SW5MZWF2ZXMoY29u
c3QgSW5saW5lVGV4dEJveCopIGNvbnN0OwogCi0gICAgY29uc3QgUm9vdElubGluZUJveCogbV9y
b290SW5saW5lQm94OworICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIG1fcm9vdElubGluZUJveCB7
IG51bGxwdHIgfTsKICAgICBWZWN0b3I8SW5saW5lQm94Kj4gbV9sZWFmQm94ZXM7CiB9OwogCi1D
YWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzOjpDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVh
ZkJveGVzKCkgOiBtX3Jvb3RJbmxpbmVCb3goMCkgeyB9OworQ2FjaGVkTG9naWNhbGx5T3JkZXJl
ZExlYWZCb3hlczo6Q2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlcygpCit7Cit9CiAKIGNv
bnN0IElubGluZUJveCogQ2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlczo6cHJldmlvdXNU
ZXh0T3JMaW5lQnJlYWtCb3goY29uc3QgUm9vdElubGluZUJveCogcm9vdCwgY29uc3QgSW5saW5l
VGV4dEJveCogYm94KQogewpAQCAtMzQ2LDkgKzM0OCw5IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRp
b24gdmlzdWFsV29yZFBvc2l0aW8KICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwog
CiAgICAgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5n
QmxvY2sodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwotICAgIElubGluZUJveCog
cHJldmlvdXNseVZpc2l0ZWRCb3ggPSAwOworICAgIElubGluZUJveCogcHJldmlvdXNseVZpc2l0
ZWRCb3ggPSBudWxscHRyOwogICAgIFZpc2libGVQb3NpdGlvbiBjdXJyZW50ID0gdmlzaWJsZVBv
c2l0aW9uOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyID0gMDsKKyAgICBUZXh0QnJlYWtJ
dGVyYXRvciogaXRlciA9IG51bGxwdHI7CiAKICAgICBDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVh
ZkJveGVzIGxlYWZCb3hlczsKICAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IHN0cmluZzsKQEAgLTk1
Nyw3ICs5NTksNyBAQCBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNMaW5lUG9zaXRpb24oY29uCiAg
ICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogCi0g
ICAgUm9vdElubGluZUJveCogcm9vdCA9IDA7CisgICAgUm9vdElubGluZUJveCogcm9vdCA9IG51
bGxwdHI7CiAgICAgSW5saW5lQm94KiBib3g7CiAgICAgaW50IGlnbm9yZWRDYXJldE9mZnNldDsK
ICAgICB2aXNpYmxlUG9zaXRpb24uZ2V0SW5saW5lQm94QW5kT2Zmc2V0KGJveCwgaWdub3JlZENh
cmV0T2Zmc2V0KTsKQEAgLTk2Niw3ICs5NjgsNyBAQCBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNM
aW5lUG9zaXRpb24oY29uCiAgICAgICAgIC8vIFdlIHdhbnQgdG8gc2tpcCB6ZXJvIGhlaWdodCBi
b3hlcy4KICAgICAgICAgLy8gVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2FzZSBpdCBpcyBhIFRyYWls
aW5nRmxvYXRzUm9vdElubGluZUJveC4KICAgICAgICAgaWYgKCFyb290IHx8ICFyb290LT5sb2dp
Y2FsSGVpZ2h0KCkgfHwgIXJvb3QtPmZpcnN0TGVhZkNoaWxkKCkpCi0gICAgICAgICAgICByb290
ID0gMDsKKyAgICAgICAgICAgIHJvb3QgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmICghcm9v
dCkgewpAQCAtMTAxMiw3ICsxMDE0LDcgQEAgVmlzaWJsZVBvc2l0aW9uIG5leHRMaW5lUG9zaXRp
b24oY29uc3QgVgogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24oKTsKIAotICAgIFJvb3RJbmxpbmVCb3gqIHJvb3QgPSAwOworICAgIFJvb3RJbmxpbmVC
b3gqIHJvb3QgPSBudWxscHRyOwogICAgIElubGluZUJveCogYm94OwogICAgIGludCBpZ25vcmVk
Q2FyZXRPZmZzZXQ7CiAgICAgdmlzaWJsZVBvc2l0aW9uLmdldElubGluZUJveEFuZE9mZnNldChi
b3gsIGlnbm9yZWRDYXJldE9mZnNldCk7CkBAIC0xMDIxLDcgKzEwMjMsNyBAQCBWaXNpYmxlUG9z
aXRpb24gbmV4dExpbmVQb3NpdGlvbihjb25zdCBWCiAgICAgICAgIC8vIFdlIHdhbnQgdG8gc2tp
cCB6ZXJvIGhlaWdodCBib3hlcy4KICAgICAgICAgLy8gVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2Fz
ZSBpdCBpcyBhIFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC4KICAgICAgICAgaWYgKCFyb290
IHx8ICFyb290LT5sb2dpY2FsSGVpZ2h0KCkgfHwgIXJvb3QtPmZpcnN0TGVhZkNoaWxkKCkpCi0g
ICAgICAgICAgICByb290ID0gMDsKKyAgICAgICAgICAgIHJvb3QgPSBudWxscHRyOwogICAgIH0K
IAogICAgIGlmICghcm9vdCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGlu
Zy5jcHAJKHJldmlzaW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVk
aXRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjMsNyArNjIzLDcgQEAgTm9kZSogZW5jbG9z
aW5nTm9kZU9mVHlwZShjb25zdCBQb3NpdGlvbgogCiBOb2RlKiBoaWdoZXN0RW5jbG9zaW5nTm9k
ZU9mVHlwZShjb25zdCBQb3NpdGlvbiYgcCwgYm9vbCAoKm5vZGVJc09mVHlwZSkoY29uc3QgTm9k
ZSopLCBFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSwgTm9kZSogc3RheVdpdGhpbikK
IHsKLSAgICBOb2RlKiBoaWdoZXN0ID0gMDsKKyAgICBOb2RlKiBoaWdoZXN0ID0gbnVsbHB0cjsK
ICAgICBOb2RlKiByb290ID0gcnVsZSA9PSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSA/IGhp
Z2hlc3RFZGl0YWJsZVJvb3QocCkgOiAwOwogICAgIGZvciAoTm9kZSogbiA9IHAuY29udGFpbmVy
Tm9kZSgpOyBuICYmIG4gIT0gc3RheVdpdGhpbjsgbiA9IG4tPnBhcmVudE5vZGUoKSkgewogICAg
ICAgICBpZiAocm9vdCAmJiAhbi0+aGFzRWRpdGFibGVTdHlsZSgpKQpAQCAtNjUzLDcgKzY1Myw3
IEBAIHN0YXRpYyBib29sIGhhc0FSZW5kZXJlZERlc2NlbmRhbnQoTm9kZSoKIAogTm9kZSogaGln
aGVzdE5vZGVUb1JlbW92ZUluUHJ1bmluZyhOb2RlKiBub2RlKQogewotICAgIE5vZGUqIHByZXZp
b3VzTm9kZSA9IDA7CisgICAgTm9kZSogcHJldmlvdXNOb2RlID0gbnVsbHB0cjsKICAgICBOb2Rl
KiByb290RWRpdGFibGVFbGVtZW50ID0gbm9kZSA/IG5vZGUtPnJvb3RFZGl0YWJsZUVsZW1lbnQo
KSA6IDA7CiAgICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKICAg
ICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCShyZXZpc2lvbiAxOTE2NTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDcgKzU3LDcgQEAgTm9kZSogaGlnaGVzdEFuY2VzdG9yKE5vZGUqKTsKIE5vZGUqIGhpZ2hl
c3RFZGl0YWJsZVJvb3QoY29uc3QgUG9zaXRpb24mLCBFZGl0YWJsZVR5cGUgPSBDb250ZW50SXNF
ZGl0YWJsZSk7CiAKIE5vZGUqIGhpZ2hlc3RFbmNsb3NpbmdOb2RlT2ZUeXBlKGNvbnN0IFBvc2l0
aW9uJiwgYm9vbCAoKm5vZGVJc09mVHlwZSkoY29uc3QgTm9kZSopLAotICAgIEVkaXRpbmdCb3Vu
ZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5LCBOb2RlKiBzdGF5
V2l0aGluID0gMCk7CisgICAgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fubm90Q3Jv
c3NFZGl0aW5nQm91bmRhcnksIE5vZGUqIHN0YXlXaXRoaW4gPSBudWxscHRyKTsKIE5vZGUqIGhp
Z2hlc3ROb2RlVG9SZW1vdmVJblBydW5pbmcoTm9kZSopOwogTm9kZSogbG93ZXN0RWRpdGFibGVB
bmNlc3RvcihOb2RlKik7CiAKQEAgLTE0Myw5ICsxNDMsOSBAQCBQb3NpdGlvbiBuZXh0VmlzdWFs
bHlEaXN0aW5jdENhbmRpZGF0ZShjCiBQb3NpdGlvbiBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RD
YW5kaWRhdGUoY29uc3QgUG9zaXRpb24mKTsKIAogUG9zaXRpb24gcG9zaXRpb25PdXRzaWRlVGFi
U3Bhbihjb25zdCBQb3NpdGlvbiYpOwotUG9zaXRpb24gcG9zaXRpb25CZWZvcmVDb250YWluaW5n
U3BlY2lhbEVsZW1lbnQoY29uc3QgUG9zaXRpb24mLCBOb2RlKiogY29udGFpbmluZ1NwZWNpYWxF
bGVtZW50ID0gMCk7Ci1Qb3NpdGlvbiBwb3NpdGlvbkFmdGVyQ29udGFpbmluZ1NwZWNpYWxFbGVt
ZW50KGNvbnN0IFBvc2l0aW9uJiwgTm9kZSoqIGNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudCA9IDAp
OwotUG9zaXRpb24gcG9zaXRpb25PdXRzaWRlQ29udGFpbmluZ1NwZWNpYWxFbGVtZW50KGNvbnN0
IFBvc2l0aW9uJiwgTm9kZSoqIGNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudCA9IDApOworUG9zaXRp
b24gcG9zaXRpb25CZWZvcmVDb250YWluaW5nU3BlY2lhbEVsZW1lbnQoY29uc3QgUG9zaXRpb24m
LCBOb2RlKiogY29udGFpbmluZ1NwZWNpYWxFbGVtZW50ID0gbnVsbHB0cik7CitQb3NpdGlvbiBw
b3NpdGlvbkFmdGVyQ29udGFpbmluZ1NwZWNpYWxFbGVtZW50KGNvbnN0IFBvc2l0aW9uJiwgTm9k
ZSoqIGNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudCA9IG51bGxwdHIpOworUG9zaXRpb24gcG9zaXRp
b25PdXRzaWRlQ29udGFpbmluZ1NwZWNpYWxFbGVtZW50KGNvbnN0IFBvc2l0aW9uJiwgTm9kZSoq
IGNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudCA9IG51bGxwdHIpOwogCiBpbmxpbmUgUG9zaXRpb24g
Zmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKE5vZGUqIG5vZGUpCiB7CkBAIC0yMTUsNyArMjE1
LDcgQEAgUmVmPEhUTUxFbGVtZW50PiBjcmVhdGVIVE1MRWxlbWVudChEb2N1bQogUmVmPEhUTUxF
bGVtZW50PiBjcmVhdGVIVE1MRWxlbWVudChEb2N1bWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYp
OwogCiBIVE1MRWxlbWVudCogZW5jbG9zaW5nTGlzdChOb2RlKik7Ci1IVE1MRWxlbWVudCogb3V0
ZXJtb3N0RW5jbG9zaW5nTGlzdChOb2RlKiwgTm9kZSogcm9vdExpc3QgPSAwKTsKK0hUTUxFbGVt
ZW50KiBvdXRlcm1vc3RFbmNsb3NpbmdMaXN0KE5vZGUqLCBOb2RlKiByb290TGlzdCA9IG51bGxw
dHIpOwogTm9kZSogZW5jbG9zaW5nTGlzdENoaWxkKE5vZGUqKTsKIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkocmV2aXNpb24gMTkxNjUyKQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTgsNyArMTE4LDcgQEAgY2xhc3MgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IgZmluYWwgOiBwdQog
cHVibGljOgogICAgIGVudW0gUmFuZ2VGdWxseVNlbGVjdHNOb2RlIHsgRG9lc0Z1bGx5U2VsZWN0
Tm9kZSwgRG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSB9OwogCi0gICAgU3R5bGVkTWFya3VwQWNjdW11
bGF0b3IoVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBYnNvbHV0ZVVSTHMsIEVBbm5vdGF0ZUZvcklu
dGVyY2hhbmdlLCBjb25zdCBSYW5nZSosIGJvb2wgbmVlZHNQb3NpdGlvblN0eWxlQ29udmVyc2lv
biwgTm9kZSogaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZCA9IDApOworICAgIFN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yKFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQWJzb2x1dGVVUkxzLCBFQW5ub3Rh
dGVGb3JJbnRlcmNoYW5nZSwgY29uc3QgUmFuZ2UqLCBib29sIG5lZWRzUG9zaXRpb25TdHlsZUNv
bnZlcnNpb24sIE5vZGUqIGhpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgPSBudWxscHRyKTsKIAog
ICAgIE5vZGUqIHNlcmlhbGl6ZU5vZGVzKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogcGFzdEVuZCk7
CiAgICAgdm9pZCB3cmFwV2l0aE5vZGUoTm9kZSYsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5l
cyA9IGZhbHNlLCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgPSBEb2VzRnVsbHlTZWxlY3ROb2RlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAkocmV2aXNpb24gMTkxNjUyKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBA
QCB2b2lkIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudChDb250YWluCiB2b2lkIHJlcGxhY2VD
aGlsZHJlbldpdGhUZXh0KENvbnRhaW5lck5vZGUmLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CiAKIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UmLCBWZWN0b3I8Tm9kZSo+
KiA9IG51bGxwdHIsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlID0gRG9Ob3RBbm5vdGF0ZUZvcklu
dGVyY2hhbmdlLCBib29sIGNvbnZlcnRCbG9ja3NUb0lubGluZXMgPSBmYWxzZSwgRUFic29sdXRl
VVJMcyA9IERvTm90UmVzb2x2ZVVSTHMpOwotU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBOb2Rl
JiwgRUNoaWxkcmVuT25seSA9IEluY2x1ZGVOb2RlLCBWZWN0b3I8Tm9kZSo+KiA9IG51bGxwdHIs
IEVBYnNvbHV0ZVVSTHMgPSBEb05vdFJlc29sdmVVUkxzLCBWZWN0b3I8UXVhbGlmaWVkTmFtZT4q
IHRhZ05hbWVzVG9Ta2lwID0gMCwgRUZyYWdtZW50U2VyaWFsaXphdGlvbiA9IEhUTUxGcmFnbWVu
dFNlcmlhbGl6YXRpb24pOworU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBOb2RlJiwgRUNoaWxk
cmVuT25seSA9IEluY2x1ZGVOb2RlLCBWZWN0b3I8Tm9kZSo+KiA9IG51bGxwdHIsIEVBYnNvbHV0
ZVVSTHMgPSBEb05vdFJlc29sdmVVUkxzLCBWZWN0b3I8UXVhbGlmaWVkTmFtZT4qIHRhZ05hbWVz
VG9Ta2lwID0gbnVsbHB0ciwgRUZyYWdtZW50U2VyaWFsaXphdGlvbiA9IEhUTUxGcmFnbWVudFNl
cmlhbGl6YXRpb24pOwogCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRlRnVsbE1hcmt1cChj
b25zdCBOb2RlJik7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRlRnVsbE1hcmt1cChjb25z
dCBSYW5nZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQko
cmV2aXNpb24gMTkxNjUyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQgogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3VmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNo
YXIgKm5ld1ZhbHVlID0gbnVsbHB0cjsKICAgICBFVGV4dEFsaWduIHRleHRBbGlnbiA9ICp2YWx1
ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAgICAgICBjYXNlIFRBU1RBUlQ6CkBAIC0y
MDQsNyArMjA0LDcgQEAgY29uc3QgRm9udCogRWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKGJvbwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGNvbnN0IEZvbnQqIGZvbnQgPSAw
OworICAgIGNvbnN0IEZvbnQqIGZvbnQgPSBudWxscHRyOwogICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgaWYgKE5v
ZGUqIHN0YXJ0Tm9kZSA9IGFkanVzdGVkU2VsZWN0aW9uU3RhcnRGb3JTdHlsZUNvbXB1dGF0aW9u
KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpLmRlcHJlY2F0ZWROb2RlKCkpIHsKICAg
ICAgICAgTm9kZSogcGFzdEVuZCA9IHJhbmdlLT5wYXN0TGFzdE5vZGUoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIubW0JKHJldmlzaW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcs
MTAgKzQ3LDcgQEAgdWludDY0X3QgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbAogCiBO
U1RleHRBbHRlcm5hdGl2ZXMqIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2
ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBj
b250ZXh0KQogewotICAgIEhhc2hNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBpdHIgPSBtX2FsdGVy
bmF0aXZlc09iamVjdE1hcC5maW5kKGNvbnRleHQpOwotICAgIGlmIChpdHIgPT0gbV9hbHRlcm5h
dGl2ZXNPYmplY3RNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBp
dHItPnZhbHVlLmdldCgpOworICAgIHJldHVybiBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5nZXQo
Y29udGV4dCk7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbGVybmF0
aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250ZXh0KHVp
bnQ2NF90IGNvbnRleHQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tCShyZXZpc2lvbiAxOTE2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0
b3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQCBjb25zdCBGb250KiBF
ZGl0b3I6OmZvbnRGb3JTZWxlY3Rpb24oYm9vCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCi0gICAgY29uc3QgRm9udCogZm9udCA9IDA7CisgICAgY29uc3QgRm9udCogZm9udCA9IG51
bGxwdHI7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IG1fZnJhbWUuc2VsZWN0aW9uKCkudG9O
b3JtYWxpemVkUmFuZ2UoKTsKICAgICBOb2RlKiBzdGFydE5vZGUgPSBhZGp1c3RlZFNlbGVjdGlv
blN0YXJ0Rm9yU3R5bGVDb21wdXRhdGlvbihtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
KS5kZXByZWNhdGVkTm9kZSgpOwogICAgIGlmIChyYW5nZSAmJiBzdGFydE5vZGUpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264201</attachid>
            <date>2015-10-28 01:20:06 -0700</date>
            <delta_ts>2015-10-28 10:10:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150555-20151028171914.patch</filename>
            <type>text/plain</type>
            <size>37734</size>
            <attacher name="Hunseop Jeong">hs85.jeong</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg4IEBACisyMDE1LTEwLTI3ICBIdW5zZW9w
IEplb25nICA8aHM4NS5qZW9uZ0BzYW1zdW5nLmNvbT4KKworICAgICAgICBSZXBsYWNlIDAgYW5k
IE5VTEwgd2l0aCBudWxscHRyIGluIFdlYkNvcmUvZWRpdGluZy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDU1NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlz
IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OkFwcGx5U3R5bGVD
b21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdEFuY2Vz
dG9yc1dpdGhVbmljb2RlQmlkaSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFu
ZDo6YXBwbHlJbmxpbmVTdHlsZSk6CisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnNob3VsZFJlbW92ZUlu
bGluZVN0eWxlRnJvbUVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGx5
Q29tbWFuZFRvQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21t
YW5kOjpkZWxldGVJbnNpZ25pZmljYW50VGV4dCk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVT
ZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNv
bW1hbmQ6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRl
U2VsZWN0aW9uQ29tbWFuZDo6aW5pdGlhbGl6ZVN0YXJ0RW5kKToKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRDb21tYW5kOjpFZGl0Q29t
bWFuZCk6CisgICAgICAgICogZWRpdGluZy9FZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGVkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50RXF1aXZh
bGVudDo6SFRNTEVsZW1lbnRFcXVpdmFsZW50KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdT
dHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5s
aW5lU3R5bGVPZkVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
Y29tbWFuZElzU3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpDb21tYW5kOjpDb21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDYXJldENvbnRyb2xsZXI6OnNldENh
cmV0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmRpcmVjdGlv
bk9mU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9yOjplbnRpdHlNYXNrRm9yVGV4dCk6
CisgICAgICAgICogZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5oOgorICAgICAgICAqIGVkaXRp
bmcvUmVuZGVyZWRQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJlckZyb21Q
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJlZFBv
c2l0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlcmVkUG9zaXRpb246Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyZWRQb3NpdGlvbjo6dW5jYWNoZWRJbmxpbmVCb3gpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyZWRQb3NpdGlvbjo6UmVuZGVyZWRQb3NpdGlvbik6CisgICAgICAgICogZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bGVTcGFucyk6CisgICAgICAgICogZWRpdGluZy9T
ZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXROb2RlQXR0
cmlidXRlQ29tbWFuZDo6ZG9VbmFwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL1NtYXJ0UmVwbGFj
ZUNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldFNtYXJ0U2V0KToKKyAgICAgICAgKiBlZGl0
aW5nL1NwZWxsQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVz
dDo6U3BlbGxDaGVja1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja1JlcXVl
c3Q6OmRpZFN1Y2NlZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja1JlcXVlc3Q6OmRp
ZENhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6c2V0Q2hlY2tl
ckFuZFNlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0OjpyZXF1
ZXN0ZXJEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpTcGVsbENo
ZWNrZXIpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmg6CisgICAgICAgICogZWRp
dGluZy9WaXNpYmxlUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0
aW9uOjpsZWZ0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpW
aXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OmxvY2FsQ2FyZXRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OmVuY2xvc2luZ0Jsb2NrRmxvd0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvVmlz
aWJsZVVuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZExvZ2ljYWxseU9yZGVyZWRM
ZWFmQm94ZXM6OkNhY2hlZExvZ2ljYWxseU9yZGVyZWRMZWFmQm94ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlczo6cHJldmlvdXNUZXh0T3JMaW5l
QnJlYWtCb3gpOgorICAgICAgICAoV2ViQ29yZTo6dmlzdWFsV29yZFBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OnByZXZpb3VzTGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om5l
eHRMaW5lUG9zaXRpb24pOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6aGlnaGVzdE5vZGVUb1JlbW92ZUluUHJ1bmluZyk6CisgICAgICAgICogZWRpdGluZy9o
dG1sZWRpdGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RQb3NpdGlvbkluT3JCZWZvcmVO
b2RlKToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKToKKyAgICAg
ICAgKiBlZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXIubW06CisgICAgICAg
IChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZXI6OkFsZXJuYXRpdmVUZXh0Q29u
dGV4dENvbnRyb2xsZXI6OmFsdGVybmF0aXZlc0ZvckNvbnRleHQpOgorICAgICAgICAqIGVkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zm9udEZvclNl
bGVjdGlvbik6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAqIGVkaXRp
bmcvbWFya3VwLmg6CisKIDIwMTUtMTAtMjcgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBpZCBvZiBpZnJhbWUgaW5jb3JyZWN0bHkgc2V0cyB3aW5kb3cgbmFtZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHJl
dmlzaW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDYgQEAgQXBwbHlTdHlsZUNvbW1h
bmQ6OkFwcGx5U3R5bGVDb21tYW5kKERvYwogICAgICwgbV9lbmQoZW5kaW5nU2VsZWN0aW9uKCku
ZW5kKCkudXBzdHJlYW0oKSkKICAgICAsIG1fdXNlRW5kaW5nU2VsZWN0aW9uKHRydWUpCiAgICAg
LCBtX3JlbW92ZU9ubHkoZmFsc2UpCi0gICAgLCBtX2lzSW5saW5lRWxlbWVudFRvUmVtb3ZlRnVu
Y3Rpb24oMCkKIHsKIH0KIApAQCAtMTQyLDcgKzE0MSw2IEBAIEFwcGx5U3R5bGVDb21tYW5kOjpB
cHBseVN0eWxlQ29tbWFuZChEb2MKICAgICAsIG1fZW5kKGVuZCkKICAgICAsIG1fdXNlRW5kaW5n
U2VsZWN0aW9uKGZhbHNlKQogICAgICwgbV9yZW1vdmVPbmx5KGZhbHNlKQotICAgICwgbV9pc0lu
bGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9uKDApCiB7CiB9CiAKQEAgLTE1NSw3ICsxNTMsNiBA
QCBBcHBseVN0eWxlQ29tbWFuZDo6QXBwbHlTdHlsZUNvbW1hbmQoUGFzCiAgICAgLCBtX3VzZUVu
ZGluZ1NlbGVjdGlvbih0cnVlKQogICAgICwgbV9zdHlsZWRJbmxpbmVFbGVtZW50KGVsZW1lbnQp
CiAgICAgLCBtX3JlbW92ZU9ubHkocmVtb3ZlT25seSkKLSAgICAsIG1faXNJbmxpbmVFbGVtZW50
VG9SZW1vdmVGdW5jdGlvbigwKQogewogfQogCkBAIC00NjgsOCArNDY1LDggQEAgSFRNTEVsZW1l
bnQqIEFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdEFuYwogICAgIGlmICghYmxvY2sgfHwgYmxvY2sg
PT0gbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBOb2RlKiBoaWdoZXN0QW5jZXN0b3JX
aXRoVW5pY29kZUJpZGkgPSAwOwotICAgIE5vZGUqIG5leHRIaWdoZXN0QW5jZXN0b3JXaXRoVW5p
Y29kZUJpZGkgPSAwOworICAgIE5vZGUqIGhpZ2hlc3RBbmNlc3RvcldpdGhVbmljb2RlQmlkaSA9
IG51bGxwdHI7CisgICAgTm9kZSogbmV4dEhpZ2hlc3RBbmNlc3RvcldpdGhVbmljb2RlQmlkaSA9
IG51bGxwdHI7CiAgICAgaW50IGhpZ2hlc3RBbmNlc3RvclVuaWNvZGVCaWRpID0gMDsKICAgICBm
b3IgKE5vZGUqIG4gPSBub2RlLT5wYXJlbnROb2RlKCk7IG4gIT0gYmxvY2s7IG4gPSBuLT5wYXJl
bnROb2RlKCkpIHsKICAgICAgICAgaW50IHVuaWNvZGVCaWRpID0gdG9JZGVudGlmaWVyKENvbXB1
dGVkU3R5bGVFeHRyYWN0b3IobikucHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRp
KSk7CkBAIC00ODMsNyArNDgwLDcgQEAgSFRNTEVsZW1lbnQqIEFwcGx5U3R5bGVDb21tYW5kOjpz
cGxpdEFuYwogICAgIGlmICghaGlnaGVzdEFuY2VzdG9yV2l0aFVuaWNvZGVCaWRpKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIEhUTUxFbGVtZW50KiB1bnNwbGl0QW5jZXN0b3IgPSAwOworICAg
IEhUTUxFbGVtZW50KiB1bnNwbGl0QW5jZXN0b3IgPSBudWxscHRyOwogCiAgICAgV3JpdGluZ0Rp
cmVjdGlvbiBoaWdoZXN0QW5jZXN0b3JEaXJlY3Rpb247CiAgICAgaWYgKGFsbG93ZWREaXJlY3Rp
b24gIT0gTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24KQEAgLTU1OSw4ICs1NTYsOCBAQCBzdGF0aWMg
Tm9kZSogaGlnaGVzdEVtYmVkZGluZ0FuY2VzdG9yKE5vCiAKIHZvaWQgQXBwbHlTdHlsZUNvbW1h
bmQ6OmFwcGx5SW5saW5lU3R5bGUoRWRpdGluZ1N0eWxlKiBzdHlsZSkKIHsKLSAgICBSZWZQdHI8
Q29udGFpbmVyTm9kZT4gc3RhcnREdW1teVNwYW5BbmNlc3RvciA9IDA7Ci0gICAgUmVmUHRyPENv
bnRhaW5lck5vZGU+IGVuZER1bW15U3BhbkFuY2VzdG9yID0gMDsKKyAgICBSZWZQdHI8Q29udGFp
bmVyTm9kZT4gc3RhcnREdW1teVNwYW5BbmNlc3RvcjsKKyAgICBSZWZQdHI8Q29udGFpbmVyTm9k
ZT4gZW5kRHVtbXlTcGFuQW5jZXN0b3I7CiAKICAgICAvLyB1cGRhdGUgZG9jdW1lbnQgbGF5b3V0
IG9uY2UgYmVmb3JlIHJlbW92aW5nIHN0eWxlcwogICAgIC8vIHNvIHRoYXQgd2UgYXZvaWQgdGhl
IGV4cGVuc2Ugb2YgdXBkYXRpbmcgYmVmb3JlIGVhY2ggYW5kIGV2ZXJ5IGNhbGwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHJldmlzaW9uIDE5MTY1
MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzcsMTEgKzc3LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1N0eWxlZElu
bGluZUVsZW1lbnRUb1JlbW92ZShFbGVtZW50KikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRBcHBs
eUlubGluZVN0eWxlVG9SdW4oRWRpdGluZ1N0eWxlKiwgTm9kZSogcnVuU3RhcnQsIE5vZGUqIHBh
c3RFbmROb2RlKTsKICAgICB2b2lkIHJlbW92ZUNvbmZsaWN0aW5nSW5saW5lU3R5bGVGcm9tUnVu
KEVkaXRpbmdTdHlsZSosIFJlZlB0cjxOb2RlPiYgcnVuU3RhcnQsIFJlZlB0cjxOb2RlPiYgcnVu
RW5kLCBQYXNzUmVmUHRyPE5vZGU+IHBhc3RFbmROb2RlKTsKLSAgICBib29sIHJlbW92ZUlubGlu
ZVN0eWxlRnJvbUVsZW1lbnQoRWRpdGluZ1N0eWxlKiwgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4s
IElubGluZVN0eWxlUmVtb3ZhbE1vZGUgPSBSZW1vdmVJZk5lZWRlZCwgRWRpdGluZ1N0eWxlKiBl
eHRyYWN0ZWRTdHlsZSA9IDApOworICAgIGJvb2wgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVu
dChFZGl0aW5nU3R5bGUqLCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiwgSW5saW5lU3R5bGVSZW1v
dmFsTW9kZSA9IFJlbW92ZUlmTmVlZGVkLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlID0g
bnVsbHB0cik7CiAgICAgaW5saW5lIGJvb2wgc2hvdWxkUmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxl
bWVudChFZGl0aW5nU3R5bGUqIHN0eWxlLCBIVE1MRWxlbWVudCogZWxlbWVudCkge3JldHVybiBy
ZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLCBlbGVtZW50LCBSZW1vdmVOb25lKTt9
CiAgICAgdm9pZCByZXBsYWNlV2l0aFNwYW5PclJlbW92ZUlmV2l0aG91dEF0dHJpYnV0ZXMoSFRN
TEVsZW1lbnQqJik7CiAgICAgYm9vbCByZW1vdmVJbXBsaWNpdGx5U3R5bGVkRWxlbWVudChFZGl0
aW5nU3R5bGUqLCBIVE1MRWxlbWVudCosIElubGluZVN0eWxlUmVtb3ZhbE1vZGUsIEVkaXRpbmdT
dHlsZSogZXh0cmFjdGVkU3R5bGUpOwotICAgIGJvb2wgcmVtb3ZlQ1NTU3R5bGUoRWRpdGluZ1N0
eWxlKiwgSFRNTEVsZW1lbnQqLCBJbmxpbmVTdHlsZVJlbW92YWxNb2RlID0gUmVtb3ZlSWZOZWVk
ZWQsIEVkaXRpbmdTdHlsZSogZXh0cmFjdGVkU3R5bGUgPSAwKTsKKyAgICBib29sIHJlbW92ZUNT
U1N0eWxlKEVkaXRpbmdTdHlsZSosIEhUTUxFbGVtZW50KiwgSW5saW5lU3R5bGVSZW1vdmFsTW9k
ZSA9IFJlbW92ZUlmTmVlZGVkLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlID0gbnVsbHB0
cik7CiAgICAgSFRNTEVsZW1lbnQqIGhpZ2hlc3RBbmNlc3RvcldpdGhDb25mbGljdGluZ0lubGlu
ZVN0eWxlKEVkaXRpbmdTdHlsZSosIE5vZGUqKTsKICAgICB2b2lkIGFwcGx5SW5saW5lU3R5bGVU
b1B1c2hEb3duKE5vZGUqLCBFZGl0aW5nU3R5bGUqKTsKICAgICB2b2lkIHB1c2hEb3duSW5saW5l
U3R5bGVBcm91bmROb2RlKEVkaXRpbmdTdHlsZSosIE5vZGUqKTsKQEAgLTEyNyw3ICsxMjcsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VFbmRpbmdTZWxlY3Rpb247CiAgICAgUmVmUHRyPEVs
ZW1lbnQ+IG1fc3R5bGVkSW5saW5lRWxlbWVudDsKICAgICBib29sIG1fcmVtb3ZlT25seTsKLSAg
ICBJc0lubGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9uIG1faXNJbmxpbmVFbGVtZW50VG9SZW1v
dmVGdW5jdGlvbjsKKyAgICBJc0lubGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9uIG1faXNJbmxp
bmVFbGVtZW50VG9SZW1vdmVGdW5jdGlvbiB7IG51bGxwdHIgfTsKIH07CiAKIGVudW0gU2hvdWxk
U3R5bGVBdHRyaWJ1dGVCZUVtcHR5IHsgQWxsb3dOb25FbXB0eVN0eWxlQXR0cmlidXRlLCBTdHls
ZUF0dHJpYnV0ZVNob3VsZEJlRW1wdHkgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Q29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCShyZXZpc2lvbiAxOTE2NTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjc3LDcgKzI3Nyw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGx5Q29t
bWFuZFQKICAgICBjb21tYW5kLT5zZXRQYXJlbnQodGhpcyk7CiAgICAgY29tbWFuZC0+ZG9BcHBs
eSgpOwogICAgIGlmIChjb21tYW5kLT5pc1NpbXBsZUVkaXRDb21tYW5kKCkpIHsKLSAgICAgICAg
Y29tbWFuZC0+c2V0UGFyZW50KDApOworICAgICAgICBjb21tYW5kLT5zZXRQYXJlbnQobnVsbHB0
cik7CiAgICAgICAgIGVuc3VyZUNvbXBvc2l0aW9uKCktPmFwcGVuZCh0b1NpbXBsZUVkaXRDb21t
YW5kKGNvbW1hbmQuZ2V0KCkpKTsKICAgICB9CiAgICAgbV9jb21tYW5kcy5hcHBlbmQoY29tbWFu
ZC5yZWxlYXNlKCkpOwpAQCAtODI1LDcgKzgyNSw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1h
bmQ6OmRlbGV0ZUluc2lnbmkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgcmVtb3Zl
ZCA9IDA7Ci0gICAgSW5saW5lVGV4dEJveCogcHJldkJveCA9IDA7CisgICAgSW5saW5lVGV4dEJv
eCogcHJldkJveCA9IG51bGxwdHI7CiAgICAgU3RyaW5nIHN0cjsKIAogICAgIC8vIFRoaXMgbG9v
cCBzdHJ1Y3R1cmUgd29ya3MgdG8gcHJvY2VzcyBhbGwgZ2FwcyBwcmVjZWRpbmcgYSBib3gsCkBA
IC04NTQsNyArODU0LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6ZGVsZXRlSW5zaWdu
aQogICAgICAgICAgICAgaWYgKCsrc29ydGVkVGV4dEJveGVzUG9zaXRpb24gPCBzb3J0ZWRUZXh0
Qm94ZXMuc2l6ZSgpKQogICAgICAgICAgICAgICAgIGJveCA9IHNvcnRlZFRleHRCb3hlc1tzb3J0
ZWRUZXh0Qm94ZXNQb3NpdGlvbl07CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
Ym94ID0gMDsKKyAgICAgICAgICAgICAgICBib3ggPSBudWxscHRyOwogICAgICAgICB9CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9u
Q29tbWFuZC5jcHAJKHJldmlzaW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEwICs4Myw2
IEBAIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OkRlbGV0ZVNlbGVjdGlvbkMKICAgICAsIG1fcHJ1
bmVTdGFydEJsb2NrSWZOZWNlc3NhcnkoZmFsc2UpCiAgICAgLCBtX3N0YXJ0c0F0RW1wdHlMaW5l
KGZhbHNlKQogICAgICwgbV9zYW5pdGl6ZU1hcmt1cChzYW5pdGl6ZU1hcmt1cCkKLSAgICAsIG1f
c3RhcnRCbG9jaygwKQotICAgICwgbV9lbmRCbG9jaygwKQotICAgICwgbV90eXBpbmdTdHlsZSgw
KQotICAgICwgbV9kZWxldGVJbnRvQmxvY2txdW90ZVN0eWxlKDApCiB7CiB9CiAKQEAgLTEwMiwx
NyArOTgsMTMgQEAgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6RGVsZXRlU2VsZWN0aW9uQwogICAg
ICwgbV9zdGFydHNBdEVtcHR5TGluZShmYWxzZSkKICAgICAsIG1fc2FuaXRpemVNYXJrdXAoc2Fu
aXRpemVNYXJrdXApCiAgICAgLCBtX3NlbGVjdGlvblRvRGVsZXRlKHNlbGVjdGlvbikKLSAgICAs
IG1fc3RhcnRCbG9jaygwKQotICAgICwgbV9lbmRCbG9jaygwKQotICAgICwgbV90eXBpbmdTdHls
ZSgwKQotICAgICwgbV9kZWxldGVJbnRvQmxvY2txdW90ZVN0eWxlKDApCiB7CiB9CiAKIHZvaWQg
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aW5pdGlhbGl6ZVN0YXJ0RW5kKFBvc2l0aW9uJiBzdGFy
dCwgUG9zaXRpb24mIGVuZCkKIHsKLSAgICBOb2RlKiBzdGFydFNwZWNpYWxDb250YWluZXIgPSAw
OwotICAgIE5vZGUqIGVuZFNwZWNpYWxDb250YWluZXIgPSAwOworICAgIE5vZGUqIHN0YXJ0U3Bl
Y2lhbENvbnRhaW5lciA9IG51bGxwdHI7CisgICAgTm9kZSogZW5kU3BlY2lhbENvbnRhaW5lciA9
IG51bGxwdHI7CiAgCiAgICAgc3RhcnQgPSBtX3NlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCk7CiAg
ICAgZW5kID0gbV9zZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKTsKQEAgLTEyOSw4ICsxMjEsOCBAQCB2
b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmluaXRpYWxpemVTCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICB3aGlsZSAoMSkgewotICAgICAgICBzdGFydFNwZWNpYWxDb250YWluZXIgPSAw
OwotICAgICAgICBlbmRTcGVjaWFsQ29udGFpbmVyID0gMDsKKyAgICAgICAgc3RhcnRTcGVjaWFs
Q29udGFpbmVyID0gbnVsbHB0cjsKKyAgICAgICAgZW5kU3BlY2lhbENvbnRhaW5lciA9IG51bGxw
dHI7CiAgICAgCiAgICAgICAgIFBvc2l0aW9uIHMgPSBwb3NpdGlvbkJlZm9yZUNvbnRhaW5pbmdT
cGVjaWFsRWxlbWVudChzdGFydCwgJnN0YXJ0U3BlY2lhbENvbnRhaW5lcik7CiAgICAgICAgIFBv
c2l0aW9uIGUgPSBwb3NpdGlvbkFmdGVyQ29udGFpbmluZ1NwZWNpYWxFbGVtZW50KGVuZCwgJmVu
ZFNwZWNpYWxDb250YWluZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29t
bWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFu
ZC5jcHAJKHJldmlzaW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENv
bW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgRWRp
dEFjdGlvbiBlZGl0aW5nQWN0aW9uKQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAs
IG1fcGFyZW50KDApCiAgICAgLCBtX2VkaXRpbmdBY3Rpb24oZWRpdGluZ0FjdGlvbikKIHsKICAg
ICBBU1NFUlQoZG9jdW1lbnQuZnJhbWUoKSk7CkBAIC01MCw3ICs0OSw2IEBAIEVkaXRDb21tYW5k
OjpFZGl0Q29tbWFuZChEb2N1bWVudCYgZG9jdW0KIAogRWRpdENvbW1hbmQ6OkVkaXRDb21tYW5k
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc3RhcnRpbmdTZWxl
Y3Rpb24sIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGVuZGluZ1NlbGVjdGlvbikKICAgICA6IG1f
ZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBtX3BhcmVudCgwKQogewogICAgIEFTU0VSVChkb2N1
bWVudC5mcmFtZSgpKTsKICAgICBzZXRTdGFydGluZ1NlbGVjdGlvbihzdGFydGluZ1NlbGVjdGlv
bik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCShyZXZpc2lvbiAxOTE2
NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1l
bnQ7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBtX3N0YXJ0aW5nU2VsZWN0aW9uOwogICAgIFZpc2li
bGVTZWxlY3Rpb24gbV9lbmRpbmdTZWxlY3Rpb247Ci0gICAgQ29tcG9zaXRlRWRpdENvbW1hbmQq
IG1fcGFyZW50OworICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kKiBtX3BhcmVudCB7IG51bGxwdHIg
fTsKICAgICBFZGl0QWN0aW9uIG1fZWRpdGluZ0FjdGlvbiB7IEVkaXRBY3Rpb25VbnNwZWNpZmll
ZCB9OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAko
cmV2aXNpb24gMTkxNjUyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsMTIgKzE3MCwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAg
SFRNTEVsZW1lbnRFcXVpdmFsZW50KENTU1Byb3BlcnR5SUQsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUpOwogICAgIGNvbnN0IENTU1Byb3BlcnR5SUQgbV9wcm9wZXJ0eUlEOwogICAgIGNv
bnN0IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9wcmltaXRpdmVWYWx1ZTsKLSAgICBjb25z
dCBRdWFsaWZpZWROYW1lKiBtX3RhZ05hbWU7IC8vIFdlIGNhbiBzdG9yZSBhIHBvaW50ZXIgYmVj
YXVzZSBIVE1MIHRhZyBuYW1lcyBhcmUgY29uc3QgZ2xvYmFsLgorICAgIGNvbnN0IFF1YWxpZmll
ZE5hbWUqIG1fdGFnTmFtZSB7IG51bGxwdHIgfTsgLy8gV2UgY2FuIHN0b3JlIGEgcG9pbnRlciBi
ZWNhdXNlIEhUTUwgdGFnIG5hbWVzIGFyZSBjb25zdCBnbG9iYWwuCiB9OwogCiBIVE1MRWxlbWVu
dEVxdWl2YWxlbnQ6OkhUTUxFbGVtZW50RXF1aXZhbGVudChDU1NQcm9wZXJ0eUlEIGlkKQogICAg
IDogbV9wcm9wZXJ0eUlEKGlkKQotICAgICwgbV90YWdOYW1lKDApCiB7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAkocmV2aXNpb24gMTkxNjUyKQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2
LDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBjb25mbGljdHNXaXRo
SW5saW5lU3R5bGVPZkVsZW1lbnQoZWxlbWVudCwgJm5ld0lubGluZVN0eWxlLCBleHRyYWN0ZWRT
dHlsZSk7CiAgICAgfQotICAgIGJvb2wgY29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1l
bnQoSFRNTEVsZW1lbnQqLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlID0gMCwgU2hvdWxk
RXh0cmFjdE1hdGNoaW5nU3R5bGUgPSBEb05vdEV4dHJhY3RNYXRjaGluZ1N0eWxlKSBjb25zdDsK
KyAgICBib29sIGNvbmZsaWN0c1dpdGhJbXBsaWNpdFN0eWxlT2ZFbGVtZW50KEhUTUxFbGVtZW50
KiwgRWRpdGluZ1N0eWxlKiBleHRyYWN0ZWRTdHlsZSA9IG51bGxwdHIsIFNob3VsZEV4dHJhY3RN
YXRjaGluZ1N0eWxlID0gRG9Ob3RFeHRyYWN0TWF0Y2hpbmdTdHlsZSkgY29uc3Q7CiAgICAgYm9v
bCBjb25mbGljdHNXaXRoSW1wbGljaXRTdHlsZU9mQXR0cmlidXRlcyhIVE1MRWxlbWVudCopIGNv
bnN0OwogICAgIGJvb2wgZXh0cmFjdENvbmZsaWN0aW5nSW1wbGljaXRTdHlsZU9mQXR0cmlidXRl
cyhIVE1MRWxlbWVudCosIFNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbiwgRWRpdGluZ1N0
eWxlKiBleHRyYWN0ZWRTdHlsZSwKICAgICAgICAgICAgIFZlY3RvcjxRdWFsaWZpZWROYW1lPiYg
Y29uZmxpY3RpbmdBdHRyaWJ1dGVzLCBTaG91bGRFeHRyYWN0TWF0Y2hpbmdTdHlsZSkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHJldmlzaW9uIDE5MTY1MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNCwxOSArMjA0
LDE5IEBAIHB1YmxpYzoKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgQ29tbWFuZCgpOwogICAgICAg
ICBDb21tYW5kKGNvbnN0IEVkaXRvckludGVybmFsQ29tbWFuZCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIFBhc3NSZWZQdHI8RnJhbWU+KTsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4
ZWN1dGUoY29uc3QgU3RyaW5nJiBwYXJhbWV0ZXIgPSBTdHJpbmcoKSwgRXZlbnQqIHRyaWdnZXJp
bmdFdmVudCA9IDApIGNvbnN0OworICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGUo
Y29uc3QgU3RyaW5nJiBwYXJhbWV0ZXIgPSBTdHJpbmcoKSwgRXZlbnQqIHRyaWdnZXJpbmdFdmVu
dCA9IG51bGxwdHIpIGNvbnN0OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGV4ZWN1dGUo
RXZlbnQqIHRyaWdnZXJpbmdFdmVudCkgY29uc3Q7CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc1N1cHBvcnRlZCgpIGNvbnN0OwotICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
RW5hYmxlZChFdmVudCogdHJpZ2dlcmluZ0V2ZW50ID0gMCkgY29uc3Q7CisgICAgICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaXNFbmFibGVkKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSBudWxscHRy
KSBjb25zdDsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCBUcmlTdGF0ZSBzdGF0ZShFdmVudCog
dHJpZ2dlcmluZ0V2ZW50ID0gMCkgY29uc3Q7Ci0gICAgICAgIFN0cmluZyB2YWx1ZShFdmVudCog
dHJpZ2dlcmluZ0V2ZW50ID0gMCkgY29uc3Q7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIFRyaVN0
YXRlIHN0YXRlKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSBudWxscHRyKSBjb25zdDsKKyAgICAg
ICAgU3RyaW5nIHZhbHVlKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSBudWxscHRyKSBjb25zdDsK
IAogICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVGV4dEluc2VydGlvbigpIGNvbnN0Owog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgY29uc3QgRWRpdG9ySW50ZXJuYWxDb21tYW5kKiBtX2Nv
bW1hbmQ7CisgICAgICAgIGNvbnN0IEVkaXRvckludGVybmFsQ29tbWFuZCogbV9jb21tYW5kIHsg
bnVsbHB0ciB9OwogICAgICAgICBFZGl0b3JDb21tYW5kU291cmNlIG1fc291cmNlOwogICAgICAg
ICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcAkocmV2aXNpb24gMTkxNjUyKQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3Nyw3ICsx
Njc3LDYgQEAgYm9vbCBFZGl0b3I6OmNvbW1hbmRJc1N1cHBvcnRlZEZyb21NZW51TwogfQogCiBF
ZGl0b3I6OkNvbW1hbmQ6OkNvbW1hbmQoKQotICAgIDogbV9jb21tYW5kKDApCiB7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAx
OTE2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgRHJhZ0NhcmV0Q29udHJvbGxlcjo6
c2V0Q2FyZXRQb3NpdGkKICAgICAgICAgaW52YWxpZGF0ZUNhcmV0UmVjdChub2RlKTsKICAgICBt
X3Bvc2l0aW9uID0gcG9zaXRpb247CiAgICAgc2V0Q2FyZXRSZWN0TmVlZHNVcGRhdGUoKTsKLSAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSAwOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG51bGxw
dHI7CiAgICAgaWYgKE5vZGUqIG5vZGUgPSBtX3Bvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkuZGVw
cmVjYXRlZE5vZGUoKSkgewogICAgICAgICBpbnZhbGlkYXRlQ2FyZXRSZWN0KG5vZGUpOwogICAg
ICAgICBkb2N1bWVudCA9ICZub2RlLT5kb2N1bWVudCgpOwpAQCAtNTUyLDggKzU1Miw4IEBAIFRl
eHREaXJlY3Rpb24gRnJhbWVTZWxlY3Rpb246OmRpcmVjdGlvbk8KIAogVGV4dERpcmVjdGlvbiBG
cmFtZVNlbGVjdGlvbjo6ZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKQogewotICAgIElubGluZUJveCog
c3RhcnRCb3ggPSAwOwotICAgIElubGluZUJveCogZW5kQm94ID0gMDsKKyAgICBJbmxpbmVCb3gq
IHN0YXJ0Qm94ID0gbnVsbHB0cjsKKyAgICBJbmxpbmVCb3gqIGVuZEJveCA9IG51bGxwdHI7CiAg
ICAgaW50IHVudXNlZE9mZnNldDsKICAgICAvLyBDYWNoZSB0aGUgVmlzaWJsZVBvc2l0aW9ucyBi
ZWNhdXNlIHZpc2libGVTdGFydCgpIGFuZCB2aXNpYmxlRW5kKCkKICAgICAvLyBjYW4gY2F1c2Ug
bGF5b3V0LCB3aGljaCBoYXMgdGhlIHBvdGVudGlhbCB0byBpbnZhbGlkYXRlIGxpbmVib3hlcy4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCShy
ZXZpc2lvbiAxOTE2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDcgKzMyNyw3IEBAIEVudGl0eU1hc2sgTWFy
a3VwQWNjdW11bGF0b3I6OmVudGl0eU1hc2sKICAgICBpZiAoIXRleHQuZG9jdW1lbnQoKS5pc0hU
TUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gRW50aXR5TWFza0luUENEQVRBOwogCi0gICAg
Y29uc3QgUXVhbGlmaWVkTmFtZSogcGFyZW50TmFtZSA9IDA7CisgICAgY29uc3QgUXVhbGlmaWVk
TmFtZSogcGFyZW50TmFtZSA9IG51bGxwdHI7CiAgICAgaWYgKHRleHQucGFyZW50RWxlbWVudCgp
KQogICAgICAgICBwYXJlbnROYW1lID0gJnRleHQucGFyZW50RWxlbWVudCgpLT50YWdRTmFtZSgp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5oCShy
ZXZpc2lvbiAxOTE2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxh
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgZW51bSBFbnRpdHlNYXNrIHsK
IC8vIEZJWE1FOiBOb25jb3B5YWJsZT8KIGNsYXNzIE1hcmt1cEFjY3VtdWxhdG9yIHsKIHB1Ymxp
YzoKLSAgICBNYXJrdXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiwgRUFic29sdXRlVVJMcywg
Y29uc3QgUmFuZ2UqID0gMCwgRUZyYWdtZW50U2VyaWFsaXphdGlvbiA9IEhUTUxGcmFnbWVudFNl
cmlhbGl6YXRpb24pOworICAgIE1hcmt1cEFjY3VtdWxhdG9yKFZlY3RvcjxOb2RlKj4qLCBFQWJz
b2x1dGVVUkxzLCBjb25zdCBSYW5nZSogPSBudWxscHRyLCBFRnJhZ21lbnRTZXJpYWxpemF0aW9u
ID0gSFRNTEZyYWdtZW50U2VyaWFsaXphdGlvbik7CiAgICAgdmlydHVhbCB+TWFya3VwQWNjdW11
bGF0b3IoKTsKIAogICAgIFN0cmluZyBzZXJpYWxpemVOb2RlcyhOb2RlJiB0YXJnZXROb2RlLCBF
Q2hpbGRyZW5Pbmx5LCBWZWN0b3I8UXVhbGlmaWVkTmFtZT4qIHRhZ05hbWVzVG9Ta2lwID0gbnVs
bHB0cik7CkBAIC04NSw3ICs4NSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kVGV4dChTdHJpbmdCdWlsZGVyJiwgY29uc3QgVGV4dCYpOwogICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmRFbGVtZW50KFN0cmluZ0J1aWxkZXImLCBjb25zdCBFbGVtZW50JiwgTmFtZXNwYWNlcyop
OwogCi0gICAgdm9pZCBhcHBlbmRTdGFydFRhZyhjb25zdCBOb2RlJiwgTmFtZXNwYWNlcyogPSAw
KTsKKyAgICB2b2lkIGFwcGVuZFN0YXJ0VGFnKGNvbnN0IE5vZGUmLCBOYW1lc3BhY2VzKiA9IG51
bGxwdHIpOwogCiAgICAgdm9pZCBhcHBlbmRPcGVuVGFnKFN0cmluZ0J1aWxkZXImLCBjb25zdCBF
bGVtZW50JiwgTmFtZXNwYWNlcyopOwogICAgIHZvaWQgYXBwZW5kQ2xvc2VUYWcoU3RyaW5nQnVp
bGRlciYsIGNvbnN0IEVsZW1lbnQmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVu
ZGVyZWRQb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZW5kZXJlZFBvc2l0aW9uLmNwcAkocmV2aXNpb24gMTkxNjUyKQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogcmVu
ZGVyZXJGcm9tUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogewogICAgIEFTU0VS
VChwb3NpdGlvbi5pc05vdE51bGwoKSk7Ci0gICAgTm9kZSogcmVuZGVyZXJOb2RlID0gMDsKKyAg
ICBOb2RlKiByZW5kZXJlck5vZGUgPSBudWxscHRyOwogICAgIHN3aXRjaCAocG9zaXRpb24uYW5j
aG9yVHlwZSgpKSB7CiAgICAgY2FzZSBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9y
OgogICAgICAgICByZW5kZXJlck5vZGUgPSBwb3NpdGlvbi5jb21wdXRlTm9kZUFmdGVyUG9zaXRp
b24oKTsKQEAgLTY0LDkgKzY0LDcgQEAgc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyRnJvbQogfQogCiBSZW5kZXJlZFBvc2l0aW9uOjpSZW5kZXJlZFBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgcG9zaXRpb24pCi0gICAgOiBtX3JlbmRlcmVyKDApCi0gICAgLCBtX2lu
bGluZUJveCgwKQotICAgICwgbV9vZmZzZXQoMCkKKyAgICA6IG1fb2Zmc2V0KDApCiAgICAgLCBt
X3ByZXZMZWFmQ2hpbGQodW5jYWNoZWRJbmxpbmVCb3goKSkKICAgICAsIG1fbmV4dExlYWZDaGls
ZCh1bmNhY2hlZElubGluZUJveCgpKQogewpAQCAtODAsOSArNzgsNyBAQCBSZW5kZXJlZFBvc2l0
aW9uOjpSZW5kZXJlZFBvc2l0aW9uKGNvbnN0CiB9CiAKIFJlbmRlcmVkUG9zaXRpb246OlJlbmRl
cmVkUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBFQWZmaW5pdHkgYWZmaW5pdHkp
Ci0gICAgOiBtX3JlbmRlcmVyKDApCi0gICAgLCBtX2lubGluZUJveCgwKQotICAgICwgbV9vZmZz
ZXQoMCkKKyAgICA6IG1fb2Zmc2V0KDApCiAgICAgLCBtX3ByZXZMZWFmQ2hpbGQodW5jYWNoZWRJ
bmxpbmVCb3goKSkKICAgICAsIG1fbmV4dExlYWZDaGlsZCh1bmNhY2hlZElubGluZUJveCgpKQog
ewpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmgJKHJldmlz
aW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICBQb3NpdGlvbiBw
b3NpdGlvbkF0TGVmdEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3Q7CiAgICAgUG9zaXRpb24gcG9z
aXRpb25BdFJpZ2h0Qm91bmRhcnlPZkJpRGlSdW4oKSBjb25zdDsKIAotICAgIEludFJlY3QgYWJz
b2x1dGVSZWN0KExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDApIGNvbnN0Owor
ICAgIEludFJlY3QgYWJzb2x1dGVSZWN0KExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGlu
ZSA9IG51bGxwdHIpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBSZW5kZXJlZFBvc2l0aW9uJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTgwLDggKzgw
LDggQEAgcHJpdmF0ZToKICAgICBib29sIGF0TGVmdEJvdW5kYXJ5T2ZCaWRpUnVuKFNob3VsZE1h
dGNoQmlkaUxldmVsLCB1bnNpZ25lZCBjaGFyIGJpZGlMZXZlbE9mUnVuKSBjb25zdDsKICAgICBi
b29sIGF0UmlnaHRCb3VuZGFyeU9mQmlkaVJ1bihTaG91bGRNYXRjaEJpZGlMZXZlbCwgdW5zaWdu
ZWQgY2hhciBiaWRpTGV2ZWxPZlJ1bikgY29uc3Q7CiAKLSAgICBSZW5kZXJPYmplY3QqIG1fcmVu
ZGVyZXI7Ci0gICAgSW5saW5lQm94KiBtX2lubGluZUJveDsKKyAgICBSZW5kZXJPYmplY3QqIG1f
cmVuZGVyZXIgeyBudWxscHRyIH07CisgICAgSW5saW5lQm94KiBtX2lubGluZUJveCB7IG51bGxw
dHIgfTsKICAgICBpbnQgbV9vZmZzZXQ7CiAKICAgICBzdGF0aWMgSW5saW5lQm94KiB1bmNhY2hl
ZElubGluZUJveCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SW5saW5lQm94Kj4oMSk7IH0K
QEAgLTkyLDkgKzkyLDcgQEAgcHJpdmF0ZToKIH07CiAKIGlubGluZSBSZW5kZXJlZFBvc2l0aW9u
OjpSZW5kZXJlZFBvc2l0aW9uKCkKLSAgICA6IG1fcmVuZGVyZXIoMCkKLSAgICAsIG1faW5saW5l
Qm94KDApCi0gICAgLCBtX29mZnNldCgwKQorICAgIDogbV9vZmZzZXQoMCkKICAgICAsIG1fcHJl
dkxlYWZDaGlsZCh1bmNhY2hlZElubGluZUJveCgpKQogICAgICwgbV9uZXh0TGVhZkNoaWxkKHVu
Y2FjaGVkSW5saW5lQm94KCkpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAkocmV2aXNpb24gMTkxNjUyKQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc3NSw3ICs3NzUsNyBAQCBzdGF0aWMgYm9vbCBoYW5kbGVTdHlsZVNwYW5zQmVm
b3JlSW5zZXJ0CiAvLyBvciBhdCBjb3B5IHRpbWUuCiB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpoYW5kbGVTdHlsZVNwYW5zKEluc2VydGVkTm9kZXMmIGluc2VydGVkTm9kZXMpCiB7Ci0g
ICAgSFRNTEVsZW1lbnQqIHdyYXBwaW5nU3R5bGVTcGFuID0gMDsKKyAgICBIVE1MRWxlbWVudCog
d3JhcHBpbmdTdHlsZVNwYW4gPSBudWxscHRyOwogICAgIC8vIFRoZSBzdHlsZSBzcGFuIHRoYXQg
Y29udGFpbnMgdGhlIHNvdXJjZSBkb2N1bWVudCdzIGRlZmF1bHQgc3R5bGUgc2hvdWxkIGJlIGF0
CiAgICAgLy8gdGhlIHRvcCBvZiB0aGUgZnJhZ21lbnQsIGJ1dCBNYWlsIHNvbWV0aW1lcyBhZGRz
IGEgd3JhcHBlciAoZm9yIFBhc3RlIEFzIFF1b3RhdGlvbiksCiAgICAgLy8gc28gc2VhcmNoIGZv
ciB0aGUgdG9wIGxldmVsIHN0eWxlIHNwYW4gaW5zdGVhZCBvZiBhc3N1bWluZyBpdCdzIGF0IHRo
ZSB0b3AuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21t
YW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRy
aWJ1dGVDb21tYW5kLmNwcAkocmV2aXNpb24gMTkxNjUyKQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcg
KzQ5LDcgQEAgdm9pZCBTZXROb2RlQXR0cmlidXRlQ29tbWFuZDo6ZG9BcHBseSgpCiB2b2lkIFNl
dE5vZGVBdHRyaWJ1dGVDb21tYW5kOjpkb1VuYXBwbHkoKQogewogICAgIG1fZWxlbWVudC0+c2V0
QXR0cmlidXRlKG1fYXR0cmlidXRlLCBtX29sZFZhbHVlKTsKLSAgICBBdG9taWNTdHJpbmdJbXBs
KiBudWxsU3RyaW5nID0gMDsKKyAgICBBdG9taWNTdHJpbmdJbXBsKiBudWxsU3RyaW5nID0gbnVs
bHB0cjsKICAgICBtX29sZFZhbHVlID0gbnVsbFN0cmluZzsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TbWFydFJlcGxhY2VDRi5jcHAJKHJldmlzaW9uIDE5MTY1MikKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw4ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIENGTXV0YWJsZUNo
YXJhY3RlclNldFJlZiBnZXRTbWFydFNldChib29sIGlzUHJldmlvdXNDaGFyYWN0ZXIpCiB7Ci0g
ICAgc3RhdGljIENGTXV0YWJsZUNoYXJhY3RlclNldFJlZiBwcmVTbWFydFNldCA9IE5VTEw7IAot
ICAgIHN0YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgcG9zdFNtYXJ0U2V0ID0gTlVMTDsK
KyAgICBzdGF0aWMgQ0ZNdXRhYmxlQ2hhcmFjdGVyU2V0UmVmIHByZVNtYXJ0U2V0OworICAgIHN0
YXRpYyBDRk11dGFibGVDaGFyYWN0ZXJTZXRSZWYgcG9zdFNtYXJ0U2V0OwogICAgIENGTXV0YWJs
ZUNoYXJhY3RlclNldFJlZiBzbWFydFNldCA9IGlzUHJldmlvdXNDaGFyYWN0ZXIgPyBwcmVTbWFy
dFNldCA6IHBvc3RTbWFydFNldDsKICAgICBpZiAoIXNtYXJ0U2V0KSB7CiAgICAgICAgIHNtYXJ0
U2V0ID0gQ0ZDaGFyYWN0ZXJTZXRDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAkocmV2aXNpb24gMTkx
NjUyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NCw4ICs0NCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNwZWxsQ2hl
Y2tSZXF1ZXN0OjpTcGVsbENoZWNrUmVxdWVzdChQYXNzUmVmUHRyPFJhbmdlPiBjaGVja2luZ1Jh
bmdlLCBQYXNzUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBUZXh0Q2hlY2tpbmdUeXBlTWFzayBtYXNrLCBUZXh0Q2hlY2tpbmdQcm9jZXNzVHlwZSBwcm9j
ZXNzVHlwZSkKLSAgICA6IG1fY2hlY2tlcigwKQotICAgICwgbV9jaGVja2luZ1JhbmdlKGNoZWNr
aW5nUmFuZ2UpCisgICAgOiBtX2NoZWNraW5nUmFuZ2UoY2hlY2tpbmdSYW5nZSkKICAgICAsIG1f
cGFyYWdyYXBoUmFuZ2UocGFyYWdyYXBoUmFuZ2UpCiAgICAgLCBtX3Jvb3RFZGl0YWJsZUVsZW1l
bnQobV9jaGVja2luZ1JhbmdlLT5zdGFydENvbnRhaW5lcigpLnJvb3RFZGl0YWJsZUVsZW1lbnQo
KSkKICAgICAsIG1fcmVxdWVzdERhdGEodW5yZXF1ZXN0ZWRUZXh0Q2hlY2tpbmdTZXF1ZW5jZSwg
dGV4dCwgbWFzaywgcHJvY2Vzc1R5cGUpCkBAIC03OSw3ICs3OCw3IEBAIHZvaWQgU3BlbGxDaGVj
a1JlcXVlc3Q6OmRpZFN1Y2NlZWQoY29uc3QKICAgICBpZiAoIW1fY2hlY2tlcikKICAgICAgICAg
cmV0dXJuOwogICAgIG1fY2hlY2tlci0+ZGlkQ2hlY2tTdWNjZWVkKG1fcmVxdWVzdERhdGEuc2Vx
dWVuY2UoKSwgcmVzdWx0cyk7Ci0gICAgbV9jaGVja2VyID0gMDsKKyAgICBtX2NoZWNrZXIgPSBu
dWxscHRyOwogfQogCiB2b2lkIFNwZWxsQ2hlY2tSZXF1ZXN0OjpkaWRDYW5jZWwoKQpAQCAtODcs
NyArODYsNyBAQCB2b2lkIFNwZWxsQ2hlY2tSZXF1ZXN0OjpkaWRDYW5jZWwoKQogICAgIGlmICgh
bV9jaGVja2VyKQogICAgICAgICByZXR1cm47CiAgICAgbV9jaGVja2VyLT5kaWRDaGVja0NhbmNl
bChtX3JlcXVlc3REYXRhLnNlcXVlbmNlKCkpOwotICAgIG1fY2hlY2tlciA9IDA7CisgICAgbV9j
aGVja2VyID0gbnVsbHB0cjsKIH0KIAogdm9pZCBTcGVsbENoZWNrUmVxdWVzdDo6c2V0Q2hlY2tl
ckFuZFNlcXVlbmNlKFNwZWxsQ2hlY2tlciogcmVxdWVzdGVyLCBpbnQgc2VxdWVuY2UpCkBAIC0x
MDAsNyArOTksNyBAQCB2b2lkIFNwZWxsQ2hlY2tSZXF1ZXN0OjpzZXRDaGVja2VyQW5kU2VxCiAK
IHZvaWQgU3BlbGxDaGVja1JlcXVlc3Q6OnJlcXVlc3RlckRlc3Ryb3llZCgpCiB7Ci0gICAgbV9j
aGVja2VyID0gMDsKKyAgICBtX2NoZWNrZXIgPSBudWxscHRyOwogfQogCiBTcGVsbENoZWNrZXI6
OlNwZWxsQ2hlY2tlcihGcmFtZSYgZnJhbWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NwZWxsQ2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmgJKHJldmlzaW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BlbGxDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBTcGVsbENoZWNrUmVxdWVzdChQYXNzUmVmUHRyPFJhbmdlPiBjaGVja2lu
Z1JhbmdlLCBQYXNzUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSwgY29uc3QgU3RyaW5nJiwg
VGV4dENoZWNraW5nVHlwZU1hc2ssIFRleHRDaGVja2luZ1Byb2Nlc3NUeXBlKTsKIAotICAgIFNw
ZWxsQ2hlY2tlciogbV9jaGVja2VyOworICAgIFNwZWxsQ2hlY2tlciogbV9jaGVja2VyIHsgbnVs
bHB0ciB9OwogICAgIFJlZlB0cjxSYW5nZT4gbV9jaGVja2luZ1JhbmdlOwogICAgIFJlZlB0cjxS
YW5nZT4gbV9wYXJhZ3JhcGhSYW5nZTsKICAgICBSZWZQdHI8RWxlbWVudD4gbV9yb290RWRpdGFi
bGVFbGVtZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9u
LmNwcAkocmV2aXNpb24gMTkxNjUyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
UG9zaXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNyArMTczLDcgQEAgUG9zaXRpb24g
VmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaQogCiAgICAgICAgICAgICBpZiAoYm94LT5k
aXJlY3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFw
cmV2Qm94KSB7Ci0gICAgICAgICAgICAgICAgICAgIElubGluZUJveCogbG9naWNhbFN0YXJ0ID0g
MDsKKyAgICAgICAgICAgICAgICAgICAgSW5saW5lQm94KiBsb2dpY2FsU3RhcnQgPSBudWxscHRy
OwogICAgICAgICAgICAgICAgICAgICBpZiAocHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBib3gt
PnJvb3QoKS5nZXRMb2dpY2FsU3RhcnRCb3hXaXRoTm9kZShsb2dpY2FsU3RhcnQpIDogYm94LT5y
b290KCkuZ2V0TG9naWNhbEVuZEJveFdpdGhOb2RlKGxvZ2ljYWxTdGFydCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJveCA9IGxvZ2ljYWxTdGFydDsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsKQEAgLTMzOCw3ICszMzgsNyBAQCBQb3Np
dGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlECiAKICAgICAgICAgICAgIGlmIChi
b3gtPmRpcmVjdGlvbigpID09IHByaW1hcnlEaXJlY3Rpb24pIHsKICAgICAgICAgICAgICAgICBp
ZiAoIW5leHRCb3gpIHsKLSAgICAgICAgICAgICAgICAgICAgSW5saW5lQm94KiBsb2dpY2FsRW5k
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgSW5saW5lQm94KiBsb2dpY2FsRW5kID0gbnVsbHB0
cjsKICAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gYm94
LT5yb290KCkuZ2V0TG9naWNhbEVuZEJveFdpdGhOb2RlKGxvZ2ljYWxFbmQpIDogYm94LT5yb290
KCkuZ2V0TG9naWNhbFN0YXJ0Qm94V2l0aE5vZGUobG9naWNhbEVuZCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJveCA9IGxvZ2ljYWxFbmQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7CkBAIC02MDAsNyArNjAwLDcgQEAgVUNoYXIzMiBW
aXNpYmxlUG9zaXRpb246OmNoYXJhY3RlckFmdGVyKAogTGF5b3V0UmVjdCBWaXNpYmxlUG9zaXRp
b246OmxvY2FsQ2FyZXRSZWN0KFJlbmRlck9iamVjdComIHJlbmRlcmVyKSBjb25zdAogewogICAg
IGlmIChtX2RlZXBQb3NpdGlvbi5pc051bGwoKSkgewotICAgICAgICByZW5kZXJlciA9IDA7Cisg
ICAgICAgIHJlbmRlcmVyID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKICAg
ICB9CiAgICAgTm9kZSogbm9kZSA9IG1fZGVlcFBvc2l0aW9uLmFuY2hvck5vZGUoKTsKQEAgLTcx
NCw3ICs3MTQsNyBAQCBib29sIHNldEVuZChSYW5nZSAqciwgY29uc3QgVmlzaWJsZVBvc2l0CiBF
bGVtZW50KiBlbmNsb3NpbmdCbG9ja0Zsb3dFbGVtZW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
dmlzaWJsZVBvc2l0aW9uKQogewogICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVy
biBkZXByZWNhdGVkRW5jbG9zaW5nQmxvY2tGbG93RWxlbWVudCh2aXNpYmxlUG9zaXRpb24uZGVl
cEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHJldmlzaW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDExICsx
MzMsMTMgQEAgcHJpdmF0ZToKICAgICBjb25zdCBWZWN0b3I8SW5saW5lQm94Kj4mIGNvbGxlY3RC
b3hlcyhjb25zdCBSb290SW5saW5lQm94Kik7CiAgICAgaW50IGJveEluZGV4SW5MZWF2ZXMoY29u
c3QgSW5saW5lVGV4dEJveCopIGNvbnN0OwogCi0gICAgY29uc3QgUm9vdElubGluZUJveCogbV9y
b290SW5saW5lQm94OworICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIG1fcm9vdElubGluZUJveCB7
IG51bGxwdHIgfTsKICAgICBWZWN0b3I8SW5saW5lQm94Kj4gbV9sZWFmQm94ZXM7CiB9OwogCi1D
YWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVhZkJveGVzOjpDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVh
ZkJveGVzKCkgOiBtX3Jvb3RJbmxpbmVCb3goMCkgeyB9OworQ2FjaGVkTG9naWNhbGx5T3JkZXJl
ZExlYWZCb3hlczo6Q2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlcygpCit7Cit9CiAKIGNv
bnN0IElubGluZUJveCogQ2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlczo6cHJldmlvdXNU
ZXh0T3JMaW5lQnJlYWtCb3goY29uc3QgUm9vdElubGluZUJveCogcm9vdCwgY29uc3QgSW5saW5l
VGV4dEJveCogYm94KQogewpAQCAtMzQ2LDkgKzM0OCw5IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRp
b24gdmlzdWFsV29yZFBvc2l0aW8KICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwog
CiAgICAgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5n
QmxvY2sodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwotICAgIElubGluZUJveCog
cHJldmlvdXNseVZpc2l0ZWRCb3ggPSAwOworICAgIElubGluZUJveCogcHJldmlvdXNseVZpc2l0
ZWRCb3ggPSBudWxscHRyOwogICAgIFZpc2libGVQb3NpdGlvbiBjdXJyZW50ID0gdmlzaWJsZVBv
c2l0aW9uOwotICAgIFRleHRCcmVha0l0ZXJhdG9yKiBpdGVyID0gMDsKKyAgICBUZXh0QnJlYWtJ
dGVyYXRvciogaXRlciA9IG51bGxwdHI7CiAKICAgICBDYWNoZWRMb2dpY2FsbHlPcmRlcmVkTGVh
ZkJveGVzIGxlYWZCb3hlczsKICAgICBWZWN0b3I8VUNoYXIsIDEwMjQ+IHN0cmluZzsKQEAgLTk1
Nyw3ICs5NTksNyBAQCBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNMaW5lUG9zaXRpb24oY29uCiAg
ICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogCi0g
ICAgUm9vdElubGluZUJveCogcm9vdCA9IDA7CisgICAgUm9vdElubGluZUJveCogcm9vdCA9IG51
bGxwdHI7CiAgICAgSW5saW5lQm94KiBib3g7CiAgICAgaW50IGlnbm9yZWRDYXJldE9mZnNldDsK
ICAgICB2aXNpYmxlUG9zaXRpb24uZ2V0SW5saW5lQm94QW5kT2Zmc2V0KGJveCwgaWdub3JlZENh
cmV0T2Zmc2V0KTsKQEAgLTk2Niw3ICs5NjgsNyBAQCBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNM
aW5lUG9zaXRpb24oY29uCiAgICAgICAgIC8vIFdlIHdhbnQgdG8gc2tpcCB6ZXJvIGhlaWdodCBi
b3hlcy4KICAgICAgICAgLy8gVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2FzZSBpdCBpcyBhIFRyYWls
aW5nRmxvYXRzUm9vdElubGluZUJveC4KICAgICAgICAgaWYgKCFyb290IHx8ICFyb290LT5sb2dp
Y2FsSGVpZ2h0KCkgfHwgIXJvb3QtPmZpcnN0TGVhZkNoaWxkKCkpCi0gICAgICAgICAgICByb290
ID0gMDsKKyAgICAgICAgICAgIHJvb3QgPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmICghcm9v
dCkgewpAQCAtMTAxMiw3ICsxMDE0LDcgQEAgVmlzaWJsZVBvc2l0aW9uIG5leHRMaW5lUG9zaXRp
b24oY29uc3QgVgogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24oKTsKIAotICAgIFJvb3RJbmxpbmVCb3gqIHJvb3QgPSAwOworICAgIFJvb3RJbmxpbmVC
b3gqIHJvb3QgPSBudWxscHRyOwogICAgIElubGluZUJveCogYm94OwogICAgIGludCBpZ25vcmVk
Q2FyZXRPZmZzZXQ7CiAgICAgdmlzaWJsZVBvc2l0aW9uLmdldElubGluZUJveEFuZE9mZnNldChi
b3gsIGlnbm9yZWRDYXJldE9mZnNldCk7CkBAIC0xMDIxLDcgKzEwMjMsNyBAQCBWaXNpYmxlUG9z
aXRpb24gbmV4dExpbmVQb3NpdGlvbihjb25zdCBWCiAgICAgICAgIC8vIFdlIHdhbnQgdG8gc2tp
cCB6ZXJvIGhlaWdodCBib3hlcy4KICAgICAgICAgLy8gVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2Fz
ZSBpdCBpcyBhIFRyYWlsaW5nRmxvYXRzUm9vdElubGluZUJveC4KICAgICAgICAgaWYgKCFyb290
IHx8ICFyb290LT5sb2dpY2FsSGVpZ2h0KCkgfHwgIXJvb3QtPmZpcnN0TGVhZkNoaWxkKCkpCi0g
ICAgICAgICAgICByb290ID0gMDsKKyAgICAgICAgICAgIHJvb3QgPSBudWxscHRyOwogICAgIH0K
IAogICAgIGlmICghcm9vdCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGlu
Zy5jcHAJKHJldmlzaW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVk
aXRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjMsNyArNjIzLDcgQEAgTm9kZSogZW5jbG9z
aW5nTm9kZU9mVHlwZShjb25zdCBQb3NpdGlvbgogCiBOb2RlKiBoaWdoZXN0RW5jbG9zaW5nTm9k
ZU9mVHlwZShjb25zdCBQb3NpdGlvbiYgcCwgYm9vbCAoKm5vZGVJc09mVHlwZSkoY29uc3QgTm9k
ZSopLCBFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSwgTm9kZSogc3RheVdpdGhpbikK
IHsKLSAgICBOb2RlKiBoaWdoZXN0ID0gMDsKKyAgICBOb2RlKiBoaWdoZXN0ID0gbnVsbHB0cjsK
ICAgICBOb2RlKiByb290ID0gcnVsZSA9PSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSA/IGhp
Z2hlc3RFZGl0YWJsZVJvb3QocCkgOiAwOwogICAgIGZvciAoTm9kZSogbiA9IHAuY29udGFpbmVy
Tm9kZSgpOyBuICYmIG4gIT0gc3RheVdpdGhpbjsgbiA9IG4tPnBhcmVudE5vZGUoKSkgewogICAg
ICAgICBpZiAocm9vdCAmJiAhbi0+aGFzRWRpdGFibGVTdHlsZSgpKQpAQCAtNjUzLDcgKzY1Myw3
IEBAIHN0YXRpYyBib29sIGhhc0FSZW5kZXJlZERlc2NlbmRhbnQoTm9kZSoKIAogTm9kZSogaGln
aGVzdE5vZGVUb1JlbW92ZUluUHJ1bmluZyhOb2RlKiBub2RlKQogewotICAgIE5vZGUqIHByZXZp
b3VzTm9kZSA9IDA7CisgICAgTm9kZSogcHJldmlvdXNOb2RlID0gbnVsbHB0cjsKICAgICBOb2Rl
KiByb290RWRpdGFibGVFbGVtZW50ID0gbm9kZSA/IG5vZGUtPnJvb3RFZGl0YWJsZUVsZW1lbnQo
KSA6IDA7CiAgICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKICAg
ICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCShyZXZpc2lvbiAxOTE2NTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDcgKzU3LDcgQEAgTm9kZSogaGlnaGVzdEFuY2VzdG9yKE5vZGUqKTsKIE5vZGUqIGhpZ2hl
c3RFZGl0YWJsZVJvb3QoY29uc3QgUG9zaXRpb24mLCBFZGl0YWJsZVR5cGUgPSBDb250ZW50SXNF
ZGl0YWJsZSk7CiAKIE5vZGUqIGhpZ2hlc3RFbmNsb3NpbmdOb2RlT2ZUeXBlKGNvbnN0IFBvc2l0
aW9uJiwgYm9vbCAoKm5vZGVJc09mVHlwZSkoY29uc3QgTm9kZSopLAotICAgIEVkaXRpbmdCb3Vu
ZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5LCBOb2RlKiBzdGF5
V2l0aGluID0gMCk7CisgICAgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fubm90Q3Jv
c3NFZGl0aW5nQm91bmRhcnksIE5vZGUqIHN0YXlXaXRoaW4gPSBudWxscHRyKTsKIE5vZGUqIGhp
Z2hlc3ROb2RlVG9SZW1vdmVJblBydW5pbmcoTm9kZSopOwogTm9kZSogbG93ZXN0RWRpdGFibGVB
bmNlc3RvcihOb2RlKik7CiAKQEAgLTE0Myw5ICsxNDMsOSBAQCBQb3NpdGlvbiBuZXh0VmlzdWFs
bHlEaXN0aW5jdENhbmRpZGF0ZShjCiBQb3NpdGlvbiBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RD
YW5kaWRhdGUoY29uc3QgUG9zaXRpb24mKTsKIAogUG9zaXRpb24gcG9zaXRpb25PdXRzaWRlVGFi
U3Bhbihjb25zdCBQb3NpdGlvbiYpOwotUG9zaXRpb24gcG9zaXRpb25CZWZvcmVDb250YWluaW5n
U3BlY2lhbEVsZW1lbnQoY29uc3QgUG9zaXRpb24mLCBOb2RlKiogY29udGFpbmluZ1NwZWNpYWxF
bGVtZW50ID0gMCk7Ci1Qb3NpdGlvbiBwb3NpdGlvbkFmdGVyQ29udGFpbmluZ1NwZWNpYWxFbGVt
ZW50KGNvbnN0IFBvc2l0aW9uJiwgTm9kZSoqIGNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudCA9IDAp
OwotUG9zaXRpb24gcG9zaXRpb25PdXRzaWRlQ29udGFpbmluZ1NwZWNpYWxFbGVtZW50KGNvbnN0
IFBvc2l0aW9uJiwgTm9kZSoqIGNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudCA9IDApOworUG9zaXRp
b24gcG9zaXRpb25CZWZvcmVDb250YWluaW5nU3BlY2lhbEVsZW1lbnQoY29uc3QgUG9zaXRpb24m
LCBOb2RlKiogY29udGFpbmluZ1NwZWNpYWxFbGVtZW50ID0gbnVsbHB0cik7CitQb3NpdGlvbiBw
b3NpdGlvbkFmdGVyQ29udGFpbmluZ1NwZWNpYWxFbGVtZW50KGNvbnN0IFBvc2l0aW9uJiwgTm9k
ZSoqIGNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudCA9IG51bGxwdHIpOworUG9zaXRpb24gcG9zaXRp
b25PdXRzaWRlQ29udGFpbmluZ1NwZWNpYWxFbGVtZW50KGNvbnN0IFBvc2l0aW9uJiwgTm9kZSoq
IGNvbnRhaW5pbmdTcGVjaWFsRWxlbWVudCA9IG51bGxwdHIpOwogCiBpbmxpbmUgUG9zaXRpb24g
Zmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKE5vZGUqIG5vZGUpCiB7CkBAIC0yMTUsNyArMjE1
LDcgQEAgUmVmPEhUTUxFbGVtZW50PiBjcmVhdGVIVE1MRWxlbWVudChEb2N1bQogUmVmPEhUTUxF
bGVtZW50PiBjcmVhdGVIVE1MRWxlbWVudChEb2N1bWVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYp
OwogCiBIVE1MRWxlbWVudCogZW5jbG9zaW5nTGlzdChOb2RlKik7Ci1IVE1MRWxlbWVudCogb3V0
ZXJtb3N0RW5jbG9zaW5nTGlzdChOb2RlKiwgTm9kZSogcm9vdExpc3QgPSAwKTsKK0hUTUxFbGVt
ZW50KiBvdXRlcm1vc3RFbmNsb3NpbmdMaXN0KE5vZGUqLCBOb2RlKiByb290TGlzdCA9IG51bGxw
dHIpOwogTm9kZSogZW5jbG9zaW5nTGlzdENoaWxkKE5vZGUqKTsKIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkocmV2aXNpb24gMTkxNjUyKQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTgsNyArMTE4LDcgQEAgY2xhc3MgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IgZmluYWwgOiBwdQog
cHVibGljOgogICAgIGVudW0gUmFuZ2VGdWxseVNlbGVjdHNOb2RlIHsgRG9lc0Z1bGx5U2VsZWN0
Tm9kZSwgRG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSB9OwogCi0gICAgU3R5bGVkTWFya3VwQWNjdW11
bGF0b3IoVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBYnNvbHV0ZVVSTHMsIEVBbm5vdGF0ZUZvcklu
dGVyY2hhbmdlLCBjb25zdCBSYW5nZSosIGJvb2wgbmVlZHNQb3NpdGlvblN0eWxlQ29udmVyc2lv
biwgTm9kZSogaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZCA9IDApOworICAgIFN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yKFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQWJzb2x1dGVVUkxzLCBFQW5ub3Rh
dGVGb3JJbnRlcmNoYW5nZSwgY29uc3QgUmFuZ2UqLCBib29sIG5lZWRzUG9zaXRpb25TdHlsZUNv
bnZlcnNpb24sIE5vZGUqIGhpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgPSBudWxscHRyKTsKIAog
ICAgIE5vZGUqIHNlcmlhbGl6ZU5vZGVzKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogcGFzdEVuZCk7
CiAgICAgdm9pZCB3cmFwV2l0aE5vZGUoTm9kZSYsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5l
cyA9IGZhbHNlLCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgPSBEb2VzRnVsbHlTZWxlY3ROb2RlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAkocmV2aXNpb24gMTkxNjUyKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBA
QCB2b2lkIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudChDb250YWluCiB2b2lkIHJlcGxhY2VD
aGlsZHJlbldpdGhUZXh0KENvbnRhaW5lck5vZGUmLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CiAKIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UmLCBWZWN0b3I8Tm9kZSo+
KiA9IG51bGxwdHIsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlID0gRG9Ob3RBbm5vdGF0ZUZvcklu
dGVyY2hhbmdlLCBib29sIGNvbnZlcnRCbG9ja3NUb0lubGluZXMgPSBmYWxzZSwgRUFic29sdXRl
VVJMcyA9IERvTm90UmVzb2x2ZVVSTHMpOwotU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBOb2Rl
JiwgRUNoaWxkcmVuT25seSA9IEluY2x1ZGVOb2RlLCBWZWN0b3I8Tm9kZSo+KiA9IG51bGxwdHIs
IEVBYnNvbHV0ZVVSTHMgPSBEb05vdFJlc29sdmVVUkxzLCBWZWN0b3I8UXVhbGlmaWVkTmFtZT4q
IHRhZ05hbWVzVG9Ta2lwID0gMCwgRUZyYWdtZW50U2VyaWFsaXphdGlvbiA9IEhUTUxGcmFnbWVu
dFNlcmlhbGl6YXRpb24pOworU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBOb2RlJiwgRUNoaWxk
cmVuT25seSA9IEluY2x1ZGVOb2RlLCBWZWN0b3I8Tm9kZSo+KiA9IG51bGxwdHIsIEVBYnNvbHV0
ZVVSTHMgPSBEb05vdFJlc29sdmVVUkxzLCBWZWN0b3I8UXVhbGlmaWVkTmFtZT4qIHRhZ05hbWVz
VG9Ta2lwID0gbnVsbHB0ciwgRUZyYWdtZW50U2VyaWFsaXphdGlvbiA9IEhUTUxGcmFnbWVudFNl
cmlhbGl6YXRpb24pOwogCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRlRnVsbE1hcmt1cChj
b25zdCBOb2RlJik7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRlRnVsbE1hcmt1cChjb25z
dCBSYW5nZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQko
cmV2aXNpb24gMTkxNjUyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQgogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3VmFsdWUgPSBOVUxMOworICAgIGNvbnN0IGNo
YXIgKm5ld1ZhbHVlID0gbnVsbHB0cjsKICAgICBFVGV4dEFsaWduIHRleHRBbGlnbiA9ICp2YWx1
ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAgICAgICBjYXNlIFRBU1RBUlQ6CkBAIC0y
MDQsNyArMjA0LDcgQEAgY29uc3QgRm9udCogRWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKGJvbwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGNvbnN0IEZvbnQqIGZvbnQgPSAw
OworICAgIGNvbnN0IEZvbnQqIGZvbnQgPSBudWxscHRyOwogICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCk7CiAgICAgaWYgKE5v
ZGUqIHN0YXJ0Tm9kZSA9IGFkanVzdGVkU2VsZWN0aW9uU3RhcnRGb3JTdHlsZUNvbXB1dGF0aW9u
KG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpLmRlcHJlY2F0ZWROb2RlKCkpIHsKICAg
ICAgICAgTm9kZSogcGFzdEVuZCA9IHJhbmdlLT5wYXN0TGFzdE5vZGUoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIubW0JKHJldmlzaW9uIDE5MTY1MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcs
MTAgKzQ3LDcgQEAgdWludDY0X3QgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpBbAogCiBO
U1RleHRBbHRlcm5hdGl2ZXMqIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlcjo6QWxlcm5hdGl2
ZVRleHRDb250ZXh0Q29udHJvbGxlcjo6YWx0ZXJuYXRpdmVzRm9yQ29udGV4dCh1aW50NjRfdCBj
b250ZXh0KQogewotICAgIEhhc2hNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBpdHIgPSBtX2FsdGVy
bmF0aXZlc09iamVjdE1hcC5maW5kKGNvbnRleHQpOwotICAgIGlmIChpdHIgPT0gbV9hbHRlcm5h
dGl2ZXNPYmplY3RNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBp
dHItPnZhbHVlLmdldCgpOworICAgIHJldHVybiBtX2FsdGVybmF0aXZlc09iamVjdE1hcC5nZXQo
Y29udGV4dCkuZ2V0KCk7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOjpB
bGVybmF0aXZlVGV4dENvbnRleHRDb250cm9sbGVyOjpyZW1vdmVBbHRlcm5hdGl2ZXNGb3JDb250
ZXh0KHVpbnQ2NF90IGNvbnRleHQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRp
dG9yTWFjLm1tCShyZXZpc2lvbiAxOTE2NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQCBjb25zdCBG
b250KiBFZGl0b3I6OmZvbnRGb3JTZWxlY3Rpb24oYm9vCiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogCi0gICAgY29uc3QgRm9udCogZm9udCA9IDA7CisgICAgY29uc3QgRm9udCogZm9u
dCA9IG51bGxwdHI7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IG1fZnJhbWUuc2VsZWN0aW9u
KCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBOb2RlKiBzdGFydE5vZGUgPSBhZGp1c3RlZFNl
bGVjdGlvblN0YXJ0Rm9yU3R5bGVDb21wdXRhdGlvbihtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpKS5kZXByZWNhdGVkTm9kZSgpOwogICAgIGlmIChyYW5nZSAmJiBzdGFydE5vZGUpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>