<?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>25472</bug_id>
          
          <creation_ts>2009-04-29 17:13:21 -0700</creation_ts>
          <short_desc>Replace all uses of m_offset with Position::deprecatedEditingOffset()</short_desc>
          <delta_ts>2009-04-29 18:10:08 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>25056</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>119402</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-29 17:13:21 -0700</bug_when>
    <thetext>Replace all uses of m_offset with Position::deprecatedEditingOffset()

Simple search replace, per Darin&apos;s suggestion.  See attached patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119405</commentid>
    <comment_count>1</comment_count>
      <attachid>29900</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-29 17:24:59 -0700</bug_when>
    <thetext>Created attachment 29900
Make m_offset private and change all callers to use deprecatedEditingOffset

 31 files changed, 278 insertions(+), 150 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119406</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-29 17:25:46 -0700</bug_when>
    <thetext>I will follow up this patch with a patch which replaces various deprecatedEditingOffset() calls with calls to offsetInContainer() or other functions which don&apos;t use the offset directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119407</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-29 17:26:48 -0700</bug_when>
    <thetext>This patch is large, but it&apos;s *all* search replace, except for the one change in InsertParagraphSeparatorCommand::doApply which I highlight in the changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119417</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-04-29 18:10:08 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/dom/Position.cpp
	M	WebCore/dom/Position.h
	M	WebCore/dom/PositionIterator.h
	M	WebCore/dom/Range.cpp
	M	WebCore/editing/ApplyStyleCommand.cpp
	M	WebCore/editing/BreakBlockquoteCommand.cpp
	M	WebCore/editing/CompositeEditCommand.cpp
	M	WebCore/editing/DeleteSelectionCommand.cpp
	M	WebCore/editing/Editor.cpp
	M	WebCore/editing/InsertLineBreakCommand.cpp
	M	WebCore/editing/InsertParagraphSeparatorCommand.cpp
	M	WebCore/editing/InsertTextCommand.cpp
	M	WebCore/editing/MoveSelectionCommand.cpp
	M	WebCore/editing/ReplaceSelectionCommand.cpp
	M	WebCore/editing/SelectionController.cpp
	M	WebCore/editing/TextIterator.cpp
	M	WebCore/editing/TypingCommand.cpp
	M	WebCore/editing/VisiblePosition.cpp
	M	WebCore/editing/VisibleSelection.cpp
	M	WebCore/editing/htmlediting.cpp
	M	WebCore/editing/visible_units.cpp
	M	WebCore/page/AccessibilityObject.cpp
	M	WebCore/page/AccessibilityRenderObject.cpp
	M	WebCore/page/DOMSelection.cpp
	M	WebCore/page/EventHandler.cpp
	M	WebCore/page/Frame.cpp
	M	WebCore/page/mac/AccessibilityObjectWrapper.mm
	M	WebCore/rendering/RenderTextControl.cpp
	M	WebCore/rendering/RenderTreeAsText.cpp
	M	WebKit/mac/WebView/WebFrame.mm
Committed r43035
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29900</attachid>
            <date>2009-04-29 17:24:59 -0700</date>
            <delta_ts>2009-04-29 18:04:30 -0700</delta_ts>
            <desc>Make m_offset private and change all callers to use deprecatedEditingOffset</desc>
            <filename>Make-m_offset-private-and-change-all-callers-to-use-deprecatedEditingOffset.patch</filename>
            <type>text/plain</type>
            <size>71715</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">YmU5ZDVmNjhjOWNlNTFiNGVjMjM0MTFjZWNlYWQzZjQxMjgzMzE5MgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNjkzZThjLi41MzFlZmIw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDEyNyBAQAogMjAwOS0wNC0yOSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5v
cmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSBtX29mZnNldCBwcml2YXRlIGFuZCBjaGFuZ2UgYWxsIGNhbGxlcnMgdG8gdXNlIGRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNTQ3MgorCisgICAgICAgIFBlciBEYXJpbidzIHN1Z2dlc3Rpb24sIHRoaXMg
d2FzIGp1c3QgYSBzaW1wbGUgc2VhcmNoIHJlcGxhY2UKKyAgICAgICAgb2YgLm1fb2Zmc2V0IHdp
dGggLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkuCisKKyAgICAgICAgVGhlcmUgd2FzIG9uZSBj
aGFuZ2UgaW4gSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSB0byB1c2UK
KyAgICAgICAgUG9zaXRpb246Om1vdmVUb09mZnNldCgwKSBpbnN0ZWFkIG9mIC5tX29mZnNldCA9
IDA7CisKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9z
aXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBv
c2l0aW9uOjpsZWFkaW5nV2hpdGVzcGFjZVBvc2l0aW9uKToKKyAgICAgICAgKiBkb20vUG9zaXRp
b24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpkZXByZWNhdGVkRWRpdGluZ09mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6bW92ZVRvT2Zmc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGRvbS9Qb3NpdGlvbkl0ZXJhdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkl0ZXJhdG9yOjpQb3NpdGlvbkl0ZXJhdG9yKToK
KyAgICAgICAgKiBkb20vUmFuZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKToKKyAg
ICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseVJlbGF0aXZlRm9udFN0eWxlQ2hhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlVG9SYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6Om5vZGVGdWxseVNlbGVjdGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpub2RlRnVsbHlVbnNlbGVj
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdFRleHRBdFN0
YXJ0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnNwbGl0
VGV4dEF0RW5kSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6
OnNwbGl0VGV4dEVsZW1lbnRBdFN0YXJ0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlTdHlsZUNvbW1hbmQ6OnNwbGl0VGV4dEVsZW1lbnRBdEVuZElmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjptZXJnZVN0YXJ0V2l0aFByZXZpb3VzSWZJZGVu
dGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6Om1lcmdlRW5kV2l0
aE5leHRJZklkZW50aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6
am9pbkNoaWxkVGV4dE5vZGVzKToKKyAgICAgICAgKiBlZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtCbG9ja3F1b3RlQ29tbWFuZDo6ZG9B
cHBseSk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6aW5zZXJ0Tm9kZUF0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpwb3NpdGlvbk91dHNpZGVUYWJTcGFu
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZWJhbGFuY2VXaGl0
ZXNwYWNlQXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnByZXBh
cmVXaGl0ZXNwYWNlQXRQb3NpdGlvbkZvclNwbGl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBv
c2l0ZUVkaXRDb21tYW5kOjpkZWxldGVJbnNpZ25pZmljYW50VGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmJyZWFrT3V0T2ZFbXB0eU1haWxCbG9ja3F1b3Rl
ZFBhcmFncmFwaCk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZVBvc2l0aW9uRm9yTm9kZVJlbW92YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6dXBkYXRlUG9zaXRpb25Gb3JUZXh0UmVtb3ZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVHZW5lcmFsRGVsZXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmZpeHVwV2hpdGVzcGFjZSk6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpzZXRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFkdmFuY2VUb05l
eHRNaXNzcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmdldENvbXBvc2l0aW9u
U2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0TGluZUJyZWFrQ29tbWFuZDo6ZG9BcHBseSk6Cisg
ICAgICAgICogZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBwbHkp
OgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zZXJ0VGV4dENvbW1hbmQ6OnBlcmZvcm1Ucml2aWFsUmVwbGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNlcnRUZXh0Q29tbWFuZDo6aW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zZXJ0VGV4dENvbW1hbmQ6Omluc2VydFRhYik6CisgICAgICAgICogZWRpdGluZy9Nb3ZlU2Vs
ZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3ZlU2VsZWN0aW9uQ29tbWFu
ZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6
CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OmRlYnVnUmVuZGVyZXIpOgorICAgICAgICAqIGVk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6
cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgpOgorICAgICAgICAqIGVkaXRpbmcvVHlwaW5nQ29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVz
c2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQ
cmVzc2VkKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb246OmNoYXJhY3RlckFmdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpc2libGVQb3NpdGlvbjo6ZGVidWdQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjptYWtlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6c2V0U3RhcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0RW5kKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVNlbGVjdGlvbjo6dG9Ob3JtYWxpemVkUmFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6bWFrZVNlYXJjaFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZp
c2libGVTZWxlY3Rpb246OmRlYnVnUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJs
ZVNlbGVjdGlvbjo6c2hvd1RyZWVGb3JUaGlzKToKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXBhcmVQb3NpdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6cmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KToKKyAgICAgICAgKiBlZGl0aW5nL3Zp
c2libGVfdW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNCb3VuZGFyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpuZXh0Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRQ
b3NpdGlvbkZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPZkxpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5kUG9zaXRpb25Gb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRM
aW5lUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRPZlBhcmFncmFwaCk6CisgICAg
ICAgIChXZWJDb3JlOjplbmRPZlBhcmFncmFwaCk6CisgICAgICAgIChXZWJDb3JlOjpsb2dpY2Fs
U3RhcnRQb3NpdGlvbkZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6bG9naWNhbEVuZFBvc2l0
aW9uRm9yTGluZSk6CisgICAgICAgICogcGFnZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnVwZGF0ZUFYTGluZVN0YXJ0Rm9yVmlzaWJsZVBvc2l0aW9uKToKKyAg
ICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aW5kZXhGb3JWaXNpYmxlUG9zaXRpb24p
OgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVNlbGVjdGlvbjo6YW5jaG9yT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlv
bjo6Zm9jdXNPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpiYXNlT2Zm
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6ZXh0ZW50T2Zmc2V0KToKKyAg
ICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZWxlY3Rpb25MYXlvdXRDaGFu
Z2VkKToKKyAgICAgICAgKiBwYWdlL21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToK
KyAgICAgICAgKHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24pOgorICAgICAgICAodmlzaWJs
ZVBvc2l0aW9uRm9yVGV4dE1hcmtlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjppbmRleEZv
clZpc2libGVQb3NpdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTZWxlY3Rpb24pOgorCisyMDA5LTA0LTI5ICBF
cmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKwogICAgICAgICBObyByZXZpZXcsIHJvbGxp
bmcgb3V0IGEgcGF0Y2guCiAKICAgICAgICAgUmV2ZXJ0IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzQzMDE5CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggNDBiZjA2My4uZDg1YjZlNSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCisrKyBiL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNw
cApAQCAtNzY1LDExICs3NjUsMTEgQEAgYm9vbCBQb3NpdGlvbjo6cmVuZGVyc0luRGlmZmVyZW50
UG9zaXRpb24oY29uc3QgUG9zaXRpb24gJnBvcykgY29uc3QKICAgICAgICAgaWYgKG5vZGUoKS0+
aGFzVGFnTmFtZShiclRhZykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAg
aWYgKG1fb2Zmc2V0ID09IHBvcy5tX29mZnNldCkKKyAgICAgICAgaWYgKG1fb2Zmc2V0ID09IHBv
cy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgCiAgICAgICAgIGlmICghbm9kZSgpLT5pc1RleHROb2RlKCkgJiYgIXBvcy5u
b2RlKCktPmlzVGV4dE5vZGUoKSkgewotICAgICAgICAgICAgaWYgKG1fb2Zmc2V0ICE9IHBvcy5t
X29mZnNldCkKKyAgICAgICAgICAgIGlmIChtX29mZnNldCAhPSBwb3MuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAg
IH0KQEAgLTg0Myw3ICs4NDMsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6bGVhZGluZ1doaXRlc3Bh
Y2VQb3NpdGlvbihFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgY29uc2lkZXJObwogICAgIFBvc2l0
aW9uIHByZXYgPSBwcmV2aW91c0NoYXJhY3RlclBvc2l0aW9uKGFmZmluaXR5KTsKICAgICBpZiAo
cHJldiAhPSAqdGhpcyAmJiBwcmV2Lm5vZGUoKS0+aW5TYW1lQ29udGFpbmluZ0Jsb2NrRmxvd0Vs
ZW1lbnQobm9kZSgpKSAmJiBwcmV2Lm5vZGUoKS0+aXNUZXh0Tm9kZSgpKSB7CiAgICAgICAgIFN0
cmluZyBzdHJpbmcgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KHByZXYubm9kZSgpKS0+ZGF0YSgpOwot
ICAgICAgICBVQ2hhciBjID0gc3RyaW5nW3ByZXYubV9vZmZzZXRdOworICAgICAgICBVQ2hhciBj
ID0gc3RyaW5nW3ByZXYuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKV07CiAgICAgICAgIGlmIChj
b25zaWRlck5vbkNvbGxhcHNpYmxlV2hpdGVzcGFjZSA/IChpc1NwYWNlT3JOZXdsaW5lKGMpIHx8
IGMgPT0gbm9CcmVha1NwYWNlKSA6IGlzQ29sbGFwc2libGVXaGl0ZXNwYWNlKGMpKQogICAgICAg
ICAgICAgaWYgKGlzRWRpdGFibGVQb3NpdGlvbihwcmV2KSkKICAgICAgICAgICAgICAgICByZXR1
cm4gcHJldjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmggYi9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5oCmluZGV4IDU4YjMzN2EuLjYwMmYyMWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uLmgKKysrIGIvV2ViQ29yZS9kb20vUG9zaXRpb24uaApAQCAtNzEsNiArNzEs
MTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vZmZzZXQ7CiAgICAgfQogCisgICAgLy8g
TmV3IGNvZGUgc2hvdWxkIG5vdCB1c2UgdGhpcyBmdW5jdGlvbi4KKyAgICBpbnQgZGVwcmVjYXRl
ZEVkaXRpbmdPZmZzZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb2Zmc2V0Owor
ICAgIH0KKwogICAgIC8vIFRoZXNlIGFyZSBjb252ZW5pZW5jZSBtZXRob2RzIHdoaWNoIGFyZSBz
bWFydCBhYm91dCB3aGV0aGVyIHRoZSBwb3NpdGlvbiBpcyBuZWlnaGJvciBhbmNob3JlZCBvciBw
YXJlbnQgYW5jaG9yZWQKICAgICBOb2RlKiBjb21wdXRlTm9kZUJlZm9yZVBvc2l0aW9uKCkgY29u
c3Q7CiAgICAgTm9kZSogY29tcHV0ZU5vZGVBZnRlclBvc2l0aW9uKCkgY29uc3Q7CkBAIC05MCw2
ICs5Niw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdm9pZCBtb3ZlVG9PZmZzZXQoaW50IG9mZnNl
dCkKICAgICB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBldmVudHVhbGx5IEFTU0VS
VChhbmNob3JUeXBlKCkgPT0gUG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKICAgICAgICAgbV9v
ZmZzZXQgPSBvZmZzZXQ7CiAgICAgfQogCkBAIC0xNTgsMTggKzE2NSwxNyBAQCBwcml2YXRlOgog
ICAgIFBvc2l0aW9uIG5leHRDaGFyYWN0ZXJQb3NpdGlvbihFQWZmaW5pdHkpIGNvbnN0OwogCiAg
ICAgUmVmUHRyPE5vZGU+IG1fYW5jaG9yTm9kZTsKLXB1YmxpYzoKICAgICAvLyBtX29mZnNldCBj
YW4gYmUgdGhlIG9mZnNldCBpbnNpZGUgbV9hbmNob3JOb2RlLCBvciBpZiBlZGl0aW5nSWdub3Jl
c0NvbnRlbnQobV9hbmNob3JOb2RlKQogICAgIC8vIHJldHVybnMgdHJ1ZSwgdGhlbiBvdGhlciBw
bGFjZXMgaW4gZWRpdGluZyB3aWxsIHRyZWF0IG1fb2Zmc2V0ID09IDAgYXMgImJlZm9yZSB0aGUg
YW5jaG9yIgogICAgIC8vIGFuZCBtX29mZnNldCA+IDAgYXMgImFmdGVyIHRoZSBhbmNob3Igbm9k
ZSIuICBTZWUgcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50IGZvciBtb3JlIGluZm8uCi0gICAgaW50
IG1fb2Zmc2V0OyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWFkZSBwcml2YXRlLgorICAgIGlu
dCBtX29mZnNldDsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9zaXRpb24m
IGEsIGNvbnN0IFBvc2l0aW9uJiBiKQogewogICAgIC8vIEZJWE1FOiBJbiA8ZGl2PjxpbWc+PC9k
aXY+IFtkaXYsIDBdICE9IFtpbWcsIDBdIGV2ZW4gdGhvdWdoIG1vc3Qgb2YgdGhlCiAgICAgLy8g
ZWRpdGluZyBjb2RlIHdpbGwgdHJlYXQgdGhlbSBhcyBpZGVudGljYWwuCi0gICAgcmV0dXJuIGEu
YW5jaG9yTm9kZSgpID09IGIuYW5jaG9yTm9kZSgpICYmIGEubV9vZmZzZXQgPT0gYi5tX29mZnNl
dDsKKyAgICByZXR1cm4gYS5hbmNob3JOb2RlKCkgPT0gYi5hbmNob3JOb2RlKCkgJiYgYS5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpID09IGIuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKIH0K
IAogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUG9zaXRp
b24mIGIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmggYi9XZWJD
b3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9yLmgKaW5kZXggOThhMmNjYi4uOGZiMTgyOSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRvci5oCisrKyBiL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uSXRlcmF0b3IuaApAQCAtNDUsOCArNDUsOCBAQCBwdWJsaWM6CiAKICAgICBQb3NpdGlv
bkl0ZXJhdG9yKGNvbnN0IFBvc2l0aW9uJiBwb3MpCiAgICAgICAgIDogbV9wYXJlbnQocG9zLm5v
ZGUoKSkKLSAgICAgICAgLCBtX2NoaWxkKG1fcGFyZW50LT5jaGlsZE5vZGUocG9zLm1fb2Zmc2V0
KSkKLSAgICAgICAgLCBtX29mZnNldChtX2NoaWxkID8gMCA6IHBvcy5tX29mZnNldCkKKyAgICAg
ICAgLCBtX2NoaWxkKG1fcGFyZW50LT5jaGlsZE5vZGUocG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCkpKQorICAgICAgICAsIG1fb2Zmc2V0KG1fY2hpbGQgPyAwIDogcG9zLmRlcHJlY2F0ZWRF
ZGl0aW5nT2Zmc2V0KCkpCiAgICAgewogICAgIH0KICAgICBvcGVyYXRvciBQb3NpdGlvbigpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvV2ViQ29yZS9kb20vUmFu
Z2UuY3BwCmluZGV4IGI2YzdkZTEuLmIzNjdjYjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Jh
bmdlLmNwcAorKysgYi9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgUGFz
c1JlZlB0cjxSYW5nZT4gUmFuZ2U6OmNyZWF0ZShQYXNzUmVmUHRyPERvY3VtZW50PiBvd25lckRv
Y3VtZW50LCBQYXNzUmVmUHRyPE4KIAogUGFzc1JlZlB0cjxSYW5nZT4gUmFuZ2U6OmNyZWF0ZShQ
YXNzUmVmUHRyPERvY3VtZW50PiBvd25lckRvY3VtZW50LCBjb25zdCBQb3NpdGlvbiYgc3RhcnQs
IGNvbnN0IFBvc2l0aW9uJiBlbmQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSYW5nZShv
d25lckRvY3VtZW50LCBzdGFydC5ub2RlKCksIHN0YXJ0Lm1fb2Zmc2V0LCBlbmQubm9kZSgpLCBl
bmQubV9vZmZzZXQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJhbmdlKG93bmVyRG9jdW1l
bnQsIHN0YXJ0Lm5vZGUoKSwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZW5kLm5v
ZGUoKSwgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpKTsKIH0KIAogUmFuZ2U6On5SYW5n
ZSgpCkBAIC01MjgsNyArNTI4LDcgQEAgc2hvcnQgUmFuZ2U6OmNvbXBhcmVCb3VuZGFyeVBvaW50
cyhOb2RlKiBjb250YWluZXJBLCBpbnQgb2Zmc2V0QSwgTm9kZSogY29udGFpbmUKIAogc2hvcnQg
UmFuZ2U6OmNvbXBhcmVCb3VuZGFyeVBvaW50cyhjb25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUG9z
aXRpb24mIGIpCiB7Ci0gICAgcmV0dXJuIGNvbXBhcmVCb3VuZGFyeVBvaW50cyhhLm5vZGUoKSwg
YS5tX29mZnNldCwgYi5ub2RlKCksIGIubV9vZmZzZXQpOworICAgIHJldHVybiBjb21wYXJlQm91
bmRhcnlQb2ludHMoYS5ub2RlKCksIGEuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgYi5ub2Rl
KCksIGIuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiB9CiAKIGJvb2wgUmFuZ2U6OmJvdW5k
YXJ5UG9pbnRzVmFsaWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAK
aW5kZXggZThlZjkyNS4uY2U1M2NkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwCkBAIC01MjAsNyArNTIwLDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlSZWxh
dGl2ZUZvbnRTdHlsZUNoYW5nZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbgogICAgIAogICAg
IHN0YXJ0ID0gc3RhcnQudXBzdHJlYW0oKTsgLy8gTW92ZSB1cHN0cmVhbSB0byBlbnN1cmUgd2Ug
ZG8gbm90IGFkZCByZWR1bmRhbnQgc3BhbnMuCiAgICAgTm9kZSAqc3RhcnROb2RlID0gc3RhcnQu
bm9kZSgpOwotICAgIGlmIChzdGFydE5vZGUtPmlzVGV4dE5vZGUoKSAmJiBzdGFydC5tX29mZnNl
dCA+PSBjYXJldE1heE9mZnNldChzdGFydE5vZGUpKSAvLyBNb3ZlIG91dCBvZiB0ZXh0IG5vZGUg
aWYgcmFuZ2UgZG9lcyBub3QgaW5jbHVkZSBpdHMgY2hhcmFjdGVycy4KKyAgICBpZiAoc3RhcnRO
b2RlLT5pc1RleHROb2RlKCkgJiYgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+PSBj
YXJldE1heE9mZnNldChzdGFydE5vZGUpKSAvLyBNb3ZlIG91dCBvZiB0ZXh0IG5vZGUgaWYgcmFu
Z2UgZG9lcyBub3QgaW5jbHVkZSBpdHMgY2hhcmFjdGVycy4KICAgICAgICAgc3RhcnROb2RlID0g
c3RhcnROb2RlLT50cmF2ZXJzZU5leHROb2RlKCk7CiAKICAgICAvLyBTdG9yZSBhd2F5IGZvbnQg
c2l6ZSBiZWZvcmUgbWFraW5nIGFueSBjaGFuZ2VzIHRvIHRoZSBkb2N1bWVudC4KQEAgLTg2OCw3
ICs4NjgsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlVG9SYW5n
ZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bAogCiAgICAgYm9vbCByYW5nZUlzRW1w
dHkgPSBmYWxzZTsKIAotICAgIGlmIChzdGFydC5tX29mZnNldCA+PSBjYXJldE1heE9mZnNldChz
dGFydC5ub2RlKCkpKSB7CisgICAgaWYgKHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkg
Pj0gY2FyZXRNYXhPZmZzZXQoc3RhcnQubm9kZSgpKSkgewogICAgICAgICBub2RlID0gbm9kZS0+
dHJhdmVyc2VOZXh0Tm9kZSgpOwogICAgICAgICBQb3NpdGlvbiBuZXdTdGFydCA9IFBvc2l0aW9u
KG5vZGUsIDApOwogICAgICAgICBpZiAoIW5vZGUgfHwgUmFuZ2U6OmNvbXBhcmVCb3VuZGFyeVBv
aW50cyhlbmQsIG5ld1N0YXJ0KSA8IDApCkBAIC04NzgsNyArODc4LDcgQEAgdm9pZCBBcHBseVN0
eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvUmFuZ2UoQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24qIHN0eWwKICAgICBpZiAoIXJhbmdlSXNFbXB0eSkgewogICAgICAgICAvLyBwYXN0RW5k
Tm9kZSBpcyB0aGUgbm9kZSBhZnRlciB0aGUgbGFzdCBmdWxseSBzZWxlY3RlZCBub2RlLgogICAg
ICAgICBOb2RlKiBwYXN0RW5kTm9kZSA9IGVuZC5ub2RlKCk7Ci0gICAgICAgIGlmIChlbmQubV9v
ZmZzZXQgPj0gY2FyZXRNYXhPZmZzZXQoZW5kLm5vZGUoKSkpCisgICAgICAgIGlmIChlbmQuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+PSBjYXJldE1heE9mZnNldChlbmQubm9kZSgpKSkKICAg
ICAgICAgICAgIHBhc3RFbmROb2RlID0gZW5kLm5vZGUoKS0+dHJhdmVyc2VOZXh0U2libGluZygp
OwogICAgICAgICAvLyBGSVhNRTogQ2FsbGVycyBzaG91bGQgcGVyZm9ybSB0aGlzIG9wZXJhdGlv
biBvbiBhIFJhbmdlIHRoYXQgaW5jbHVkZXMgdGhlIGJyCiAgICAgICAgIC8vIGlmIHRoZXkgd2Fu
dCBzdHlsZSBhcHBsaWVkIHRvIHRoZSBlbXB0eSBsaW5lLgpAQCAtMTIzOSwxNCArMTIzOSwxNCBA
QCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJbmxpbmVTdHlsZShQYXNzUmVmUHRyPENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uPgogICAgICAgICAgICAgICAgIGlmIChzLm5vZGUoKSA9
PSBlbGVtKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIGVsZW0gbXVzdCBoYXZlIGJl
ZW4gZnVsbHkgc2VsZWN0ZWQsIGFuZCBpdCBpcyBhdCB0aGUgc3RhcnQKICAgICAgICAgICAgICAg
ICAgICAgLy8gb2YgdGhlIHNlbGVjdGlvbiwgaXQgaXMgY2xlYXIgd2UgY2FuIHNldCB0aGUgbmV3
IHMgb2Zmc2V0IHRvIDAuCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChzLm1fb2Zmc2V0IDw9
IGNhcmV0TWluT2Zmc2V0KHMubm9kZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChz
LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPD0gY2FyZXRNaW5PZmZzZXQocy5ub2RlKCkpKTsK
ICAgICAgICAgICAgICAgICAgICAgcyA9IFBvc2l0aW9uKG5leHQsIDApOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZS5ub2RlKCkgPT0gZWxlbSkgewogICAgICAgICAg
ICAgICAgICAgICAvLyBTaW5jZSBlbGVtIG11c3QgaGF2ZSBiZWVuIGZ1bGx5IHNlbGVjdGVkLCBh
bmQgaXQgaXMgYXQgdGhlIGVuZAogICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGUgc2VsZWN0
aW9uLCBpdCBpcyBjbGVhciB3ZSBjYW4gc2V0IHRoZSBuZXcgZSBvZmZzZXQgdG8KICAgICAgICAg
ICAgICAgICAgICAgLy8gdGhlIG1heCByYW5nZSBvZmZzZXQgb2YgcHJldi4KLSAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGUubV9vZmZzZXQgPj0gbWF4UmFuZ2VPZmZzZXQoZS5ub2RlKCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGUuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+
PSBtYXhSYW5nZU9mZnNldChlLm5vZGUoKSkpOwogICAgICAgICAgICAgICAgICAgICBlID0gUG9z
aXRpb24ocHJldiwgbWF4UmFuZ2VPZmZzZXQocHJldikpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KQEAgLTEyNjcsNyArMTI2Nyw3IEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6
Om5vZGVGdWxseVNlbGVjdGVkKE5vZGUgKm5vZGUsIGNvbnN0IFBvc2l0aW9uICZzdGFydCwgY29u
CiAgICAgQVNTRVJUKG5vZGUtPmlzRWxlbWVudE5vZGUoKSk7CiAKICAgICBQb3NpdGlvbiBwb3Mg
PSBQb3NpdGlvbihub2RlLCBub2RlLT5jaGlsZE5vZGVDb3VudCgpKS51cHN0cmVhbSgpOwotICAg
IHJldHVybiBSYW5nZTo6Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKG5vZGUsIDAsIHN0YXJ0Lm5vZGUo
KSwgc3RhcnQubV9vZmZzZXQpID49IDAgJiYKKyAgICByZXR1cm4gUmFuZ2U6OmNvbXBhcmVCb3Vu
ZGFyeVBvaW50cyhub2RlLCAwLCBzdGFydC5ub2RlKCksIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5n
T2Zmc2V0KCkpID49IDAgJiYKICAgICAgICAgUmFuZ2U6OmNvbXBhcmVCb3VuZGFyeVBvaW50cyhw
b3MsIGVuZCkgPD0gMDsKIH0KIApAQCAtMTI3OCw3ICsxMjc4LDcgQEAgYm9vbCBBcHBseVN0eWxl
Q29tbWFuZDo6bm9kZUZ1bGx5VW5zZWxlY3RlZChOb2RlICpub2RlLCBjb25zdCBQb3NpdGlvbiAm
c3RhcnQsIGMKIAogICAgIFBvc2l0aW9uIHBvcyA9IFBvc2l0aW9uKG5vZGUsIG5vZGUtPmNoaWxk
Tm9kZUNvdW50KCkpLnVwc3RyZWFtKCk7CiAgICAgYm9vbCBpc0Z1bGx5QmVmb3JlU3RhcnQgPSBS
YW5nZTo6Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKHBvcywgc3RhcnQpIDwgMDsKLSAgICBib29sIGlz
RnVsbHlBZnRlckVuZCA9IFJhbmdlOjpjb21wYXJlQm91bmRhcnlQb2ludHMobm9kZSwgMCwgZW5k
Lm5vZGUoKSwgZW5kLm1fb2Zmc2V0KSA+IDA7CisgICAgYm9vbCBpc0Z1bGx5QWZ0ZXJFbmQgPSBS
YW5nZTo6Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKG5vZGUsIDAsIGVuZC5ub2RlKCksIGVuZC5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpKSA+IDA7CiAKICAgICByZXR1cm4gaXNGdWxseUJlZm9yZVN0
YXJ0IHx8IGlzRnVsbHlBZnRlckVuZDsKIH0KQEAgLTEyODYsMTEgKzEyODYsMTEgQEAgYm9vbCBB
cHBseVN0eWxlQ29tbWFuZDo6bm9kZUZ1bGx5VW5zZWxlY3RlZChOb2RlICpub2RlLCBjb25zdCBQ
b3NpdGlvbiAmc3RhcnQsIGMKIAogYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRUZXh0QXRT
dGFydElmTmVlZGVkKGNvbnN0IFBvc2l0aW9uICZzdGFydCwgY29uc3QgUG9zaXRpb24gJmVuZCkK
IHsKLSAgICBpZiAoc3RhcnQubm9kZSgpLT5pc1RleHROb2RlKCkgJiYgc3RhcnQubV9vZmZzZXQg
PiBjYXJldE1pbk9mZnNldChzdGFydC5ub2RlKCkpICYmIHN0YXJ0Lm1fb2Zmc2V0IDwgY2FyZXRN
YXhPZmZzZXQoc3RhcnQubm9kZSgpKSkgewotICAgICAgICBpbnQgZW5kT2Zmc2V0QWRqdXN0bWVu
dCA9IHN0YXJ0Lm5vZGUoKSA9PSBlbmQubm9kZSgpID8gc3RhcnQubV9vZmZzZXQgOiAwOworICAg
IGlmIChzdGFydC5ub2RlKCktPmlzVGV4dE5vZGUoKSAmJiBzdGFydC5kZXByZWNhdGVkRWRpdGlu
Z09mZnNldCgpID4gY2FyZXRNaW5PZmZzZXQoc3RhcnQubm9kZSgpKSAmJiBzdGFydC5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpIDwgY2FyZXRNYXhPZmZzZXQoc3RhcnQubm9kZSgpKSkgeworICAg
ICAgICBpbnQgZW5kT2Zmc2V0QWRqdXN0bWVudCA9IHN0YXJ0Lm5vZGUoKSA9PSBlbmQubm9kZSgp
ID8gc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA6IDA7CiAgICAgICAgIFRleHQgKnRl
eHQgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KHN0YXJ0Lm5vZGUoKSk7Ci0gICAgICAgIHNwbGl0VGV4
dE5vZGUodGV4dCwgc3RhcnQubV9vZmZzZXQpOwotICAgICAgICB1cGRhdGVTdGFydEVuZChQb3Np
dGlvbihzdGFydC5ub2RlKCksIDApLCBQb3NpdGlvbihlbmQubm9kZSgpLCBlbmQubV9vZmZzZXQg
LSBlbmRPZmZzZXRBZGp1c3RtZW50KSk7CisgICAgICAgIHNwbGl0VGV4dE5vZGUodGV4dCwgc3Rh
cnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CisgICAgICAgIHVwZGF0ZVN0YXJ0RW5kKFBv
c2l0aW9uKHN0YXJ0Lm5vZGUoKSwgMCksIFBvc2l0aW9uKGVuZC5ub2RlKCksIGVuZC5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpIC0gZW5kT2Zmc2V0QWRqdXN0bWVudCkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTI5OCwxNSArMTI5OCwxNSBA
QCBib29sIEFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdFRleHRBdFN0YXJ0SWZOZWVkZWQoY29uc3Qg
UG9zaXRpb24gJnN0YXJ0LCBjb25zdCBQbwogCiBib29sIEFwcGx5U3R5bGVDb21tYW5kOjpzcGxp
dFRleHRBdEVuZElmTmVlZGVkKGNvbnN0IFBvc2l0aW9uICZzdGFydCwgY29uc3QgUG9zaXRpb24g
JmVuZCkKIHsKLSAgICBpZiAoZW5kLm5vZGUoKS0+aXNUZXh0Tm9kZSgpICYmIGVuZC5tX29mZnNl
dCA+IGNhcmV0TWluT2Zmc2V0KGVuZC5ub2RlKCkpICYmIGVuZC5tX29mZnNldCA8IGNhcmV0TWF4
T2Zmc2V0KGVuZC5ub2RlKCkpKSB7CisgICAgaWYgKGVuZC5ub2RlKCktPmlzVGV4dE5vZGUoKSAm
JiBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+IGNhcmV0TWluT2Zmc2V0KGVuZC5ub2Rl
KCkpICYmIGVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIDwgY2FyZXRNYXhPZmZzZXQoZW5k
Lm5vZGUoKSkpIHsKICAgICAgICAgVGV4dCAqdGV4dCA9IHN0YXRpY19jYXN0PFRleHQgKj4oZW5k
Lm5vZGUoKSk7Ci0gICAgICAgIHNwbGl0VGV4dE5vZGUodGV4dCwgZW5kLm1fb2Zmc2V0KTsKKyAg
ICAgICAgc3BsaXRUZXh0Tm9kZSh0ZXh0LCBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7
CiAgICAgICAgIAogICAgICAgICBOb2RlICpwcmV2Tm9kZSA9IHRleHQtPnByZXZpb3VzU2libGlu
ZygpOwogICAgICAgICBBU1NFUlQocHJldk5vZGUpOwogICAgICAgICBOb2RlICpzdGFydE5vZGUg
PSBzdGFydC5ub2RlKCkgPT0gZW5kLm5vZGUoKSA/IHByZXZOb2RlIDogc3RhcnQubm9kZSgpOwog
ICAgICAgICBBU1NFUlQoc3RhcnROb2RlKTsKLSAgICAgICAgdXBkYXRlU3RhcnRFbmQoUG9zaXRp
b24oc3RhcnROb2RlLCBzdGFydC5tX29mZnNldCksIFBvc2l0aW9uKHByZXZOb2RlLCBjYXJldE1h
eE9mZnNldChwcmV2Tm9kZSkpKTsKKyAgICAgICAgdXBkYXRlU3RhcnRFbmQoUG9zaXRpb24oc3Rh
cnROb2RlLCBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKSwgUG9zaXRpb24ocHJldk5v
ZGUsIGNhcmV0TWF4T2Zmc2V0KHByZXZOb2RlKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMxNCwxMiArMTMxNCwxMiBAQCBib29sIEFwcGx5
U3R5bGVDb21tYW5kOjpzcGxpdFRleHRBdEVuZElmTmVlZGVkKGNvbnN0IFBvc2l0aW9uICZzdGFy
dCwgY29uc3QgUG9zaQogCiBib29sIEFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdFRleHRFbGVtZW50
QXRTdGFydElmTmVlZGVkKGNvbnN0IFBvc2l0aW9uICZzdGFydCwgY29uc3QgUG9zaXRpb24gJmVu
ZCkKIHsKLSAgICBpZiAoc3RhcnQubm9kZSgpLT5pc1RleHROb2RlKCkgJiYgc3RhcnQubV9vZmZz
ZXQgPiBjYXJldE1pbk9mZnNldChzdGFydC5ub2RlKCkpICYmIHN0YXJ0Lm1fb2Zmc2V0IDwgY2Fy
ZXRNYXhPZmZzZXQoc3RhcnQubm9kZSgpKSkgewotICAgICAgICBpbnQgZW5kT2Zmc2V0QWRqdXN0
bWVudCA9IHN0YXJ0Lm5vZGUoKSA9PSBlbmQubm9kZSgpID8gc3RhcnQubV9vZmZzZXQgOiAwOwor
ICAgIGlmIChzdGFydC5ub2RlKCktPmlzVGV4dE5vZGUoKSAmJiBzdGFydC5kZXByZWNhdGVkRWRp
dGluZ09mZnNldCgpID4gY2FyZXRNaW5PZmZzZXQoc3RhcnQubm9kZSgpKSAmJiBzdGFydC5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpIDwgY2FyZXRNYXhPZmZzZXQoc3RhcnQubm9kZSgpKSkgewor
ICAgICAgICBpbnQgZW5kT2Zmc2V0QWRqdXN0bWVudCA9IHN0YXJ0Lm5vZGUoKSA9PSBlbmQubm9k
ZSgpID8gc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA6IDA7CiAgICAgICAgIFRleHQg
KnRleHQgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KHN0YXJ0Lm5vZGUoKSk7Ci0gICAgICAgIHNwbGl0
VGV4dE5vZGVDb250YWluaW5nRWxlbWVudCh0ZXh0LCBzdGFydC5tX29mZnNldCk7CisgICAgICAg
IHNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudCh0ZXh0LCBzdGFydC5kZXByZWNhdGVkRWRp
dGluZ09mZnNldCgpKTsKIAotICAgICAgICB1cGRhdGVTdGFydEVuZChQb3NpdGlvbihzdGFydC5u
b2RlKCktPnBhcmVudE5vZGUoKSwgc3RhcnQubm9kZSgpLT5ub2RlSW5kZXgoKSksIFBvc2l0aW9u
KGVuZC5ub2RlKCksIGVuZC5tX29mZnNldCAtIGVuZE9mZnNldEFkanVzdG1lbnQpKTsKKyAgICAg
ICAgdXBkYXRlU3RhcnRFbmQoUG9zaXRpb24oc3RhcnQubm9kZSgpLT5wYXJlbnROb2RlKCksIHN0
YXJ0Lm5vZGUoKS0+bm9kZUluZGV4KCkpLCBQb3NpdGlvbihlbmQubm9kZSgpLCBlbmQuZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKSAtIGVuZE9mZnNldEFkanVzdG1lbnQpKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMjcsMTUgKzEzMjcsMTUg
QEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRUZXh0RWxlbWVudEF0U3RhcnRJZk5lZWRl
ZChjb25zdCBQb3NpdGlvbiAmc3RhcnQsIGMKIAogYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6c3Bs
aXRUZXh0RWxlbWVudEF0RW5kSWZOZWVkZWQoY29uc3QgUG9zaXRpb24gJnN0YXJ0LCBjb25zdCBQ
b3NpdGlvbiAmZW5kKQogewotICAgIGlmIChlbmQubm9kZSgpLT5pc1RleHROb2RlKCkgJiYgZW5k
Lm1fb2Zmc2V0ID4gY2FyZXRNaW5PZmZzZXQoZW5kLm5vZGUoKSkgJiYgZW5kLm1fb2Zmc2V0IDwg
Y2FyZXRNYXhPZmZzZXQoZW5kLm5vZGUoKSkpIHsKKyAgICBpZiAoZW5kLm5vZGUoKS0+aXNUZXh0
Tm9kZSgpICYmIGVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4gY2FyZXRNaW5PZmZzZXQo
ZW5kLm5vZGUoKSkgJiYgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPCBjYXJldE1heE9m
ZnNldChlbmQubm9kZSgpKSkgewogICAgICAgICBUZXh0ICp0ZXh0ID0gc3RhdGljX2Nhc3Q8VGV4
dCAqPihlbmQubm9kZSgpKTsKLSAgICAgICAgc3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50
KHRleHQsIGVuZC5tX29mZnNldCk7CisgICAgICAgIHNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxl
bWVudCh0ZXh0LCBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAKICAgICAgICAgTm9k
ZSAqcHJldk5vZGUgPSB0ZXh0LT5wYXJlbnQoKS0+cHJldmlvdXNTaWJsaW5nKCktPmxhc3RDaGls
ZCgpOwogICAgICAgICBBU1NFUlQocHJldk5vZGUpOwogICAgICAgICBOb2RlICpzdGFydE5vZGUg
PSBzdGFydC5ub2RlKCkgPT0gZW5kLm5vZGUoKSA/IHByZXZOb2RlIDogc3RhcnQubm9kZSgpOwog
ICAgICAgICBBU1NFUlQoc3RhcnROb2RlKTsKLSAgICAgICAgdXBkYXRlU3RhcnRFbmQoUG9zaXRp
b24oc3RhcnROb2RlLCBzdGFydC5tX29mZnNldCksIFBvc2l0aW9uKHByZXZOb2RlLT5wYXJlbnQo
KSwgcHJldk5vZGUtPm5vZGVJbmRleCgpICsgMSkpOworICAgICAgICB1cGRhdGVTdGFydEVuZChQ
b3NpdGlvbihzdGFydE5vZGUsIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpLCBQb3Np
dGlvbihwcmV2Tm9kZS0+cGFyZW50KCksIHByZXZOb2RlLT5ub2RlSW5kZXgoKSArIDEpKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTEzNzksMTAg
KzEzNzksMTAgQEAgc3RhdGljIGJvb2wgYXJlSWRlbnRpY2FsRWxlbWVudHMoTm9kZSAqZmlyc3Qs
IE5vZGUgKnNlY29uZCkKIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6Om1lcmdlU3RhcnRXaXRoUHJl
dmlvdXNJZklkZW50aWNhbChjb25zdCBQb3NpdGlvbiAmc3RhcnQsIGNvbnN0IFBvc2l0aW9uICZl
bmQpCiB7CiAgICAgTm9kZSAqc3RhcnROb2RlID0gc3RhcnQubm9kZSgpOwotICAgIGludCBzdGFy
dE9mZnNldCA9IHN0YXJ0Lm1fb2Zmc2V0OworICAgIGludCBzdGFydE9mZnNldCA9IHN0YXJ0LmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAKICAgICBpZiAoaXNBdG9taWNOb2RlKHN0YXJ0Lm5v
ZGUoKSkpIHsKLSAgICAgICAgaWYgKHN0YXJ0Lm1fb2Zmc2V0ICE9IDApCisgICAgICAgIGlmIChz
dGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpICE9IDApCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAgICAgLy8gbm90ZTogcHJpb3Igc2libGluZ3MgY291bGQgYmUgdW5yZW5k
ZXJlZCBlbGVtZW50cy4gaXQncyBzaWxseSB0byBtaXNzIHRoZQpAQCAtMTQxMSw3ICsxNDExLDcg
QEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6bWVyZ2VTdGFydFdpdGhQcmV2aW91c0lmSWRlbnRp
Y2FsKGNvbnN0IFBvc2l0aW9uICZzdGFydCwKIAogICAgICAgICBpbnQgc3RhcnRPZmZzZXRBZGp1
c3RtZW50ID0gc3RhcnRDaGlsZC0+bm9kZUluZGV4KCk7CiAgICAgICAgIGludCBlbmRPZmZzZXRB
ZGp1c3RtZW50ID0gc3RhcnROb2RlID09IGVuZC5ub2RlKCkgPyBzdGFydE9mZnNldEFkanVzdG1l
bnQgOiAwOwotICAgICAgICB1cGRhdGVTdGFydEVuZChQb3NpdGlvbihzdGFydE5vZGUsIHN0YXJ0
T2Zmc2V0QWRqdXN0bWVudCksIFBvc2l0aW9uKGVuZC5ub2RlKCksIGVuZC5tX29mZnNldCArIGVu
ZE9mZnNldEFkanVzdG1lbnQpKTsgCisgICAgICAgIHVwZGF0ZVN0YXJ0RW5kKFBvc2l0aW9uKHN0
YXJ0Tm9kZSwgc3RhcnRPZmZzZXRBZGp1c3RtZW50KSwgUG9zaXRpb24oZW5kLm5vZGUoKSwgZW5k
LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgKyBlbmRPZmZzZXRBZGp1c3RtZW50KSk7IAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTE0MjEsNyArMTQyMSw3IEBAIGJvb2wgQXBw
bHlTdHlsZUNvbW1hbmQ6Om1lcmdlU3RhcnRXaXRoUHJldmlvdXNJZklkZW50aWNhbChjb25zdCBQ
b3NpdGlvbiAmc3RhcnQsCiBib29sIEFwcGx5U3R5bGVDb21tYW5kOjptZXJnZUVuZFdpdGhOZXh0
SWZJZGVudGljYWwoY29uc3QgUG9zaXRpb24gJnN0YXJ0LCBjb25zdCBQb3NpdGlvbiAmZW5kKQog
ewogICAgIE5vZGUgKmVuZE5vZGUgPSBlbmQubm9kZSgpOwotICAgIGludCBlbmRPZmZzZXQgPSBl
bmQubV9vZmZzZXQ7CisgICAgaW50IGVuZE9mZnNldCA9IGVuZC5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpOwogCiAgICAgaWYgKGlzQXRvbWljTm9kZShlbmROb2RlKSkgewogICAgICAgICBpZiAo
ZW5kT2Zmc2V0IDwgY2FyZXRNYXhPZmZzZXQoZW5kTm9kZSkpCkBAIC0xNDUxLDcgKzE0NTEsNyBA
QCBib29sIEFwcGx5U3R5bGVDb21tYW5kOjptZXJnZUVuZFdpdGhOZXh0SWZJZGVudGljYWwoY29u
c3QgUG9zaXRpb24gJnN0YXJ0LCBjb25zdAogICAgICAgICBBU1NFUlQoc3RhcnROb2RlKTsKIAog
ICAgICAgICBpbnQgZW5kT2Zmc2V0ID0gbmV4dENoaWxkID8gbmV4dENoaWxkLT5ub2RlSW5kZXgo
KSA6IG5leHRFbGVtZW50LT5jaGlsZE5vZGVzKCktPmxlbmd0aCgpOwotICAgICAgICB1cGRhdGVT
dGFydEVuZChQb3NpdGlvbihzdGFydE5vZGUsIHN0YXJ0Lm1fb2Zmc2V0KSwgUG9zaXRpb24obmV4
dEVsZW1lbnQsIGVuZE9mZnNldCkpOworICAgICAgICB1cGRhdGVTdGFydEVuZChQb3NpdGlvbihz
dGFydE5vZGUsIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpLCBQb3NpdGlvbihuZXh0
RWxlbWVudCwgZW5kT2Zmc2V0KSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAt
MTYwNyw5ICsxNjA3LDkgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6am9pbkNoaWxkVGV4dE5v
ZGVzKE5vZGUgKm5vZGUsIGNvbnN0IFBvc2l0aW9uICZzdGFydCwgY28KICAgICAgICAgICAgIFRl
eHQgKmNoaWxkVGV4dCA9IHN0YXRpY19jYXN0PFRleHQgKj4oY2hpbGQpOwogICAgICAgICAgICAg
VGV4dCAqbmV4dFRleHQgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KG5leHQpOwogICAgICAgICAgICAg
aWYgKG5leHQgPT0gc3RhcnQubm9kZSgpKQotICAgICAgICAgICAgICAgIG5ld1N0YXJ0ID0gUG9z
aXRpb24oY2hpbGRUZXh0LCBjaGlsZFRleHQtPmxlbmd0aCgpICsgc3RhcnQubV9vZmZzZXQpOwor
ICAgICAgICAgICAgICAgIG5ld1N0YXJ0ID0gUG9zaXRpb24oY2hpbGRUZXh0LCBjaGlsZFRleHQt
Pmxlbmd0aCgpICsgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAgICAgICAgICAg
ICBpZiAobmV4dCA9PSBlbmQubm9kZSgpKQotICAgICAgICAgICAgICAgIG5ld0VuZCA9IFBvc2l0
aW9uKGNoaWxkVGV4dCwgY2hpbGRUZXh0LT5sZW5ndGgoKSArIGVuZC5tX29mZnNldCk7CisgICAg
ICAgICAgICAgICAgbmV3RW5kID0gUG9zaXRpb24oY2hpbGRUZXh0LCBjaGlsZFRleHQtPmxlbmd0
aCgpICsgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwogICAgICAgICAgICAgU3RyaW5n
IHRleHRUb01vdmUgPSBuZXh0VGV4dC0+ZGF0YSgpOwogICAgICAgICAgICAgaW5zZXJ0VGV4dElu
dG9Ob2RlKGNoaWxkVGV4dCwgY2hpbGRUZXh0LT5sZW5ndGgoKSwgdGV4dFRvTW92ZSk7CiAgICAg
ICAgICAgICByZW1vdmVOb2RlKG5leHQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0Jy
ZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90
ZUNvbW1hbmQuY3BwCmluZGV4IDdlZjUwNjguLmM2ZGYwN2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZWRpdGluZy9CcmVha0Jsb2NrcXVvdGVDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcv
QnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAKQEAgLTEwMSwxMiArMTAxLDEyIEBAIHZvaWQgQnJl
YWtCbG9ja3F1b3RlQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgLy8gU3BsaXQgYXQgcG9zIGlmIGlu
IHRoZSBtaWRkbGUgb2YgYSB0ZXh0IG5vZGUuCiAgICAgaWYgKHN0YXJ0Tm9kZS0+aXNUZXh0Tm9k
ZSgpKSB7CiAgICAgICAgIFRleHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KHN0YXJ0
Tm9kZSk7Ci0gICAgICAgIGlmICgodW5zaWduZWQpcG9zLm1fb2Zmc2V0ID49IHRleHROb2RlLT5s
ZW5ndGgoKSkgeworICAgICAgICBpZiAoKHVuc2lnbmVkKXBvcy5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpID49IHRleHROb2RlLT5sZW5ndGgoKSkgewogICAgICAgICAgICAgc3RhcnROb2RlID0g
c3RhcnROb2RlLT50cmF2ZXJzZU5leHROb2RlKCk7CiAgICAgICAgICAgICBBU1NFUlQoc3RhcnRO
b2RlKTsKLSAgICAgICAgfSBlbHNlIGlmIChwb3MubV9vZmZzZXQgPiAwKQotICAgICAgICAgICAg
c3BsaXRUZXh0Tm9kZSh0ZXh0Tm9kZSwgcG9zLm1fb2Zmc2V0KTsKLSAgICB9IGVsc2UgaWYgKHBv
cy5tX29mZnNldCA+IDApIHsKKyAgICAgICAgfSBlbHNlIGlmIChwb3MuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKSA+IDApCisgICAgICAgICAgICBzcGxpdFRleHROb2RlKHRleHROb2RlLCBwb3Mu
ZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CisgICAgfSBlbHNlIGlmIChwb3MuZGVwcmVjYXRl
ZEVkaXRpbmdPZmZzZXQoKSA+IDApIHsKICAgICAgICAgc3RhcnROb2RlID0gc3RhcnROb2RlLT50
cmF2ZXJzZU5leHROb2RlKCk7CiAgICAgICAgIEFTU0VSVChzdGFydE5vZGUpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAgYi9XZWJD
b3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCmluZGV4IDZhNTExMWQuLmU3MTkx
M2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAK
KysrIGIvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMTU3LDcg
KzE1Nyw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Omluc2VydE5vZGVBdChQYXNzUmVm
UHRyPE5vZGU+IGluc2VydENoaWxkLCBjb25zdCBQb3NpCiAgICAgLy8gbGlrZXdpc2UgZm9yIHJl
cGxhY2VkIGVsZW1lbnRzLCBicnMsIGV0Yy4KICAgICBQb3NpdGlvbiBwID0gcmFuZ2VDb21wbGlh
bnRFcXVpdmFsZW50KGVkaXRpbmdQb3NpdGlvbik7CiAgICAgTm9kZSogcmVmQ2hpbGQgPSBwLm5v
ZGUoKTsKLSAgICBpbnQgb2Zmc2V0ID0gcC5tX29mZnNldDsKKyAgICBpbnQgb2Zmc2V0ID0gcC5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAgIAogICAgIGlmIChjYW5IYXZlQ2hpbGRyZW5G
b3JFZGl0aW5nKHJlZkNoaWxkKSkgewogICAgICAgICBOb2RlKiBjaGlsZCA9IHJlZkNoaWxkLT5m
aXJzdENoaWxkKCk7CkBAIC0zMjcsMTMgKzMyNywxMyBAQCBQb3NpdGlvbiBDb21wb3NpdGVFZGl0
Q29tbWFuZDo6cG9zaXRpb25PdXRzaWRlVGFiU3Bhbihjb25zdCBQb3NpdGlvbiYgcG9zKQogICAg
IAogICAgIE5vZGUqIHRhYlNwYW4gPSB0YWJTcGFuTm9kZShwb3Mubm9kZSgpKTsKICAgICAKLSAg
ICBpZiAocG9zLm1fb2Zmc2V0IDw9IGNhcmV0TWluT2Zmc2V0KHBvcy5ub2RlKCkpKQorICAgIGlm
IChwb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA8PSBjYXJldE1pbk9mZnNldChwb3Mubm9k
ZSgpKSkKICAgICAgICAgcmV0dXJuIHBvc2l0aW9uQmVmb3JlTm9kZSh0YWJTcGFuKTsKICAgICAg
ICAgCi0gICAgaWYgKHBvcy5tX29mZnNldCA+PSBjYXJldE1heE9mZnNldChwb3Mubm9kZSgpKSkK
KyAgICBpZiAocG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPj0gY2FyZXRNYXhPZmZzZXQo
cG9zLm5vZGUoKSkpCiAgICAgICAgIHJldHVybiBwb3NpdGlvbkFmdGVyTm9kZSh0YWJTcGFuKTsK
IAotICAgIHNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudChzdGF0aWNfY2FzdDxUZXh0ICo+
KHBvcy5ub2RlKCkpLCBwb3MubV9vZmZzZXQpOworICAgIHNwbGl0VGV4dE5vZGVDb250YWluaW5n
RWxlbWVudChzdGF0aWNfY2FzdDxUZXh0ICo+KHBvcy5ub2RlKCkpLCBwb3MuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSk7CiAgICAgcmV0dXJuIHBvc2l0aW9uQmVmb3JlTm9kZSh0YWJTcGFuKTsK
IH0KIApAQCAtMzkyLDcgKzM5Miw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlYmFs
YW5jZVdoaXRlc3BhY2VBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiAgICAgU3RyaW5nIHRl
eHQgPSB0ZXh0Tm9kZS0+ZGF0YSgpOwogICAgIEFTU0VSVCghdGV4dC5pc0VtcHR5KCkpOwogCi0g
ICAgaW50IG9mZnNldCA9IHBvc2l0aW9uLm1fb2Zmc2V0OworICAgIGludCBvZmZzZXQgPSBwb3Np
dGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAgIC8vIElmIG5laXRoZXIgdGV4dFtv
ZmZzZXRdIG5vciB0ZXh0W29mZnNldCAtIDFdIGFyZSBzb21lIGZvcm0gb2Ygd2hpdGVzcGFjZSwg
ZG8gbm90aGluZy4KICAgICBpZiAoIWlzV2hpdGVzcGFjZSh0ZXh0W29mZnNldF0pKSB7CiAgICAg
ICAgIG9mZnNldC0tOwpAQCAtNDQ5LDkgKzQ0OSw5IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1h
bmQ6OnByZXBhcmVXaGl0ZXNwYWNlQXRQb3NpdGlvbkZvclNwbGl0KFBvc2l0aW9uJiBwb3NpdGlv
CiAgICAgUG9zaXRpb24gcHJldmlvdXMocHJldmlvdXNWaXNpYmxlUG9zLmRlZXBFcXVpdmFsZW50
KCkpOwogICAgIAogICAgIGlmIChpc0NvbGxhcHNpYmxlV2hpdGVzcGFjZShwcmV2aW91c1Zpc2li
bGVQb3MuY2hhcmFjdGVyQWZ0ZXIoKSkgJiYgcHJldmlvdXMubm9kZSgpLT5pc1RleHROb2RlKCkg
JiYgIXByZXZpb3VzLm5vZGUoKS0+aGFzVGFnTmFtZShiclRhZykpCi0gICAgICAgIHJlcGxhY2VU
ZXh0SW5Ob2RlKHN0YXRpY19jYXN0PFRleHQqPihwcmV2aW91cy5ub2RlKCkpLCBwcmV2aW91cy5t
X29mZnNldCwgMSwgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsKKyAgICAgICAgcmVwbGFjZVRl
eHRJbk5vZGUoc3RhdGljX2Nhc3Q8VGV4dCo+KHByZXZpb3VzLm5vZGUoKSksIHByZXZpb3VzLmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIDEsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CiAg
ICAgaWYgKGlzQ29sbGFwc2libGVXaGl0ZXNwYWNlKHZpc2libGVQb3MuY2hhcmFjdGVyQWZ0ZXIo
KSkgJiYgcG9zaXRpb24ubm9kZSgpLT5pc1RleHROb2RlKCkgJiYgIXBvc2l0aW9uLm5vZGUoKS0+
aGFzVGFnTmFtZShiclRhZykpCi0gICAgICAgIHJlcGxhY2VUZXh0SW5Ob2RlKHN0YXRpY19jYXN0
PFRleHQqPihwb3NpdGlvbi5ub2RlKCkpLCBwb3NpdGlvbi5tX29mZnNldCwgMSwgbm9uQnJlYWtp
bmdTcGFjZVN0cmluZygpKTsKKyAgICAgICAgcmVwbGFjZVRleHRJbk5vZGUoc3RhdGljX2Nhc3Q8
VGV4dCo+KHBvc2l0aW9uLm5vZGUoKSksIHBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0
KCksIDEsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CiB9CiAKIHZvaWQgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6OnJlYmFsYW5jZVdoaXRlc3BhY2UoKQpAQCAtNTQyLDggKzU0Miw4IEBAIHZvaWQg
Q29tcG9zaXRlRWRpdENvbW1hbmQ6OmRlbGV0ZUluc2lnbmlmaWNhbnRUZXh0KGNvbnN0IFBvc2l0
aW9uJiBzdGFydCwgY29uc3QKICAgICAgICAgbmV4dCA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUo
KTsKICAgICAgICAgaWYgKG5vZGUtPmlzVGV4dE5vZGUoKSkgewogICAgICAgICAgICAgVGV4dCog
dGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0Kj4obm9kZSk7Ci0gICAgICAgICAgICBpbnQgc3Rh
cnRPZmZzZXQgPSBub2RlID09IHN0YXJ0Lm5vZGUoKSA/IHN0YXJ0Lm1fb2Zmc2V0IDogMDsKLSAg
ICAgICAgICAgIGludCBlbmRPZmZzZXQgPSBub2RlID09IGVuZC5ub2RlKCkgPyBlbmQubV9vZmZz
ZXQgOiB0ZXh0Tm9kZS0+bGVuZ3RoKCk7CisgICAgICAgICAgICBpbnQgc3RhcnRPZmZzZXQgPSBu
b2RlID09IHN0YXJ0Lm5vZGUoKSA/IHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgOiAw
OworICAgICAgICAgICAgaW50IGVuZE9mZnNldCA9IG5vZGUgPT0gZW5kLm5vZGUoKSA/IGVuZC5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIDogdGV4dE5vZGUtPmxlbmd0aCgpOwogICAgICAgICAg
ICAgZGVsZXRlSW5zaWduaWZpY2FudFRleHQodGV4dE5vZGUsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQpOwogICAgICAgICB9CiAgICAgICAgIGlmIChub2RlID09IGVuZC5ub2RlKCkpCkBAIC03NzYs
NyArNzc2LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXAKICAgICAvLyBzdGFydCBhbmQgZW5k
IGNhbid0IGJlIHVzZWQgZGlyZWN0bHkgdG8gY3JlYXRlIGEgUmFuZ2U7IHRoZXkgYXJlICJlZGl0
aW5nIHBvc2l0aW9ucyIKICAgICBQb3NpdGlvbiBzdGFydFJhbmdlQ29tcGxpYW50ID0gcmFuZ2VD
b21wbGlhbnRFcXVpdmFsZW50KHN0YXJ0KTsKICAgICBQb3NpdGlvbiBlbmRSYW5nZUNvbXBsaWFu
dCA9IHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChlbmQpOwotICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCksIHN0YXJ0UmFuZ2VDb21wbGlhbnQubm9kZSgp
LCBzdGFydFJhbmdlQ29tcGxpYW50Lm1fb2Zmc2V0LCBlbmRSYW5nZUNvbXBsaWFudC5ub2RlKCks
IGVuZFJhbmdlQ29tcGxpYW50Lm1fb2Zmc2V0KTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
UmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpLCBzdGFydFJhbmdlQ29tcGxpYW50Lm5vZGUoKSwgc3Rh
cnRSYW5nZUNvbXBsaWFudC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmRSYW5nZUNvbXBs
aWFudC5ub2RlKCksIGVuZFJhbmdlQ29tcGxpYW50LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkp
OwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYW4gaW5lZmZpY2llbnQgd2F5IHRvIHByZXNlcnZl
IHN0eWxlIG9uIG5vZGVzIGluIHRoZSBwYXJhZ3JhcGggdG8gbW92ZS4gIEl0IAogICAgIC8vIHNo
b3VsZG4ndCBtYXR0ZXIgdGhvdWdoLCBzaW5jZSBtb3ZlZCBwYXJhZ3JhcGhzIHdpbGwgdXN1YWxs
eSBiZSBxdWl0ZSBzbWFsbC4KQEAgLTgyNSw3ICs4MjUsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJh
Z3JhcAogICAgICAgICAgICAgaWYgKHRleHROb2RlLT5sZW5ndGgoKSA9PSAxKQogICAgICAgICAg
ICAgICAgIHJlbW92ZU5vZGVBbmRQcnVuZUFuY2VzdG9ycyhub2RlKTsKICAgICAgICAgICAgIGVs
c2UgCi0gICAgICAgICAgICAgICAgZGVsZXRlVGV4dEZyb21Ob2RlKHRleHROb2RlLCBwb3NpdGlv
bi5tX29mZnNldCwgMSk7CisgICAgICAgICAgICAgICAgZGVsZXRlVGV4dEZyb21Ob2RlKHRleHRO
b2RlLCBwb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCAxKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtOTQ5LDcgKzk0OSw3IEBAIGJvb2wgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmJy
ZWFrT3V0T2ZFbXB0eU1haWxCbG9ja3F1b3RlZFBhcmFncmFwaCgpCiAgICAgICAgIHJlbW92ZU5v
ZGUoY2FyZXRQb3Mubm9kZSgpKTsKICAgICAgICAgcHJ1bmUoYmVmb3JlQlIubm9kZSgpKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoY2FyZXRQb3MubV9vZmZzZXQgPT0gMCk7CisgICAg
ICAgIEFTU0VSVChjYXJldFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID09IDApOwogICAg
ICAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQqPihjYXJldFBvcy5ub2RlKCkp
OwogICAgICAgICBOb2RlKiBwYXJlbnROb2RlID0gdGV4dE5vZGUtPnBhcmVudE5vZGUoKTsKICAg
ICAgICAgLy8gVGhlIHByZXNlcnZlZCBuZXdsaW5lIG11c3QgYmUgdGhlIGZpcnN0IHRoaW5nIGlu
IHRoZSBub2RlLCBzaW5jZSBvdGhlcndpc2UgdGhlIHByZXZpb3VzCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9XZWJDb3JlL2VkaXRpbmcv
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggOTkzMTljZC4uMTJjMDc0MyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMzE0LDggKzMxNCw4
IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVBvc2l0aW9uRm9yTm9kZVJlbW92YWwoTm9kZSogbm9kZSwg
UG9zaXRpb24mIHBvc2l0aW9uKQogewogICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIGlmIChub2RlLT5wYXJlbnQoKSA9PSBwb3NpdGlvbi5ub2RlKCkgJiYg
bm9kZS0+bm9kZUluZGV4KCkgPCAodW5zaWduZWQpcG9zaXRpb24ubV9vZmZzZXQpCi0gICAgICAg
IHBvc2l0aW9uID0gUG9zaXRpb24ocG9zaXRpb24ubm9kZSgpLCBwb3NpdGlvbi5tX29mZnNldCAt
IDEpOworICAgIGlmIChub2RlLT5wYXJlbnQoKSA9PSBwb3NpdGlvbi5ub2RlKCkgJiYgbm9kZS0+
bm9kZUluZGV4KCkgPCAodW5zaWduZWQpcG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSkKKyAgICAgICAgcG9zaXRpb24gPSBQb3NpdGlvbihwb3NpdGlvbi5ub2RlKCksIHBvc2l0aW9u
LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgLSAxKTsKICAgICBpZiAocG9zaXRpb24ubm9kZSgp
ID09IG5vZGUgfHwgcG9zaXRpb24ubm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihub2RlKSkKICAgICAg
ICAgcG9zaXRpb24gPSBwb3NpdGlvbkJlZm9yZU5vZGUobm9kZSk7CiB9CkBAIC0zODEsOSArMzgx
LDkgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVOb2RlKFBhc3NSZWZQdHI8
Tm9kZT4gbm9kZSkKIHN0YXRpYyB2b2lkIHVwZGF0ZVBvc2l0aW9uRm9yVGV4dFJlbW92YWwoTm9k
ZSogbm9kZSwgaW50IG9mZnNldCwgaW50IGNvdW50LCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7CiAg
ICAgaWYgKHBvc2l0aW9uLm5vZGUoKSA9PSBub2RlKSB7Ci0gICAgICAgIGlmIChwb3NpdGlvbi5t
X29mZnNldCA+IG9mZnNldCArIGNvdW50KQotICAgICAgICAgICAgcG9zaXRpb24gPSBQb3NpdGlv
bihwb3NpdGlvbi5ub2RlKCksIHBvc2l0aW9uLm1fb2Zmc2V0IC0gY291bnQpOwotICAgICAgICBl
bHNlIGlmIChwb3NpdGlvbi5tX29mZnNldCA+IG9mZnNldCkKKyAgICAgICAgaWYgKHBvc2l0aW9u
LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPiBvZmZzZXQgKyBjb3VudCkKKyAgICAgICAgICAg
IHBvc2l0aW9uID0gUG9zaXRpb24ocG9zaXRpb24ubm9kZSgpLCBwb3NpdGlvbi5kZXByZWNhdGVk
RWRpdGluZ09mZnNldCgpIC0gY291bnQpOworICAgICAgICBlbHNlIGlmIChwb3NpdGlvbi5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpID4gb2Zmc2V0KQogICAgICAgICAgICAgcG9zaXRpb24gPSBQ
b3NpdGlvbihwb3NpdGlvbi5ub2RlKCksIG9mZnNldCk7CiAgICAgfQogfQpAQCAtNDAxLDcgKzQw
MSw3IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZGVsZXRlVGV4dEZyb21Ob2RlKFBh
c3NSZWZQdHI8VGV4dD4gbm9kZSwgdW5zaWduZWQKIAogdm9pZCBEZWxldGVTZWxlY3Rpb25Db21t
YW5kOjpoYW5kbGVHZW5lcmFsRGVsZXRlKCkKIHsKLSAgICBpbnQgc3RhcnRPZmZzZXQgPSBtX3Vw
c3RyZWFtU3RhcnQubV9vZmZzZXQ7CisgICAgaW50IHN0YXJ0T2Zmc2V0ID0gbV91cHN0cmVhbVN0
YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAgICAgTm9kZSogc3RhcnROb2RlID0gbV91
cHN0cmVhbVN0YXJ0Lm5vZGUoKTsKICAgICAKICAgICAvLyBOZXZlciByZW1vdmUgdGhlIHN0YXJ0
IGJsb2NrIHVubGVzcyBpdCdzIGEgdGFibGUsIGluIHdoaWNoIGNhc2Ugd2Ugd29uJ3QgbWVyZ2Ug
Y29udGVudCBpbi4KQEAgLTQzMCwxMyArNDMwLDEzIEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZDo6aGFuZGxlR2VuZXJhbERlbGV0ZSgpCiAgICAgICAgIGlmICghc3RhcnROb2RlLT5yZW5k
ZXJlcigpIHx8IChzdGFydE9mZnNldCA9PSAwICYmIG1fZG93bnN0cmVhbUVuZC5hdExhc3RFZGl0
aW5nUG9zaXRpb25Gb3JOb2RlKCkpKSB7CiAgICAgICAgICAgICAvLyBqdXN0IGRlbGV0ZQogICAg
ICAgICAgICAgcmVtb3ZlTm9kZShzdGFydE5vZGUpOwotICAgICAgICB9IGVsc2UgaWYgKG1fZG93
bnN0cmVhbUVuZC5tX29mZnNldCAtIHN0YXJ0T2Zmc2V0ID4gMCkgeworICAgICAgICB9IGVsc2Ug
aWYgKG1fZG93bnN0cmVhbUVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIC0gc3RhcnRPZmZz
ZXQgPiAwKSB7CiAgICAgICAgICAgICBpZiAoc3RhcnROb2RlLT5pc1RleHROb2RlKCkpIHsKICAg
ICAgICAgICAgICAgICAvLyBpbiBhIHRleHQgbm9kZSB0aGF0IG5lZWRzIHRvIGJlIHRyaW1tZWQK
ICAgICAgICAgICAgICAgICBUZXh0KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8VGV4dCo+KHN0YXJ0Tm9k
ZSk7Ci0gICAgICAgICAgICAgICAgZGVsZXRlVGV4dEZyb21Ob2RlKHRleHQsIHN0YXJ0T2Zmc2V0
LCBtX2Rvd25zdHJlYW1FbmQubV9vZmZzZXQgLSBzdGFydE9mZnNldCk7CisgICAgICAgICAgICAg
ICAgZGVsZXRlVGV4dEZyb21Ob2RlKHRleHQsIHN0YXJ0T2Zmc2V0LCBtX2Rvd25zdHJlYW1FbmQu
ZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSAtIHN0YXJ0T2Zmc2V0KTsKICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVtb3ZlQ2hpbGRyZW5JblJhbmdlKHN0YXJ0Tm9kZSwg
c3RhcnRPZmZzZXQsIG1fZG93bnN0cmVhbUVuZC5tX29mZnNldCk7CisgICAgICAgICAgICAgICAg
cmVtb3ZlQ2hpbGRyZW5JblJhbmdlKHN0YXJ0Tm9kZSwgc3RhcnRPZmZzZXQsIG1fZG93bnN0cmVh
bUVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKICAgICAgICAgICAgICAgICBtX2VuZGlu
Z1Bvc2l0aW9uID0gbV91cHN0cmVhbVN0YXJ0OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC00NjcsMTQgKzQ2NywxNCBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZUdl
bmVyYWxEZWxldGUoKQogICAgICAgICAgICAgICAgIC8vIGlmIHdlIGp1c3QgcmVtb3ZlZCBhIG5v
ZGUgZnJvbSB0aGUgZW5kIGNvbnRhaW5lciwgdXBkYXRlIGVuZCBwb3NpdGlvbiBzbyB0aGUKICAg
ICAgICAgICAgICAgICAvLyBjaGVjayBhYm92ZSB3aWxsIHdvcmsKICAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+cGFyZW50Tm9kZSgpID09IG1fZG93bnN0cmVhbUVuZC5ub2RlKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm5vZGVJbmRleCgpIDwgKHVuc2lnbmVkKW1fZG93
bnN0cmVhbUVuZC5tX29mZnNldCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZG93bnN0cmVhbUVu
ZCA9IFBvc2l0aW9uKG1fZG93bnN0cmVhbUVuZC5ub2RlKCksIG1fZG93bnN0cmVhbUVuZC5tX29m
ZnNldCAtIDEpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+bm9kZUluZGV4KCkg
PCAodW5zaWduZWQpbV9kb3duc3RyZWFtRW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwor
ICAgICAgICAgICAgICAgICAgICBtX2Rvd25zdHJlYW1FbmQgPSBQb3NpdGlvbihtX2Rvd25zdHJl
YW1FbmQubm9kZSgpLCBtX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSAt
IDEpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZW1vdmVOb2RlKG5vZGUu
Z2V0KCkpOwogICAgICAgICAgICAgICAgIG5vZGUgPSBuZXh0Tm9kZS5nZXQoKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgTm9kZSogbiA9IG5vZGUtPmxhc3REZXNjZW5k
YW50KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZG93bnN0cmVhbUVuZC5ub2RlKCkgPT0gbiAm
JiBtX2Rvd25zdHJlYW1FbmQubV9vZmZzZXQgPj0gY2FyZXRNYXhPZmZzZXQobikpIHsKKyAgICAg
ICAgICAgICAgICBpZiAobV9kb3duc3RyZWFtRW5kLm5vZGUoKSA9PSBuICYmIG1fZG93bnN0cmVh
bUVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID49IGNhcmV0TWF4T2Zmc2V0KG4pKSB7CiAg
ICAgICAgICAgICAgICAgICAgIHJlbW92ZU5vZGUobm9kZS5nZXQoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIG5vZGUgPSAwOwogICAgICAgICAgICAgICAgIH0gZWxzZQpAQCAtNDgyLDcgKzQ4Miw3
IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlR2VuZXJhbERlbGV0ZSgpCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChtX2Rvd25zdHJl
YW1FbmQubm9kZSgpICE9IHN0YXJ0Tm9kZSAmJiAhbV91cHN0cmVhbVN0YXJ0Lm5vZGUoKS0+aXNE
ZXNjZW5kYW50T2YobV9kb3duc3RyZWFtRW5kLm5vZGUoKSkgJiYgbV9kb3duc3RyZWFtRW5kLm5v
ZGUoKS0+aW5Eb2N1bWVudCgpICYmIG1fZG93bnN0cmVhbUVuZC5tX29mZnNldCA+PSBjYXJldE1p
bk9mZnNldChtX2Rvd25zdHJlYW1FbmQubm9kZSgpKSkgeworICAgICAgICBpZiAobV9kb3duc3Ry
ZWFtRW5kLm5vZGUoKSAhPSBzdGFydE5vZGUgJiYgIW1fdXBzdHJlYW1TdGFydC5ub2RlKCktPmlz
RGVzY2VuZGFudE9mKG1fZG93bnN0cmVhbUVuZC5ub2RlKCkpICYmIG1fZG93bnN0cmVhbUVuZC5u
b2RlKCktPmluRG9jdW1lbnQoKSAmJiBtX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKSA+PSBjYXJldE1pbk9mZnNldChtX2Rvd25zdHJlYW1FbmQubm9kZSgpKSkgewogICAg
ICAgICAgICAgaWYgKG1fZG93bnN0cmVhbUVuZC5hdExhc3RFZGl0aW5nUG9zaXRpb25Gb3JOb2Rl
KCkgJiYgIWNhbkhhdmVDaGlsZHJlbkZvckVkaXRpbmcobV9kb3duc3RyZWFtRW5kLm5vZGUoKSkp
IHsKICAgICAgICAgICAgICAgICAvLyBUaGUgbm9kZSBpdHNlbGYgaXMgZnVsbHkgc2VsZWN0ZWQs
IG5vdCBqdXN0IGl0cyBjb250ZW50cy4gIERlbGV0ZSBpdC4KICAgICAgICAgICAgICAgICByZW1v
dmVOb2RlKG1fZG93bnN0cmVhbUVuZC5ub2RlKCkpOwpAQCAtNDkwLDggKzQ5MCw4IEBAIHZvaWQg
RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlR2VuZXJhbERlbGV0ZSgpCiAgICAgICAgICAg
ICAgICAgaWYgKG1fZG93bnN0cmVhbUVuZC5ub2RlKCktPmlzVGV4dE5vZGUoKSkgewogICAgICAg
ICAgICAgICAgICAgICAvLyBpbiBhIHRleHQgbm9kZSB0aGF0IG5lZWRzIHRvIGJlIHRyaW1tZWQK
ICAgICAgICAgICAgICAgICAgICAgVGV4dCAqdGV4dCA9IHN0YXRpY19jYXN0PFRleHQgKj4obV9k
b3duc3RyZWFtRW5kLm5vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX2Rvd25zdHJl
YW1FbmQubV9vZmZzZXQgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVUZXh0
RnJvbU5vZGUodGV4dCwgMCwgbV9kb3duc3RyZWFtRW5kLm1fb2Zmc2V0KTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fZG93bnN0cmVhbUVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4g
MCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlVGV4dEZyb21Ob2RlKHRleHQsIDAs
IG1fZG93bnN0cmVhbUVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBjaGlsZHJlbiBvZiBtX2Rvd25z
dHJlYW1FbmQubm9kZSgpIHRoYXQgY29tZSBhZnRlciBtX3Vwc3RyZWFtU3RhcnQuCiAgICAgICAg
ICAgICAgICAgLy8gRG9uJ3QgdHJ5IHRvIHJlbW92ZSBjaGlsZHJlbiBpZiBtX3Vwc3RyZWFtU3Rh
cnQgd2FzIGluc2lkZSBtX2Rvd25zdHJlYW1FbmQubm9kZSgpCkBAIC01MDgsNyArNTA4LDcgQEAg
dm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVHZW5lcmFsRGVsZXRlKCkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChuKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9m
ZnNldCA9IG4tPm5vZGVJbmRleCgpICsgMTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICByZW1vdmVDaGlsZHJlbkluUmFuZ2UobV9kb3duc3RyZWFtRW5kLm5vZGUo
KSwgb2Zmc2V0LCBtX2Rvd25zdHJlYW1FbmQubV9vZmZzZXQpOworICAgICAgICAgICAgICAgICAg
ICByZW1vdmVDaGlsZHJlbkluUmFuZ2UobV9kb3duc3RyZWFtRW5kLm5vZGUoKSwgb2Zmc2V0LCBt
X2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIG1fZG93bnN0cmVhbUVuZCA9IFBvc2l0aW9uKG1fZG93bnN0cmVhbUVuZC5ub2RlKCks
IG9mZnNldCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNTIzLDEyICs1
MjMsMTIgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpmaXh1cFdoaXRlc3BhY2UoKQog
ICAgIGlmIChtX2xlYWRpbmdXaGl0ZXNwYWNlLmlzTm90TnVsbCgpICYmICFtX2xlYWRpbmdXaGl0
ZXNwYWNlLmlzUmVuZGVyZWRDaGFyYWN0ZXIoKSkgewogICAgICAgICBUZXh0KiB0ZXh0Tm9kZSA9
IHN0YXRpY19jYXN0PFRleHQqPihtX2xlYWRpbmdXaGl0ZXNwYWNlLm5vZGUoKSk7CiAgICAgICAg
IEFTU0VSVCghdGV4dE5vZGUtPnJlbmRlcmVyKCkgfHwgdGV4dE5vZGUtPnJlbmRlcmVyKCktPnN0
eWxlKCktPmNvbGxhcHNlV2hpdGVTcGFjZSgpKTsKLSAgICAgICAgcmVwbGFjZVRleHRJbk5vZGUo
dGV4dE5vZGUsIG1fbGVhZGluZ1doaXRlc3BhY2UubV9vZmZzZXQsIDEsIG5vbkJyZWFraW5nU3Bh
Y2VTdHJpbmcoKSk7CisgICAgICAgIHJlcGxhY2VUZXh0SW5Ob2RlKHRleHROb2RlLCBtX2xlYWRp
bmdXaGl0ZXNwYWNlLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIDEsIG5vbkJyZWFraW5nU3Bh
Y2VTdHJpbmcoKSk7CiAgICAgfQogICAgIGlmIChtX3RyYWlsaW5nV2hpdGVzcGFjZS5pc05vdE51
bGwoKSAmJiAhbV90cmFpbGluZ1doaXRlc3BhY2UuaXNSZW5kZXJlZENoYXJhY3RlcigpKSB7CiAg
ICAgICAgIFRleHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KG1fdHJhaWxpbmdXaGl0
ZXNwYWNlLm5vZGUoKSk7CiAgICAgICAgIEFTU0VSVCghdGV4dE5vZGUtPnJlbmRlcmVyKCkgfHx0
ZXh0Tm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Y29sbGFwc2VXaGl0ZVNwYWNlKCkpOwotICAg
ICAgICByZXBsYWNlVGV4dEluTm9kZSh0ZXh0Tm9kZSwgbV90cmFpbGluZ1doaXRlc3BhY2UubV9v
ZmZzZXQsIDEsIG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CisgICAgICAgIHJlcGxhY2VUZXh0
SW5Ob2RlKHRleHROb2RlLCBtX3RyYWlsaW5nV2hpdGVzcGFjZS5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpLCAxLCBub25CcmVha2luZ1NwYWNlU3RyaW5nKCkpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAppbmRleCA4NWE4ZjdiLi5mNTM4ODcyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTM5NSw5ICsx
Mzk1LDkgQEAgdm9pZCBFZGl0b3I6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwg
Y29uc3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KICAgICAgICAgVHlwaW5nQ29tbWFuZDo6
aW5zZXJ0VGV4dChtX2ZyYW1lLT5kb2N1bWVudCgpLCB0ZXh0LCB0cnVlLCB0cnVlKTsKIAogICAg
ICAgICBOb2RlKiBiYXNlTm9kZSA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5iYXNlKCkubm9kZSgp
OwotICAgICAgICB1bnNpZ25lZCBiYXNlT2Zmc2V0ID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPmJh
c2UoKS5tX29mZnNldDsKKyAgICAgICAgdW5zaWduZWQgYmFzZU9mZnNldCA9IG1fZnJhbWUtPnNl
bGVjdGlvbigpLT5iYXNlKCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICAgICAgTm9k
ZSogZXh0ZW50Tm9kZSA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5leHRlbnQoKS5ub2RlKCk7Ci0g
ICAgICAgIHVuc2lnbmVkIGV4dGVudE9mZnNldCA9IG1fZnJhbWUtPnNlbGVjdGlvbigpLT5leHRl
bnQoKS5tX29mZnNldDsKKyAgICAgICAgdW5zaWduZWQgZXh0ZW50T2Zmc2V0ID0gbV9mcmFtZS0+
c2VsZWN0aW9uKCktPmV4dGVudCgpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAKICAgICAg
ICAgaWYgKGJhc2VOb2RlICYmIGJhc2VOb2RlID09IGV4dGVudE5vZGUgJiYgYmFzZU5vZGUtPmlz
VGV4dE5vZGUoKSAmJiBiYXNlT2Zmc2V0ICsgdGV4dC5sZW5ndGgoKSA9PSBleHRlbnRPZmZzZXQp
IHsKICAgICAgICAgICAgIG1fY29tcG9zaXRpb25Ob2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KGJh
c2VOb2RlKTsKQEAgLTE4MDIsNyArMTgwMiw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0
TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCiAgICAgICAgIFBvc2l0aW9uIHJhbmdlQ29tcGxpYW50UG9zaXRpb24gPSBy
YW5nZUNvbXBsaWFudEVxdWl2YWxlbnQocG9zaXRpb24pOwotICAgICAgICBzcGVsbGluZ1NlYXJj
aFJhbmdlLT5zZXRTdGFydChyYW5nZUNvbXBsaWFudFBvc2l0aW9uLm5vZGUoKSwgcmFuZ2VDb21w
bGlhbnRQb3NpdGlvbi5tX29mZnNldCwgZWMpOworICAgICAgICBzcGVsbGluZ1NlYXJjaFJhbmdl
LT5zZXRTdGFydChyYW5nZUNvbXBsaWFudFBvc2l0aW9uLm5vZGUoKSwgcmFuZ2VDb21wbGlhbnRQ
b3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlYyk7CiAgICAgICAgIHN0YXJ0ZWRX
aXRoU2VsZWN0aW9uID0gZmFsc2U7ICAgLy8gd29uJ3QgbmVlZCB0byB3cmFwCiAgICAgfQogICAg
IApAQCAtMjQ2MSwxMyArMjQ2MSwxMyBAQCBib29sIEVkaXRvcjo6Z2V0Q29tcG9zaXRpb25TZWxl
Y3Rpb24odW5zaWduZWQmIHNlbGVjdGlvblN0YXJ0LCB1bnNpZ25lZCYgc2VsZWN0aQogICAgIGlm
IChlbmQubm9kZSgpICE9IG1fY29tcG9zaXRpb25Ob2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0Lm1fb2Zmc2V0KSA8IG1fY29t
cG9zaXRpb25TdGFydCkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0YXJ0LmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCkpIDwgbV9jb21wb3NpdGlvblN0YXJ0KQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQubV9vZmZzZXQpID4g
bV9jb21wb3NpdGlvbkVuZCkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZC5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpKSA+IG1fY29tcG9zaXRpb25FbmQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHNlbGVjdGlvblN0YXJ0ID0gc3RhcnQubV9vZmZzZXQgLSBtX2NvbXBv
c2l0aW9uU3RhcnQ7Ci0gICAgc2VsZWN0aW9uRW5kID0gc3RhcnQubV9vZmZzZXQgLSBtX2NvbXBv
c2l0aW9uRW5kOworICAgIHNlbGVjdGlvblN0YXJ0ID0gc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKSAtIG1fY29tcG9zaXRpb25TdGFydDsKKyAgICBzZWxlY3Rpb25FbmQgPSBzdGFydC5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIC0gbV9jb21wb3NpdGlvbkVuZDsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0Nv
bW1hbmQuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCmlu
ZGV4IDJhZGE2YTIuLmYwMjA0NTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRM
aW5lQnJlYWtDb21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGluZUJyZWFr
Q29tbWFuZC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1h
bmQ6OmRvQXBwbHkoKQogICAgICAgICAKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZGluZ1Bv
c2l0aW9uKFBvc2l0aW9uKG5vZGVUb0luc2VydC5nZXQoKSwgMCkpOwogICAgICAgICBzZXRFbmRp
bmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihlbmRpbmdQb3NpdGlvbikpOwotICAgIH0gZWxz
ZSBpZiAocG9zLm1fb2Zmc2V0IDw9IGNhcmV0TWluT2Zmc2V0KHBvcy5ub2RlKCkpKSB7CisgICAg
fSBlbHNlIGlmIChwb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA8PSBjYXJldE1pbk9mZnNl
dChwb3Mubm9kZSgpKSkgewogICAgICAgICBpbnNlcnROb2RlQXQobm9kZVRvSW5zZXJ0LmdldCgp
LCBwb3MpOwogICAgICAgICAKICAgICAgICAgLy8gSW5zZXJ0IGFuIGV4dHJhIGJyIG9yICdcbicg
aWYgdGhlIGp1c3QgaW5zZXJ0ZWQgb25lIGNvbGxhcHNlZC4KQEAgLTEyOCw3ICsxMjgsNyBAQCB2
b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICBzZXRFbmRpbmdT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihwb3NpdGlvbkFmdGVyTm9kZShub2RlVG9JbnNlcnQu
Z2V0KCkpLCBET1dOU1RSRUFNKSk7CiAgICAgLy8gSWYgd2UncmUgaW5zZXJ0aW5nIGFmdGVyIGFs
bCBvZiB0aGUgcmVuZGVyZWQgdGV4dCBpbiBhIHRleHQgbm9kZSwgb3IgaW50byBhIG5vbi10ZXh0
IG5vZGUsCiAgICAgLy8gYSBzaW1wbGUgaW5zZXJ0aW9uIGlzIHN1ZmZpY2llbnQuCi0gICAgfSBl
bHNlIGlmIChwb3MubV9vZmZzZXQgPj0gY2FyZXRNYXhPZmZzZXQocG9zLm5vZGUoKSkgfHwgIXBv
cy5ub2RlKCktPmlzVGV4dE5vZGUoKSkgeworICAgIH0gZWxzZSBpZiAocG9zLmRlcHJlY2F0ZWRF
ZGl0aW5nT2Zmc2V0KCkgPj0gY2FyZXRNYXhPZmZzZXQocG9zLm5vZGUoKSkgfHwgIXBvcy5ub2Rl
KCktPmlzVGV4dE5vZGUoKSkgewogICAgICAgICBpbnNlcnROb2RlQXQobm9kZVRvSW5zZXJ0Lmdl
dCgpLCBwb3MpOwogICAgICAgICBzZXRFbmRpbmdTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihw
b3NpdGlvbkFmdGVyTm9kZShub2RlVG9JbnNlcnQuZ2V0KCkpLCBET1dOU1RSRUFNKSk7CiAgICAg
fSBlbHNlIHsKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEluc2VydExpbmVCcmVha0NvbW1hbmQ6
OmRvQXBwbHkoKQogICAgICAgICAKICAgICAgICAgLy8gRG8gdGhlIHNwbGl0CiAgICAgICAgIFRl
eHQqIHRleHROb2RlID0gc3RhdGljX2Nhc3Q8VGV4dCo+KHBvcy5ub2RlKCkpOwotICAgICAgICBz
cGxpdFRleHROb2RlKHRleHROb2RlLCBwb3MubV9vZmZzZXQpOworICAgICAgICBzcGxpdFRleHRO
b2RlKHRleHROb2RlLCBwb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAgICAgICAgIGlu
c2VydE5vZGVCZWZvcmUobm9kZVRvSW5zZXJ0LCB0ZXh0Tm9kZSk7CiAgICAgICAgIFBvc2l0aW9u
IGVuZGluZ1Bvc2l0aW9uID0gUG9zaXRpb24odGV4dE5vZGUsIDApOwogICAgICAgICAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNw
cCBiL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcApp
bmRleCBjYjQ5MjQ0Li40ZDVjM2QxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBJ
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgaWYgKGlz
Rmlyc3RJbkJsb2NrICYmICFuZXN0TmV3QmxvY2spCiAgICAgICAgICAgICByZWZOb2RlID0gc3Rh
cnRCbG9jazsKICAgICAgICAgZWxzZSBpZiAoaW5zZXJ0aW9uUG9zaXRpb24ubm9kZSgpID09IHN0
YXJ0QmxvY2sgJiYgbmVzdE5ld0Jsb2NrKSB7Ci0gICAgICAgICAgICByZWZOb2RlID0gc3RhcnRC
bG9jay0+Y2hpbGROb2RlKGluc2VydGlvblBvc2l0aW9uLm1fb2Zmc2V0KTsKKyAgICAgICAgICAg
IHJlZk5vZGUgPSBzdGFydEJsb2NrLT5jaGlsZE5vZGUoaW5zZXJ0aW9uUG9zaXRpb24uZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAgICAgICAgICAgICBBU1NFUlQocmVmTm9kZSk7IC8vIG11
c3QgYmUgdHJ1ZSBvciB3ZSdkIGJlIGluIHRoZSBlbmQgb2YgYmxvY2sgY2FzZQogICAgICAgICB9
IGVsc2UKICAgICAgICAgICAgIHJlZk5vZGUgPSBpbnNlcnRpb25Qb3NpdGlvbi5ub2RlKCk7CkBA
IC0yNDgsMTYgKzI0OCwxNiBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6
OmRvQXBwbHkoKQogICAgIGlmIChsZWFkaW5nV2hpdGVzcGFjZS5pc05vdE51bGwoKSkgewogICAg
ICAgICBUZXh0KiB0ZXh0Tm9kZSA9IHN0YXRpY19jYXN0PFRleHQqPihsZWFkaW5nV2hpdGVzcGFj
ZS5ub2RlKCkpOwogICAgICAgICBBU1NFUlQoIXRleHROb2RlLT5yZW5kZXJlcigpIHx8IHRleHRO
b2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5jb2xsYXBzZVdoaXRlU3BhY2UoKSk7Ci0gICAgICAg
IHJlcGxhY2VUZXh0SW5Ob2RlKHRleHROb2RlLCBsZWFkaW5nV2hpdGVzcGFjZS5tX29mZnNldCwg
MSwgbm9uQnJlYWtpbmdTcGFjZVN0cmluZygpKTsKKyAgICAgICAgcmVwbGFjZVRleHRJbk5vZGUo
dGV4dE5vZGUsIGxlYWRpbmdXaGl0ZXNwYWNlLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIDEs
IG5vbkJyZWFraW5nU3BhY2VTdHJpbmcoKSk7CiAgICAgfQogICAgIAogICAgIC8vIFNwbGl0IGF0
IHBvcyBpZiBpbiB0aGUgbWlkZGxlIG9mIGEgdGV4dCBub2RlLgogICAgIGlmIChpbnNlcnRpb25Q
b3NpdGlvbi5ub2RlKCktPmlzVGV4dE5vZGUoKSkgewogICAgICAgICBUZXh0KiB0ZXh0Tm9kZSA9
IHN0YXRpY19jYXN0PFRleHQqPihpbnNlcnRpb25Qb3NpdGlvbi5ub2RlKCkpOwotICAgICAgICBi
b29sIGF0RW5kID0gKHVuc2lnbmVkKWluc2VydGlvblBvc2l0aW9uLm1fb2Zmc2V0ID49IHRleHRO
b2RlLT5sZW5ndGgoKTsKLSAgICAgICAgaWYgKGluc2VydGlvblBvc2l0aW9uLm1fb2Zmc2V0ID4g
MCAmJiAhYXRFbmQpIHsKLSAgICAgICAgICAgIHNwbGl0VGV4dE5vZGUodGV4dE5vZGUsIGluc2Vy
dGlvblBvc2l0aW9uLm1fb2Zmc2V0KTsKLSAgICAgICAgICAgIGluc2VydGlvblBvc2l0aW9uLm1f
b2Zmc2V0ID0gMDsKKyAgICAgICAgYm9vbCBhdEVuZCA9ICh1bnNpZ25lZClpbnNlcnRpb25Qb3Np
dGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID49IHRleHROb2RlLT5sZW5ndGgoKTsKKyAg
ICAgICAgaWYgKGluc2VydGlvblBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPiAw
ICYmICFhdEVuZCkgeworICAgICAgICAgICAgc3BsaXRUZXh0Tm9kZSh0ZXh0Tm9kZSwgaW5zZXJ0
aW9uUG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CisgICAgICAgICAgICBpbnNl
cnRpb25Qb3NpdGlvbi5tb3ZlVG9PZmZzZXQoMCk7CiAgICAgICAgICAgICB2aXNpYmxlUG9zID0g
VmlzaWJsZVBvc2l0aW9uKGluc2VydGlvblBvc2l0aW9uKTsKICAgICAgICAgICAgIHNwbGl0VGV4
dCA9IHRydWU7CiAgICAgICAgIH0KQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIEluc2VydFBhcmFn
cmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvQXBwbHkoKQogICAgIC8vIE1vdmUgdGhlIHN0YXJ0IG5v
ZGUgYW5kIHRoZSBzaWJsaW5ncyBvZiB0aGUgc3RhcnQgbm9kZS4KICAgICBpZiAoaW5zZXJ0aW9u
UG9zaXRpb24ubm9kZSgpICE9IHN0YXJ0QmxvY2spIHsKICAgICAgICAgTm9kZSogbiA9IGluc2Vy
dGlvblBvc2l0aW9uLm5vZGUoKTsKLSAgICAgICAgaWYgKGluc2VydGlvblBvc2l0aW9uLm1fb2Zm
c2V0ID49IGNhcmV0TWF4T2Zmc2V0KG4pKQorICAgICAgICBpZiAoaW5zZXJ0aW9uUG9zaXRpb24u
ZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+PSBjYXJldE1heE9mZnNldChuKSkKICAgICAgICAg
ICAgIG4gPSBuLT5uZXh0U2libGluZygpOwogCiAgICAgICAgIHdoaWxlIChuICYmIG4gIT0gYmxv
Y2tUb0luc2VydCkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21t
YW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKaW5kZXggOTI3
OTNjNi4uYmY2ZmQxOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL0luc2VydFRleHRDb21t
YW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCkBAIC04
OSw5ICs4OSw5IEBAIGJvb2wgSW5zZXJ0VGV4dENvbW1hbmQ6OnBlcmZvcm1Ucml2aWFsUmVwbGFj
ZShjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgc2VsZWN0SW5zCiAgICAgaWYgKHN0YXJ0Lm5vZGUo
KSAhPSBlbmQubm9kZSgpIHx8ICFzdGFydC5ub2RlKCktPmlzVGV4dE5vZGUoKSB8fCBpc1RhYlNw
YW5UZXh0Tm9kZShzdGFydC5ub2RlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IAotICAgIHJlcGxhY2VUZXh0SW5Ob2RlKHN0YXRpY19jYXN0PFRleHQqPihzdGFydC5ub2RlKCkp
LCBzdGFydC5tX29mZnNldCwgZW5kLm1fb2Zmc2V0IC0gc3RhcnQubV9vZmZzZXQsIHRleHQpOwor
ICAgIHJlcGxhY2VUZXh0SW5Ob2RlKHN0YXRpY19jYXN0PFRleHQqPihzdGFydC5ub2RlKCkpLCBz
dGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZz
ZXQoKSAtIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIHRleHQpOwogICAgIAotICAg
IFBvc2l0aW9uIGVuZFBvc2l0aW9uKHN0YXJ0Lm5vZGUoKSwgc3RhcnQubV9vZmZzZXQgKyB0ZXh0
Lmxlbmd0aCgpKTsKKyAgICBQb3NpdGlvbiBlbmRQb3NpdGlvbihzdGFydC5ub2RlKCksIHN0YXJ0
LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgKyB0ZXh0Lmxlbmd0aCgpKTsKICAgICAKICAgICAv
LyBXZSBjb3VsZCBoYXZlIGluc2VydGVkIGEgcGFydCBvZiBjb21wb3NlZCBjaGFyYWN0ZXIgc2Vx
dWVuY2UsCiAgICAgLy8gc28gd2UgYXJlIGJhc2ljYWxseSB0cmVhdGluZyBlbmRpbmcgc2VsZWN0
aW9uIGFzIGEgcmFuZ2UgdG8gYXZvaWQgdmFsaWRhdGlvbi4KQEAgLTE3Niw3ICsxNzYsNyBAQCB2
b2lkIEluc2VydFRleHRDb21tYW5kOjppbnB1dChjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwg
Ym9vbCBzZWxlY3RJbnNlcnRlZFRleAogICAgICAgICBpZiAocGxhY2Vob2xkZXIuaXNOb3ROdWxs
KCkpCiAgICAgICAgICAgICByZW1vdmVQbGFjZWhvbGRlckF0KHBsYWNlaG9sZGVyKTsKICAgICAg
ICAgVGV4dCAqdGV4dE5vZGUgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KHN0YXJ0UG9zaXRpb24ubm9k
ZSgpKTsKLSAgICAgICAgaW50IG9mZnNldCA9IHN0YXJ0UG9zaXRpb24ubV9vZmZzZXQ7CisgICAg
ICAgIGludCBvZmZzZXQgPSBzdGFydFBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7
CiAKICAgICAgICAgaW5zZXJ0VGV4dEludG9Ob2RlKHRleHROb2RlLCBvZmZzZXQsIHRleHQpOwog
ICAgICAgICBlbmRQb3NpdGlvbiA9IFBvc2l0aW9uKHRleHROb2RlLCBvZmZzZXQgKyB0ZXh0Lmxl
bmd0aCgpKTsKQEAgLTIyOCw3ICsyMjgsNyBAQCBQb3NpdGlvbiBJbnNlcnRUZXh0Q29tbWFuZDo6
aW5zZXJ0VGFiKGNvbnN0IFBvc2l0aW9uJiBwb3MpCiAgICAgUG9zaXRpb24gaW5zZXJ0UG9zID0g
VmlzaWJsZVBvc2l0aW9uKHBvcywgRE9XTlNUUkVBTSkuZGVlcEVxdWl2YWxlbnQoKTsKICAgICAg
ICAgCiAgICAgTm9kZSAqbm9kZSA9IGluc2VydFBvcy5ub2RlKCk7Ci0gICAgdW5zaWduZWQgaW50
IG9mZnNldCA9IGluc2VydFBvcy5tX29mZnNldDsKKyAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0ID0g
aW5zZXJ0UG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAKICAgICAvLyBrZWVwIHRhYnMg
Y29hbGVzY2VkIGluIHRhYiBzcGFuCiAgICAgaWYgKGlzVGFiU3BhblRleHROb2RlKG5vZGUpKSB7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIv
V2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCAyYzY1NmU3Li4w
YTJkM2Y0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQu
Y3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTQ4
LDE0ICs0OCwxNCBAQCB2b2lkIE1vdmVTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAg
ICAgCiAgICAgLy8gVXBkYXRlIHRoZSBwb3NpdGlvbiBvdGhlcndpc2UgaXQgbWF5IGJlY29tZSBp
bnZhbGlkIGFmdGVyIHRoZSBzZWxlY3Rpb24gaXMgZGVsZXRlZC4KICAgICBOb2RlICpwb3NpdGlv
bk5vZGUgPSBtX3Bvc2l0aW9uLm5vZGUoKTsKLSAgICBpbnQgcG9zaXRpb25PZmZzZXQgPSBtX3Bv
c2l0aW9uLm1fb2Zmc2V0OworICAgIGludCBwb3NpdGlvbk9mZnNldCA9IG1fcG9zaXRpb24uZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICBQb3NpdGlvbiBzZWxlY3Rpb25FbmQgPSBzZWxl
Y3Rpb24uZW5kKCk7Ci0gICAgaW50IHNlbGVjdGlvbkVuZE9mZnNldCA9IHNlbGVjdGlvbkVuZC5t
X29mZnNldDsgICAgCisgICAgaW50IHNlbGVjdGlvbkVuZE9mZnNldCA9IHNlbGVjdGlvbkVuZC5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAgIGlmIChzZWxlY3Rpb25FbmQubm9kZSgpID09
IHBvc2l0aW9uTm9kZSAmJiBzZWxlY3Rpb25FbmRPZmZzZXQgPCBwb3NpdGlvbk9mZnNldCkgewog
ICAgICAgICBwb3NpdGlvbk9mZnNldCAtPSBzZWxlY3Rpb25FbmRPZmZzZXQ7CiAgICAgICAgIFBv
c2l0aW9uIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uLnN0YXJ0KCk7CiAgICAgICAgIGlmIChz
ZWxlY3Rpb25TdGFydC5ub2RlKCkgPT0gcG9zaXRpb25Ob2RlKSB7Ci0gICAgICAgICAgICBwb3Np
dGlvbk9mZnNldCArPSBzZWxlY3Rpb25TdGFydC5tX29mZnNldDsKKyAgICAgICAgICAgIHBvc2l0
aW9uT2Zmc2V0ICs9IHNlbGVjdGlvblN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAg
ICAgICAgIH0KICAgICAgICAgcG9zID0gUG9zaXRpb24ocG9zaXRpb25Ob2RlLCBwb3NpdGlvbk9m
ZnNldCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAKaW5kZXggZjEzNTllMy4uNmVkNmE0NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuY3BwCkBAIC04OTIsNyArODkyLDcgQEAgdm9pZCBSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgCiAgICAgLy8gV2UgaW5zZXJ0ZWQgYmVmb3JlIHRo
ZSBzdGFydEJsb2NrIHRvIHByZXZlbnQgbmVzdGluZywgYW5kIHRoZSBjb250ZW50IGJlZm9yZSB0
aGUgc3RhcnRCbG9jayB3YXNuJ3QgaW4gaXRzIG93biBibG9jayBhbmQKICAgICAvLyBkaWRuJ3Qg
aGF2ZSBhIGJyIGFmdGVyIGl0LCBzbyB0aGUgaW5zZXJ0ZWQgY29udGVudCBlbmRlZCB1cCBpbiB0
aGUgc2FtZSBwYXJhZ3JhcGguCi0gICAgaWYgKHN0YXJ0QmxvY2sgJiYgaW5zZXJ0aW9uUG9zLm5v
ZGUoKSA9PSBzdGFydEJsb2NrLT5wYXJlbnROb2RlKCkgJiYgKHVuc2lnbmVkKWluc2VydGlvblBv
cy5tX29mZnNldCA8IHN0YXJ0QmxvY2stPm5vZGVJbmRleCgpICYmICFpc1N0YXJ0T2ZQYXJhZ3Jh
cGgoc3RhcnRPZkluc2VydGVkQ29udGVudCkpCisgICAgaWYgKHN0YXJ0QmxvY2sgJiYgaW5zZXJ0
aW9uUG9zLm5vZGUoKSA9PSBzdGFydEJsb2NrLT5wYXJlbnROb2RlKCkgJiYgKHVuc2lnbmVkKWlu
c2VydGlvblBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIDwgc3RhcnRCbG9jay0+bm9kZUlu
ZGV4KCkgJiYgIWlzU3RhcnRPZlBhcmFncmFwaChzdGFydE9mSW5zZXJ0ZWRDb250ZW50KSkKICAg
ICAgICAgaW5zZXJ0Tm9kZUF0KGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKS5nZXQoKSwg
c3RhcnRPZkluc2VydGVkQ29udGVudC5kZWVwRXF1aXZhbGVudCgpKTsKICAgICAKICAgICBQb3Np
dGlvbiBsYXN0UG9zaXRpb25Ub1NlbGVjdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9T
ZWxlY3Rpb25Db250cm9sbGVyLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9s
bGVyLmNwcAppbmRleCBkMGI2Y2ZmLi5hZDI5ZjRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRp
bmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlv
bkNvbnRyb2xsZXIuY3BwCkBAIC0xMDE5LDkgKzEwMTksOSBAQCB2b2lkIFNlbGVjdGlvbkNvbnRy
b2xsZXI6OmRlYnVnUmVuZGVyZXIoUmVuZGVyT2JqZWN0ICpyLCBib29sIHNlbGVjdGVkKSBjb25z
dAogICAgICAgICBpZiAoc2VsZWN0ZWQpIHsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAwOwog
ICAgICAgICAgICAgaWYgKHItPm5vZGUoKSA9PSBtX3NlbC5zdGFydCgpLm5vZGUoKSkKLSAgICAg
ICAgICAgICAgICBvZmZzZXQgPSBtX3NlbC5zdGFydCgpLm1fb2Zmc2V0OworICAgICAgICAgICAg
ICAgIG9mZnNldCA9IG1fc2VsLnN0YXJ0KCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKHItPm5vZGUoKSA9PSBtX3NlbC5lbmQoKS5ub2RlKCkpCi0gICAg
ICAgICAgICAgICAgb2Zmc2V0ID0gbV9zZWwuZW5kKCkubV9vZmZzZXQ7CisgICAgICAgICAgICAg
ICAgb2Zmc2V0ID0gbV9zZWwuZW5kKCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGludCBwb3M7CiAgICAgICAgICAgICBJbmxpbmVUZXh0
Qm94ICpib3ggPSB0ZXh0UmVuZGVyZXItPmZpbmROZXh0SW5saW5lVGV4dEJveChvZmZzZXQsIHBv
cyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IDU4MDViNjAuLjM0ZmE1NGIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0xNTYyLDcgKzE1NjIsNyBAQCBQYXNzUmVmUHRyPFJh
bmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKEVsZW1lbnQgKnNj
b3BlLCBpbnQgcgogICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1bkVuZCA9IFZpc2libGVQb3Np
dGlvbihydW5TdGFydCkubmV4dCgpLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgICAgICAgICAgICAg
aWYgKHJ1bkVuZC5pc05vdE51bGwoKSkgewogICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRFbmQocnVu
RW5kLm5vZGUoKSwgcnVuRW5kLm1fb2Zmc2V0LCBlYyk7CisgICAgICAgICAgICAgICAgICAgIHRl
eHRSdW5SYW5nZS0+c2V0RW5kKHJ1bkVuZC5ub2RlKCksIHJ1bkVuZC5kZXByZWNhdGVkRWRpdGlu
Z09mZnNldCgpLCBlYyk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZWMpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9U
eXBpbmdDb21tYW5kLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcAppbmRl
eCAzMGZmMjM0Li42OGJiNGM5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29t
bWFuZC5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0NvbW1hbmQuY3BwCkBAIC00MTks
NyArNDE5LDcgQEAgdm9pZCBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKFRleHRHcmFu
dWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraWxsUmluZykKIAogICAgICAgICAgICAgc2VsZWN0
aW9uVG9EZWxldGUgPSBzZWxlY3Rpb24uc2VsZWN0aW9uKCk7CiAKLSAgICAgICAgICAgIGlmIChn
cmFudWxhcml0eSA9PSBDaGFyYWN0ZXJHcmFudWxhcml0eSAmJiBzZWxlY3Rpb25Ub0RlbGV0ZS5l
bmQoKS5ub2RlKCkgPT0gc2VsZWN0aW9uVG9EZWxldGUuc3RhcnQoKS5ub2RlKCkgJiYgc2VsZWN0
aW9uVG9EZWxldGUuZW5kKCkubV9vZmZzZXQgLSBzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpLm1f
b2Zmc2V0ID4gMSkgeworICAgICAgICAgICAgaWYgKGdyYW51bGFyaXR5ID09IENoYXJhY3Rlckdy
YW51bGFyaXR5ICYmIHNlbGVjdGlvblRvRGVsZXRlLmVuZCgpLm5vZGUoKSA9PSBzZWxlY3Rpb25U
b0RlbGV0ZS5zdGFydCgpLm5vZGUoKSAmJiBzZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKS5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpIC0gc2VsZWN0aW9uVG9EZWxldGUuc3RhcnQoKS5kZXByZWNhdGVk
RWRpdGluZ09mZnNldCgpID4gMSkgewogICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBt
dWx0aXBsZSBVbmljb2RlIGNvZGUgcG9pbnRzIHRvIGJlIGRlbGV0ZWQsIGFkanVzdCB0aGUgcmFu
Z2UgdG8gbWF0Y2ggcGxhdGZvcm0gY29udmVudGlvbnMuCiAgICAgICAgICAgICAgICAgc2VsZWN0
aW9uVG9EZWxldGUuc2V0V2l0aG91dFZhbGlkYXRpb24oc2VsZWN0aW9uVG9EZWxldGUuZW5kKCks
IHNlbGVjdGlvblRvRGVsZXRlLmVuZCgpLnByZXZpb3VzKEJhY2t3YXJkRGVsZXRpb24pKTsKICAg
ICAgICAgICAgIH0KQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndh
cmREZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSwgYm9vbCBraQog
ICAgICAgICAgICAgaWYgKHZpc2libGVFbmQgPT0gZW5kT2ZQYXJhZ3JhcGgodmlzaWJsZUVuZCkp
CiAgICAgICAgICAgICAgICAgZG93bnN0cmVhbUVuZCA9IHZpc2libGVFbmQubmV4dCh0cnVlKS5k
ZWVwRXF1aXZhbGVudCgpLmRvd25zdHJlYW0oKTsKICAgICAgICAgICAgIC8vIFdoZW4gZGVsZXRp
bmcgdGFibGVzOiBTZWxlY3QgdGhlIHRhYmxlIGZpcnN0LCB0aGVuIHBlcmZvcm0gdGhlIGRlbGV0
aW9uCi0gICAgICAgICAgICBpZiAoZG93bnN0cmVhbUVuZC5ub2RlKCkgJiYgZG93bnN0cmVhbUVu
ZC5ub2RlKCktPnJlbmRlcmVyKCkgJiYgZG93bnN0cmVhbUVuZC5ub2RlKCktPnJlbmRlcmVyKCkt
PmlzVGFibGUoKSAmJiBkb3duc3RyZWFtRW5kLm1fb2Zmc2V0ID09IDApIHsKKyAgICAgICAgICAg
IGlmIChkb3duc3RyZWFtRW5kLm5vZGUoKSAmJiBkb3duc3RyZWFtRW5kLm5vZGUoKS0+cmVuZGVy
ZXIoKSAmJiBkb3duc3RyZWFtRW5kLm5vZGUoKS0+cmVuZGVyZXIoKS0+aXNUYWJsZSgpICYmIGRv
d25zdHJlYW1FbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA9PSAwKSB7CiAgICAgICAgICAg
ICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9u
KCkuZW5kKCksIGxhc3REZWVwRWRpdGluZ1Bvc2l0aW9uRm9yTm9kZShkb3duc3RyZWFtRW5kLm5v
ZGUoKSksIERPV05TVFJFQU0pKTsKICAgICAgICAgICAgICAgICB0eXBpbmdBZGRlZFRvT3BlbkNv
bW1hbmQoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01MDcsMTAgKzUwNywxMCBAQCB2
b2lkIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKFRleHRHcmFudWxhcml0
eSBncmFudWxhcml0eSwgYm9vbCBraQogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICBpbnQgZXh0cmFDaGFyYWN0ZXJzOwogICAgICAgICAgICAgICAgICAgICBpZiAo
c2VsZWN0aW9uVG9EZWxldGUuc3RhcnQoKS5ub2RlKCkgPT0gc2VsZWN0aW9uVG9EZWxldGUuZW5k
KCkubm9kZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFDaGFyYWN0ZXJzID0gc2Vs
ZWN0aW9uVG9EZWxldGUuZW5kKCkubV9vZmZzZXQgLSBzZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgp
Lm1fb2Zmc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFDaGFyYWN0ZXJzID0gc2Vs
ZWN0aW9uVG9EZWxldGUuZW5kKCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSAtIHNlbGVjdGlv
blRvRGVsZXRlLnN0YXJ0KCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICAgICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFDaGFyYWN0ZXJzID0g
c2VsZWN0aW9uVG9EZWxldGUuZW5kKCkubV9vZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgIGV4
dGVudCA9IFBvc2l0aW9uKGV4dGVudC5ub2RlKCksIGV4dGVudC5tX29mZnNldCArIGV4dHJhQ2hh
cmFjdGVycyk7CisgICAgICAgICAgICAgICAgICAgICAgICBleHRyYUNoYXJhY3RlcnMgPSBzZWxl
Y3Rpb25Ub0RlbGV0ZS5lbmQoKS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOworICAgICAgICAg
ICAgICAgICAgICBleHRlbnQgPSBQb3NpdGlvbihleHRlbnQubm9kZSgpLCBleHRlbnQuZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKSArIGV4dHJhQ2hhcmFjdGVycyk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIHNlbGVjdGlvbkFmdGVyVW5kby5zZXRXaXRob3V0VmFsaWRhdGlv
bihzdGFydGluZ1NlbGVjdGlvbigpLnN0YXJ0KCksIGV4dGVudCk7CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCmluZGV4IDZmYjE2ZmQuLjJkYjZkMzEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCisrKyBiL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBAIC01MjAsNyArNTIwLDcgQEAgVUNoYXIzMiBW
aXNpYmxlUG9zaXRpb246OmNoYXJhY3RlckFmdGVyKCkgY29uc3QKICAgICBpZiAoIW5vZGUgfHwg
IW5vZGUtPmlzVGV4dE5vZGUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgVGV4dCogdGV4dE5v
ZGUgPSBzdGF0aWNfY2FzdDxUZXh0Kj4ocG9zLm5vZGUoKSk7Ci0gICAgdW5zaWduZWQgb2Zmc2V0
ID0gcG9zLm1fb2Zmc2V0OworICAgIHVuc2lnbmVkIG9mZnNldCA9IHBvcy5kZXByZWNhdGVkRWRp
dGluZ09mZnNldCgpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRleHROb2RlLT5sZW5ndGgoKTsK
ICAgICBpZiAob2Zmc2V0ID49IGxlbmd0aCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC01ODEsNyAr
NTgxLDcgQEAgdm9pZCBWaXNpYmxlUG9zaXRpb246OmRlYnVnUG9zaXRpb24oY29uc3QgY2hhciog
bXNnKSBjb25zdAogICAgIGlmIChpc051bGwoKSkKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJQ
b3NpdGlvbiBbJXNdOiBudWxsXG4iLCBtc2cpOwogICAgIGVsc2UKLSAgICAgICAgZnByaW50Zihz
dGRlcnIsICJQb3NpdGlvbiBbJXNdOiAlcyBbJXBdIGF0ICVkXG4iLCBtc2csIG1fZGVlcFBvc2l0
aW9uLm5vZGUoKS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpLCBtX2RlZXBQb3NpdGlvbi5ub2Rl
KCksIG1fZGVlcFBvc2l0aW9uLm1fb2Zmc2V0KTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJQ
b3NpdGlvbiBbJXNdOiAlcyBbJXBdIGF0ICVkXG4iLCBtc2csIG1fZGVlcFBvc2l0aW9uLm5vZGUo
KS0+bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpLCBtX2RlZXBQb3NpdGlvbi5ub2RlKCksIG1fZGVl
cFBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwogfQogCiAjaWZuZGVmIE5ERUJV
RwpAQCAtNjA1LDcgKzYwNSw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IG1ha2VSYW5nZShjb25zdCBW
aXNpYmxlUG9zaXRpb24gJnN0YXJ0LCBjb25zdCBWaXNpYmxlUG9zaXRpb24KICAgICAKICAgICBQ
b3NpdGlvbiBzID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KHN0YXJ0KTsKICAgICBQb3NpdGlv
biBlID0gcmFuZ2VDb21wbGlhbnRFcXVpdmFsZW50KGVuZCk7Ci0gICAgcmV0dXJuIFJhbmdlOjpj
cmVhdGUocy5ub2RlKCktPmRvY3VtZW50KCksIHMubm9kZSgpLCBzLm1fb2Zmc2V0LCBlLm5vZGUo
KSwgZS5tX29mZnNldCk7CisgICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUocy5ub2RlKCktPmRvY3Vt
ZW50KCksIHMubm9kZSgpLCBzLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGUubm9kZSgpLCBl
LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwogfQogCiBWaXNpYmxlUG9zaXRpb24gc3RhcnRW
aXNpYmxlUG9zaXRpb24oY29uc3QgUmFuZ2UgKnIsIEVBZmZpbml0eSBhZmZpbml0eSkKQEAgLTYy
Niw3ICs2MjYsNyBAQCBib29sIHNldFN0YXJ0KFJhbmdlICpyLCBjb25zdCBWaXNpYmxlUG9zaXRp
b24gJnZpc2libGVQb3NpdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFBvc2l0aW9u
IHAgPSByYW5nZUNvbXBsaWFudEVxdWl2YWxlbnQodmlzaWJsZVBvc2l0aW9uKTsKICAgICBpbnQg
Y29kZSA9IDA7Ci0gICAgci0+c2V0U3RhcnQocC5ub2RlKCksIHAubV9vZmZzZXQsIGNvZGUpOwor
ICAgIHItPnNldFN0YXJ0KHAubm9kZSgpLCBwLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGNv
ZGUpOwogICAgIHJldHVybiBjb2RlID09IDA7CiB9CiAKQEAgLTYzNiw3ICs2MzYsNyBAQCBib29s
IHNldEVuZChSYW5nZSAqciwgY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ2aXNpYmxlUG9zaXRpb24p
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBQb3NpdGlvbiBwID0gcmFuZ2VDb21wbGlhbnRF
cXVpdmFsZW50KHZpc2libGVQb3NpdGlvbik7CiAgICAgaW50IGNvZGUgPSAwOwotICAgIHItPnNl
dEVuZChwLm5vZGUoKSwgcC5tX29mZnNldCwgY29kZSk7CisgICAgci0+c2V0RW5kKHAubm9kZSgp
LCBwLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGNvZGUpOwogICAgIHJldHVybiBjb2RlID09
IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNw
cCBiL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAppbmRleCAyNzlhZGYyLi41
NjM3YTA3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAK
KysrIGIvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCkBAIC0xNjksNyArMTY5
LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gVmlzaWJsZVNlbGVjdGlvbjo6dG9Ob3JtYWxpemVkUmFu
Z2UoKSBjb25zdAogICAgICAgICBBU1NFUlQoaXNSYW5nZSgpKTsKICAgICAgICAgcyA9IG1fc3Rh
cnQuZG93bnN0cmVhbSgpOwogICAgICAgICBlID0gbV9lbmQudXBzdHJlYW0oKTsKLSAgICAgICAg
aWYgKFJhbmdlOjpjb21wYXJlQm91bmRhcnlQb2ludHMocy5ub2RlKCksIHMubV9vZmZzZXQsIGUu
bm9kZSgpLCBlLm1fb2Zmc2V0KSA+IDApIHsKKyAgICAgICAgaWYgKFJhbmdlOjpjb21wYXJlQm91
bmRhcnlQb2ludHMocy5ub2RlKCksIHMuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZS5ub2Rl
KCksIGUuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSkgPiAwKSB7CiAgICAgICAgICAgICAvLyBN
YWtlIHN1cmUgdGhlIHN0YXJ0IGlzIGJlZm9yZSB0aGUgZW5kLgogICAgICAgICAgICAgLy8gVGhl
IGVuZCBjYW4gd2luZCB1cCBiZWZvcmUgdGhlIHN0YXJ0IGlmIGNvbGxhcHNlZCB3aGl0ZXNwYWNl
IGlzIHRoZSBvbmx5IHRoaW5nIHNlbGVjdGVkLgogICAgICAgICAgICAgUG9zaXRpb24gdG1wID0g
czsKQEAgLTIxMyw3ICsyMTMsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxSYW5nZT4gbWFrZVNlYXJj
aFJhbmdlKGNvbnN0IFBvc2l0aW9uJiBwb3MpCiAKICAgICBQb3NpdGlvbiBzdGFydChyYW5nZUNv
bXBsaWFudEVxdWl2YWxlbnQocG9zKSk7CiAgICAgc2VhcmNoUmFuZ2UtPnNlbGVjdE5vZGVDb250
ZW50cyhib3VuZGFyeSwgZWMpOwotICAgIHNlYXJjaFJhbmdlLT5zZXRTdGFydChzdGFydC5ub2Rl
KCksIHN0YXJ0Lm1fb2Zmc2V0LCBlYyk7CisgICAgc2VhcmNoUmFuZ2UtPnNldFN0YXJ0KHN0YXJ0
Lm5vZGUoKSwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZWMpOwogCiAgICAgQVNT
RVJUKCFlYyk7CiAgICAgaWYgKGVjKQpAQCAtNTg4LDEzICs1ODgsMTMgQEAgdm9pZCBWaXNpYmxl
U2VsZWN0aW9uOjpkZWJ1Z1Bvc2l0aW9uKCkgY29uc3QKIAogICAgIGlmIChtX3N0YXJ0ID09IG1f
ZW5kKSB7CiAgICAgICAgIFBvc2l0aW9uIHBvcyA9IG1fc3RhcnQ7Ci0gICAgICAgIGZwcmludGYo
c3RkZXJyLCAicG9zOiAgICAgICAgJXMgJXA6JWRcbiIsIHBvcy5ub2RlKCktPm5vZGVOYW1lKCku
dXRmOCgpLmRhdGEoKSwgcG9zLm5vZGUoKSwgcG9zLm1fb2Zmc2V0KTsKKyAgICAgICAgZnByaW50
ZihzdGRlcnIsICJwb3M6ICAgICAgICAlcyAlcDolZFxuIiwgcG9zLm5vZGUoKS0+bm9kZU5hbWUo
KS51dGY4KCkuZGF0YSgpLCBwb3Mubm9kZSgpLCBwb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUG9zaXRpb24gcG9zID0gbV9zdGFydDsKLSAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJzdGFydDogICAgICAlcyAlcDolZFxuIiwgcG9zLm5vZGUoKS0+
bm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpLCBwb3Mubm9kZSgpLCBwb3MubV9vZmZzZXQpOworICAg
ICAgICBmcHJpbnRmKHN0ZGVyciwgInN0YXJ0OiAgICAgICVzICVwOiVkXG4iLCBwb3Mubm9kZSgp
LT5ub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCksIHBvcy5ub2RlKCksIHBvcy5kZXByZWNhdGVkRWRp
dGluZ09mZnNldCgpKTsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICItLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CiAgICAgICAgIHBvcyA9IG1fZW5kOwotICAgICAgICBm
cHJpbnRmKHN0ZGVyciwgImVuZDogICAgICAgICVzICVwOiVkXG4iLCBwb3Mubm9kZSgpLT5ub2Rl
TmFtZSgpLnV0ZjgoKS5kYXRhKCksIHBvcy5ub2RlKCksIHBvcy5tX29mZnNldCk7CisgICAgICAg
IGZwcmludGYoc3RkZXJyLCAiZW5kOiAgICAgICAgJXMgJXA6JWRcbiIsIHBvcy5ub2RlKCktPm5v
ZGVOYW1lKCkudXRmOCgpLmRhdGEoKSwgcG9zLm5vZGUoKSwgcG9zLmRlcHJlY2F0ZWRFZGl0aW5n
T2Zmc2V0KCkpOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tXG4iKTsKICAgICB9CiAKQEAgLTYyOCw3ICs2MjgsNyBAQCB2b2lkIFZp
c2libGVTZWxlY3Rpb246OnNob3dUcmVlRm9yVGhpcygpIGNvbnN0CiB7CiAgICAgaWYgKHN0YXJ0
KCkubm9kZSgpKSB7CiAgICAgICAgIHN0YXJ0KCkubm9kZSgpLT5zaG93VHJlZUFuZE1hcmsoc3Rh
cnQoKS5ub2RlKCksICJTIiwgZW5kKCkubm9kZSgpLCAiRSIpOwotICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgInN0YXJ0IG9mZnNldDogJWQsIGVuZCBvZmZzZXQ6ICVkXG4iLCBzdGFydCgpLm1fb2Zm
c2V0LCBlbmQoKS5tX29mZnNldCk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAic3RhcnQgb2Zm
c2V0OiAlZCwgZW5kIG9mZnNldDogJWRcbiIsIHN0YXJ0KCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZz
ZXQoKSwgZW5kKCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L2h0bWxlZGl0aW5nLmNwcAppbmRleCBhMzFlYWJmLi5iNjExNTljIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9odG1sZWRp
dGluZy5jcHAKQEAgLTk4LDggKzk4LDggQEAgaW50IGNvbXBhcmVQb3NpdGlvbnMoY29uc3QgUG9z
aXRpb24mIGEsIGNvbnN0IFBvc2l0aW9uJiBiKQogICAgIEFTU0VSVChub2RlQSk7CiAgICAgTm9k
ZSogbm9kZUIgPSBiLm5vZGUoKTsKICAgICBBU1NFUlQobm9kZUIpOwotICAgIGludCBvZmZzZXRB
ID0gYS5tX29mZnNldDsKLSAgICBpbnQgb2Zmc2V0QiA9IGIubV9vZmZzZXQ7CisgICAgaW50IG9m
ZnNldEEgPSBhLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CisgICAgaW50IG9mZnNldEIgPSBi
LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAKICAgICBOb2RlKiBzaGFkb3dBbmNlc3RvckEg
PSBub2RlQS0+c2hhZG93QW5jZXN0b3JOb2RlKCk7CiAgICAgaWYgKHNoYWRvd0FuY2VzdG9yQSA9
PSBub2RlQSkKQEAgLTMyMiwxNyArMzIyLDE3IEBAIFBvc2l0aW9uIHJhbmdlQ29tcGxpYW50RXF1
aXZhbGVudChjb25zdCBQb3NpdGlvbiYgcG9zKQogCiAgICAgTm9kZSogbm9kZSA9IHBvcy5ub2Rl
KCk7CiAKLSAgICBpZiAocG9zLm1fb2Zmc2V0IDw9IDApIHsKKyAgICBpZiAocG9zLmRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCkgPD0gMCkgewogICAgICAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgp
ICYmIChlZGl0aW5nSWdub3Jlc0NvbnRlbnQobm9kZSkgfHwgaXNUYWJsZUVsZW1lbnQobm9kZSkp
KQogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uQmVmb3JlTm9kZShub2RlKTsKICAgICAgICAg
cmV0dXJuIFBvc2l0aW9uKG5vZGUsIDApOwogICAgIH0KIAogICAgIGlmIChub2RlLT5vZmZzZXRJ
bkNoYXJhY3RlcnMoKSkKLSAgICAgICAgcmV0dXJuIFBvc2l0aW9uKG5vZGUsIG1pbihub2RlLT5t
YXhDaGFyYWN0ZXJPZmZzZXQoKSwgcG9zLm1fb2Zmc2V0KSk7CisgICAgICAgIHJldHVybiBQb3Np
dGlvbihub2RlLCBtaW4obm9kZS0+bWF4Q2hhcmFjdGVyT2Zmc2V0KCksIHBvcy5kZXByZWNhdGVk
RWRpdGluZ09mZnNldCgpKSk7CiAKICAgICBpbnQgbWF4Q29tcGxpYW50T2Zmc2V0ID0gbm9kZS0+
Y2hpbGROb2RlQ291bnQoKTsKLSAgICBpZiAocG9zLm1fb2Zmc2V0ID4gbWF4Q29tcGxpYW50T2Zm
c2V0KSB7CisgICAgaWYgKHBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4gbWF4Q29tcGxp
YW50T2Zmc2V0KSB7CiAgICAgICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkpCiAgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb25BZnRlck5vZGUobm9kZSk7CiAKQEAgLTM0MiwxMiArMzQyLDEyIEBA
IFBvc2l0aW9uIHJhbmdlQ29tcGxpYW50RXF1aXZhbGVudChjb25zdCBQb3NpdGlvbiYgcG9zKQog
ICAgIH0gCiAKICAgICAvLyBFZGl0aW5nIHNob3VsZCBuZXZlciBnZW5lcmF0ZSBwb3NpdGlvbnMg
bGlrZSB0aGlzLgotICAgIGlmICgocG9zLm1fb2Zmc2V0IDwgbWF4Q29tcGxpYW50T2Zmc2V0KSAm
JiBlZGl0aW5nSWdub3Jlc0NvbnRlbnQobm9kZSkpIHsKKyAgICBpZiAoKHBvcy5kZXByZWNhdGVk
RWRpdGluZ09mZnNldCgpIDwgbWF4Q29tcGxpYW50T2Zmc2V0KSAmJiBlZGl0aW5nSWdub3Jlc0Nv
bnRlbnQobm9kZSkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybiBub2RlLT5wYXJlbnROb2RlKCkgPyBwb3NpdGlvbkJlZm9yZU5vZGUobm9kZSkgOiBQb3Np
dGlvbihub2RlLCAwKTsKICAgICB9CiAgICAgCi0gICAgaWYgKHBvcy5tX29mZnNldCA9PSBtYXhD
b21wbGlhbnRPZmZzZXQgJiYgKGVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKSB8fCBpc1RhYmxl
RWxlbWVudChub2RlKSkpCisgICAgaWYgKHBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID09
IG1heENvbXBsaWFudE9mZnNldCAmJiAoZWRpdGluZ0lnbm9yZXNDb250ZW50KG5vZGUpIHx8IGlz
VGFibGVFbGVtZW50KG5vZGUpKSkKICAgICAgICAgcmV0dXJuIHBvc2l0aW9uQWZ0ZXJOb2RlKG5v
ZGUpOwogICAgIAogICAgIHJldHVybiBQb3NpdGlvbihwb3MpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5p
dHMuY3BwCmluZGV4IDAwZjMzYzMuLmUwYjAwZTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGlu
Zy92aXNpYmxlX3VuaXRzLmNwcAorKysgYi9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5j
cHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0JvdW5k
YXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2gKICAgICBpZiAocmVx
dWlyZXNDb250ZXh0Rm9yV29yZEJvdW5kYXJ5KGMuY2hhcmFjdGVyQmVmb3JlKCkpKSB7CiAgICAg
ICAgIFJlZlB0cjxSYW5nZT4gZm9yd2FyZHNTY2FuUmFuZ2UoZC0+Y3JlYXRlUmFuZ2UoKSk7CiAg
ICAgICAgIGZvcndhcmRzU2NhblJhbmdlLT5zZXRFbmRBZnRlcihib3VuZGFyeSwgZWMpOwotICAg
ICAgICBmb3J3YXJkc1NjYW5SYW5nZS0+c2V0U3RhcnQoZW5kLm5vZGUoKSwgZW5kLm1fb2Zmc2V0
LCBlYyk7CisgICAgICAgIGZvcndhcmRzU2NhblJhbmdlLT5zZXRTdGFydChlbmQubm9kZSgpLCBl
bmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgZWMpOwogICAgICAgICBUZXh0SXRlcmF0b3Ig
Zm9yd2FyZHNJdGVyYXRvcihmb3J3YXJkc1NjYW5SYW5nZS5nZXQoKSk7CiAgICAgICAgIHdoaWxl
ICghZm9yd2FyZHNJdGVyYXRvci5hdEVuZCgpKSB7CiAgICAgICAgICAgICBjb25zdCBVQ2hhciog
Y2hhcmFjdGVycyA9IGZvcndhcmRzSXRlcmF0b3IuY2hhcmFjdGVycygpOwpAQCAtMTEzLDggKzEx
Myw4IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNCb3VuZGFyeShjb25zdCBWaXNp
YmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBz
ZWFyY2hSYW5nZS0+c2V0U3RhcnQoc3RhcnQubm9kZSgpLCBzdGFydC5tX29mZnNldCwgZWMpOwot
ICAgIHNlYXJjaFJhbmdlLT5zZXRFbmQoZW5kLm5vZGUoKSwgZW5kLm1fb2Zmc2V0LCBlYyk7Cisg
ICAgc2VhcmNoUmFuZ2UtPnNldFN0YXJ0KHN0YXJ0Lm5vZGUoKSwgc3RhcnQuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSwgZWMpOworICAgIHNlYXJjaFJhbmdlLT5zZXRFbmQoZW5kLm5vZGUoKSwg
ZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVjKTsKICAgICAKICAgICBBU1NFUlQoIWVj
KTsKICAgICBpZiAoZWMpCkBAIC0xOTAsNyArMTkwLDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlv
biBuZXh0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBCb3VuZGFyeVNlYXJjaEZ1
bmMKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAocmVxdWlyZXNDb250ZXh0Rm9y
V29yZEJvdW5kYXJ5KGMuY2hhcmFjdGVyQWZ0ZXIoKSkpIHsKICAgICAgICAgUmVmUHRyPFJhbmdl
PiBiYWNrd2FyZHNTY2FuUmFuZ2UoZC0+Y3JlYXRlUmFuZ2UoKSk7Ci0gICAgICAgIGJhY2t3YXJk
c1NjYW5SYW5nZS0+c2V0RW5kKHN0YXJ0Lm5vZGUoKSwgc3RhcnQubV9vZmZzZXQsIGVjKTsKKyAg
ICAgICAgYmFja3dhcmRzU2NhblJhbmdlLT5zZXRFbmQoc3RhcnQubm9kZSgpLCBzdGFydC5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlYyk7CiAgICAgICAgIFNpbXBsaWZpZWRCYWNrd2FyZHNU
ZXh0SXRlcmF0b3IgYmFja3dhcmRzSXRlcmF0b3IoYmFja3dhcmRzU2NhblJhbmdlLmdldCgpKTsK
ICAgICAgICAgd2hpbGUgKCFiYWNrd2FyZHNJdGVyYXRvci5hdEVuZCgpKSB7CiAgICAgICAgICAg
ICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IGJhY2t3YXJkc0l0ZXJhdG9yLmNoYXJhY3RlcnMo
KTsKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFy
eShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoRnVuYwogICAgIH0KIAog
ICAgIHNlYXJjaFJhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMoYm91bmRhcnksIGVjKTsKLSAgICBz
ZWFyY2hSYW5nZS0+c2V0U3RhcnQoc3RhcnQubm9kZSgpLCBzdGFydC5tX29mZnNldCwgZWMpOwor
ICAgIHNlYXJjaFJhbmdlLT5zZXRTdGFydChzdGFydC5ub2RlKCksIHN0YXJ0LmRlcHJlY2F0ZWRF
ZGl0aW5nT2Zmc2V0KCksIGVjKTsKICAgICBUZXh0SXRlcmF0b3IgaXQoc2VhcmNoUmFuZ2UuZ2V0
KCksIHRydWUpOwogICAgIHVuc2lnbmVkIG5leHQgPSAwOwogICAgIGJvb2wgaW5UZXh0U2VjdXJp
dHlNb2RlID0gc3RhcnQubm9kZSgpICYmIHN0YXJ0Lm5vZGUoKS0+cmVuZGVyZXIoKSAmJiBzdGFy
dC5ub2RlKCktPnJlbmRlcmVyKCktPnN0eWxlKCktPnRleHRTZWN1cml0eSgpICE9IFRTTk9ORTsK
QEAgLTM4Niw3ICszODYsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb25G
b3JMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYykKICAgICAgICAgLy8gVGhlcmUgYXJlIFZp
c2libGVQb3NpdGlvbnMgYXQgb2Zmc2V0IDAgaW4gYmxvY2tzIHdpdGhvdXQKICAgICAgICAgLy8g
Um9vdElubGluZUJveGVzLCBsaWtlIGVtcHR5IGVkaXRhYmxlIGJsb2NrcyBhbmQgYm9yZGVyZWQg
YmxvY2tzLgogICAgICAgICBQb3NpdGlvbiBwID0gYy5kZWVwRXF1aXZhbGVudCgpOwotICAgICAg
ICBpZiAocC5ub2RlKCktPnJlbmRlcmVyKCkgJiYgcC5ub2RlKCktPnJlbmRlcmVyKCktPmlzUmVu
ZGVyQmxvY2soKSAmJiBwLm1fb2Zmc2V0ID09IDApCisgICAgICAgIGlmIChwLm5vZGUoKS0+cmVu
ZGVyZXIoKSAmJiBwLm5vZGUoKS0+cmVuZGVyZXIoKS0+aXNSZW5kZXJCbG9jaygpICYmIHAuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
QXZvaWRpbmdGaXJzdFBvc2l0aW9uSW5UYWJsZShjKTsKICAgICAgICAgCiAgICAgICAgIHJldHVy
biBWaXNpYmxlUG9zaXRpb24oKTsKQEAgLTQzMyw3ICs0MzMsNyBAQCBWaXNpYmxlUG9zaXRpb24g
c3RhcnRPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjKQogICAgICAgICAvLyBncmVhdGVy
IHRoYW4gdGhlIGlucHV0IHBvc2l0aW9uLiAgVGhpcyBmaXggaXMgdG8gYWNjb3VudCBmb3IgdGhl
IGRpc2NyZXBhbmN5IGJldHdlZW4gbGluZXMgd2l0aCB3ZWJraXQtbGluZS1icmVhazphZnRlci13
aGl0ZS1zcGFjZSAKICAgICAgICAgLy8gc3R5bGUgdmVyc3VzIGxpbmVzIHdpdGhvdXQgdGhhdCBz
dHlsZSwgd2hpY2ggd291bGQgYnJlYWsgYmVmb3JlIGEgc3BhY2UgYnkgZGVmYXVsdC4gCiAgICAg
ICAgIFBvc2l0aW9uIHAgPSB2aXNQb3MuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgaWYgKHAu
bV9vZmZzZXQgPiBjLmRlZXBFcXVpdmFsZW50KCkubV9vZmZzZXQgJiYgcC5ub2RlKCktPmlzU2Ft
ZU5vZGUoYy5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKSkpIHsKKyAgICAgICAgaWYgKHAuZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKSA+IGMuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkRWRpdGlu
Z09mZnNldCgpICYmIHAubm9kZSgpLT5pc1NhbWVOb2RlKGMuZGVlcEVxdWl2YWxlbnQoKS5ub2Rl
KCkpKSB7CiAgICAgICAgICAgICB2aXNQb3MgPSBjLnByZXZpb3VzKCk7CiAgICAgICAgICAgICBp
ZiAodmlzUG9zLmlzTnVsbCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRp
b24oKTsKQEAgLTQ1NCw3ICs0NTQsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0
aW9uRm9yTGluZShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMpCiAgICAgICAgIC8vIFRoZXJlIGFy
ZSBWaXNpYmxlUG9zaXRpb25zIGF0IG9mZnNldCAwIGluIGJsb2NrcyB3aXRob3V0CiAgICAgICAg
IC8vIFJvb3RJbmxpbmVCb3hlcywgbGlrZSBlbXB0eSBlZGl0YWJsZSBibG9ja3MgYW5kIGJvcmRl
cmVkIGJsb2Nrcy4KICAgICAgICAgUG9zaXRpb24gcCA9IGMuZGVlcEVxdWl2YWxlbnQoKTsKLSAg
ICAgICAgaWYgKHAubm9kZSgpLT5yZW5kZXJlcigpICYmIHAubm9kZSgpLT5yZW5kZXJlcigpLT5p
c1JlbmRlckJsb2NrKCkgJiYgcC5tX29mZnNldCA9PSAwKQorICAgICAgICBpZiAocC5ub2RlKCkt
PnJlbmRlcmVyKCkgJiYgcC5ub2RlKCktPnJlbmRlcmVyKCktPmlzUmVuZGVyQmxvY2soKSAmJiBw
LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPT0gMCkKICAgICAgICAgICAgIHJldHVybiBjOwog
ICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAgICAgfQpAQCAtNjcxLDcgKzY3MSw3
IEBAIFZpc2libGVQb3NpdGlvbiBuZXh0TGluZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlv
biAmdmlzaWJsZVBvc2l0aW9uLCBpbnQgeCkKICAgICAgICAgLy8gTmVlZCB0byBtb3ZlIGZvcndh
cmQgdG8gbmV4dCBjb250YWluaW5nIGVkaXRhYmxlIGJsb2NrIGluIHRoaXMgcm9vdCBlZGl0YWJs
ZQogICAgICAgICAvLyBibG9jayBhbmQgZmluZCB0aGUgZmlyc3Qgcm9vdCBsaW5lIGJveCBpbiB0
aGF0IGJsb2NrLgogICAgICAgICBOb2RlKiBzdGFydEJsb2NrID0gZW5jbG9zaW5nQmxvY2sobm9k
ZSk7Ci0gICAgICAgIE5vZGUqIG4gPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkobm9kZSwg
cC5tX29mZnNldCk7CisgICAgICAgIE5vZGUqIG4gPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxp
dHkobm9kZSwgcC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKICAgICAgICAgd2hpbGUgKG4g
JiYgc3RhcnRCbG9jayA9PSBlbmNsb3NpbmdCbG9jayhuKSkKICAgICAgICAgICAgIG4gPSBuZXh0
TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkobik7CiAgICAgICAgIHdoaWxlIChuKSB7CkBAIC03ODcs
NyArNzg3LDcgQEAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0T2ZQYXJhZ3JhcGgoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBjKQogICAgIE5vZGUqIHN0YXJ0QmxvY2sgPSBlbmNsb3NpbmdCbG9jayhzdGFy
dE5vZGUpOwogCiAgICAgTm9kZSAqbm9kZSA9IHN0YXJ0Tm9kZTsKLSAgICBpbnQgb2Zmc2V0ID0g
cC5tX29mZnNldDsKKyAgICBpbnQgb2Zmc2V0ID0gcC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
OwogCiAgICAgTm9kZSAqbiA9IHN0YXJ0Tm9kZTsKICAgICB3aGlsZSAobikgewpAQCAtODQ4LDcg
Kzg0OCw3IEBAIFZpc2libGVQb3NpdGlvbiBlbmRPZlBhcmFncmFwaChjb25zdCBWaXNpYmxlUG9z
aXRpb24gJmMpCiAgICAgTm9kZSAqc3RheUluc2lkZUJsb2NrID0gc3RhcnRCbG9jazsKICAgICAK
ICAgICBOb2RlICpub2RlID0gc3RhcnROb2RlOwotICAgIGludCBvZmZzZXQgPSBwLm1fb2Zmc2V0
OworICAgIGludCBvZmZzZXQgPSBwLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAKICAgICBO
b2RlICpuID0gc3RhcnROb2RlOwogICAgIHdoaWxlIChuKSB7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9XZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAKaW5kZXggZDViN2ZmNS4uZGNjZmY4MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcApAQCAtNDA0LDcgKzQwNCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24g
dXBkYXRlQVhMaW5lU3RhcnRGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9u
CiAgICAgICAgIGlmICghcC5ub2RlKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgcmVu
ZGVyZXIgPSBwLm5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICAgICAgaWYgKCFyZW5kZXJlciB8fCAo
cmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSAmJiAhcC5tX29mZnNldCkpCisgICAgICAgIGlmICgh
cmVuZGVyZXIgfHwgKHJlbmRlcmVyLT5pc1JlbmRlckJsb2NrKCkgJiYgIXAuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgSW5saW5lQm94KiBi
b3g7CiAgICAgICAgIGludCBpZ25vcmVkQ2FyZXRPZmZzZXQ7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BhZ2UvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9XZWJDb3JlL3BhZ2UvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggNTY0Njk5OS4uNDkxZDFhMSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTY5OSw3ICsxNjk5LDcg
QEAgaW50IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9u
KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG8KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX3JlbmRlcmVyLT5kb2N1bWVu
dCgpKTsKICAgICByYW5nZS0+c2V0U3RhcnQobm9kZSwgMCwgZWMpOwotICAgIHJhbmdlLT5zZXRF
bmQoaW5kZXhQb3NpdGlvbi5ub2RlKCksIGluZGV4UG9zaXRpb24ubV9vZmZzZXQsIGVjKTsKKyAg
ICByYW5nZS0+c2V0RW5kKGluZGV4UG9zaXRpb24ubm9kZSgpLCBpbmRleFBvc2l0aW9uLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVjKTsKICAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5n
ZUxlbmd0aChyYW5nZS5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01T
ZWxlY3Rpb24uY3BwIGIvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKaW5kZXggODZmZTkx
MS4uM2I1NGYwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKKysr
IGIvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgaW50IERP
TVNlbGVjdGlvbjo6YW5jaG9yT2Zmc2V0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBhbmNob3JQb3NpdGlvbih2aXNpYmxlU2VsZWN0
aW9uKCkpLm1fb2Zmc2V0OworICAgIHJldHVybiBhbmNob3JQb3NpdGlvbih2aXNpYmxlU2VsZWN0
aW9uKCkpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiB9CiAKIE5vZGUqIERPTVNlbGVjdGlv
bjo6Zm9jdXNOb2RlKCkgY29uc3QKQEAgLTEwOSw3ICsxMDksNyBAQCBpbnQgRE9NU2VsZWN0aW9u
Ojpmb2N1c09mZnNldCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1
cm4gMDsKLSAgICByZXR1cm4gZm9jdXNQb3NpdGlvbih2aXNpYmxlU2VsZWN0aW9uKCkpLm1fb2Zm
c2V0OworICAgIHJldHVybiBmb2N1c1Bvc2l0aW9uKHZpc2libGVTZWxlY3Rpb24oKSkuZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKTsKIH0KIAogTm9kZSogRE9NU2VsZWN0aW9uOjpiYXNlTm9kZSgp
IGNvbnN0CkBAIC0xMjMsNyArMTIzLDcgQEAgaW50IERPTVNlbGVjdGlvbjo6YmFzZU9mZnNldCgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1
cm4gYmFzZVBvc2l0aW9uKHZpc2libGVTZWxlY3Rpb24oKSkubV9vZmZzZXQ7CisgICAgcmV0dXJu
IGJhc2VQb3NpdGlvbih2aXNpYmxlU2VsZWN0aW9uKCkpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0
KCk7CiB9CiAKIApAQCAtMTM4LDcgKzEzOCw3IEBAIGludCBET01TZWxlY3Rpb246OmV4dGVudE9m
ZnNldCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICByZXR1cm4gZXh0ZW50UG9zaXRpb24odmlzaWJsZVNlbGVjdGlvbigpKS5tX29mZnNldDsKKyAg
ICByZXR1cm4gZXh0ZW50UG9zaXRpb24odmlzaWJsZVNlbGVjdGlvbigpKS5kZXByZWNhdGVkRWRp
dGluZ09mZnNldCgpOwogfQogCiBib29sIERPTVNlbGVjdGlvbjo6aXNDb2xsYXBzZWQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA2MWFiZWJkLi41MTc3ZjMwIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcApAQCAtMzA0LDcgKzMwNCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3Vz
ZVByZXNzRXZlbnRTaW5nbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSCiAgICAg
ICAgIC8vIHdhcyBjcmVhdGVkIHJpZ2h0LXRvLWxlZnQKICAgICAgICAgUG9zaXRpb24gc3RhcnQg
PSBuZXdTZWxlY3Rpb24uc3RhcnQoKTsKICAgICAgICAgUG9zaXRpb24gZW5kID0gbmV3U2VsZWN0
aW9uLmVuZCgpOwotICAgICAgICBzaG9ydCBiZWZvcmUgPSBSYW5nZTo6Y29tcGFyZUJvdW5kYXJ5
UG9pbnRzKHBvcy5ub2RlKCksIHBvcy5tX29mZnNldCwgc3RhcnQubm9kZSgpLCBzdGFydC5tX29m
ZnNldCk7CisgICAgICAgIHNob3J0IGJlZm9yZSA9IFJhbmdlOjpjb21wYXJlQm91bmRhcnlQb2lu
dHMocG9zLm5vZGUoKSwgcG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIHN0YXJ0Lm5vZGUo
KSwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAgICAgICAgIGlmIChiZWZvcmUg
PD0gMCkKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24ocG9zLCBl
bmQpOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBjZTc3MTE2Li45N2Q1M2FjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAg
LTY2Miw3ICs2NjIsNyBAQCB2b2lkIEZyYW1lOjpzZWxlY3Rpb25MYXlvdXRDaGFuZ2VkKCkKICAg
ICAgICAgaWYgKHN0YXJ0UG9zLmlzTm90TnVsbCgpICYmIGVuZFBvcy5pc05vdE51bGwoKSAmJiBz
ZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgIT0gc2VsZWN0aW9uLnZpc2libGVFbmQoKSkgewogICAg
ICAgICAgICAgUmVuZGVyT2JqZWN0ICpzdGFydFJlbmRlcmVyID0gc3RhcnRQb3Mubm9kZSgpLT5y
ZW5kZXJlcigpOwogICAgICAgICAgICAgUmVuZGVyT2JqZWN0ICplbmRSZW5kZXJlciA9IGVuZFBv
cy5ub2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICB2aWV3LT5zZXRTZWxlY3Rpb24oc3Rh
cnRSZW5kZXJlciwgc3RhcnRQb3MubV9vZmZzZXQsIGVuZFJlbmRlcmVyLCBlbmRQb3MubV9vZmZz
ZXQpOworICAgICAgICAgICAgdmlldy0+c2V0U2VsZWN0aW9uKHN0YXJ0UmVuZGVyZXIsIHN0YXJ0
UG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVuZFJlbmRlcmVyLCBlbmRQb3MuZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tIGIvV2ViQ29yZS9w
YWdlL21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQppbmRleCBjYzFmZmNhLi5mZjZm
MzY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyLm1tCisrKyBiL1dlYkNvcmUvcGFnZS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIu
bW0KQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGF0aWMgV2ViQ29yZVRleHRNYXJrZXIqIHRleHRNYXJr
ZXJGb3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aQogICAgIGJ6ZXJv
KCZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7CiAgICAgdGV4dE1hcmtl
ckRhdGEuYXhJRCA9IG9iai5nZXQoKS0+YXhPYmplY3RJRCgpOwogICAgIHRleHRNYXJrZXJEYXRh
Lm5vZGUgPSBkb21Ob2RlOwotICAgIHRleHRNYXJrZXJEYXRhLm9mZnNldCA9IGRlZXBQb3MubV9v
ZmZzZXQ7CisgICAgdGV4dE1hcmtlckRhdGEub2Zmc2V0ID0gZGVlcFBvcy5kZXByZWNhdGVkRWRp
dGluZ09mZnNldCgpOwogICAgIHRleHRNYXJrZXJEYXRhLmFmZmluaXR5ID0gdmlzaWJsZVBvcy5h
ZmZpbml0eSgpOwogICAgIHJldHVybiBbW1dlYkNvcmVWaWV3RmFjdG9yeSBzaGFyZWRGYWN0b3J5
XSB0ZXh0TWFya2VyV2l0aEJ5dGVzOiZ0ZXh0TWFya2VyRGF0YSBsZW5ndGg6c2l6ZW9mKHRleHRN
YXJrZXJEYXRhKV07CiB9CkBAIC0yMjgsNyArMjI4LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKFdlYkNvcmVUZXh0TWFya2VyKiB0ZXh0TWFy
a2UKICAgICBpZiAoIWNhY2hlLT5pc0lEaW5Vc2UodGV4dE1hcmtlckRhdGEuYXhJRCkpCiAgICAg
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKIAotICAgIGlmIChkZWVwUG9zLm5vZGUoKSAh
PSB0ZXh0TWFya2VyRGF0YS5ub2RlIHx8IGRlZXBQb3MubV9vZmZzZXQgIT0gdGV4dE1hcmtlckRh
dGEub2Zmc2V0KQorICAgIGlmIChkZWVwUG9zLm5vZGUoKSAhPSB0ZXh0TWFya2VyRGF0YS5ub2Rl
IHx8IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSAhPSB0ZXh0TWFya2VyRGF0YS5v
ZmZzZXQpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKICAgICAKICAgICByZXR1
cm4gdmlzaWJsZVBvczsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAppbmRl
eCA5MjExZGE2Li5mMDY1Y2RmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgaW50IFJlbmRlclRleHRDb250cm9sOjppbmRleEZvclZp
c2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvcykKICAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICByYW5nZS0+c2V0U3Rh
cnQobV9pbm5lclRleHQuZ2V0KCksIDAsIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKLSAgICByYW5n
ZS0+c2V0RW5kKGluZGV4UG9zaXRpb24ubm9kZSgpLCBpbmRleFBvc2l0aW9uLm1fb2Zmc2V0LCBl
Yyk7CisgICAgcmFuZ2UtPnNldEVuZChpbmRleFBvc2l0aW9uLm5vZGUoKSwgaW5kZXhQb3NpdGlv
bi5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CiAgICAg
cmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkpOwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCAzYzA3OTBiLi5hY2NkNzkwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNTI0LDEzICs1MjQsMTMgQEAg
c3RhdGljIHZvaWQgd3JpdGVTZWxlY3Rpb24oVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9i
amVjdCogbykKIAogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVj
dGlvbigpLT5zZWxlY3Rpb24oKTsKICAgICBpZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSkgewotICAg
ICAgICB0cyA8PCAiY2FyZXQ6IHBvc2l0aW9uICIgPDwgc2VsZWN0aW9uLnN0YXJ0KCkubV9vZmZz
ZXQgPDwgIiBvZiAiIDw8IG5vZGVQb3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCkpOwor
ICAgICAgICB0cyA8PCAiY2FyZXQ6IHBvc2l0aW9uICIgPDwgc2VsZWN0aW9uLnN0YXJ0KCkuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA8PCAiIG9mICIgPDwgbm9kZVBvc2l0aW9uKHNlbGVjdGlv
bi5zdGFydCgpLm5vZGUoKSk7CiAgICAgICAgIGlmIChzZWxlY3Rpb24uYWZmaW5pdHkoKSA9PSBV
UFNUUkVBTSkKICAgICAgICAgICAgIHRzIDw8ICIgKHVwc3RyZWFtIGFmZmluaXR5KSI7CiAgICAg
ICAgIHRzIDw8ICJcbiI7CiAgICAgfSBlbHNlIGlmIChzZWxlY3Rpb24uaXNSYW5nZSgpKQotICAg
ICAgICB0cyA8PCAic2VsZWN0aW9uIHN0YXJ0OiBwb3NpdGlvbiAiIDw8IHNlbGVjdGlvbi5zdGFy
dCgpLm1fb2Zmc2V0IDw8ICIgb2YgIiA8PCBub2RlUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCku
bm9kZSgpKSA8PCAiXG4iCi0gICAgICAgICAgIDw8ICJzZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9u
ICIgPDwgc2VsZWN0aW9uLmVuZCgpLm1fb2Zmc2V0IDw8ICIgb2YgIiA8PCBub2RlUG9zaXRpb24o
c2VsZWN0aW9uLmVuZCgpLm5vZGUoKSkgPDwgIlxuIjsKKyAgICAgICAgdHMgPDwgInNlbGVjdGlv
biBzdGFydDogcG9zaXRpb24gIiA8PCBzZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkRWRpdGlu
Z09mZnNldCgpIDw8ICIgb2YgIiA8PCBub2RlUG9zaXRpb24oc2VsZWN0aW9uLnN0YXJ0KCkubm9k
ZSgpKSA8PCAiXG4iCisgICAgICAgICAgIDw8ICJzZWxlY3Rpb24gZW5kOiAgIHBvc2l0aW9uICIg
PDwgc2VsZWN0aW9uLmVuZCgpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPDwgIiBvZiAiIDw8
IG5vZGVQb3NpdGlvbihzZWxlY3Rpb24uZW5kKCkubm9kZSgpKSA8PCAiXG4iOwogfQogCiBTdHJp
bmcgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihSZW5kZXJPYmplY3QqIG8pCmRpZmYgLS1naXQgYS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWUubW0KaW5kZXggMTZiYjViNi4uOTE4NDE4ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAt
NzU3LDggKzc1Nyw4IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShE
b2N1bWVudExvYWRlciogbG9hZGVyKQogCiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IF9wcml2
YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPmNyZWF0ZVJhbmdlKCk7CiAgICAgaW50IGV4Y2Vw
dGlvbiA9IDA7Ci0gICAgcmFuZ2UtPnNldFN0YXJ0KG5ld1N0YXJ0Lm5vZGUoKSwgbmV3U3RhcnQu
bV9vZmZzZXQsIGV4Y2VwdGlvbik7Ci0gICAgcmFuZ2UtPnNldEVuZChuZXdTdGFydC5ub2RlKCks
IG5ld1N0YXJ0Lm1fb2Zmc2V0LCBleGNlcHRpb24pOworICAgIHJhbmdlLT5zZXRTdGFydChuZXdT
dGFydC5ub2RlKCksIG5ld1N0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGV4Y2VwdGlv
bik7CisgICAgcmFuZ2UtPnNldEVuZChuZXdTdGFydC5ub2RlKCksIG5ld1N0YXJ0LmRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCksIGV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIGtpdChyYW5nZS5nZXQo
KSk7CiB9CiAK
</data>
<flag name="review"
          id="14979"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>