<?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>126858</bug_id>
          
          <creation_ts>2014-01-12 15:54:06 -0800</creation_ts>
          <short_desc>Add deprecatedCharacters as a synonym for characters and convert most call sites</short_desc>
          <delta_ts>2014-01-12 18:25:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>967071</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-01-12 15:54:06 -0800</bug_when>
    <thetext>Add deprecatedCharacters as a synonym for characters and convert most call sites</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967073</commentid>
    <comment_count>1</comment_count>
      <attachid>220988</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-01-12 15:55:22 -0800</bug_when>
    <thetext>Created attachment 220988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967074</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-12 15:56:51 -0800</bug_when>
    <thetext>Attachment 220988 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSStringRef.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSStringRefCF.cpp&apos;, u&apos;Source/JavaScriptCore/API/OpaqueJSString.h&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/StringPrototype.cpp&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/text/AtomicString.cpp&apos;, u&apos;Source/WTF/wtf/text/AtomicString.h&apos;, u&apos;Source/WTF/wtf/text/Base64.cpp&apos;, u&apos;Source/WTF/wtf/text/StringBuilder.h&apos;, u&apos;Source/WTF/wtf/text/StringImpl.cpp&apos;, u&apos;Source/WTF/wtf/text/StringImpl.h&apos;, u&apos;Source/WTF/wtf/text/WTFString.cpp&apos;, u&apos;Source/WTF/wtf/text/WTFString.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyPath.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityObject.cpp&apos;, u&apos;Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm&apos;, u&apos;Source/WebCore/bindings/js/SerializedScriptValue.cpp&apos;, u&apos;Source/WebCore/dom/CharacterData.cpp&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/editing/Editor.cpp&apos;, u&apos;Source/WebCore/editing/TextCheckingHelper.cpp&apos;, u&apos;Source/WebCore/editing/TextCheckingHelper.h&apos;, u&apos;Source/WebCore/editing/TextIterator.cpp&apos;, u&apos;Source/WebCore/editing/TextIterator.h&apos;, u&apos;Source/WebCore/editing/VisiblePosition.cpp&apos;, u&apos;Source/WebCore/editing/VisibleUnits.cpp&apos;, u&apos;Source/WebCore/fileapi/WebKitBlobBuilder.cpp&apos;, u&apos;Source/WebCore/html/FormDataList.cpp&apos;, u&apos;Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLParserIdioms.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLTreeBuilder.cpp&apos;, u&apos;Source/WebCore/loader/appcache/ManifestParser.cpp&apos;, u&apos;Source/WebCore/page/ContentSecurityPolicy.cpp&apos;, u&apos;Source/WebCore/page/PageSerializer.cpp&apos;, u&apos;Source/WebCore/platform/Length.cpp&apos;, u&apos;Source/WebCore/platform/LinkHash.cpp&apos;, u&apos;Source/WebCore/platform/SharedBuffer.cpp&apos;, u&apos;Source/WebCore/platform/URL.cpp&apos;, u&apos;Source/WebCore/platform/graphics/StringTruncator.cpp&apos;, u&apos;Source/WebCore/platform/graphics/TextRun.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm&apos;, u&apos;Source/WebCore/platform/network/FormDataBuilder.cpp&apos;, u&apos;Source/WebCore/platform/sql/SQLiteStatement.cpp&apos;, u&apos;Source/WebCore/platform/text/DecodeEscapeSequences.h&apos;, u&apos;Source/WebCore/platform/text/TextBreakIterator.cpp&apos;, u&apos;Source/WebCore/platform/text/TextBreakIteratorICU.cpp&apos;, u&apos;Source/WebCore/platform/text/TextCodecICU.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlock.cpp&apos;, u&apos;Source/WebCore/rendering/RenderListMarker.cpp&apos;, u&apos;Source/WebCore/rendering/RenderText.cpp&apos;, u&apos;Source/WebCore/rendering/RenderText.h&apos;, u&apos;Source/WebCore/rendering/line/BreakingContextInlineHeaders.h&apos;, u&apos;Source/WebCore/rendering/svg/SVGInlineTextBox.cpp&apos;, u&apos;Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.cpp&apos;, u&apos;Source/WebCore/rendering/svg/SVGTextLayoutEngine.cpp&apos;, u&apos;Source/WebCore/rendering/svg/SVGTextMetrics.cpp&apos;, u&apos;Source/WebCore/rendering/svg/SVGTextMetricsBuilder.cpp&apos;, u&apos;Source/WebCore/svg/SVGAngle.cpp&apos;, u&apos;Source/WebCore/svg/SVGAnimateMotionElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGAnimationElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGFitToViewBox.cpp&apos;, u&apos;Source/WebCore/svg/SVGFontData.cpp&apos;, u&apos;Source/WebCore/svg/SVGGlyphMap.h&apos;, u&apos;Source/WebCore/svg/SVGGlyphRefElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGLength.cpp&apos;, u&apos;Source/WebCore/svg/SVGLengthList.cpp&apos;, u&apos;Source/WebCore/svg/SVGNumberList.cpp&apos;, u&apos;Source/WebCore/svg/SVGParserUtilities.cpp&apos;, u&apos;Source/WebCore/svg/SVGPreserveAspectRatio.cpp&apos;, u&apos;Source/WebCore/svg/SVGStringList.cpp&apos;, u&apos;Source/WebCore/svg/SVGTransformList.cpp&apos;, u&apos;Source/WebCore/svg/SVGTransformable.cpp&apos;, u&apos;Source/WebCore/svg/SVGViewSpec.cpp&apos;, u&apos;Source/WebCore/svg/SVGZoomAndPan.h&apos;, u&apos;Source/WebCore/xml/XMLHttpRequest.cpp&apos;, u&apos;Source/WebCore/xml/XSLStyleSheetLibxslt.cpp&apos;, u&apos;Source/WebCore/xml/XSLTUnicodeSort.cpp&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/History/BinaryPropertyList.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/APIString.h&apos;, u&apos;Source/WebKit2/UIProcess/WebPageProxy.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/EncoderAdapter.cpp&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/JavaScriptCore/API/JSStringRef.cpp:113:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 89 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967099</commentid>
    <comment_count>3</comment_count>
      <attachid>220988</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-01-12 17:45:43 -0800</bug_when>
    <thetext>Comment on attachment 220988
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>967114</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-01-12 18:25:41 -0800</bug_when>
    <thetext>Committed r161851: &lt;http://trac.webkit.org/changeset/161851&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220988</attachid>
            <date>2014-01-12 15:55:22 -0800</date>
            <delta_ts>2014-01-12 18:22:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-126858-20140112155522.patch</filename>
            <type>text/plain</type>
            <size>122869</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYxODQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NWNmMjUzOTM4MmY5OGFmMDgyOTg2M2VjZWE0YmEyZDM0ZmZmZWY2Li45OGZlYTRhOGVjYTJmZjcx
OWU5MWUyYjM3MWVlNmFhOWQ2ZmY5Y2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzMyBAQAogMjAxNC0wMS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAK
KyAgICAgICAgQWRkIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzIGFzIGEgc3lub255bSBmb3IgY2hhcmFj
dGVycyBhbmQgY29udmVydCBtb3N0IGNhbGwgc2l0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjg1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogQVBJL0pTU3RyaW5nUmVmLmNwcDoKKyAgICAgICAg
KEpTU3RyaW5nR2V0Q2hhcmFjdGVyc1B0cik6CisgICAgICAgIChKU1N0cmluZ0dldFVURjhDU3Ry
aW5nKToKKyAgICAgICAgKEpTU3RyaW5nSXNFcXVhbCk6CisgICAgICAgICogQVBJL0pTU3RyaW5n
UmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcpOgorICAgICAgICAqIEFQ
SS9PcGFxdWVKU1N0cmluZy5oOgorICAgICAgICAoT3BhcXVlSlNTdHJpbmc6OmNoYXJhY3RlcnMp
OgorICAgICAgICAoT3BhcXVlSlNTdHJpbmc6OmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKToKKyAgICAg
ICAgKE9wYXF1ZUpTU3RyaW5nOjpsZW5ndGgpOgorICAgICAgICAoT3BhcXVlSlNTdHJpbmc6Ok9w
YXF1ZUpTU3RyaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDoK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU6OnBhcnNlSlNPTik6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OnBh
cnNlSW50KToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OmxvY2FsZUNvbXBhcmUpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNGb250
c2l6ZSk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0xpbmspOgorICAgICAgICBVc2Ug
ZGVwcmVjYXRlZENoYXJhY3RlcnMgaW5zdGVhZCBvZiBjaGFyYWN0ZXJzLgorCisyMDE0LTAxLTEy
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwogICAgICAgICBSZWR1Y2UgdXNlIG9m
IFN0cmluZzo6Y2hhcmFjdGVycwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI2ODU0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOGRhZGE5OGQ5MmIyODJjNDU1YzYwZWJiMWM2ZjNj
MzUwZDBlYmMxYy4uNzkzOTEwYzBjYWE0MzE0MmNhNWQ0OTU2OTJjZTc2NTgwNmYzNTc5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsNSArMSw0OCBAQAogMjAxNC0wMS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKKyAgICAgICAgQWRkIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzIGFzIGEgc3lub255bSBmb3Ig
Y2hhcmFjdGVycyBhbmQgY29udmVydCBtb3N0IGNhbGwgc2l0ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjg1OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNw
cDoKKyAgICAgICAgKFdURjo6SGFzaEFuZFVURjhDaGFyYWN0ZXJzVHJhbnNsYXRvcjo6ZXF1YWwp
OgorICAgICAgICAoV1RGOjpTdWJzdHJpbmdUcmFuc2xhdG9yOjpoYXNoKToKKyAgICAgICAgKFdU
Rjo6U3Vic3RyaW5nVHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAqIHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmNoYXJhY3RlcnMpOgorICAg
ICAgICAqIHd0Zi90ZXh0L0Jhc2U2NC5jcHA6CisgICAgICAgIChXVEY6OmJhc2U2NERlY29kZSk6
CisgICAgICAgIChXVEY6OmJhc2U2NFVSTERlY29kZSk6CisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpjaGFyYWN0ZXJzKToK
KyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6ZGVwcmVjYXRlZENoYXJhY3RlcnMpOgorICAg
ICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBs
OjpnZXREYXRhMTZTbG93Q2FzZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnVwcGVyKToK
KyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6bG93ZXIpOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpmaW5kKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZmluZElnbm9yaW5nQ2FzZSk6
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjaGFyYWN0ZXJzKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZGVwcmVjYXRlZENo
YXJhY3RlcnMpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpnZXRDaGFyYWN0ZXJzPFVDaGFy
Pik6CisgICAgICAgIChXVEY6OmVxdWFsSWdub3JpbmdOdWxsaXR5KToKKyAgICAgICAgKiB3dGYv
dGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmFwcGVuZCk6CisgICAg
ICAgIChXVEY6OlN0cmluZzo6YXBwZW5kSW50ZXJuYWwpOgorICAgICAgICAoV1RGOjpTdHJpbmc6
Omluc2VydCk6CisgICAgICAgIChXVEY6OlN0cmluZzo6dHJ1bmNhdGUpOgorICAgICAgICAoV1RG
OjpTdHJpbmc6OnBlcmNlbnRhZ2UpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgor
ICAgICAgICAoV1RGOjpTdHJpbmc6OmNoYXJhY3RlcnMpOgorICAgICAgICAoV1RGOjpTdHJpbmc6
OmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpnZXRDaGFyYWN0
ZXJzV2l0aFVwY29udmVydDxVQ2hhcj4pOgorICAgICAgICAoV1RGOjphcHBlbmQpOgorICAgICAg
ICBVc2UgZGVwcmVjYXRlZENoYXJhY3RlcnMgaW5zdGVhZCBvZiBjaGFyYWN0ZXJzLgorCisyMDE0
LTAxLTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwogICAgICAgICBSZWR1Y2Ug
dXNlIG9mIFN0cmluZzo6Y2hhcmFjdGVycwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI2ODU0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1Yjk0MjkzMDMxMjU2NDYx
NGY0ZjY3YWZiN2U2MDkwMGY0NDVhNzRjLi43MGNiNjdmNWFiYjRlN2VhYjcxM2Y1OTdlOTM2M2E2
MDA5YjFiNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkwIEBACiAyMDE0LTAxLTEyICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAorICAgICAgICBBZGQgZGVwcmVjYXRlZENoYXJh
Y3RlcnMgYXMgYSBzeW5vbnltIGZvciBjaGFyYWN0ZXJzIGFuZCBjb252ZXJ0IG1vc3QgY2FsbCBz
aXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2
ODU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktl
eVBhdGhMZXhlcjo6SURCS2V5UGF0aExleGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6c2V0U3Vi
cHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxD
bGllbnRXcmFwcGVyOjpzZXRFeHRlbnNpb25zKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdDo6aGFzTWlzc3BlbGxpbmcpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBkb0FYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZTpd
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVTZXJpYWxpemVyOjp3cml0ZSk6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0
YSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpwYXJzZVF1YWxpZmllZE5hbWUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWlzc3BlbGxlZFdvcmRBdENhcmV0T3JSYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1pc3NwZWxsZWRTZWxlY3Rpb25TdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
ckluUmFuZ2VzKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5n
T3JCYWRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6Zmlu
ZEZpcnN0QmFkR3JhbW1hcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6
Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UpOgorICAgICAgICAqIGVk
aXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdQYXJhZ3JhcGg6OnRleHREZXByZWNhdGVkQ2hhcmFjdGVycyk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGFwc2VkU3BhY2VMZW5n
dGgpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6
aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbnNLYW5hTGV0dGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hCdWZmZXI6OlNlYXJjaEJ1ZmZlcik6CisgICAgICAg
ICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRv
cjo6Y2hhcmFjdGVycyk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpjaGFyYWN0ZXJBZnRlcik6CisgICAg
ICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d29yZEJy
ZWFrSXRlcmF0b3JGb3JNaW5PZmZzZXRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjp3b3Jk
QnJlYWtJdGVyYXRvckZvck1heE9mZnNldEJvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OnZp
c3VhbFdvcmRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0JvdW5kYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6Om5leHRCb3VuZGFyeSk6CisgICAgICAgICogZmlsZWFwaS9XZWJL
aXRCbG9iQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iQnVpbGRlcjo6YXBwZW5k
KToKKyAgICAgICAgKiBodG1sL0Zvcm1EYXRhTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtRGF0YUxpc3Q6OmFwcGVuZFN0cmluZyk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVNwYWNl
cyk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwYXJzZUltYWdlc1dpdGhTY2FsZUZyb21TcmNzZXRBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJlZUJ1aWxkZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXI6OkV4dGVybmFs
Q2hhcmFjdGVyVG9rZW5CdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9NYW5pZmVz
dFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU1hbmlmZXN0KToKKyAgICAgICAg
KiBwYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1Nv
dXJjZUxpc3ROb25lKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUFNvdXJjZUxpc3Q6OnBhcnNlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vbmNlRGlyZWN0aXZlOjpwYXJzZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUxpc3REaXJlY3RpdmU6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERp
cmVjdGl2ZUxpc3Q6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6
OnBhcnNlUmVwb3J0VVJJKToKKyAgICAgICAgKFdlYkNvcmU6OkNTUERpcmVjdGl2ZUxpc3Q6OnBh
cnNlUmVmbGVjdGVkWFNTKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGlj
eTo6ZGlkUmVjZWl2ZUhlYWRlcik6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQpOgor
ICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXdDb29y
ZHNBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpuZXdMZW5ndGhBcnJheSk6CisgICAgICAgICog
cGxhdGZvcm0vTGlua0hhc2guY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmlzaXRlZFVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjp2aXNpdGVkTGlua0hhc2gpOgorICAgICAgICAqIHBsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1dGY4QnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9VUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpwb3J0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmVuY29kZUhvc3RuYW1lcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvU3RyaW5nVHJ1bmNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNlbnRlclRydW5jYXRl
VG9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmlnaHRUcnVuY2F0ZVRvQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJpZ2h0Q2xpcFRvQ2hhcmFjdGVyQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OnJpZ2h0Q2xpcFRvV29yZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpsZWZ0VHJ1
bmNhdGVUb0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZVN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHJpbmdUcnVuY2F0b3I6OndpZHRoKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9UZXh0UnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpUZXh0UnVu
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291
cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUJ1aWxkZXI6OmFkZEZpbGVuYW1lVG9NdWx0aVBhcnRI
ZWFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50OjpiaW5kQmxvYik6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L0RlY29kZUVzY2FwZVNlcXVlbmNlcy5oOgorICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlRXNjYXBl
U2VxdWVuY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om51bUdyYXBoZW1lQ2x1c3RlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6bnVtQ2hhcmFjdGVyc0luR3JhcGhlbWVDbHVzdGVycyk6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRV
cEl0ZXJhdG9yV2l0aFJ1bGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lD
VS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNJQ1U6OmVuY29kZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpjb25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2VyOjpwYWludCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWF4
V29yZEZyYWdtZW50V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6Y29tcHV0
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6
Y29tcHV0ZUNhblVzZVNpbXBsZUZvbnRDb2RlUGF0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmNoYXJhY3RlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6ZGVwcmVjYXRlZENoYXJhY3RlcnMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9saW5lL0JyZWFraW5nQ29udGV4dElubGluZUhlYWRlcnMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRyeUh5cGhlbmF0aW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJv
eDo6Y29uc3RydWN0VGV4dFJ1bik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5
b3V0QXR0cmlidXRlc0J1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc1JlbmRl
clNWR0lubGluZVRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVu
Z2luZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0RW5naW5lOjpsYXlvdXRU
ZXh0T25MaW5lT3JQYXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRNZXRyaWNzOjptZWFzdXJlQ2hhcmFjdGVy
UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dE1ldHJpY3M6OlNWR1RleHRNZXRyaWNz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJl
bWVudFdpdGhUZXh0UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdBbmdsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmdsZTo6c2V0VmFsdWVBc1N0cmluZyk6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlUG9p
bnQpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlS2V5U3BsaW5lcyk6CisgICAgICAgICogc3ZnL1NWR0ZpdFRvVmlld0JveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmlld0JveCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZvbnREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRE
YXRhOjphcHBseVNWR0dseXBoU2VsZWN0aW9uKToKKyAgICAgICAgKiBzdmcvU1ZHR2x5cGhNYXAu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dseXBoTWFwOjphZGRHbHlwaCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdHbHlwaE1hcDo6Y29sbGVjdEdseXBoc0ZvclN0cmluZyk6CisgICAgICAgICog
c3ZnL1NWR0dseXBoUmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaFJl
ZkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6c2V0VmFsdWVBc1N0cmluZyk6CisgICAgICAg
ICogc3ZnL1NWR0xlbmd0aExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoTGlz
dDo6cGFyc2UpOgorICAgICAgICAqIHN2Zy9TVkdOdW1iZXJMaXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR051bWJlckxpc3Q6OnBhcnNlKToKKyAgICAgICAgKiBzdmcvU1ZHUGFyc2VyVXRp
bGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTnVtYmVyRnJvbVN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpwb2ludHNMaXN0RnJvbVNWR0Rh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VHbHlwaE5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VLZXJuaW5nVW5pY29kZVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZURl
bGltaXRlZFN0cmluZyk6CisgICAgICAgICogc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6cGFyc2UpOgorICAg
ICAgICAqIHN2Zy9TVkdTdHJpbmdMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0cmlu
Z0xpc3Q6OnBhcnNlKToKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtTGlzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1MaXN0OjpwYXJzZSk6CisgICAgICAgICogc3ZnL1NW
R1RyYW5zZm9ybWFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtYWJsZTo6
cGFyc2VUcmFuc2Zvcm1UeXBlKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld1NwZWMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6OnBhcnNlVmlld1NwZWMpOgorICAgICAgICAqIHN2
Zy9TVkdab29tQW5kUGFuLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdab29tQW5kUGFuOjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKyAgICAgICAgKiB4bWwvWFNMU3R5bGVT
aGVldExpYnhzbHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNMU3R5bGVTaGVldDo6cGFyc2VT
dHJpbmcpOgorICAgICAgICAqIHhtbC9YU0xUVW5pY29kZVNvcnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6eHNsdFVuaWNvZGVTb3J0RnVuY3Rpb24pOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50
UGFyc2VyOjpkb1dyaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQXR0cmlidXRlcyk6Cisg
ICAgICAgIFVzZSBkZXByZWNhdGVkQ2hhcmFjdGVycyBpbnN0ZWFkIG9mIGNoYXJhY3RlcnMuCisK
KzIwMTQtMDEtMTIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCiAgICAgICAgIFJl
ZHVjZSB1c2Ugb2YgU3RyaW5nOjpjaGFyYWN0ZXJzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjY4NTQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDgzMmVh
NmQ3ZDIyMmQwMTg4MWYxMzc3ZGQ3MDQxY2JjNWVjZTRkM2QuLjBkYjdmZGYyYzBmOGYyMTgwMDQz
MDJlZGI3NTZhNjY4ZTAyNjgxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNC0wMS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IGRlcHJlY2F0ZWRDaGFyYWN0ZXJzIGFzIGEgc3lub255bSBmb3IgY2hhcmFjdGVycyBhbmQgY29u
dmVydCBtb3N0IGNhbGwgc2l0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNjg1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwOgorICAgICAgICAo
QmluYXJ5UHJvcGVydHlMaXN0U2VyaWFsaXplcjo6YXBwZW5kU3RyaW5nT2JqZWN0KToKKyAgICAg
ICAgVXNlIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzIGluc3RlYWQgb2YgY2hhcmFjdGVycy4KKwogMjAx
NC0wMS0xMSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXSBbV2luZG93c10gU3RvcCBzY2hlZHVsaW5nIG5ldHdvcmsgcmVxdWVzdHMgaW4gV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGE1ZjM2ODJlMjBiNmFhMjcyNmY3NWM2Y2ViZmNmOTA0MjM1NjI4ZjAu
LjIzNWYxNzA1OGM2M2RiNjIwMGQ5ODY1NmZhNTQ5YmFkYmVhZTI0ZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxNC0wMS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzIGFzIGEgc3lub255bSBmb3IgY2hh
cmFjdGVycyBhbmQgY29udmVydCBtb3N0IGNhbGwgc2l0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjg1OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL0FQSVN0cmluZy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmNoZWNrR3JhbW1hck9mU3RyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RW5jb2RlckFkYXB0ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpFbmNvZGVyQWRhcHRlcjo6ZW5j
b2RlU3RyaW5nKToKKyAgICAgICAgVXNlIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzIGluc3RlYWQgb2Yg
Y2hhcmFjdGVycy4KKwogMjAxNC0wMS0xMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZGVkIGEgcmVmZXJlbmNlIHRvIFdlYkNvbnRlbnRTZXJ2aWNlL0luZm8t
T1NYLnBsaXN0IHRvIHRoZSBwcm9qZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1N0cmluZ1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3Ry
aW5nUmVmLmNwcAppbmRleCBhMDNhZmVkNWI3MjYxMWEyOGMwYTIwM2YwMzBmNTJhMTM0MGU4NmJl
Li45NWVkYzY3M2ExYjVlZjM1YTMwOTVlZWRhYjU5NzAzMjNlZTIzN2ZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmLmNwcApAQCAtODMsNyArODMsNyBAQCBzaXplX3Qg
SlNTdHJpbmdHZXRMZW5ndGgoSlNTdHJpbmdSZWYgc3RyaW5nKQogCiBjb25zdCBKU0NoYXIqIEpT
U3RyaW5nR2V0Q2hhcmFjdGVyc1B0cihKU1N0cmluZ1JlZiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJu
IHN0cmluZy0+Y2hhcmFjdGVycygpOworICAgIHJldHVybiBzdHJpbmctPmRlcHJlY2F0ZWRDaGFy
YWN0ZXJzKCk7CiB9CiAKIHNpemVfdCBKU1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUo
SlNTdHJpbmdSZWYgc3RyaW5nKQpAQCAtOTgsNyArOTgsNyBAQCBzaXplX3QgSlNTdHJpbmdHZXRV
VEY4Q1N0cmluZyhKU1N0cmluZ1JlZiBzdHJpbmcsIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZl
clNpegogICAgICAgICByZXR1cm4gMDsKIAogICAgIGNoYXIqIHAgPSBidWZmZXI7Ci0gICAgY29u
c3QgVUNoYXIqIGQgPSBzdHJpbmctPmNoYXJhY3RlcnMoKTsKKyAgICBjb25zdCBVQ2hhciogZCA9
IHN0cmluZy0+ZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsKICAgICBDb252ZXJzaW9uUmVzdWx0IHJl
c3VsdCA9IGNvbnZlcnRVVEYxNlRvVVRGOCgmZCwgZCArIHN0cmluZy0+bGVuZ3RoKCksICZwLCBw
ICsgYnVmZmVyU2l6ZSAtIDEsIHRydWUpOwogICAgICpwKysgPSAnXDAnOwogICAgIGlmIChyZXN1
bHQgIT0gY29udmVyc2lvbk9LICYmIHJlc3VsdCAhPSB0YXJnZXRFeGhhdXN0ZWQpCkBAIC0xMTAs
NyArMTEwLDcgQEAgc2l6ZV90IEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoSlNTdHJpbmdSZWYgc3Ry
aW5nLCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXoKIGJvb2wgSlNTdHJpbmdJc0VxdWFs
KEpTU3RyaW5nUmVmIGEsIEpTU3RyaW5nUmVmIGIpCiB7CiAgICAgdW5zaWduZWQgbGVuID0gYS0+
bGVuZ3RoKCk7Ci0gICAgcmV0dXJuIGxlbiA9PSBiLT5sZW5ndGgoKSAmJiAwID09IG1lbWNtcChh
LT5jaGFyYWN0ZXJzKCksIGItPmNoYXJhY3RlcnMoKSwgbGVuICogc2l6ZW9mKFVDaGFyKSk7Cisg
ICAgcmV0dXJuIGxlbiA9PSBiLT5sZW5ndGgoKSAmJiAwID09IG1lbWNtcChhLT5kZXByZWNhdGVk
Q2hhcmFjdGVycygpLCBiLT5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBsZW4gKiBzaXplb2YoVUNo
YXIpKTsKIH0KIAogYm9vbCBKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKEpTU3RyaW5nUmVm
IGEsIGNvbnN0IGNoYXIqIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTU3RyaW5nUmVmQ0YuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1Jl
ZkNGLmNwcAppbmRleCA1MDU5M2YxOWUwNGI3MjNmZDM3MDQ3YzA2NzNlZTFhNWFlNWNkMmNhLi5j
ZDA5NTY0ZDViMmU2NzE5Zjk0NDdlNGUxOTIyYzJjY2UwYzc4NzdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAKQEAgLTYxLDUgKzYxLDUgQEAgQ0ZTdHJp
bmdSZWYgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIEpTU3RyaW5n
UmVmIHN0cmluZykKICAgICBpZiAoIXN0cmluZy0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBD
RlNUUigiIik7CiAKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhhbGxv
YywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oc3RyaW5nLT5jaGFyYWN0ZXJzKCkp
LCBzdHJpbmctPmxlbmd0aCgpKTsKKyAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVycyhhbGxvYywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oc3RyaW5nLT5kZXBy
ZWNhdGVkQ2hhcmFjdGVycygpKSwgc3RyaW5nLT5sZW5ndGgoKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL09wYXF1ZUpTU3RyaW5nLmgKaW5kZXggZDYxN2IzNWFlYjUzMjNiMWY3MWM1
ZjFiNGIyMmVjZDZhNGJhMDcyZC4uNjFkODBmM2RjOGM3MTQwOTk4ZTg4MGQzNzg2NzQwZmRmZTZk
ODY0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PcGFxdWVKU1N0cmlu
Zy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT3BhcXVlSlNTdHJpbmcuaApAQCAt
NTMsOCArNTMsOSBAQCBzdHJ1Y3QgT3BhcXVlSlNTdHJpbmcgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8T3BhcXVlSlNTdHJpbmc+IHsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBQYXNzUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7CiAKLSAg
ICBjb25zdCBVQ2hhciogY2hhcmFjdGVycygpIHsgcmV0dXJuICEhdGhpcyA/IG1fc3RyaW5nLmNo
YXJhY3RlcnMoKSA6IDA7IH0KLSAgICB1bnNpZ25lZCBsZW5ndGgoKSB7IHJldHVybiAhIXRoaXMg
PyBtX3N0cmluZy5sZW5ndGgoKSA6IDA7IH0KKyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycygp
IHsgcmV0dXJuIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7IH0gLy8gRklYTUU6IERlbGV0ZSB0aGlz
LgorICAgIGNvbnN0IFVDaGFyKiBkZXByZWNhdGVkQ2hhcmFjdGVycygpIHsgcmV0dXJuIHRoaXMg
PyBtX3N0cmluZy5kZXByZWNhdGVkQ2hhcmFjdGVycygpIDogbnVsbHB0cjsgfQorICAgIHVuc2ln
bmVkIGxlbmd0aCgpIHsgcmV0dXJuIHRoaXMgPyBtX3N0cmluZy5sZW5ndGgoKSA6IDA7IH0KIAog
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdHJpbmcoKSBjb25zdDsKICAgICBKU0M6Oklk
ZW50aWZpZXIgaWRlbnRpZmllcihKU0M6OlZNKikgY29uc3Q7CkBAIC03MiwxMyArNzMsMTMgQEAg
cHJpdmF0ZToKICAgICB9CiAKICAgICBPcGFxdWVKU1N0cmluZyhjb25zdCBMQ2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKQorICAgICAgICA6IG1fc3RyaW5nKGNoYXJhY3RlcnMsIGxl
bmd0aCkKICAgICB7Ci0gICAgICAgIG1fc3RyaW5nID0gU3RyaW5nKGNoYXJhY3RlcnMsIGxlbmd0
aCk7CiAgICAgfQogCiAgICAgT3BhcXVlSlNTdHJpbmcoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHVuc2lnbmVkIGxlbmd0aCkKKyAgICAgICAgOiBtX3N0cmluZyhjaGFyYWN0ZXJzLCBsZW5ndGgp
CiAgICAgewotICAgICAgICBtX3N0cmluZyA9IFN0cmluZyhjaGFyYWN0ZXJzLCBsZW5ndGgpOwog
ICAgIH0KIAogICAgIFN0cmluZyBtX3N0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAppbmRleCA4YThmMmQ3MTQxNmI1MDEz
NWEwM2JmMmFiY2NkMDIwMmRmYTMyMDRhLi43MWIzZWE0NDdiOGFhOGU5MmMwOTA4ODU0NWU3MzRk
NTk1YjI0OTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclZhbHVlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuY3BwCkBAIC01NDYsOCArNTQ2LDggQEAgUGFzc1JlZlB0cjxJbnNwZWN0
b3JBcnJheT4gSW5zcGVjdG9yVmFsdWU6OmFzQXJyYXkoKQogCiBQYXNzUmVmUHRyPEluc3BlY3Rv
clZhbHVlPiBJbnNwZWN0b3JWYWx1ZTo6cGFyc2VKU09OKGNvbnN0IFN0cmluZyYganNvbikKIHsK
LSAgICBjb25zdCBVQ2hhciogc3RhcnQgPSBqc29uLmNoYXJhY3RlcnMoKTsKLSAgICBjb25zdCBV
Q2hhciogZW5kID0ganNvbi5jaGFyYWN0ZXJzKCkgKyBqc29uLmxlbmd0aCgpOworICAgIGNvbnN0
IFVDaGFyKiBzdGFydCA9IGpzb24uZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsKKyAgICBjb25zdCBV
Q2hhciogZW5kID0ganNvbi5kZXByZWNhdGVkQ2hhcmFjdGVycygpICsganNvbi5sZW5ndGgoKTsK
ICAgICBjb25zdCBVQ2hhciAqdG9rZW5FbmQ7CiAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiB2
YWx1ZSA9IGJ1aWxkVmFsdWUoc3RhcnQsIGVuZCwgJnRva2VuRW5kLCAwKTsKICAgICBpZiAoIXZh
bHVlIHx8IHRva2VuRW5kICE9IGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCA5MjAwNTY3ZTE0
OWJhMTVjNTRkZGRhYjkwNDRlNWYwZmRjYWQyNDM4Li45MTMyZDMyNzViZTI5YTE4MzgyMWYxNmFm
ODkxNjYyN2IyMjNlNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAg
c3RhdGljIGRvdWJsZSBwYXJzZUludChjb25zdCBTdHJpbmcmIHMsIGNvbnN0IENoYXJUeXBlKiBk
YXRhLCBpbnQgcmFkaXgpCiAgICAgaWYgKG51bWJlciA+PSBtYW50aXNzYU92ZXJmbG93TG93ZXJC
b3VuZCkgewogICAgICAgICBpZiAocmFkaXggPT0gMTApIHsKICAgICAgICAgICAgIHNpemVfdCBw
YXJzZWRMZW5ndGg7Ci0gICAgICAgICAgICBudW1iZXIgPSBwYXJzZURvdWJsZShzLmNoYXJhY3Rl
cnMoKSArIGZpcnN0RGlnaXRQb3NpdGlvbiwgcCAtIGZpcnN0RGlnaXRQb3NpdGlvbiwgcGFyc2Vk
TGVuZ3RoKTsKKyAgICAgICAgICAgIG51bWJlciA9IHBhcnNlRG91YmxlKHMuZGVwcmVjYXRlZENo
YXJhY3RlcnMoKSArIGZpcnN0RGlnaXRQb3NpdGlvbiwgcCAtIGZpcnN0RGlnaXRQb3NpdGlvbiwg
cGFyc2VkTGVuZ3RoKTsKICAgICAgICAgfSBlbHNlIGlmIChyYWRpeCA9PSAyIHx8IHJhZGl4ID09
IDQgfHwgcmFkaXggPT0gOCB8fCByYWRpeCA9PSAxNiB8fCByYWRpeCA9PSAzMikKICAgICAgICAg
ICAgIG51bWJlciA9IHBhcnNlSW50T3ZlcmZsb3cocy5zdWJzdHJpbmdTaGFyaW5nSW1wbChmaXJz
dERpZ2l0UG9zaXRpb24sIHAgLSBmaXJzdERpZ2l0UG9zaXRpb24pLnV0ZjgoKS5kYXRhKCksIHAg
LSBmaXJzdERpZ2l0UG9zaXRpb24sIHJhZGl4KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCAyODVjMTczNTAwYmJi
NmJmMmQwYmMwMDRkOGVhNWRlN2NlMzZkNzFjLi5kNmE3OGJjZDMxODcyMzlmMjY5NWFhZmE2NGJl
OGFkMjBhMjdkYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgaW5saW5lIFN0cmlu
ZyBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCwgY29u
c3QgUwogCiBzdGF0aWMgaW5saW5lIGludCBsb2NhbGVDb21wYXJlKGNvbnN0IFN0cmluZyYgYSwg
Y29uc3QgU3RyaW5nJiBiKQogewotICAgIHJldHVybiBDb2xsYXRvcjo6dXNlckRlZmF1bHQoKS0+
Y29sbGF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IDo6VUNoYXIqPihhLmNoYXJhY3RlcnMoKSks
IGEubGVuZ3RoKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgOjpVQ2hhcio+KGIuY2hhcmFjdGVy
cygpKSwgYi5sZW5ndGgoKSk7CisgICAgcmV0dXJuIENvbGxhdG9yOjp1c2VyRGVmYXVsdCgpLT5j
b2xsYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgOjpVQ2hhcio+KGEuZGVwcmVjYXRlZENoYXJh
Y3RlcnMoKSksIGEubGVuZ3RoKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgOjpVQ2hhcio+KGIu
ZGVwcmVjYXRlZENoYXJhY3RlcnMoKSksIGIubGVuZ3RoKCkpOwogfQogCiBzdHJ1Y3QgU3RyaW5n
UmFuZ2UgewpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNGb250c2l6ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGJ1ZmZl
clsxMl0gPSAnMCcgKyBzbWFsbEludGVnZXI7CiAgICAgICAgIGJ1ZmZlclsxM10gPSAnIic7CiAg
ICAgICAgIGJ1ZmZlclsxNF0gPSAnPic7Ci0gICAgICAgIG1lbWNweSgmYnVmZmVyWzE1XSwgcy5j
aGFyYWN0ZXJzKCksIHN0cmluZ1NpemUgKiBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgbWVtY3B5
KCZidWZmZXJbMTVdLCBzLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHN0cmluZ1NpemUgKiBzaXpl
b2YoVUNoYXIpKTsKICAgICAgICAgYnVmZmVyWzE1ICsgc3RyaW5nU2l6ZV0gPSAnPCc7CiAgICAg
ICAgIGJ1ZmZlclsxNiArIHN0cmluZ1NpemVdID0gJy8nOwogICAgICAgICBidWZmZXJbMTcgKyBz
dHJpbmdTaXplXSA9ICdmJzsKQEAgLTE0ODMsMTAgKzE0ODMsMTAgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMaW5rKEV4ZWNTdGF0ZSogZXhlYykKICAgICBi
dWZmZXJbNl0gPSAnZic7CiAgICAgYnVmZmVyWzddID0gJz0nOwogICAgIGJ1ZmZlcls4XSA9ICci
JzsKLSAgICBtZW1jcHkoJmJ1ZmZlcls5XSwgbGlua1RleHQuY2hhcmFjdGVycygpLCBsaW5rVGV4
dFNpemUgKiBzaXplb2YoVUNoYXIpKTsKKyAgICBtZW1jcHkoJmJ1ZmZlcls5XSwgbGlua1RleHQu
ZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgbGlua1RleHRTaXplICogc2l6ZW9mKFVDaGFyKSk7CiAg
ICAgYnVmZmVyWzkgKyBsaW5rVGV4dFNpemVdID0gJyInOwogICAgIGJ1ZmZlclsxMCArIGxpbmtU
ZXh0U2l6ZV0gPSAnPic7Ci0gICAgbWVtY3B5KCZidWZmZXJbMTEgKyBsaW5rVGV4dFNpemVdLCBz
LmNoYXJhY3RlcnMoKSwgc3RyaW5nU2l6ZSAqIHNpemVvZihVQ2hhcikpOworICAgIG1lbWNweSgm
YnVmZmVyWzExICsgbGlua1RleHRTaXplXSwgcy5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBzdHJp
bmdTaXplICogc2l6ZW9mKFVDaGFyKSk7CiAgICAgYnVmZmVyWzExICsgbGlua1RleHRTaXplICsg
c3RyaW5nU2l6ZV0gPSAnPCc7CiAgICAgYnVmZmVyWzEyICsgbGlua1RleHRTaXplICsgc3RyaW5n
U2l6ZV0gPSAnLyc7CiAgICAgYnVmZmVyWzEzICsgbGlua1RleHRTaXplICsgc3RyaW5nU2l6ZV0g
PSAnYSc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKaW5kZXggMzNmZjNlNzQwZjc3
YjFmNWFmYzZmM2I5ZmM5ODg2MzIxNmQzMTYxMS4uNTgwM2RkMDE4Y2U2ZWFkODYyOGI0M2RjMmVj
ODBiNGY5OTk4NzkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJp
bmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcApAQCAtMTg3
LDcgKzE4Nyw3IEBAIHN0cnVjdCBIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yIHsKIAog
ICAgICAgICAvLyBJZiBidWZmZXIgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzIFVURi04
IGFuZCBVVEYxNiBsZW5ndGggYXJlIHRoZSBzYW1lLgogICAgICAgICBpZiAoYnVmZmVyLnV0ZjE2
TGVuZ3RoICE9IGJ1ZmZlci5sZW5ndGgpIHsKLSAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBzdHJp
bmdDaGFyYWN0ZXJzID0gc3RyaW5nLT5jaGFyYWN0ZXJzKCk7CisgICAgICAgICAgICBjb25zdCBV
Q2hhciogc3RyaW5nQ2hhcmFjdGVycyA9IHN0cmluZy0+ZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsK
IAogICAgICAgICAgICAgcmV0dXJuIGVxdWFsVVRGMTZXaXRoVVRGOChzdHJpbmdDaGFyYWN0ZXJz
LCBzdHJpbmdDaGFyYWN0ZXJzICsgc3RyaW5nLT5sZW5ndGgoKSwgYnVmZmVyLmNoYXJhY3RlcnMs
IGJ1ZmZlci5jaGFyYWN0ZXJzICsgYnVmZmVyLmxlbmd0aCk7CiAgICAgICAgIH0KQEAgLTI4Mywx
MiArMjgzLDEyIEBAIHN0cnVjdCBTdWJzdHJpbmdMb2NhdGlvbiB7CiBzdHJ1Y3QgU3Vic3RyaW5n
VHJhbnNsYXRvciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU3Vic3RyaW5nTG9j
YXRpb24mIGJ1ZmZlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6OmNvbXB1
dGVIYXNoQW5kTWFza1RvcDhCaXRzKGJ1ZmZlci5iYXNlU3RyaW5nLT5jaGFyYWN0ZXJzKCkgKyBi
dWZmZXIuc3RhcnQsIGJ1ZmZlci5sZW5ndGgpOworICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVy
Ojpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhidWZmZXIuYmFzZVN0cmluZy0+ZGVwcmVjYXRl
ZENoYXJhY3RlcnMoKSArIGJ1ZmZlci5zdGFydCwgYnVmZmVyLmxlbmd0aCk7CiAgICAgfQogCiAg
ICAgc3RhdGljIGJvb2wgZXF1YWwoU3RyaW5nSW1wbCogY29uc3QmIHN0cmluZywgY29uc3QgU3Vi
c3RyaW5nTG9jYXRpb24mIGJ1ZmZlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OmVxdWFs
KHN0cmluZywgYnVmZmVyLmJhc2VTdHJpbmctPmNoYXJhY3RlcnMoKSArIGJ1ZmZlci5zdGFydCwg
YnVmZmVyLmxlbmd0aCk7CisgICAgICAgIHJldHVybiBXVEY6OmVxdWFsKHN0cmluZywgYnVmZmVy
LmJhc2VTdHJpbmctPmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCkgKyBidWZmZXIuc3RhcnQsIGJ1ZmZl
ci5sZW5ndGgpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShTdHJpbmdJbXBs
KiYgbG9jYXRpb24sIGNvbnN0IFN1YnN0cmluZ0xvY2F0aW9uJiBidWZmZXIsIHVuc2lnbmVkIGhh
c2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oIGIvU291
cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAppbmRleCA0OThlZWY5MWQ0M2FjZjhkZTU1
NjY1NGFmMTE3NDA0MTFjMjQzZjBiLi40MTQyZGUxNDJmMzE3ZGFlZGE5NDIyYWVhY2YxNmEwMDcx
OWEwYTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKQEAgLTkzLDcgKzkzLDcgQEAg
cHVibGljOgogICAgIEF0b21pY1N0cmluZ0ltcGwqIGltcGwoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxBdG9taWNTdHJpbmdJbXBsICo+KG1fc3RyaW5nLmltcGwoKSk7IH0KIAogICAgIGJv
b2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuaXM4Qml0KCk7IH0KLSAgICBjb25z
dCBVQ2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnMo
KTsgfQorICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsgfSAvLyBGSVhNRTogRGVsZXRlIHRoaXMuCiAgICAg
Y29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcuY2hhcmFj
dGVyczgoKTsgfQogICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYoKSBjb25zdCB7IHJldHVy
biBtX3N0cmluZy5jaGFyYWN0ZXJzMTYoKTsgfQogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nLmxlbmd0aCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0Jhc2U2NC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5jcHAKaW5kZXgg
YjM3ZmYzYWRhYzVkNjZjZTMxMmIxZWUzNzgwYzEwMmUwNGRjMjkwNC4uMjMyM2YzZmEzODE4YWYy
NjVlM2JhNjY4MmI2OGI4MzU1YjEwZDUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9CYXNlNjQuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmNwcApAQCAtMjUw
LDcgKzI1MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBiYXNlNjREZWNvZGVJbnRlcm5hbChjb25z
dCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIFZlY3RvcjxjCiAKIGJvb2wgYmFzZTY0RGVjb2Rl
KGNvbnN0IFN0cmluZyYgaW4sIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcHRlciBvdXQs
IEJhc2U2NERlY29kZVBvbGljeSBwb2xpY3kpCiB7Ci0gICAgcmV0dXJuIGJhc2U2NERlY29kZUlu
dGVybmFsPFVDaGFyPihpbi5jaGFyYWN0ZXJzKCksIGluLmxlbmd0aCgpLCBvdXQsIHBvbGljeSwg
YmFzZTY0RGVjTWFwKTsKKyAgICByZXR1cm4gYmFzZTY0RGVjb2RlSW50ZXJuYWw8VUNoYXI+KGlu
LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIGluLmxlbmd0aCgpLCBvdXQsIHBvbGljeSwgYmFzZTY0
RGVjTWFwKTsKIH0KIAogYm9vbCBiYXNlNjREZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbiwg
U2lnbmVkT3JVbnNpZ25lZENoYXJWZWN0b3JBZGFwdGVyIG91dCwgQmFzZTY0RGVjb2RlUG9saWN5
IHBvbGljeSkKQEAgLTI3MSw3ICsyNzEsNyBAQCBib29sIGJhc2U2NERlY29kZShjb25zdCBjaGFy
KiBkYXRhLCB1bnNpZ25lZCBsZW4sIFNpZ25lZE9yVW5zaWduZWRDaGFyVmVjdG9yQWRhcAogCiBi
b29sIGJhc2U2NFVSTERlY29kZShjb25zdCBTdHJpbmcmIGluLCBTaWduZWRPclVuc2lnbmVkQ2hh
clZlY3RvckFkYXB0ZXIgb3V0KQogewotICAgIHJldHVybiBiYXNlNjREZWNvZGVJbnRlcm5hbDxV
Q2hhcj4oaW4uY2hhcmFjdGVycygpLCBpbi5sZW5ndGgoKSwgb3V0LCBCYXNlNjRGYWlsT25JbnZh
bGlkQ2hhcmFjdGVyLCBiYXNlNjRVUkxEZWNNYXApOworICAgIHJldHVybiBiYXNlNjREZWNvZGVJ
bnRlcm5hbDxVQ2hhcj4oaW4uZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgaW4ubGVuZ3RoKCksIG91
dCwgQmFzZTY0RmFpbE9uSW52YWxpZENoYXJhY3RlciwgYmFzZTY0VVJMRGVjTWFwKTsKIH0KIAog
Ym9vbCBiYXNlNjRVUkxEZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbiwgU2lnbmVkT3JVbnNp
Z25lZENoYXJWZWN0b3JBZGFwdGVyIG91dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgK
aW5kZXggZjUzNDRjYjlkYjY3YzFkYmJjYzI3ZmE4OWJhYjAzYTZjMmIyMjQ5ZC4uMjZiZTkwNjMz
NTYzYmFjM2Y2NWIzNWRkN2QxYTJlMDkxN2EwNWM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmgKQEAgLTI0OCwyMSArMjQ4LDIyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1f
YnVmZmVyLT5jaGFyYWN0ZXJzMTYoKTsKICAgICB9CiAgICAgCi0gICAgY29uc3QgVUNoYXIqIGNo
YXJhY3RlcnMoKSBjb25zdAorICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyBy
ZXR1cm4gZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsgfSAvLyBGSVhNRTogRGVsZXRlIHRoaXMuCisg
ICAgY29uc3QgVUNoYXIqIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmICghbV9sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgaWYgKCFt
X3N0cmluZy5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBtX3N0cmluZy5jaGFyYWN0ZXJz
KCk7CisgICAgICAgICAgICByZXR1cm4gbV9zdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsK
ICAgICAgICAgQVNTRVJUKG1fYnVmZmVyKTsKICAgICAgICAgaWYgKG1fYnVmZmVyLT5oYXMxNkJp
dFNoYWRvdygpICYmIG1fdmFsaWQxNkJpdFNoYWRvd0xlbmd0aCA8IG1fbGVuZ3RoKQogICAgICAg
ICAgICAgbV9idWZmZXItPnVwY29udmVydENoYXJhY3RlcnMobV92YWxpZDE2Qml0U2hhZG93TGVu
Z3RoLCBtX2xlbmd0aCk7CiAKICAgICAgICAgbV92YWxpZDE2Qml0U2hhZG93TGVuZ3RoID0gbV9s
ZW5ndGg7CiAKLSAgICAgICAgcmV0dXJuIG1fYnVmZmVyLT5jaGFyYWN0ZXJzKCk7CisgICAgICAg
IHJldHVybiBtX2J1ZmZlci0+ZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsKICAgICB9Ci0gICAgCisK
ICAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1faXM4Qml0OyB9CiAKICAgICB2b2lk
IGNsZWFyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IDhhNTQ5ZDRlYjI5OWNl
YTdkNjg3Nzg4OTBhOGRmYjNhYjVhMTVkZTIuLjM0Nzk0MjU4YzMwNzc1ZjJmMDkzOWJjMTljNTVi
NDYwODQ1NWZiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtMzA5LDcgKzMw
OSw3IEBAIGNvbnN0IFVDaGFyKiBTdHJpbmdJbXBsOjpnZXREYXRhMTZTbG93Q2FzZSgpIGNvbnN0
CiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBzdWJzdHJpbmcsIHJldHVybiBhIHBvaW50ZXIgaW50
byB0aGUgcGFyZW50IHN0cmluZy4KICAgICAgICAgLy8gVE9ETzogQ29uc2lkZXIgc2V2ZXJpbmcg
dGhpcyBzdHJpbmcgZnJvbSB0aGUgcGFyZW50IHN0cmluZwogICAgICAgICB1bnNpZ25lZCBvZmZz
ZXQgPSBtX2RhdGE4IC0gbV9zdWJzdHJpbmdCdWZmZXItPmNoYXJhY3RlcnM4KCk7Ci0gICAgICAg
IHJldHVybiBtX3N1YnN0cmluZ0J1ZmZlci0+Y2hhcmFjdGVycygpICsgb2Zmc2V0OworICAgICAg
ICByZXR1cm4gbV9zdWJzdHJpbmdCdWZmZXItPmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCkgKyBvZmZz
ZXQ7CiAgICAgfQogCiAgICAgU1RSSU5HX1NUQVRTX0FERF9VUENPTlZFUlRFRF9TVFJJTkcobV9s
ZW5ndGgpOwpAQCAtNTM5LDcgKzUzOSw3IEBAIFBhc3NSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6dXBwZXIoKQogICAgIH0KIAogdXBjb252ZXJ0OgotICAgIGNvbnN0IFVDaGFyKiBzb3VyY2Ux
NiA9IGNoYXJhY3RlcnMoKTsKKyAgICBjb25zdCBVQ2hhciogc291cmNlMTYgPSBkZXByZWNhdGVk
Q2hhcmFjdGVycygpOwogCiAgICAgVUNoYXIqIGRhdGExNjsKICAgICBSZWZQdHI8U3RyaW5nSW1w
bD4gbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9sZW5ndGgsIGRhdGExNik7CkBAIC01
OTcsNyArNTk3LDcgQEAgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpsb3dlcihjb25z
dCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCiAgICAgLy8gQmVsb3csIHdlIHBhc3Mg
aW4gdGhlIGhhcmRjb2RlZCBsb2NhbGUgInRyIi4gUGFzc2luZyB0aGF0IGlzIG1vcmUgZWZmaWNp
ZW50IHRoYW4KICAgICAvLyBhbGxvY2F0aW5nIG1lbW9yeSBqdXN0IHRvIHR1cm4gbG9jYWxlSWRl
bnRpZmllciBpbnRvIGEgQyBzdHJpbmcsIGFuZCB3ZSBhc3N1bWUKICAgICAvLyB0aGVyZSBpcyBu
byBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHVwcGVyY2FzaW5nIGZvciAidHIiIGFuZCAiYXoiIGxv
Y2FsZXMuCi0gICAgY29uc3QgVUNoYXIqIHNvdXJjZTE2ID0gY2hhcmFjdGVycygpOworICAgIGNv
bnN0IFVDaGFyKiBzb3VyY2UxNiA9IGRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7CiAgICAgVUNoYXIq
IGRhdGExNjsKICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbmV3U3RyaW5nID0gY3JlYXRlVW5pbml0
aWFsaXplZChsZW5ndGgsIGRhdGExNik7CiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9f
RVJST1I7CkBAIC02MjcsNyArNjI3LDcgQEAgUGFzc1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBs
Ojp1cHBlcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCiAgICAgLy8gQmVs
b3csIHdlIHBhc3MgaW4gdGhlIGhhcmRjb2RlZCBsb2NhbGUgInRyIi4gUGFzc2luZyB0aGF0IGlz
IG1vcmUgZWZmaWNpZW50IHRoYW4KICAgICAvLyBhbGxvY2F0aW5nIG1lbW9yeSBqdXN0IHRvIHR1
cm4gbG9jYWxlSWRlbnRpZmllciBpbnRvIGEgQyBzdHJpbmcsIGFuZCB3ZSBhc3N1bWUKICAgICAv
LyB0aGVyZSBpcyBubyBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHVwcGVyY2FzaW5nIGZvciAidHIi
IGFuZCAiYXoiIGxvY2FsZXMuCi0gICAgY29uc3QgVUNoYXIqIHNvdXJjZTE2ID0gY2hhcmFjdGVy
cygpOworICAgIGNvbnN0IFVDaGFyKiBzb3VyY2UxNiA9IGRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7
CiAgICAgVUNoYXIqIGRhdGExNjsKICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbmV3U3RyaW5nID0g
Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGRhdGExNik7CiAgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CkBAIC05OTgsNyArOTk4LDcgQEAgc2l6ZV90IFN0cmluZ0ltcGw6
OmZpbmQoY29uc3QgTENoYXIqIG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKICAgICAvLyBk
ZWx0YSBpcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgdGltZXMgdG8gdGVzdDsgZGVsdGEgPT0g
MCBtZWFucyB0ZXN0IG9ubHkgb25jZS4KICAgICB1bnNpZ25lZCBkZWx0YSA9IHNlYXJjaExlbmd0
aCAtIG1hdGNoTGVuZ3RoOwogCi0gICAgY29uc3QgVUNoYXIqIHNlYXJjaENoYXJhY3RlcnMgPSBj
aGFyYWN0ZXJzKCkgKyBpbmRleDsKKyAgICBjb25zdCBVQ2hhciogc2VhcmNoQ2hhcmFjdGVycyA9
IGRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCkgKyBpbmRleDsKIAogICAgIC8vIE9wdGltaXphdGlvbiAy
OiBrZWVwIGEgcnVubmluZyBoYXNoIG9mIHRoZSBzdHJpbmdzLAogICAgIC8vIG9ubHkgY2FsbCBl
cXVhbCBpZiB0aGUgaGFzaGVzIG1hdGNoLgpAQCAtMTA0Miw3ICsxMDQyLDcgQEAgc2l6ZV90IFN0
cmluZ0ltcGw6OmZpbmRJZ25vcmluZ0Nhc2UoY29uc3QgTENoYXIqIG1hdGNoU3RyaW5nLCB1bnNp
Z25lZCBpbmRleCkKICAgICAvLyBkZWx0YSBpcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgdGlt
ZXMgdG8gdGVzdDsgZGVsdGEgPT0gMCBtZWFucyB0ZXN0IG9ubHkgb25jZS4KICAgICB1bnNpZ25l
ZCBkZWx0YSA9IHNlYXJjaExlbmd0aCAtIG1hdGNoTGVuZ3RoOwogCi0gICAgY29uc3QgVUNoYXIq
IHNlYXJjaENoYXJhY3RlcnMgPSBjaGFyYWN0ZXJzKCkgKyBpbmRleDsKKyAgICBjb25zdCBVQ2hh
ciogc2VhcmNoQ2hhcmFjdGVycyA9IGRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCkgKyBpbmRleDsKIAog
ICAgIHVuc2lnbmVkIGkgPSAwOwogICAgIC8vIGtlZXAgbG9vcGluZyB1bnRpbCB3ZSBtYXRjaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCBlMTFiYTIzYjZiMTdmNzA2MTJkODZhNDBlNGY4
NWEzNGQ2ZTYzYjVkLi43NzBhY2YwMDBiNTkxNDQ3MTUwOTczNDJlOGQzYTM0ZjU1NWY0ZjVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNDUwLDEwICs0NTAsMTAgQEAgcHVibGljOgog
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAgICAgYm9v
bCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX2hhc2hBbmRGbGFncyAmIHNfaGFzaEZsYWc4Qml0
QnVmZmVyOyB9CiAKLSAgICAvLyBGSVhNRTogUmVtb3ZlIGFsbCB1bm5lY2Vzc2FyeSB1c2FnZXMg
b2YgY2hhcmFjdGVycygpCiAgICAgQUxXQVlTX0lOTElORSBjb25zdCBMQ2hhciogY2hhcmFjdGVy
czgoKSBjb25zdCB7IEFTU0VSVChpczhCaXQoKSk7IHJldHVybiBtX2RhdGE4OyB9CiAgICAgQUxX
QVlTX0lOTElORSBjb25zdCBVQ2hhciogY2hhcmFjdGVyczE2KCkgY29uc3QgeyBBU1NFUlQoIWlz
OEJpdCgpKTsgcmV0dXJuIG1fZGF0YTE2OyB9Ci0gICAgQUxXQVlTX0lOTElORSBjb25zdCBVQ2hh
ciogY2hhcmFjdGVycygpIGNvbnN0CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBjb25z
dCB7IHJldHVybiBkZXByZWNhdGVkQ2hhcmFjdGVycygpOyB9IC8vIEZJWE1FOiBEZWxldGUgdGhp
cy4KKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IFVDaGFyKiBkZXByZWNhdGVkQ2hhcmFjdGVycygp
IGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWlzOEJpdCgpKQogICAgICAgICAgICAgcmV0dXJu
IG1fZGF0YTE2OwpAQCAtODY1LDcgKzg2NSw3IEBAIHRlbXBsYXRlIDw+CiBBTFdBWVNfSU5MSU5F
IGNvbnN0IExDaGFyKiBTdHJpbmdJbXBsOjpnZXRDaGFyYWN0ZXJzPExDaGFyPigpIGNvbnN0IHsg
cmV0dXJuIGNoYXJhY3RlcnM4KCk7IH0KIAogdGVtcGxhdGUgPD4KLUFMV0FZU19JTkxJTkUgY29u
c3QgVUNoYXIqIFN0cmluZ0ltcGw6OmdldENoYXJhY3RlcnM8VUNoYXI+KCkgY29uc3QgeyByZXR1
cm4gY2hhcmFjdGVycygpOyB9CitBTFdBWVNfSU5MSU5FIGNvbnN0IFVDaGFyKiBTdHJpbmdJbXBs
OjpnZXRDaGFyYWN0ZXJzPFVDaGFyPigpIGNvbnN0IHsgcmV0dXJuIGRlcHJlY2F0ZWRDaGFyYWN0
ZXJzKCk7IH0KIAogV1RGX0VYUE9SVF9TVFJJTkdfQVBJIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5n
SW1wbCosIGNvbnN0IFN0cmluZ0ltcGwqKTsKIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVx
dWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBMQ2hhciopOwpAQCAtMTI1NSw3ICsxMjU1LDcg
QEAgYm9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNh
cGFjaXR5PiYgYSwgU3RyaW5nSW1wbCogYikKICAgICAgICAgcmV0dXJuICFhLnNpemUoKTsKICAg
ICBpZiAoYS5zaXplKCkgIT0gYi0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gIW1lbWNtcChhLmRhdGEoKSwgYi0+Y2hhcmFjdGVycygpLCBiLT5sZW5ndGgoKSAq
IHNpemVvZihVQ2hhcikpOworICAgIHJldHVybiAhbWVtY21wKGEuZGF0YSgpLCBiLT5kZXByZWNh
dGVkQ2hhcmFjdGVycygpLCBiLT5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlMSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTI+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggYWY0NGQ4N2M4OWE4MzVhZjVlYTUwMjk3OGEx
YTBmYTlmNzE5NWRhZi4uNDViYThhZjUyNGRkOTVhNjA0YTliN2Y4MzUyOGQ0ZTlhZWQ5YWRiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtMTEzLDggKzExMyw4IEBAIHZvaWQgU3Ry
aW5nOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHIpCiAgICAgICAgICAgICBpZiAoc3RyLmxlbmd0
aCgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gbV9pbXBsLT5sZW5n
dGgoKSkKICAgICAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICAgICAgUmVmUHRyPFN0cmlu
Z0ltcGw+IG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKG1faW1wbC0+
bGVuZ3RoKCkgKyBzdHIubGVuZ3RoKCksIGRhdGEpOwotICAgICAgICAgICAgbWVtY3B5KGRhdGEs
IG1faW1wbC0+Y2hhcmFjdGVycygpLCBtX2ltcGwtPmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSk7
Ci0gICAgICAgICAgICBtZW1jcHkoZGF0YSArIG1faW1wbC0+bGVuZ3RoKCksIHN0ci5jaGFyYWN0
ZXJzKCksIHN0ci5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpOworICAgICAgICAgICAgbWVtY3B5
KGRhdGEsIG1faW1wbC0+ZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgbV9pbXBsLT5sZW5ndGgoKSAq
IHNpemVvZihVQ2hhcikpOworICAgICAgICAgICAgbWVtY3B5KGRhdGEgKyBtX2ltcGwtPmxlbmd0
aCgpLCBzdHIuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgc3RyLmxlbmd0aCgpICogc2l6ZW9mKFVD
aGFyKSk7CiAgICAgICAgICAgICBtX2ltcGwgPSBuZXdJbXBsLnJlbGVhc2UoKTsKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBtX2ltcGwgPSBzdHIubV9pbXBsOwpAQCAtMTMzLDcgKzEzMyw3
IEBAIGlubGluZSB2b2lkIFN0cmluZzo6YXBwZW5kSW50ZXJuYWwoQ2hhcmFjdGVyVHlwZSBjKQog
ICAgICAgICBpZiAobV9pbXBsLT5sZW5ndGgoKSA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpCiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICBSZWZQdHI8U3RyaW5n
SW1wbD4gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9pbXBsLT5s
ZW5ndGgoKSArIDEsIGRhdGEpOwotICAgICAgICBtZW1jcHkoZGF0YSwgbV9pbXBsLT5jaGFyYWN0
ZXJzKCksIG1faW1wbC0+bGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpKTsKKyAgICAgICAgbWVtY3B5
KGRhdGEsIG1faW1wbC0+ZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgbV9pbXBsLT5sZW5ndGgoKSAq
IHNpemVvZihVQ2hhcikpOwogICAgICAgICBkYXRhW21faW1wbC0+bGVuZ3RoKCldID0gYzsKICAg
ICAgICAgbV9pbXBsID0gbmV3SW1wbC5yZWxlYXNlKCk7CiAgICAgfSBlbHNlCkBAIC0xNjQsNyAr
MTY0LDcgQEAgdm9pZCBTdHJpbmc6Omluc2VydChjb25zdCBTdHJpbmcmIHN0ciwgdW5zaWduZWQg
cG9zKQogICAgICAgICAgICAgbV9pbXBsID0gc3RyLmltcGwoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBpbnNlcnQoc3RyLmNoYXJhY3RlcnMoKSwgc3RyLmxlbmd0aCgpLCBwb3MpOwor
ICAgIGluc2VydChzdHIuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgc3RyLmxlbmd0aCgpLCBwb3Mp
OwogfQogCiB2b2lkIFN0cmluZzo6YXBwZW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzVG9BcHBl
bmQsIHVuc2lnbmVkIGxlbmd0aFRvQXBwZW5kKQpAQCAtMjQ4LDkgKzI0OCw5IEBAIHZvaWQgU3Ry
aW5nOjppbnNlcnQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnNUb0luc2VydCwgdW5zaWduZWQgbGVu
Z3RoVG9JbnNlcnQsIHVuCiAgICAgaWYgKGxlbmd0aFRvSW5zZXJ0ID4gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpIC0gbGVuZ3RoKCkpCiAgICAgICAgIENSQVNIKCk7CiAgICAg
UmVmUHRyPFN0cmluZ0ltcGw+IG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxp
emVkKGxlbmd0aCgpICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEpOwotICAgIG1lbWNweShkYXRhLCBj
aGFyYWN0ZXJzKCksIHBvc2l0aW9uICogc2l6ZW9mKFVDaGFyKSk7CisgICAgbWVtY3B5KGRhdGEs
IGRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHBvc2l0aW9uICogc2l6ZW9mKFVDaGFyKSk7CiAgICAg
bWVtY3B5KGRhdGEgKyBwb3NpdGlvbiwgY2hhcmFjdGVyc1RvSW5zZXJ0LCBsZW5ndGhUb0luc2Vy
dCAqIHNpemVvZihVQ2hhcikpOwotICAgIG1lbWNweShkYXRhICsgcG9zaXRpb24gKyBsZW5ndGhU
b0luc2VydCwgY2hhcmFjdGVycygpICsgcG9zaXRpb24sIChsZW5ndGgoKSAtIHBvc2l0aW9uKSAq
IHNpemVvZihVQ2hhcikpOworICAgIG1lbWNweShkYXRhICsgcG9zaXRpb24gKyBsZW5ndGhUb0lu
c2VydCwgZGVwcmVjYXRlZENoYXJhY3RlcnMoKSArIHBvc2l0aW9uLCAobGVuZ3RoKCkgLSBwb3Np
dGlvbikgKiBzaXplb2YoVUNoYXIpKTsKICAgICBtX2ltcGwgPSBuZXdJbXBsLnJlbGVhc2UoKTsK
IH0KIApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgU3RyaW5nOjp0cnVuY2F0ZSh1bnNpZ25lZCBw
b3NpdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIFVDaGFyKiBkYXRhOwogICAgIFJlZlB0cjxT
dHJpbmdJbXBsPiBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChwb3Np
dGlvbiwgZGF0YSk7Ci0gICAgbWVtY3B5KGRhdGEsIGNoYXJhY3RlcnMoKSwgcG9zaXRpb24gKiBz
aXplb2YoVUNoYXIpKTsKKyAgICBtZW1jcHkoZGF0YSwgZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwg
cG9zaXRpb24gKiBzaXplb2YoVUNoYXIpKTsKICAgICBtX2ltcGwgPSBuZXdJbXBsLnJlbGVhc2Uo
KTsKIH0KIApAQCAtMzk5LDcgKzM5OSw3IEBAIGJvb2wgU3RyaW5nOjpwZXJjZW50YWdlKGludCYg
cmVzdWx0KSBjb25zdAogICAgIGlmICgoKm1faW1wbClbbV9pbXBsLT5sZW5ndGgoKSAtIDFdICE9
ICclJykKICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBjaGFyYWN0ZXJzVG9J
bnRTdHJpY3QobV9pbXBsLT5jaGFyYWN0ZXJzKCksIG1faW1wbC0+bGVuZ3RoKCkgLSAxKTsKKyAg
ICByZXN1bHQgPSBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QobV9pbXBsLT5kZXByZWNhdGVkQ2hhcmFj
dGVycygpLCBtX2ltcGwtPmxlbmd0aCgpIC0gMSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGY1YjhkMzYwOWY5MDdhOTc0Y2M3YjY5MTY3YjA0NGQ0
MzJmMDk5OGQuLjljOGQ5MTA3ODI1ZjMyNjdlMDFhZWUwZTNmOGQxMzQ3ZDgwYzcwZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMTU2LDEzICsxNTYsMTQgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbV9pbXBsLT5sZW5ndGgoKTsKICAgICB9CiAKLSAgICBjb25zdCBVQ2hhciogY2hh
cmFjdGVycygpIGNvbnN0CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMoKSBjb25zdCB7IHJl
dHVybiBkZXByZWNhdGVkQ2hhcmFjdGVycygpOyB9IC8vIEZJWE1FOiBEZWxldGUgdGhpcy4KKyAg
ICBjb25zdCBVQ2hhciogZGVwcmVjYXRlZENoYXJhY3RlcnMoKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgKCFtX2ltcGwpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIG1f
aW1wbC0+Y2hhcmFjdGVycygpOworICAgICAgICByZXR1cm4gbV9pbXBsLT5kZXByZWNhdGVkQ2hh
cmFjdGVycygpOwogICAgIH0KLSAgICAKKwogICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgp
IGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1faW1wbCkKQEAgLTU0MCw3ICs1NDEsNyBAQCBp
bmxpbmUgY29uc3QgTENoYXIqIFN0cmluZzo6Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQ8TENo
YXI+KCkgY29uc3QKIHRlbXBsYXRlPD4KIGlubGluZSBjb25zdCBVQ2hhciogU3RyaW5nOjpnZXRD
aGFyYWN0ZXJzV2l0aFVwY29udmVydDxVQ2hhcj4oKSBjb25zdAogewotICAgIHJldHVybiBjaGFy
YWN0ZXJzKCk7CisgICAgcmV0dXJuIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7CiB9CiAKIGlubGlu
ZSBib29sIFN0cmluZzo6Y29udGFpbnNPbmx5TGF0aW4xKCkgY29uc3QKQEAgLTU4Nyw3ICs1ODgs
NyBAQCBpbmxpbmUgYm9vbCBjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oY29uc3QgU3RyaW5nJiBh
LCBjb25zdCBTdHJpbmcmIGIpCiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+CiBpbmxp
bmUgdm9pZCBhcHBlbmQoVmVjdG9yPFVDaGFyLCBpbmxpbmVDYXBhY2l0eT4mIHZlY3RvciwgY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgdmVjdG9yLmFwcGVuZChzdHJpbmcuY2hhcmFjdGVy
cygpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgIHZlY3Rvci5hcHBlbmQoc3RyaW5nLmRlcHJlY2F0
ZWRDaGFyYWN0ZXJzKCksIHN0cmluZy5sZW5ndGgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJLZXlQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVBhdGguY3BwCmluZGV4IDk5NmYwNDFiM2NkOGIxMTNjYzU0MTk0NjJkMTI2N2UzODMyOGMw
ZjUuLjBhMGY5YTZjMDhhOTZkNjkyM2RlZmJhNmI1ZjM3OGQwOTgzMmY1ZmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwCkBAIC00NSw4ICs0
NSw4IEBAIHB1YmxpYzoKIAogICAgIGV4cGxpY2l0IElEQktleVBhdGhMZXhlcihjb25zdCBTdHJp
bmcmIHMpCiAgICAgICAgIDogbV9zdHJpbmcocykKLSAgICAgICAgLCBtX3B0cihzLmNoYXJhY3Rl
cnMoKSkKLSAgICAgICAgLCBtX2VuZChzLmNoYXJhY3RlcnMoKSArIHMubGVuZ3RoKCkpCisgICAg
ICAgICwgbV9wdHIocy5kZXByZWNhdGVkQ2hhcmFjdGVycygpKQorICAgICAgICAsIG1fZW5kKHMu
ZGVwcmVjYXRlZENoYXJhY3RlcnMoKSArIHMubGVuZ3RoKCkpCiAgICAgICAgICwgbV9jdXJyZW50
VG9rZW5UeXBlKFRva2VuRXJyb3IpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVu
dFdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKaW5kZXggMTViNmQzYzkzYzFlZGEy
MGJhNWE5MDY4ZDRiNmZhN2Y0NDExM2UyNi4uMGFiM2M1ZWIxZTQwMjAyYjRkNWE5NTQzOTM5Y2Fj
NDI3M2MyZTZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6c2V0U3VicHJvdG9jb2woY29uc3QgU3RyaW5nJiBzdWJw
cgogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN1YnByb3RvY29sLmxlbmd0aCgpOwogICAgIG1fc3Vi
cHJvdG9jb2wucmVzaXplKGxlbmd0aCk7CiAgICAgaWYgKGxlbmd0aCkKLSAgICAgICAgbWVtY3B5
KG1fc3VicHJvdG9jb2wuZGF0YSgpLCBzdWJwcm90b2NvbC5jaGFyYWN0ZXJzKCksIHNpemVvZihV
Q2hhcikgKiBsZW5ndGgpOworICAgICAgICBtZW1jcHkobV9zdWJwcm90b2NvbC5kYXRhKCksIHN1
YnByb3RvY29sLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHNpemVvZihVQ2hhcikgKiBsZW5ndGgp
OwogfQogCiBTdHJpbmcgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpl
eHRlbnNpb25zKCkgY29uc3QKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcjo6c2V0RXh0ZW5zaW9ucyhjb25zdCBTdHJpbmcmIGV4
dGVucwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGV4dGVuc2lvbnMubGVuZ3RoKCk7CiAgICAgbV9l
eHRlbnNpb25zLnJlc2l6ZShsZW5ndGgpOwogICAgIGlmIChsZW5ndGgpCi0gICAgICAgIG1lbWNw
eShtX2V4dGVuc2lvbnMuZGF0YSgpLCBleHRlbnNpb25zLmNoYXJhY3RlcnMoKSwgc2l6ZW9mKFVD
aGFyKSAqIGxlbmd0aCk7CisgICAgICAgIG1lbWNweShtX2V4dGVuc2lvbnMuZGF0YSgpLCBleHRl
bnNpb25zLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHNpemVvZihVQ2hhcikgKiBsZW5ndGgpOwog
fQogCiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnNlbmRSZXF1ZXN0UmVzdWx0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCmluZGV4IDg2YTg2YzkzMTJjMGRkMDFmMDY5NjI0NmEyMTg2OTA0Y2MzMDYwYWMuLmZkYWZk
YTJhZDlmNWFiMmRjMjE5M2E3NWM0NTFhYWI4YzhkMWVhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMzMwLDcg
KzMzMCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aGFzTWlzc3BlbGxpbmcoKSBjb25z
dAogICAgIGlmICghdGV4dENoZWNrZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBjb25zdCBVQ2hhciogY2hhcnMgPSBzdHJpbmdWYWx1ZSgpLmNoYXJhY3RlcnMoKTsKKyAgICBj
b25zdCBVQ2hhciogY2hhcnMgPSBzdHJpbmdWYWx1ZSgpLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7
CiAgICAgaW50IGNoYXJzTGVuZ3RoID0gc3RyaW5nVmFsdWUoKS5sZW5ndGgoKTsKICAgICBib29s
IGlzTWlzc3BlbGxlZCA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCmluZGV4IDE1YWIxZjM3OWJjYzkzMTQ2OTZlOTYzYWQ0NzlkZDhhNTA2NjVmMDIuLmMz
YjNiMGI3MjczODZiZGM1N2QwNjA4NGUxYzBkMzkxMDY1ZGJlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC05NjgsNyArOTY4LDcgQEAgLSAoTlNBdHRyaWJ1
dGVkU3RyaW5nKilkb0FYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZTooaWQpdGV4
dE1hcmtlclJhbmcKICAgICAgICAgICAgIC8vIEFkZCB0aGUgdGV4dCBvZiB0aGUgbGlzdCBtYXJr
ZXIgaXRlbSBpZiBuZWNlc3NhcnkuCiAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRleHQg
PSBtX29iamVjdC0+bGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24obm9kZSwgVmlzaWJs
ZVBvc2l0aW9uKGl0LnJhbmdlKCktPnN0YXJ0UG9zaXRpb24oKSkpOwogICAgICAgICAgICAgaWYg
KCFsaXN0TWFya2VyVGV4dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgQVhBdHRyaWJ1dGVk
U3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5nLCBub2RlLCBsaXN0TWFya2VyVGV4dC5jaGFyYWN0
ZXJzKCksIGxpc3RNYXJrZXJUZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBBWEF0dHJp
YnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcsIG5vZGUsIGxpc3RNYXJrZXJUZXh0LmRl
cHJlY2F0ZWRDaGFyYWN0ZXJzKCksIGxpc3RNYXJrZXJUZXh0Lmxlbmd0aCgpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5n
LCBub2RlLCBpdC5jaGFyYWN0ZXJzKCksIGl0Lmxlbmd0aCgpKTsKICAgICAgICAgfSBlbHNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCmluZGV4IDg5NGZhODg4MDIyOGUxNjM1OTI0ODE3OTdlNGUxNjBmYzM0N2FkMTQuLjFm
ZDA2NDA1ZTMyODA4NWE0MzliZDQ5MzIzYTNiYjVjMzJjNGU4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNDQ0
LDcgKzQ0NCw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICB3cml0ZUxpdHRsZUVuZGlh
bjx1aW50OF90PihvdXQsIFN0cmluZ1RhZyk7CiAgICAgICAgIHdyaXRlTGl0dGxlRW5kaWFuKG91
dCwgcy5sZW5ndGgoKSk7Ci0gICAgICAgIHJldHVybiB3cml0ZUxpdHRsZUVuZGlhbihvdXQsIHMu
aW1wbCgpLT5jaGFyYWN0ZXJzKCksIHMubGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gd3JpdGVM
aXR0bGVFbmRpYW4ob3V0LCBzLmltcGwoKS0+ZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgcy5sZW5n
dGgoKSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgc2VyaWFsaXplVW5kZWZpbmVkKFZlY3Rv
cjx1aW50OF90PiYgb3V0KQpAQCAtOTQ4LDcgKzk0OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0K
IAogICAgICAgICB3cml0ZUxpdHRsZUVuZGlhbjx1aW50MzJfdD4obV9idWZmZXIsIHN0ci5sZW5n
dGgoKSk7Ci0gICAgICAgIGlmICghd3JpdGVMaXR0bGVFbmRpYW48dWludDE2X3Q+KG1fYnVmZmVy
LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc3RyLmNoYXJhY3RlcnMoKSksIHN0
ci5sZW5ndGgoKSkpCisgICAgICAgIGlmICghd3JpdGVMaXR0bGVFbmRpYW48dWludDE2X3Q+KG1f
YnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oc3RyLmRlcHJlY2F0ZWRD
aGFyYWN0ZXJzKCkpLCBzdHIubGVuZ3RoKCkpKQogICAgICAgICAgICAgZmFpbCgpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IDgzNGVkMzQ0NjQ5ZDQzYzY1
YjhjMjczZjdmMTZkMmI1NTc0OTQ4NGEuLmU1OGIzODNlMjJmMmJiZmZjYzM2ZWJmMzg3YzcyNTlh
MGZiYTY4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTc0LDcgKzc0
LDcgQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YShjb25zdCBTdHJp
bmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIC8vIHNlZSA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MDkyPi4KICAgICAvLyBXZSBuZWVkIGF0IGxlYXN0
IHR3byBjaGFyYWN0ZXJzIGxvb2stYWhlYWQgdG8gYWNjb3VudCBmb3IgVVRGLTE2IHN1cnJvZ2F0
ZXMuCiAgICAgaWYgKGNoYXJhY3Rlckxlbmd0aExpbWl0IDwgY2hhcmFjdGVyTGVuZ3RoKSB7Ci0g
ICAgICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQoc3RyaW5nLmNoYXJhY3Rl
cnMoKSArIG9mZnNldCwgKGNoYXJhY3Rlckxlbmd0aExpbWl0ICsgMiA+IGNoYXJhY3Rlckxlbmd0
aCkgPyBjaGFyYWN0ZXJMZW5ndGggOiBjaGFyYWN0ZXJMZW5ndGhMaW1pdCArIDIpOworICAgICAg
ICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KHN0cmluZy5kZXByZWNhdGVkQ2hh
cmFjdGVycygpICsgb2Zmc2V0LCAoY2hhcmFjdGVyTGVuZ3RoTGltaXQgKyAyID4gY2hhcmFjdGVy
TGVuZ3RoKSA/IGNoYXJhY3Rlckxlbmd0aCA6IGNoYXJhY3Rlckxlbmd0aExpbWl0ICsgMik7CiAg
ICAgICAgIGlmICghaXNUZXh0QnJlYWsoaXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KSkKICAgICAg
ICAgICAgIGNoYXJhY3Rlckxlbmd0aExpbWl0ID0gdGV4dEJyZWFrUHJlY2VkaW5nKGl0LCBjaGFy
YWN0ZXJMZW5ndGhMaW1pdCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNmM1
NzRiMjYzNWI5MGI4ZjU3ZDI2YzJhYjM3OGJmZWVjZjMyOGQ3My4uOTU0MWJmZTRiZDI2YTUzYWUy
YjJiMDNlNzE1YmEyODI1NDMxMmI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zOTY1
LDcgKzM5NjUsNyBAQCBib29sIERvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUoY29uc3QgU3Ry
aW5nJiBxdWFsaWZpZWROYW1lLCBTdHJpbmcmIHByZWZpeCwgUwogICAgIGJvb2wgc2F3Q29sb24g
PSBmYWxzZTsKICAgICBpbnQgY29sb25Qb3MgPSAwOwogCi0gICAgY29uc3QgVUNoYXIqIHMgPSBx
dWFsaWZpZWROYW1lLmNoYXJhY3RlcnMoKTsKKyAgICBjb25zdCBVQ2hhciogcyA9IHF1YWxpZmll
ZE5hbWUuZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOykgewogICAgICAgICBVQ2hhcjMyIGM7CiAgICAgICAgIFUxNl9ORVhUKHMsIGks
IGxlbmd0aCwgYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAxMzFjZjc3MTI4Yzhj
MjRiNWI1NmVmMWI2OGQzNGI3Mzc2NDgzYmY3Li4yYjc3ODA1MTYwYzgyZTRiMjM5NDViZjEzYzEx
YzQ2MDg5MjhiYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yMTA2LDcgKzIx
MDYsNyBAQCBTdHJpbmcgRWRpdG9yOjptaXNzcGVsbGVkV29yZEF0Q2FyZXRPclJhbmdlKE5vZGUq
IGNsaWNrZWROb2RlKSBjb25zdAogICAgIGludCB3b3JkTGVuZ3RoID0gd29yZC5sZW5ndGgoKTsK
ICAgICBpbnQgbWlzc3BlbGxpbmdMb2NhdGlvbiA9IC0xOwogICAgIGludCBtaXNzcGVsbGluZ0xl
bmd0aCA9IDA7Ci0gICAgdGV4dENoZWNrZXIoKS0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nKHdvcmQu
Y2hhcmFjdGVycygpLCB3b3JkTGVuZ3RoLCAmbWlzc3BlbGxpbmdMb2NhdGlvbiwgJm1pc3NwZWxs
aW5nTGVuZ3RoKTsKKyAgICB0ZXh0Q2hlY2tlcigpLT5jaGVja1NwZWxsaW5nT2ZTdHJpbmcod29y
ZC5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCB3b3JkTGVuZ3RoLCAmbWlzc3BlbGxpbmdMb2NhdGlv
biwgJm1pc3NwZWxsaW5nTGVuZ3RoKTsKIAogICAgIHJldHVybiBtaXNzcGVsbGluZ0xlbmd0aCA9
PSB3b3JkTGVuZ3RoID8gd29yZCA6IFN0cmluZygpOwogfQpAQCAtMjEyMCw3ICsyMTIwLDcgQEAg
U3RyaW5nIEVkaXRvcjo6bWlzc3BlbGxlZFNlbGVjdGlvblN0cmluZygpIGNvbnN0CiAKICAgICBp
bnQgbWlzc3BlbGxpbmdMb2NhdGlvbiA9IC0xOwogICAgIGludCBtaXNzcGVsbGluZ0xlbmd0aCA9
IDA7Ci0gICAgdGV4dENoZWNrZXIoKS0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nKHNlbGVjdGVkU3Ry
aW5nLmNoYXJhY3RlcnMoKSwgbGVuZ3RoLCAmbWlzc3BlbGxpbmdMb2NhdGlvbiwgJm1pc3NwZWxs
aW5nTGVuZ3RoKTsKKyAgICB0ZXh0Q2hlY2tlcigpLT5jaGVja1NwZWxsaW5nT2ZTdHJpbmcoc2Vs
ZWN0ZWRTdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgbGVuZ3RoLCAmbWlzc3BlbGxpbmdM
b2NhdGlvbiwgJm1pc3NwZWxsaW5nTGVuZ3RoKTsKICAgICAKICAgICAvLyBUaGUgc2VsZWN0aW9u
IG9ubHkgY291bnRzIGFzIG1pc3NwZWxsZWQgaWYgdGhlIHNlbGVjdGVkIHRleHQgaXMgZXhhY3Rs
eSBvbmUgbWlzc3BlbGxlZCB3b3JkCiAgICAgaWYgKG1pc3NwZWxsaW5nTGVuZ3RoICE9IGxlbmd0
aCkKQEAgLTI0MjcsNyArMjQyNyw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdz
QW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDCiAgICAgfQog
CiAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKLSAgICBjaGVja1RleHRP
ZlBhcmFncmFwaCh0ZXh0Q2hlY2tlcigpLCBwYXJhZ3JhcGhUb0NoZWNrLnRleHRDaGFyYWN0ZXJz
KCksIHBhcmFncmFwaFRvQ2hlY2sudGV4dExlbmd0aCgpLAorICAgIGNoZWNrVGV4dE9mUGFyYWdy
YXBoKHRleHRDaGVja2VyKCksIHBhcmFncmFwaFRvQ2hlY2sudGV4dERlcHJlY2F0ZWRDaGFyYWN0
ZXJzKCksIHBhcmFncmFwaFRvQ2hlY2sudGV4dExlbmd0aCgpLAogICAgICAgICByZXNvbHZlVGV4
dENoZWNraW5nVHlwZU1hc2sodGV4dENoZWNraW5nT3B0aW9ucyksIHJlc3VsdHMpOwogICAgIG1h
cmtBbmRSZXBsYWNlRm9yKHJlcXVlc3QsIHJlc3VsdHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDY1ZjE0MzE0NjM2NmY1MTkxNzgx
OGM2NjEzYzg0NWJmZTY0MjZiYjguLjEzMmM5M2I0ZWMwMjg1OWM1ZjBkN2RkNDNlMmYyMTA5M2Iw
NjUyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5j
cHAKQEAgLTM0NSw3ICszNDUsNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmly
c3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3Vs
dHM7CiAgICAgICAgICAgICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcyA9
IGNoZWNrR3JhbW1hciA/IChUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdU
eXBlR3JhbW1hcikgOiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7Ci0gICAgICAgICAgICAgICAg
Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgobV9jbGllbnQtPnRleHRDaGVja2VyKCksIHBhcmFncmFwaFN0
cmluZy5jaGFyYWN0ZXJzKCksIHBhcmFncmFwaFN0cmluZy5sZW5ndGgoKSwgY2hlY2tpbmdUeXBl
cywgcmVzdWx0cyk7CisgICAgICAgICAgICAgICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgobV9jbGll
bnQtPnRleHRDaGVja2VyKCksIHBhcmFncmFwaFN0cmluZy5kZXByZWNhdGVkQ2hhcmFjdGVycygp
LCBwYXJhZ3JhcGhTdHJpbmcubGVuZ3RoKCksIGNoZWNraW5nVHlwZXMsIHJlc3VsdHMpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBy
ZXN1bHRzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHRDaGVj
a2luZ1Jlc3VsdCogcmVzdWx0ID0gJnJlc3VsdHNbaV07CkBAIC00NzQsNyArNDc0LDcgQEAgU3Ry
aW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWls
JiBvdXRHcmFtbWFyRGV0YWlsLAogICAgICAgICBWZWN0b3I8R3JhbW1hckRldGFpbD4gZ3JhbW1h
ckRldGFpbHM7CiAgICAgICAgIGludCBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24gPSAtMTsKICAg
ICAgICAgaW50IGJhZEdyYW1tYXJQaHJhc2VMZW5ndGggPSAwOwotICAgICAgICBtX2NsaWVudC0+
dGV4dENoZWNrZXIoKS0+Y2hlY2tHcmFtbWFyT2ZTdHJpbmcocGFyYWdyYXBoLnRleHRDaGFyYWN0
ZXJzKCkgKyBzdGFydE9mZnNldCwgcGFyYWdyYXBoLnRleHRMZW5ndGgoKSAtIHN0YXJ0T2Zmc2V0
LCBncmFtbWFyRGV0YWlscywgJmJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgJmJhZEdyYW1tYXJQ
aHJhc2VMZW5ndGgpOworICAgICAgICBtX2NsaWVudC0+dGV4dENoZWNrZXIoKS0+Y2hlY2tHcmFt
bWFyT2ZTdHJpbmcocGFyYWdyYXBoLnRleHREZXByZWNhdGVkQ2hhcmFjdGVycygpICsgc3RhcnRP
ZmZzZXQsIHBhcmFncmFwaC50ZXh0TGVuZ3RoKCkgLSBzdGFydE9mZnNldCwgZ3JhbW1hckRldGFp
bHMsICZiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sICZiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKTsK
ICAgICAgICAgCiAgICAgICAgIGlmICghYmFkR3JhbW1hclBocmFzZUxlbmd0aCkgewogICAgICAg
ICAgICAgQVNTRVJUKGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiA9PSAtMSk7CkBAIC01NzUsNyAr
NTc1LDcgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlz
c3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKIAogICAgIFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBl
cyA9IGNoZWNrR3JhbW1hciA/IChUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tp
bmdUeXBlR3JhbW1hcikgOiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7Ci0gICAgY2hlY2tUZXh0
T2ZQYXJhZ3JhcGgobV9jbGllbnQtPnRleHRDaGVja2VyKCksIHBhcmFncmFwaC50ZXh0Q2hhcmFj
dGVycygpLCBwYXJhZ3JhcGgudGV4dExlbmd0aCgpLCBjaGVja2luZ1R5cGVzLCByZXN1bHRzKTsK
KyAgICBjaGVja1RleHRPZlBhcmFncmFwaChtX2NsaWVudC0+dGV4dENoZWNrZXIoKSwgcGFyYWdy
YXBoLnRleHREZXByZWNhdGVkQ2hhcmFjdGVycygpLCBwYXJhZ3JhcGgudGV4dExlbmd0aCgpLCBj
aGVja2luZ1R5cGVzLCByZXN1bHRzKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcmVzdWx0cy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1
bHQqIHJlc3VsdCA9ICZyZXN1bHRzW2ldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmgKaW5kZXggMmU0MzE2OTllZTU3OGJhNDhlN2Y5ZmVhOTRmNzM5NDhlYWYy
ZDBiOS4uYTkwYzljOGIzYzEyZDI1OTE3YTFkOTExMTMzOGE3ZWEyNTc0ODQxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCkBAIC00NSw3ICs0NSw3IEBA
IHB1YmxpYzoKIAogICAgIGludCB0ZXh0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gdGV4dCgpLmxl
bmd0aCgpOyB9CiAgICAgU3RyaW5nIHRleHRTdWJzdHJpbmcodW5zaWduZWQgcG9zLCB1bnNpZ25l
ZCBsZW4gPSBVSU5UX01BWCkgY29uc3QgeyByZXR1cm4gdGV4dCgpLnN1YnN0cmluZyhwb3MsIGxl
bik7IH0KLSAgICBjb25zdCBVQ2hhciogdGV4dENoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiB0
ZXh0KCkuY2hhcmFjdGVycygpOyB9CisgICAgY29uc3QgVUNoYXIqIHRleHREZXByZWNhdGVkQ2hh
cmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIHRleHQoKS5kZXByZWNhdGVkQ2hhcmFjdGVycygpOyB9
CiAgICAgVUNoYXIgdGV4dENoYXJBdChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHRleHQoKVtz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpXTsgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggNWI0OGMyNjhk
NTI2Mjg3N2FlMTg1N2M0OTY0Yjg3YzI2ZDcwOGI5Zi4uOGNhNzY3YjAxMjU2MWI3ZTQ3ZDJkMTYx
NmVkYjE0YzNmMThmNWI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNw
cApAQCAtODkzLDcgKzg5Myw3IEBAIHN0YXRpYyBib29sIHNob3VsZEVtaXRFeHRyYU5ld2xpbmVG
b3JOb2RlKE5vZGUqIG5vZGUpCiAKIHN0YXRpYyBpbnQgY29sbGFwc2VkU3BhY2VMZW5ndGgoUmVu
ZGVyVGV4dCogcmVuZGVyZXIsIGludCB0ZXh0RW5kKQogewotICAgIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzID0gcmVuZGVyZXItPnRleHQoKS0+Y2hhcmFjdGVycygpOworICAgIGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzID0gcmVuZGVyZXItPnRleHQoKS0+ZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsK
ICAgICBpbnQgbGVuZ3RoID0gcmVuZGVyZXItPnRleHQoKS0+bGVuZ3RoKCk7CiAgICAgZm9yIChp
bnQgaSA9IHRleHRFbmQ7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBpZiAoIXJlbmRlcmVy
LT5zdHlsZSgpLmlzQ29sbGFwc2libGVXaGl0ZVNwYWNlKGNoYXJhY3RlcnNbaV0pKQpAQCAtMTMw
OSw5ICsxMzA5LDkgQEAgYm9vbCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpoYW5k
bGVUZXh0Tm9kZSgpCiAgICAgQVNTRVJUKG1fcG9zaXRpb25TdGFydE9mZnNldCA8PSBtX3Bvc2l0
aW9uRW5kT2Zmc2V0KTsKIAogICAgIG1fdGV4dExlbmd0aCA9IG1fcG9zaXRpb25FbmRPZmZzZXQg
LSBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQ7Ci0gICAgbV90ZXh0Q2hhcmFjdGVycyA9IHRleHQuY2hh
cmFjdGVycygpICsgKG1fcG9zaXRpb25TdGFydE9mZnNldCAtIG9mZnNldEluTm9kZSk7Ci0gICAg
QVNTRVJUKG1fdGV4dENoYXJhY3RlcnMgPj0gdGV4dC5jaGFyYWN0ZXJzKCkpOwotICAgIEFTU0VS
VChtX3RleHRDaGFyYWN0ZXJzICsgbV90ZXh0TGVuZ3RoIDw9IHRleHQuY2hhcmFjdGVycygpICsg
c3RhdGljX2Nhc3Q8aW50Pih0ZXh0Lmxlbmd0aCgpKSk7CisgICAgbV90ZXh0Q2hhcmFjdGVycyA9
IHRleHQuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSArIChtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgLSBv
ZmZzZXRJbk5vZGUpOworICAgIEFTU0VSVChtX3RleHRDaGFyYWN0ZXJzID49IHRleHQuZGVwcmVj
YXRlZENoYXJhY3RlcnMoKSk7CisgICAgQVNTRVJUKG1fdGV4dENoYXJhY3RlcnMgKyBtX3RleHRM
ZW5ndGggPD0gdGV4dC5kZXByZWNhdGVkQ2hhcmFjdGVycygpICsgc3RhdGljX2Nhc3Q8aW50Pih0
ZXh0Lmxlbmd0aCgpKSk7CiAKICAgICBtX2xhc3RDaGFyYWN0ZXIgPSB0ZXh0W21fcG9zaXRpb25F
bmRPZmZzZXQgLSAxXTsKIApAQCAtMTkyMiw3ICsxOTIyLDcgQEAgc3RhdGljIGlubGluZSBib29s
IGlzQ29tYmluaW5nVm9pY2VkU291bmRNYXJrKFVDaGFyIGNoYXJhY3RlcikKIAogc3RhdGljIGlu
bGluZSBib29sIGNvbnRhaW5zS2FuYUxldHRlcnMoY29uc3QgU3RyaW5nJiBwYXR0ZXJuKQogewot
ICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gcGF0dGVybi5jaGFyYWN0ZXJzKCk7CisgICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBwYXR0ZXJuLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7
CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gcGF0dGVybi5sZW5ndGgoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgaWYgKGlzS2FuYUxldHRlcihj
aGFyYWN0ZXJzW2ldKSkKQEAgLTIwMDcsNyArMjAwNyw3IEBAIGlubGluZSBTZWFyY2hCdWZmZXI6
OlNlYXJjaEJ1ZmZlcihjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucykK
IAogICAgIGlmICgobV9vcHRpb25zICYgQXRXb3JkU3RhcnRzKSAmJiB0YXJnZXRMZW5ndGgpIHsK
ICAgICAgICAgVUNoYXIzMiB0YXJnZXRGaXJzdENoYXJhY3RlcjsKLSAgICAgICAgVTE2X0dFVCht
X3RhcmdldC5jaGFyYWN0ZXJzKCksIDAsIDAsIHRhcmdldExlbmd0aCwgdGFyZ2V0Rmlyc3RDaGFy
YWN0ZXIpOworICAgICAgICBVMTZfR0VUKG1fdGFyZ2V0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCks
IDAsIDAsIHRhcmdldExlbmd0aCwgdGFyZ2V0Rmlyc3RDaGFyYWN0ZXIpOwogICAgICAgICAvLyBD
aGFyYWN0ZXJzIGluIHRoZSBzZXBhcmF0b3IgY2F0ZWdvcnkgbmV2ZXIgcmVhbGx5IG9jY3VyIGF0
IHRoZSBiZWdpbm5pbmcgb2YgYSB3b3JkLAogICAgICAgICAvLyBzbyBpZiB0aGUgdGFyZ2V0IGJl
Z2lucyB3aXRoIHN1Y2ggYSBjaGFyYWN0ZXIsIHdlIGp1c3QgaWdub3JlIHRoZSBBdFdvcmRTdGFy
dCBvcHRpb24uCiAgICAgICAgIGlmIChpc1NlcGFyYXRvcih0YXJnZXRGaXJzdENoYXJhY3Rlcikp
IHsKQEAgLTIwNDQsMTIgKzIwNDQsMTIgQEAgaW5saW5lIFNlYXJjaEJ1ZmZlcjo6U2VhcmNoQnVm
ZmVyKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zKQogICAgIHVzZWFy
Y2hfc2V0QXR0cmlidXRlKHNlYXJjaGVyLCBVU0VBUkNIX0VMRU1FTlRfQ09NUEFSSVNPTiwgY29t
cGFyYXRvciwgJnN0YXR1cyk7CiAgICAgQVNTRVJUKHN0YXR1cyA9PSBVX1pFUk9fRVJST1IpOwog
Ci0gICAgdXNlYXJjaF9zZXRQYXR0ZXJuKHNlYXJjaGVyLCBtX3RhcmdldC5jaGFyYWN0ZXJzKCks
IHRhcmdldExlbmd0aCwgJnN0YXR1cyk7CisgICAgdXNlYXJjaF9zZXRQYXR0ZXJuKHNlYXJjaGVy
LCBtX3RhcmdldC5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCB0YXJnZXRMZW5ndGgsICZzdGF0dXMp
OwogICAgIEFTU0VSVChzdGF0dXMgPT0gVV9aRVJPX0VSUk9SKTsKIAogICAgIC8vIFRoZSBrYW5h
IHdvcmthcm91bmQgcmVxdWlyZXMgYSBub3JtYWxpemVkIGNvcHkgb2YgdGhlIHRhcmdldCBzdHJp
bmcuCiAgICAgaWYgKG1fdGFyZ2V0UmVxdWlyZXNLYW5hV29ya2Fyb3VuZCkKLSAgICAgICAgbm9y
bWFsaXplQ2hhcmFjdGVycyhtX3RhcmdldC5jaGFyYWN0ZXJzKCksIG1fdGFyZ2V0Lmxlbmd0aCgp
LCBtX25vcm1hbGl6ZWRUYXJnZXQpOworICAgICAgICBub3JtYWxpemVDaGFyYWN0ZXJzKG1fdGFy
Z2V0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIG1fdGFyZ2V0Lmxlbmd0aCgpLCBtX25vcm1hbGl6
ZWRUYXJnZXQpOwogfQogCiBpbmxpbmUgU2VhcmNoQnVmZmVyOjp+U2VhcmNoQnVmZmVyKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCmluZGV4IDdhZjUwZWNmYWQ0MTE0YzM2YmMz
YTQ1OGQzN2EzNTA3YzIzYTJhNGEuLjhiODkxOWY0MTQzMzAxMGM1ZjhlZjhiYWViZjNkNmZiN2Nm
ODZhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtOTQsNyArOTQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZHZhbmNlKCk7CiAgICAgCiAgICAgaW50IGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGV4dExlbmd0aDsgfQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Q2hhcmFjdGVycyA/IG1fdGV4dENoYXJhY3RlcnMg
OiBtX3RleHQuY2hhcmFjdGVycygpICsgc3RhcnRPZmZzZXQoKTsgfQorICAgIGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Q2hhcmFjdGVycyA/IG1fdGV4dENo
YXJhY3RlcnMgOiBtX3RleHQuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSArIHN0YXJ0T2Zmc2V0KCk7
IH0KICAgICBVQ2hhciBjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgdm9p
ZCBhcHBlbmRUZXh0VG9TdHJpbmdCdWlsZGVyKFN0cmluZ0J1aWxkZXImKSBjb25zdDsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCBkOGY0YTQw
NjFhMGQ5OWU5NGJhMTg5N2ZlYzViM2JkZmMwNmM0OGZiLi45MTU1YWFlZjM4YmEwODU1NTRhMzM2
YzhhOTE1YzFlOTVkMDgxOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9z
aXRpb24uY3BwCkBAIC01OTAsNyArNTkwLDcgQEAgVUNoYXIzMiBWaXNpYmxlUG9zaXRpb246OmNo
YXJhY3RlckFmdGVyKCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBVQ2hhcjMyIGNo
OwotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGV4dE5vZGUtPmRhdGEoKS5jaGFyYWN0
ZXJzKCk7CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB0ZXh0Tm9kZS0+ZGF0YSgpLmRl
cHJlY2F0ZWRDaGFyYWN0ZXJzKCk7CiAgICAgVTE2X05FWFQoY2hhcmFjdGVycywgb2Zmc2V0LCBs
ZW5ndGgsIGNoKTsKICAgICByZXR1cm4gY2g7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVVbml0cy5jcHAKaW5kZXggYTZmNGU3ZTgxYTJmYzRlMTRjMDM1ZmEyNzNmMjFlNGNlZDhjYzhm
Yi4uZGM1MTAzNzdkNGQzYjNjNDEwZWIwZjM0OWQwNmQzZjJhZDk1MDUxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtMjk1LDEwICsyOTUsMTAgQEAgc3RhdGlj
IFRleHRCcmVha0l0ZXJhdG9yKiB3b3JkQnJlYWtJdGVyYXRvckZvck1pbk9mZnNldEJvdW5kYXJ5
KGNvbnN0IFZpc2libGVQb3MKICAgICBpZiAocHJldmlvdXNCb3ggJiYgcHJldmlvdXNCb3gtPmlz
SW5saW5lVGV4dEJveCgpKSB7CiAgICAgICAgIGNvbnN0IElubGluZVRleHRCb3gqIHByZXZpb3Vz
VGV4dEJveCA9IHRvSW5saW5lVGV4dEJveChwcmV2aW91c0JveCk7CiAgICAgICAgIHByZXZpb3Vz
Qm94TGVuZ3RoID0gcHJldmlvdXNUZXh0Qm94LT5sZW4oKTsKLSAgICAgICAgc3RyaW5nLmFwcGVu
ZChwcmV2aW91c1RleHRCb3gtPnJlbmRlcmVyKCkudGV4dCgpLT5jaGFyYWN0ZXJzKCkgKyBwcmV2
aW91c1RleHRCb3gtPnN0YXJ0KCksIHByZXZpb3VzQm94TGVuZ3RoKTsKKyAgICAgICAgc3RyaW5n
LmFwcGVuZChwcmV2aW91c1RleHRCb3gtPnJlbmRlcmVyKCkudGV4dCgpLT5kZXByZWNhdGVkQ2hh
cmFjdGVycygpICsgcHJldmlvdXNUZXh0Qm94LT5zdGFydCgpLCBwcmV2aW91c0JveExlbmd0aCk7
CiAgICAgICAgIGxlbiArPSBwcmV2aW91c0JveExlbmd0aDsKICAgICB9Ci0gICAgc3RyaW5nLmFw
cGVuZCh0ZXh0Qm94LT5yZW5kZXJlcigpLnRleHQoKS0+Y2hhcmFjdGVycygpICsgdGV4dEJveC0+
c3RhcnQoKSwgdGV4dEJveC0+bGVuKCkpOworICAgIHN0cmluZy5hcHBlbmQodGV4dEJveC0+cmVu
ZGVyZXIoKS50ZXh0KCktPmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCkgKyB0ZXh0Qm94LT5zdGFydCgp
LCB0ZXh0Qm94LT5sZW4oKSk7CiAgICAgbGVuICs9IHRleHRCb3gtPmxlbigpOwogCiAgICAgcmV0
dXJuIHdvcmRCcmVha0l0ZXJhdG9yKHN0cmluZy5kYXRhKCksIGxlbik7CkBAIC0zMTQsMTEgKzMx
NCwxMSBAQCBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4
T2Zmc2V0Qm91bmRhcnkoY29uc3QgVmlzaWJsZVBvcwogCiAgICAgaW50IGxlbiA9IDA7CiAgICAg
c3RyaW5nLmNsZWFyKCk7Ci0gICAgc3RyaW5nLmFwcGVuZCh0ZXh0Qm94LT5yZW5kZXJlcigpLnRl
eHQoKS0+Y2hhcmFjdGVycygpICsgdGV4dEJveC0+c3RhcnQoKSwgdGV4dEJveC0+bGVuKCkpOwor
ICAgIHN0cmluZy5hcHBlbmQodGV4dEJveC0+cmVuZGVyZXIoKS50ZXh0KCktPmRlcHJlY2F0ZWRD
aGFyYWN0ZXJzKCkgKyB0ZXh0Qm94LT5zdGFydCgpLCB0ZXh0Qm94LT5sZW4oKSk7CiAgICAgbGVu
ICs9IHRleHRCb3gtPmxlbigpOwogICAgIGlmIChuZXh0Qm94ICYmIG5leHRCb3gtPmlzSW5saW5l
VGV4dEJveCgpKSB7CiAgICAgICAgIGNvbnN0IElubGluZVRleHRCb3gqIG5leHRUZXh0Qm94ID0g
dG9JbmxpbmVUZXh0Qm94KG5leHRCb3gpOwotICAgICAgICBzdHJpbmcuYXBwZW5kKG5leHRUZXh0
Qm94LT5yZW5kZXJlcigpLnRleHQoKS0+Y2hhcmFjdGVycygpICsgbmV4dFRleHRCb3gtPnN0YXJ0
KCksIG5leHRUZXh0Qm94LT5sZW4oKSk7CisgICAgICAgIHN0cmluZy5hcHBlbmQobmV4dFRleHRC
b3gtPnJlbmRlcmVyKCkudGV4dCgpLT5kZXByZWNhdGVkQ2hhcmFjdGVycygpICsgbmV4dFRleHRC
b3gtPnN0YXJ0KCksIG5leHRUZXh0Qm94LT5sZW4oKSk7CiAgICAgICAgIGxlbiArPSBuZXh0VGV4
dEJveC0+bGVuKCk7CiAgICAgfQogCkBAIC0zODUsNyArMzg1LDcgQEAgc3RhdGljIFZpc2libGVQ
b3NpdGlvbiB2aXN1YWxXb3JkUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxl
UG9zaXRpb24KICAgICAgICAgZWxzZSBpZiAob2Zmc2V0SW5Cb3ggPT0gYm94LT5jYXJldE1heE9m
ZnNldCgpKQogICAgICAgICAgICAgaXRlciA9IHdvcmRCcmVha0l0ZXJhdG9yRm9yTWF4T2Zmc2V0
Qm91bmRhcnkodmlzaWJsZVBvc2l0aW9uLCB0ZXh0Qm94LCBuZXh0Qm94SW5EaWZmZXJlbnRCbG9j
aywgc3RyaW5nLCBsZWFmQm94ZXMpOwogICAgICAgICBlbHNlIGlmIChtb3ZpbmdJbnRvTmV3Qm94
KSB7Ci0gICAgICAgICAgICBpdGVyID0gd29yZEJyZWFrSXRlcmF0b3IodGV4dEJveC0+cmVuZGVy
ZXIoKS50ZXh0KCktPmNoYXJhY3RlcnMoKSArIHRleHRCb3gtPnN0YXJ0KCksIHRleHRCb3gtPmxl
bigpKTsKKyAgICAgICAgICAgIGl0ZXIgPSB3b3JkQnJlYWtJdGVyYXRvcih0ZXh0Qm94LT5yZW5k
ZXJlcigpLnRleHQoKS0+ZGVwcmVjYXRlZENoYXJhY3RlcnMoKSArIHRleHRCb3gtPnN0YXJ0KCks
IHRleHRCb3gtPmxlbigpKTsKICAgICAgICAgICAgIHByZXZpb3VzbHlWaXNpdGVkQm94ID0gYm94
OwogICAgICAgICB9CiAKQEAgLTUwMiw3ICs1MDIsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9u
IHByZXZpb3VzQm91bmRhcnkoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBCb3VuZGFyeVNlYXJj
aAogI2Vsc2UKICAgICAgICAgICAgIGl0ZXJhdG9yU3RyaW5nLmZpbGwoJ3gnKTsKICNlbmRpZgot
ICAgICAgICAgICAgc3RyaW5nLmluc2VydCgwLCBpdGVyYXRvclN0cmluZy5jaGFyYWN0ZXJzKCks
IGl0ZXJhdG9yU3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHN0cmluZy5pbnNlcnQoMCwg
aXRlcmF0b3JTdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgaXRlcmF0b3JTdHJpbmcubGVu
Z3RoKCkpOwogICAgICAgICB9CiAgICAgICAgIG5leHQgPSBzZWFyY2hGdW5jdGlvbihzdHJpbmcu
ZGF0YSgpLCBzdHJpbmcuc2l6ZSgpLCBzdHJpbmcuc2l6ZSgpIC0gc3VmZml4TGVuZ3RoLCBNYXlI
YXZlTW9yZUNvbnRleHQsIG5lZWRNb3JlQ29udGV4dCk7CiAgICAgICAgIGlmIChuZXh0ID4gMSkg
Ly8gRklYTUU6IFRoaXMgaXMgYSB3b3JrIGFyb3VuZCBmb3IgaHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTE1MDcwLiBXZSBuZWVkIHRvIHByb3ZpZGUgbW9yZSBjb250ZXh0cyBpbiBnZW5lcmFsIGNhc2Uu
CkBAIC01ODAsNyArNTgwLDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0Qm91bmRhcnko
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBCb3VuZGFyeVNlYXJjaEZ1bmMKICNlbHNlCiAgICAg
ICAgICAgICBpdGVyYXRvclN0cmluZy5maWxsKCd4Jyk7CiAjZW5kaWYKLSAgICAgICAgICAgIHN0
cmluZy5hcHBlbmQoaXRlcmF0b3JTdHJpbmcuY2hhcmFjdGVycygpLCBpdGVyYXRvclN0cmluZy5s
ZW5ndGgoKSk7CisgICAgICAgICAgICBzdHJpbmcuYXBwZW5kKGl0ZXJhdG9yU3RyaW5nLmRlcHJl
Y2F0ZWRDaGFyYWN0ZXJzKCksIGl0ZXJhdG9yU3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAgfQog
ICAgICAgICBuZXh0ID0gc2VhcmNoRnVuY3Rpb24oc3RyaW5nLmRhdGEoKSwgc3RyaW5nLnNpemUo
KSwgcHJlZml4TGVuZ3RoLCBNYXlIYXZlTW9yZUNvbnRleHQsIG5lZWRNb3JlQ29udGV4dCk7CiAg
ICAgICAgIGlmIChuZXh0ICE9IHN0cmluZy5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCmluZGV4IDViODk0ZGQ4Yjc5YzRhMjM3MzE2NDM4MGVk
ZjI2M2MyYmM5NGYzNDYuLmM0N2ViMWY1MTRiZDBkMTllMjMwYTE3OTIzZDM3NmZkY2Y2YWQyYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCkBAIC03
Myw3ICs3Myw3IEBAIFZlY3RvcjxjaGFyPiYgQmxvYkJ1aWxkZXI6OmdldEJ1ZmZlcigpCiAKIHZv
aWQgQmxvYkJ1aWxkZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYg
ZW5kaW5nVHlwZSkKIHsKLSAgICBDU3RyaW5nIHV0ZjhUZXh0ID0gVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHRleHQuY2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpLCBFbnRpdGllc0ZvclVuZW5jb2Rh
Ymxlcyk7CisgICAgQ1N0cmluZyB1dGY4VGV4dCA9IFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0
LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCksIEVudGl0aWVzRm9yVW5lbmNv
ZGFibGVzKTsKIAogICAgIFZlY3RvcjxjaGFyPiYgYnVmZmVyID0gZ2V0QnVmZmVyKCk7CiAgICAg
c2l6ZV90IG9sZFNpemUgPSBidWZmZXIuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtRGF0YUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtRGF0YUxp
c3QuY3BwCmluZGV4IDA0MGMzNTBkMjQyMGRhN2IwODY5ZGE2YzQxZDdhOTJlZTFjMDhhOGUuLjQ4
ZmM2Mjk2OTNkYjExMTJjZGFhMjRmZDg0YjcxNDhkOTAxNTg0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybURhdGFMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1EYXRhTGlzdC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgRm9ybURhdGFMaXN0OjpGb3JtRGF0
YUxpc3QoY29uc3QgVGV4dEVuY29kaW5nJiBjKQogCiB2b2lkIEZvcm1EYXRhTGlzdDo6YXBwZW5k
U3RyaW5nKGNvbnN0IFN0cmluZyYgcykKIHsKLSAgICBDU3RyaW5nIGNzdHIgPSBtX2VuY29kaW5n
LmVuY29kZShzLmNoYXJhY3RlcnMoKSwgcy5sZW5ndGgoKSwgRW50aXRpZXNGb3JVbmVuY29kYWJs
ZXMpOworICAgIENTdHJpbmcgY3N0ciA9IG1fZW5jb2RpbmcuZW5jb2RlKHMuZGVwcmVjYXRlZENo
YXJhY3RlcnMoKSwgcy5sZW5ndGgoKSwgRW50aXRpZXNGb3JVbmVuY29kYWJsZXMpOwogICAgIG1f
aXRlbXMuYXBwZW5kKG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9DUkxGKGNzdHIpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKaW5kZXggN2E4ZDcyOWJjMDc0MjIyZWMyNDQ0MjI3Y2RkMThhYTk5MTJhYjlhOC4u
NzdlN2RjMzg4NzkwMzE1YmI4ZTIzY2U1ZGQyOWFkM2YxNzA4YThlNSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CkBAIC0yMTQzLDcgKzIxNDMsNyBAQCBzdGF0aWMgdm9pZCBub3JtYWxpemVTcGFjZXMoU3RyaW5n
JiB0ZXh0KQogCiAgICAgdW5zaWduZWQgdGV4dExlbmd0aCA9IHRleHQubGVuZ3RoKCk7CiAgICAg
VmVjdG9yPFVDaGFyPiBjaGFyVmVjdG9yKHRleHRMZW5ndGgpOwotICAgIG1lbWNweShjaGFyVmVj
dG9yLmRhdGEoKSwgdGV4dC5jaGFyYWN0ZXJzKCksIHRleHRMZW5ndGggKiBzaXplb2YoVUNoYXIp
KTsKKyAgICBtZW1jcHkoY2hhclZlY3Rvci5kYXRhKCksIHRleHQuZGVwcmVjYXRlZENoYXJhY3Rl
cnMoKSwgdGV4dExlbmd0aCAqIHNpemVvZihVQ2hhcikpOwogCiAgICAgY2hhclZlY3RvcltpKytd
ID0gJyAnOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlv
bXMuY3BwCmluZGV4IDI1ODhkYWE4MDdjNTlhYmQ2ODZkZTVhNWRlNDcyOGE5MmU4YmE0YjUuLmVh
NDUzZDhmMTBmMGI5MGYwZmM1OGQ2MDI3ZDIyMTBlNzYwM2I2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCkBAIC0zODgsNyArMzg4LDcg
QEAgc3RhdGljIHZvaWQgcGFyc2VJbWFnZXNXaXRoU2NhbGVGcm9tU3Jjc2V0QXR0cmlidXRlKGNv
bnN0IFN0cmluZyYgc3Jjc2V0QXR0cmlidXQKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYm9vbCB2YWxpZFNjYWxlRmFjdG9yID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgc2l6
ZV90IHNjYWxlRmFjdG9yTGVuZ3RoV2l0aG91dFVuaXQgPSBpbWFnZVNjYWxlRW5kIC0gaW1hZ2VT
Y2FsZVN0YXJ0IC0gMTsKLSAgICAgICAgICAgICAgICBpbWFnZVNjYWxlRmFjdG9yID0gY2hhcmFj
dGVyc1RvRmxvYXQoc3Jjc2V0QXR0cmlidXRlLmNoYXJhY3RlcnMoKSArIGltYWdlU2NhbGVTdGFy
dCwgc2NhbGVGYWN0b3JMZW5ndGhXaXRob3V0VW5pdCwgJnZhbGlkU2NhbGVGYWN0b3IpOworICAg
ICAgICAgICAgICAgIGltYWdlU2NhbGVGYWN0b3IgPSBjaGFyYWN0ZXJzVG9GbG9hdChzcmNzZXRB
dHRyaWJ1dGUuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSArIGltYWdlU2NhbGVTdGFydCwgc2NhbGVG
YWN0b3JMZW5ndGhXaXRob3V0VW5pdCwgJnZhbGlkU2NhbGVGYWN0b3IpOwogCiAgICAgICAgICAg
ICAgICAgaWYgKCF2YWxpZFNjYWxlRmFjdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgIGltYWdl
Q2FuZGlkYXRlU3RhcnQgPSBzZXBhcmF0b3IgKyAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggNDEzOWQzNjU3OTMxNTljMGU3OGQyYzIx
MDRjZDExODlhYjU1YmM4ZC4uMWExYTBhYWViODNjY2VkZDJiODRlZGUyZGMxODU4OWQyZWYxOTEw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3Bw
CkBAIC0xNjUsNyArMTY1LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGV4cGxpY2l0IEV4dGVy
bmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi0gICAgICAgIDog
bV9jdXJyZW50KHN0cmluZy5jaGFyYWN0ZXJzKCkpCisgICAgICAgIDogbV9jdXJyZW50KHN0cmlu
Zy5kZXByZWNhdGVkQ2hhcmFjdGVycygpKQogICAgICAgICAsIG1fZW5kKG1fY3VycmVudCArIHN0
cmluZy5sZW5ndGgoKSkKICAgICAgICAgLCBtX2lzQWxsOEJpdERhdGEoc3RyaW5nLmxlbmd0aCgp
ICYmIHN0cmluZy5pczhCaXQoKSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL01hbmlmZXN0UGFyc2VyLmNwcAppbmRleCA3N2IwMDk2MTcwMThhNjU3MWU2ZTk1
NTEzNGIxNWU0YTUzMGFhYjhhLi5hNDdhYTE1MGVjNWY5MGRiNWZlMzg5YmU2Nzk0ZDg5MGYwZDI1
ZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvTWFuaWZlc3RQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9NYW5pZmVzdFBh
cnNlci5jcHAKQEAgLTUzLDggKzUzLDggQEAgYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYg
bWFuaWZlc3RVUkwsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZXMKICAgICBp
ZiAoIXMuc3RhcnRzV2l0aCgiQ0FDSEUgTUFOSUZFU1QiKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAotICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBzLmNoYXJhY3RlcnMoKSArIHMubGVuZ3Ro
KCk7ICAgIAotICAgIGNvbnN0IFVDaGFyKiBwID0gcy5jaGFyYWN0ZXJzKCkgKyAxNDsgLy8gIkNB
Q0hFIE1BTklGRVNUIiBpcyAxNCBjaGFyYWN0ZXJzLgorICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBz
LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCkgKyBzLmxlbmd0aCgpOworICAgIGNvbnN0IFVDaGFyKiBw
ID0gcy5kZXByZWNhdGVkQ2hhcmFjdGVycygpICsgMTQ7IC8vICJDQUNIRSBNQU5JRkVTVCIgaXMg
MTQgY2hhcmFjdGVycy4KIAogICAgIGlmIChwIDwgZW5kICYmICpwICE9ICcgJyAmJiAqcCAhPSAn
XHQnICYmICpwICE9ICdcbicgJiYgKnAgIT0gJ1xyJykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtOTksMjAgKzk5LDIwIEBAIGJvb2wgcGFyc2VNYW5pZmVzdChjb25zdCBVUkwmIG1hbmlmZXN0
VVJMLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBNYW5pZmVzCiAgICAgICAgIGVsc2Ug
aWYgKG1vZGUgPT0gVW5rbm93bikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBlbHNl
IGlmIChtb2RlID09IEV4cGxpY2l0IHx8IG1vZGUgPT0gT25saW5lV2hpdGVsaXN0KSB7Ci0gICAg
ICAgICAgICBjb25zdCBVQ2hhciogcCA9IGxpbmUuY2hhcmFjdGVycygpOworICAgICAgICAgICAg
Y29uc3QgVUNoYXIqIHAgPSBsaW5lLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7CiAgICAgICAgICAg
ICBjb25zdCBVQ2hhciogbGluZUVuZCA9IHAgKyBsaW5lLmxlbmd0aCgpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICAvLyBMb29rIGZvciB3aGl0ZXNwYWNlIHNlcGFyYXRpbmcgdGhlIFVSTCBm
cm9tIHN1YnNlcXVlbnQgaWdub3JlZCB0b2tlbnMuCiAgICAgICAgICAgICB3aGlsZSAocCA8IGxp
bmVFbmQgJiYgKnAgIT0gJ1x0JyAmJiAqcCAhPSAnICcpIAogICAgICAgICAgICAgICAgIHArKzsK
IAotICAgICAgICAgICAgaWYgKG1vZGUgPT0gT25saW5lV2hpdGVsaXN0ICYmIHAgLSBsaW5lLmNo
YXJhY3RlcnMoKSA9PSAxICYmICpsaW5lLmNoYXJhY3RlcnMoKSA9PSAnKicpIHsKKyAgICAgICAg
ICAgIGlmIChtb2RlID09IE9ubGluZVdoaXRlbGlzdCAmJiBwIC0gbGluZS5kZXByZWNhdGVkQ2hh
cmFjdGVycygpID09IDEgJiYgKmxpbmUuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSA9PSAnKicpIHsK
ICAgICAgICAgICAgICAgICAvLyBXaWxkY2FyZCB3YXMgZm91bmQuCiAgICAgICAgICAgICAgICAg
bWFuaWZlc3QuYWxsb3dBbGxOZXR3b3JrUmVxdWVzdHMgPSB0cnVlOwogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBVUkwgdXJsKG1hbmlmZXN0
VVJMLCBTdHJpbmcobGluZS5jaGFyYWN0ZXJzKCksIHAgLSBsaW5lLmNoYXJhY3RlcnMoKSkpOwor
ICAgICAgICAgICAgVVJMIHVybChtYW5pZmVzdFVSTCwgU3RyaW5nKGxpbmUuZGVwcmVjYXRlZENo
YXJhY3RlcnMoKSwgcCAtIGxpbmUuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSkpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CkBAIC0xMzIsNyArMTMyLDcgQEAgYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYg
bWFuaWZlc3RVUkwsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZXMKICAgICAg
ICAgICAgICAgICBtYW5pZmVzdC5vbmxpbmVXaGl0ZWxpc3RlZFVSTHMuYXBwZW5kKHVybCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgfSBlbHNlIGlmIChtb2RlID09IEZhbGxiYWNrKSB7Ci0gICAg
ICAgICAgICBjb25zdCBVQ2hhciogcCA9IGxpbmUuY2hhcmFjdGVycygpOworICAgICAgICAgICAg
Y29uc3QgVUNoYXIqIHAgPSBsaW5lLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7CiAgICAgICAgICAg
ICBjb25zdCBVQ2hhciogbGluZUVuZCA9IHAgKyBsaW5lLmxlbmd0aCgpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICAvLyBMb29rIGZvciB3aGl0ZXNwYWNlIHNlcGFyYXRpbmcgdGhlIHR3byBV
UkxzCkBAIC0xNDQsNyArMTQ0LDcgQEAgYm9vbCBwYXJzZU1hbmlmZXN0KGNvbnN0IFVSTCYgbWFu
aWZlc3RVUkwsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIE1hbmlmZXMKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAg
ICAgVVJMIG5hbWVzcGFjZVVSTChtYW5pZmVzdFVSTCwgU3RyaW5nKGxpbmUuY2hhcmFjdGVycygp
LCBwIC0gbGluZS5jaGFyYWN0ZXJzKCkpKTsKKyAgICAgICAgICAgIFVSTCBuYW1lc3BhY2VVUkwo
bWFuaWZlc3RVUkwsIFN0cmluZyhsaW5lLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHAgLSBsaW5l
LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCkpKTsKICAgICAgICAgICAgIGlmICghbmFtZXNwYWNlVVJM
LmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChu
YW1lc3BhY2VVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggY2M2NjM2ZDY1YmEwODAwNDBhZjBm
YTJkNDg1M2VlY2ExMjljMGExMi4uMzM5YTA3MjJjYjA0OWVjZGJlMmQxYTQ0MDVhOWJmZGQzMTcz
NTg2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNw
cApAQCAtMjE1LDggKzIxNSw4IEBAIHN0YXRpYyB2b2lkIHNraXBXaGlsZShjb25zdCBVQ2hhciom
IHBvc2l0aW9uLCBjb25zdCBVQ2hhciogZW5kKQogCiBzdGF0aWMgYm9vbCBpc1NvdXJjZUxpc3RO
b25lKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgY29uc3QgVUNoYXIqIGJlZ2luID0gdmFs
dWUuY2hhcmFjdGVycygpOwotICAgIGNvbnN0IFVDaGFyKiBlbmQgPSB2YWx1ZS5jaGFyYWN0ZXJz
KCkgKyB2YWx1ZS5sZW5ndGgoKTsKKyAgICBjb25zdCBVQ2hhciogYmVnaW4gPSB2YWx1ZS5kZXBy
ZWNhdGVkQ2hhcmFjdGVycygpOworICAgIGNvbnN0IFVDaGFyKiBlbmQgPSB2YWx1ZS5kZXByZWNh
dGVkQ2hhcmFjdGVycygpICsgdmFsdWUubGVuZ3RoKCk7CiAgICAgc2tpcFdoaWxlPGlzQVNDSUlT
cGFjZT4oYmVnaW4sIGVuZCk7CiAKICAgICBjb25zdCBVQ2hhciogcG9zaXRpb24gPSBiZWdpbjsK
QEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIENTUFNvdXJjZUxpc3Q6OnBhcnNlKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiAgICAgLy8gV2UgcmVwcmVzZW50ICdub25lJyBhcyBhbiBlbXB0eSBtX2xpc3Qu
CiAgICAgaWYgKGlzU291cmNlTGlzdE5vbmUodmFsdWUpKQogICAgICAgICByZXR1cm47Ci0gICAg
cGFyc2UodmFsdWUuY2hhcmFjdGVycygpLCB2YWx1ZS5jaGFyYWN0ZXJzKCkgKyB2YWx1ZS5sZW5n
dGgoKSk7CisgICAgcGFyc2UodmFsdWUuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgdmFsdWUuZGVw
cmVjYXRlZENoYXJhY3RlcnMoKSArIHZhbHVlLmxlbmd0aCgpKTsKIH0KIAogYm9vbCBDU1BTb3Vy
Y2VMaXN0OjptYXRjaGVzKGNvbnN0IFVSTCYgdXJsKQpAQCAtNzA2LDcgKzcwNiw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHsKICAgICAgICAg
U3RyaW5nIG5vbmNlOwotICAgICAgICBjb25zdCBVQ2hhciogcG9zaXRpb24gPSB2YWx1ZS5jaGFy
YWN0ZXJzKCk7CisgICAgICAgIGNvbnN0IFVDaGFyKiBwb3NpdGlvbiA9IHZhbHVlLmRlcHJlY2F0
ZWRDaGFyYWN0ZXJzKCk7CiAgICAgICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwb3NpdGlvbiArIHZh
bHVlLmxlbmd0aCgpOwogCiAgICAgICAgIHNraXBXaGlsZTxpc0FTQ0lJU3BhY2U+KHBvc2l0aW9u
LCBlbmQpOwpAQCAtNzQ5LDcgKzc0OSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBw
YXJzZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHsKLSAgICAgICAgY29uc3QgVUNoYXIqIGJl
Z2luID0gdmFsdWUuY2hhcmFjdGVycygpOworICAgICAgICBjb25zdCBVQ2hhciogYmVnaW4gPSB2
YWx1ZS5kZXByZWNhdGVkQ2hhcmFjdGVycygpOwogICAgICAgICBjb25zdCBVQ2hhciogcG9zaXRp
b24gPSBiZWdpbjsKICAgICAgICAgY29uc3QgVUNoYXIqIGVuZCA9IGJlZ2luICsgdmFsdWUubGVu
Z3RoKCk7CiAKQEAgLTEyMzcsNyArMTIzNyw3IEBAIHZvaWQgQ1NQRGlyZWN0aXZlTGlzdDo6cGFy
c2UoY29uc3QgU3RyaW5nJiBwb2xpY3kpCiAgICAgaWYgKHBvbGljeS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGNvbnN0IFVDaGFyKiBwb3NpdGlvbiA9IHBvbGljeS5jaGFyYWN0
ZXJzKCk7CisgICAgY29uc3QgVUNoYXIqIHBvc2l0aW9uID0gcG9saWN5LmRlcHJlY2F0ZWRDaGFy
YWN0ZXJzKCk7CiAgICAgY29uc3QgVUNoYXIqIGVuZCA9IHBvc2l0aW9uICsgcG9saWN5Lmxlbmd0
aCgpOwogCiAgICAgd2hpbGUgKHBvc2l0aW9uIDwgZW5kKSB7CkBAIC0xMzE2LDcgKzEzMTYsNyBA
QCB2b2lkIENTUERpcmVjdGl2ZUxpc3Q6OnBhcnNlUmVwb3J0VVJJKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgbV9wb2xpY3ktPnJlcG9ydER1cGxpY2F0
ZURpcmVjdGl2ZShuYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjb25zdCBVQ2hh
ciogcG9zaXRpb24gPSB2YWx1ZS5jaGFyYWN0ZXJzKCk7CisgICAgY29uc3QgVUNoYXIqIHBvc2l0
aW9uID0gdmFsdWUuZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsKICAgICBjb25zdCBVQ2hhciogZW5k
ID0gcG9zaXRpb24gKyB2YWx1ZS5sZW5ndGgoKTsKIAogICAgIHdoaWxlIChwb3NpdGlvbiA8IGVu
ZCkgewpAQCAtMTM3MCw3ICsxMzcwLDcgQEAgdm9pZCBDU1BEaXJlY3RpdmVMaXN0OjpwYXJzZVJl
ZmxlY3RlZFhTUyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IFVDaGFyKiBwb3NpdGlvbiA9IHZhbHVlLmNo
YXJhY3RlcnMoKTsKKyAgICBjb25zdCBVQ2hhciogcG9zaXRpb24gPSB2YWx1ZS5kZXByZWNhdGVk
Q2hhcmFjdGVycygpOwogICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwb3NpdGlvbiArIHZhbHVlLmxl
bmd0aCgpOwogCiAgICAgc2tpcFdoaWxlPGlzQVNDSUlTcGFjZT4ocG9zaXRpb24sIGVuZCk7CkBA
IC0xNDc1LDcgKzE0NzUsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZGlkUmVjZWl2
ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgSGVhZGVyVHlwZSB0eQogICAgIC8vIFJGQzI2
MTYsIHNlY3Rpb24gNC4yIHNwZWNpZmllcyB0aGF0IGhlYWRlcnMgYXBwZWFyaW5nIG11bHRpcGxl
IHRpbWVzIGNhbgogICAgIC8vIGJlIGNvbWJpbmVkIHdpdGggYSBjb21tYS4gV2FsayB0aGUgaGVh
ZGVyIHN0cmluZywgYW5kIHBhcnNlIGVhY2ggY29tbWEKICAgICAvLyBzZXBhcmF0ZWQgY2h1bmsg
YXMgYSBzZXBhcmF0ZSBoZWFkZXIuCi0gICAgY29uc3QgVUNoYXIqIGJlZ2luID0gaGVhZGVyLmNo
YXJhY3RlcnMoKTsKKyAgICBjb25zdCBVQ2hhciogYmVnaW4gPSBoZWFkZXIuZGVwcmVjYXRlZENo
YXJhY3RlcnMoKTsKICAgICBjb25zdCBVQ2hhciogcG9zaXRpb24gPSBiZWdpbjsKICAgICBjb25z
dCBVQ2hhciogZW5kID0gYmVnaW4gKyBoZWFkZXIubGVuZ3RoKCk7CiAgICAgd2hpbGUgKHBvc2l0
aW9uIDwgZW5kKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDBj
NTBhOTNlMTlmMThhYTBlY2Y0MTJjYjk0MDVlNzg4YTA2MDc1ZjMuLjA5M2RiODg4NDJjNmM4NWMz
NzdiODM5ZTgxMWQ5MTYzNDViYzg2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6
ZXIuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXpl
RnJhbWUoRnJhbWUqIGZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFN0cmluZyB0
ZXh0ID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9kZXMoKmRvY3VtZW50LT5kb2N1bWVudEVsZW1l
bnQoKSwgMCwgSW5jbHVkZU5vZGUpOwotICAgIENTdHJpbmcgZnJhbWVIVE1MID0gdGV4dEVuY29k
aW5nLmVuY29kZSh0ZXh0LmNoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgRW50aXRpZXNGb3JV
bmVuY29kYWJsZXMpOworICAgIENTdHJpbmcgZnJhbWVIVE1MID0gdGV4dEVuY29kaW5nLmVuY29k
ZSh0ZXh0LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCksIEVudGl0aWVzRm9y
VW5lbmNvZGFibGVzKTsKICAgICBtX3Jlc291cmNlcy0+YXBwZW5kKFJlc291cmNlKHVybCwgZG9j
dW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZyYW1lSFRN
TC5kYXRhKCksIGZyYW1lSFRNTC5sZW5ndGgoKSkpKTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQo
dXJsKTsKIApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6
ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgVVJMCiAgICAg
ICAgIFRleHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFy
c2V0KCkpOwogICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7CiAgICAgICAg
IFN0cmluZyB0ZXh0U3RyaW5nID0gY3NzVGV4dC50b1N0cmluZygpOwotICAgICAgICBDU3RyaW5n
IHRleHQgPSB0ZXh0RW5jb2RpbmcuZW5jb2RlKHRleHRTdHJpbmcuY2hhcmFjdGVycygpLCB0ZXh0
U3RyaW5nLmxlbmd0aCgpLCBFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7CisgICAgICAgIENTdHJp
bmcgdGV4dCA9IHRleHRFbmNvZGluZy5lbmNvZGUodGV4dFN0cmluZy5kZXByZWNhdGVkQ2hhcmFj
dGVycygpLCB0ZXh0U3RyaW5nLmxlbmd0aCgpLCBFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7CiAg
ICAgICAgIG1fcmVzb3VyY2VzLT5hcHBlbmQoUmVzb3VyY2UodXJsLCBTdHJpbmcoInRleHQvY3Nz
IiksIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHQuZGF0YSgpLCB0ZXh0Lmxlbmd0aCgpKSkpOwog
ICAgICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoLmNwcAppbmRleCAzZmY5ZDVkZTIyZTI5ZjI3ZWY5YjlhNWY3MzFkODU3Njg4MTQzMzdk
Li4xN2M0YjE4ZWNkMmEwM2YwYzAxMDRjOWVjZDJiZDRmMjVlODEwNmI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xlbmd0aC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVu
Z3RoW10+IG5ld0Nvb3Jkc0FycmF5KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBpbnQmIGxlbikKIAog
ICAgIHN0ciA9IHN0ci0+c2ltcGxpZnlXaGl0ZVNwYWNlKCk7CiAKLSAgICBsZW4gPSBjb3VudENo
YXJhY3RlcihzdHItPmNoYXJhY3RlcnMoKSwgc3RyLT5sZW5ndGgoKSwgJyAnKSArIDE7CisgICAg
bGVuID0gY291bnRDaGFyYWN0ZXIoc3RyLT5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBzdHItPmxl
bmd0aCgpLCAnICcpICsgMTsKICAgICBhdXRvIHIgPSBzdGQ6Om1ha2VfdW5pcXVlPExlbmd0aFtd
PihsZW4pOwogCiAgICAgaW50IGkgPSAwOwpAQCAtMTA4LDEwICsxMDgsMTAgQEAgc3RkOjp1bmlx
dWVfcHRyPExlbmd0aFtdPiBuZXdDb29yZHNBcnJheShjb25zdCBTdHJpbmcmIHN0cmluZywgaW50
JiBsZW4pCiAgICAgc2l6ZV90IHBvczI7CiAKICAgICB3aGlsZSAoKHBvczIgPSBzdHItPmZpbmQo
JyAnLCBwb3MpKSAhPSBub3RGb3VuZCkgewotICAgICAgICByW2krK10gPSBwYXJzZUxlbmd0aChz
dHItPmNoYXJhY3RlcnMoKSArIHBvcywgcG9zMiAtIHBvcyk7CisgICAgICAgIHJbaSsrXSA9IHBh
cnNlTGVuZ3RoKHN0ci0+ZGVwcmVjYXRlZENoYXJhY3RlcnMoKSArIHBvcywgcG9zMiAtIHBvcyk7
CiAgICAgICAgIHBvcyA9IHBvczIrMTsKICAgICB9Ci0gICAgcltpXSA9IHBhcnNlTGVuZ3RoKHN0
ci0+Y2hhcmFjdGVycygpICsgcG9zLCBzdHItPmxlbmd0aCgpIC0gcG9zKTsKKyAgICByW2ldID0g
cGFyc2VMZW5ndGgoc3RyLT5kZXByZWNhdGVkQ2hhcmFjdGVycygpICsgcG9zLCBzdHItPmxlbmd0
aCgpIC0gcG9zKTsKIAogICAgIEFTU0VSVChpID09IGxlbiAtIDEpOwogCkBAIC0xMjYsNyArMTI2
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlbmd0aFtdPiBuZXdMZW5ndGhBcnJheShjb25zdCBTdHJp
bmcmIHN0cmluZywgaW50JiBsZW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIGxlbiA9IGNvdW50Q2hhcmFjdGVyKHN0ci0+Y2hhcmFjdGVycygpLCBzdHItPmxlbmd0aCgp
LCAnLCcpICsgMTsKKyAgICBsZW4gPSBjb3VudENoYXJhY3RlcihzdHItPmRlcHJlY2F0ZWRDaGFy
YWN0ZXJzKCksIHN0ci0+bGVuZ3RoKCksICcsJykgKyAxOwogICAgIGF1dG8gciA9IHN0ZDo6bWFr
ZV91bmlxdWU8TGVuZ3RoW10+KGxlbik7CiAKICAgICBpbnQgaSA9IDA7CkBAIC0xMzQsNyArMTM0
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPExlbmd0aFtdPiBuZXdMZW5ndGhBcnJheShjb25zdCBTdHJp
bmcmIHN0cmluZywgaW50JiBsZW4pCiAgICAgc2l6ZV90IHBvczI7CiAKICAgICB3aGlsZSAoKHBv
czIgPSBzdHItPmZpbmQoJywnLCBwb3MpKSAhPSBub3RGb3VuZCkgewotICAgICAgICByW2krK10g
PSBwYXJzZUxlbmd0aChzdHItPmNoYXJhY3RlcnMoKSArIHBvcywgcG9zMiAtIHBvcyk7CisgICAg
ICAgIHJbaSsrXSA9IHBhcnNlTGVuZ3RoKHN0ci0+ZGVwcmVjYXRlZENoYXJhY3RlcnMoKSArIHBv
cywgcG9zMiAtIHBvcyk7CiAgICAgICAgIHBvcyA9IHBvczIrMTsKICAgICB9CiAKQEAgLTE0Miw3
ICsxNDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGVuZ3RoW10+IG5ld0xlbmd0aEFycmF5KGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBpbnQmIGxlbikKIAogICAgIC8vIElFIFF1aXJrOiBJZiB0aGUgbGFz
dCBjb21tYSBpcyB0aGUgbGFzdCBjaGFyIHNraXAgaXQgYW5kIHJlZHVjZSBsZW4gYnkgb25lLgog
ICAgIGlmIChzdHItPmxlbmd0aCgpLXBvcyA+IDApCi0gICAgICAgIHJbaV0gPSBwYXJzZUxlbmd0
aChzdHItPmNoYXJhY3RlcnMoKSArIHBvcywgc3RyLT5sZW5ndGgoKSAtIHBvcyk7CisgICAgICAg
IHJbaV0gPSBwYXJzZUxlbmd0aChzdHItPmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCkgKyBwb3MsIHN0
ci0+bGVuZ3RoKCkgLSBwb3MpOwogICAgIGVsc2UKICAgICAgICAgbGVuLS07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xpbmtIYXNoLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xpbmtIYXNoLmNwcAppbmRleCAyNDExNjYwY2NhMmNmOTE4MmMzZDY1N2QyMzIz
YzlmYWMyYmM3ZDEzLi5jMGU0NWNlYTQ2YzcyN2FmMjNiMDFjM2NiZjJiYjI1OGFiMTI5YmE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSGFzaC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGlua0hhc2guY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgdm9pZCB2aXNpdGVkVVJMSW5saW5lKGNvbnN0IFVSTCYgYmFzZSwg
Y29uc3QgQ2hhcmFjdGVyVHlwZSoKIAogdm9pZCB2aXNpdGVkVVJMKGNvbnN0IFVSTCYgYmFzZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwsIFZlY3RvcjxVQ2hhciwgNTEyPiYgYnVm
ZmVyKQogewotICAgIHJldHVybiB2aXNpdGVkVVJMSW5saW5lKGJhc2UsIGF0dHJpYnV0ZVVSTC5j
aGFyYWN0ZXJzKCksIGF0dHJpYnV0ZVVSTC5sZW5ndGgoKSwgYnVmZmVyKTsKKyAgICByZXR1cm4g
dmlzaXRlZFVSTElubGluZShiYXNlLCBhdHRyaWJ1dGVVUkwuc3RyaW5nKCkuZGVwcmVjYXRlZENo
YXJhY3RlcnMoKSwgYXR0cmlidXRlVVJMLmxlbmd0aCgpLCBidWZmZXIpOwogfQogCiBMaW5rSGFz
aCB2aXNpdGVkTGlua0hhc2goY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0
dHJpYnV0ZVVSTCkKQEAgLTMwMyw3ICszMDMsNyBAQCBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2go
Y29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkKICAgICB9
CiAKICAgICBWZWN0b3I8VUNoYXIsIDUxMj4gdXJsOwotICAgIHZpc2l0ZWRVUkxJbmxpbmUoYmFz
ZSwgYXR0cmlidXRlVVJMLmNoYXJhY3RlcnMoKSwgYXR0cmlidXRlVVJMLmxlbmd0aCgpLCB1cmwp
OworICAgIHZpc2l0ZWRVUkxJbmxpbmUoYmFzZSwgYXR0cmlidXRlVVJMLnN0cmluZygpLmRlcHJl
Y2F0ZWRDaGFyYWN0ZXJzKCksIGF0dHJpYnV0ZVVSTC5sZW5ndGgoKSwgdXJsKTsKICAgICBpZiAo
dXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDFkYWQ3ODcyMzJiMzA2MWQxOTY3YzlkZWI5M2I4NjYx
Nzg4NWM3YmMuLmNjOWI0ZmY4NTYyMjgwNDk2M2ZmMjQwOWJkY2VlNWQ2MzliZjAzMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtNTAzLDcgKzUwMyw3IEBA
IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB1dGY4QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogCiAgICAgLy8gQ29udmVydCB0byBydW5zIG9mIDgtYml0IGNoYXJhY3RlcnMuCiAgICAgY2hh
ciogcCA9IGJ1ZmZlci5kYXRhKCk7Ci0gICAgY29uc3QgVUNoYXIqIGQgPSBzdHJpbmcuY2hhcmFj
dGVycygpOworICAgIGNvbnN0IFVDaGFyKiBkID0gc3RyaW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJz
KCk7CiAgICAgV1RGOjpVbmljb2RlOjpDb252ZXJzaW9uUmVzdWx0IHJlc3VsdCA9IFdURjo6VW5p
Y29kZTo6Y29udmVydFVURjE2VG9VVEY4KCZkLCBkICsgbGVuZ3RoLCAmcCwgcCArIGJ1ZmZlci5z
aXplKCksIHRydWUpOwogICAgIGlmIChyZXN1bHQgIT0gV1RGOjpVbmljb2RlOjpjb252ZXJzaW9u
T0spCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKaW5kZXggMjNiNmM0
MTBmMTAwZDFiY2MwZmQ2MTYxOWQwMjM4Yzg3MDU4NjJiMi4uNWIwZjliNDY1OThlZDExMDZmYzNj
NGQ5ZmJjZDdkNzc0MzUwMTk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCkBAIC01ODksOSAr
NTg5LDggQEAgdW5zaWduZWQgc2hvcnQgVVJMOjpwb3J0KCkgY29uc3QKICAgICBpZiAobV9ob3N0
RW5kID09IG1fcG9ydEVuZCB8fCBtX2hvc3RFbmQgPT0gbV9wb3J0RW5kIC0gMSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBjb25zdCBVQ2hhciogc3RyaW5nRGF0YSA9IG1fc3RyaW5nLmNoYXJh
Y3RlcnMoKTsKICAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgbnVtYmVyID0gY2hh
cmFjdGVyc1RvVUludFN0cmljdChzdHJpbmdEYXRhICsgbV9ob3N0RW5kICsgMSwgbV9wb3J0RW5k
IC0gbV9ob3N0RW5kIC0gMSwgJm9rKTsKKyAgICB1bnNpZ25lZCBudW1iZXIgPSBjaGFyYWN0ZXJz
VG9VSW50U3RyaWN0KG1fc3RyaW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCkgKyBtX2hvc3RFbmQg
KyAxLCBtX3BvcnRFbmQgLSBtX2hvc3RFbmQgLSAxLCAmb2spOwogICAgIGlmICghb2sgfHwgbnVt
YmVyID4gbWF4aW11bVZhbGlkUG9ydE51bWJlcikKICAgICAgICAgcmV0dXJuIGludmFsaWRQb3J0
TnVtYmVyOwogICAgIHJldHVybiBudW1iZXI7CkBAIC0xNjMyLDI3ICsxNjMxLDI3IEBAIHN0YXRp
YyB2b2lkIGVuY29kZUhvc3RuYW1lcyhjb25zdCBTdHJpbmcmIHN0ciwgVUNoYXJCdWZmZXImIG91
dHB1dCkKIAogICAgIGlmIChwcm90b2NvbElzKHN0ciwgIm1haWx0byIpKSB7CiAgICAgICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8aW50LCBpbnQ+PiBob3N0bmFtZVJhbmdlczsKLSAgICAgICAgZmluZEhv
c3RuYW1lc0luTWFpbFRvVVJMKHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5sZW5ndGgoKSwgaG9zdG5h
bWVSYW5nZXMpOworICAgICAgICBmaW5kSG9zdG5hbWVzSW5NYWlsVG9VUkwoc3RyLmRlcHJlY2F0
ZWRDaGFyYWN0ZXJzKCksIHN0ci5sZW5ndGgoKSwgaG9zdG5hbWVSYW5nZXMpOwogICAgICAgICBp
bnQgbiA9IGhvc3RuYW1lUmFuZ2VzLnNpemUoKTsKICAgICAgICAgaW50IHAgPSAwOwogICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICAgICAgY29uc3Qgc3RkOjpw
YWlyPGludCwgaW50PiYgciA9IGhvc3RuYW1lUmFuZ2VzW2ldOwotICAgICAgICAgICAgb3V0cHV0
LmFwcGVuZCgmc3RyLmNoYXJhY3RlcnMoKVtwXSwgci5maXJzdCAtIHApOwotICAgICAgICAgICAg
YXBwZW5kRW5jb2RlZEhvc3RuYW1lKG91dHB1dCwgJnN0ci5jaGFyYWN0ZXJzKClbci5maXJzdF0s
IHIuc2Vjb25kIC0gci5maXJzdCk7CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCZzdHIuZGVw
cmVjYXRlZENoYXJhY3RlcnMoKVtwXSwgci5maXJzdCAtIHApOworICAgICAgICAgICAgYXBwZW5k
RW5jb2RlZEhvc3RuYW1lKG91dHB1dCwgJnN0ci5kZXByZWNhdGVkQ2hhcmFjdGVycygpW3IuZmly
c3RdLCByLnNlY29uZCAtIHIuZmlyc3QpOwogICAgICAgICAgICAgcCA9IHIuc2Vjb25kOwogICAg
ICAgICB9CiAgICAgICAgIC8vIFRoaXMgd2lsbCBjb3B5IGVpdGhlciBldmVyeXRoaW5nIGFmdGVy
IHRoZSBsYXN0IGhvc3RuYW1lLCBvciB0aGUKICAgICAgICAgLy8gd2hvbGUgdGhpbmcgaWYgdGhl
cmUgaXMgbm8gaG9zdG5hbWUuCi0gICAgICAgIG91dHB1dC5hcHBlbmQoJnN0ci5jaGFyYWN0ZXJz
KClbcF0sIHN0ci5sZW5ndGgoKSAtIHApOworICAgICAgICBvdXRwdXQuYXBwZW5kKCZzdHIuZGVw
cmVjYXRlZENoYXJhY3RlcnMoKVtwXSwgc3RyLmxlbmd0aCgpIC0gcCk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgaW50IGhvc3RTdGFydCwgaG9zdEVuZDsKLSAgICAgICAgaWYgKGZpbmRIb3N0bmFt
ZUluSGllcmFyY2hpY2FsVVJMKHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5sZW5ndGgoKSwgaG9zdFN0
YXJ0LCBob3N0RW5kKSkgewotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChzdHIuY2hhcmFjdGVy
cygpLCBob3N0U3RhcnQpOyAvLyBCZWZvcmUgaG9zdG5hbWUuCi0gICAgICAgICAgICBhcHBlbmRF
bmNvZGVkSG9zdG5hbWUob3V0cHV0LCAmc3RyLmNoYXJhY3RlcnMoKVtob3N0U3RhcnRdLCBob3N0
RW5kIC0gaG9zdFN0YXJ0KTsKLSAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoJnN0ci5jaGFyYWN0
ZXJzKClbaG9zdEVuZF0sIHN0ci5sZW5ndGgoKSAtIGhvc3RFbmQpOyAvLyBBZnRlciBob3N0bmFt
ZS4KKyAgICAgICAgaWYgKGZpbmRIb3N0bmFtZUluSGllcmFyY2hpY2FsVVJMKHN0ci5kZXByZWNh
dGVkQ2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCksIGhvc3RTdGFydCwgaG9zdEVuZCkpIHsKKyAg
ICAgICAgICAgIG91dHB1dC5hcHBlbmQoc3RyLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIGhvc3RT
dGFydCk7IC8vIEJlZm9yZSBob3N0bmFtZS4KKyAgICAgICAgICAgIGFwcGVuZEVuY29kZWRIb3N0
bmFtZShvdXRwdXQsICZzdHIuZGVwcmVjYXRlZENoYXJhY3RlcnMoKVtob3N0U3RhcnRdLCBob3N0
RW5kIC0gaG9zdFN0YXJ0KTsKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoJnN0ci5kZXByZWNh
dGVkQ2hhcmFjdGVycygpW2hvc3RFbmRdLCBzdHIubGVuZ3RoKCkgLSBob3N0RW5kKTsgLy8gQWZ0
ZXIgaG9zdG5hbWUuCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBObyBob3N0bmFt
ZSB0byBlbmNvZGUsIHJldHVybiB0aGUgaW5wdXQuCi0gICAgICAgICAgICBvdXRwdXQuYXBwZW5k
KHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5sZW5ndGgoKSk7CisgICAgICAgICAgICBvdXRwdXQuYXBw
ZW5kKHN0ci5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCkpOwogICAgICAgICB9
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U3RyaW5nVHJ1bmNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0
cmluZ1RydW5jYXRvci5jcHAKaW5kZXggYTQ2NzM5YTNhZTEwZjAxYjI5NjEwODVkZWY0YzEyYzhj
Yjk4NDc1Yi4uNDViOGRiZGJlNzU3ZTEwNTE0NzhhYmQxNWQyMTJlYWM0OWEyYTViYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3Iu
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyB1bnNpZ25lZCBjZW50ZXJUcnVuY2F0ZVRvQnVm
ZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVuCiAgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oa2VlcENvdW50IDwgU1RSSU5HX0JVRkZFUl9TSVpF
KTsKICAgICAKICAgICB1bnNpZ25lZCBvbWl0U3RhcnQgPSAoa2VlcENvdW50ICsgMSkgLyAyOwot
ICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQoc3RyaW5nLmNoYXJhY3RlcnMo
KSwgbGVuZ3RoKTsKKyAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KHN0cmlu
Zy5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBsZW5ndGgpOwogICAgIHVuc2lnbmVkIG9taXRFbmQg
PSBib3VuZGVkVGV4dEJyZWFrRm9sbG93aW5nKGl0LCBvbWl0U3RhcnQgKyAobGVuZ3RoIC0ga2Vl
cENvdW50KSAtIDEsIGxlbmd0aCk7CiAgICAgb21pdFN0YXJ0ID0gdGV4dEJyZWFrQXRPclByZWNl
ZGluZyhpdCwgb21pdFN0YXJ0KTsKIApAQCAtODksMTIgKzg5LDEyIEBAIHN0YXRpYyB1bnNpZ25l
ZCBjZW50ZXJUcnVuY2F0ZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBs
ZW5ndGgsIHVuCiAgICAgdW5zaWduZWQgdHJ1bmNhdGVkTGVuZ3RoID0gc2hvdWxkSW5zZXJ0RWxs
aXBzaXMgPyBvbWl0U3RhcnQgKyAxICsgKGxlbmd0aCAtIG9taXRFbmQpIDogbGVuZ3RoIC0gKG9t
aXRFbmQgLSBvbWl0U3RhcnQpOwogICAgIEFTU0VSVCh0cnVuY2F0ZWRMZW5ndGggPD0gbGVuZ3Ro
KTsKIAotICAgIG1lbWNweShidWZmZXIsIHN0cmluZy5jaGFyYWN0ZXJzKCksIHNpemVvZihVQ2hh
cikgKiBvbWl0U3RhcnQpOworICAgIG1lbWNweShidWZmZXIsIHN0cmluZy5kZXByZWNhdGVkQ2hh
cmFjdGVycygpLCBzaXplb2YoVUNoYXIpICogb21pdFN0YXJ0KTsKICAgICBpZiAoc2hvdWxkSW5z
ZXJ0RWxsaXBzaXMpIHsKICAgICAgICAgYnVmZmVyW29taXRTdGFydF0gPSBob3Jpem9udGFsRWxs
aXBzaXM7Ci0gICAgICAgIG1lbWNweSgmYnVmZmVyW29taXRTdGFydCArIDFdLCAmc3RyaW5nLmNo
YXJhY3RlcnMoKVtvbWl0RW5kXSwgc2l6ZW9mKFVDaGFyKSAqIChsZW5ndGggLSBvbWl0RW5kKSk7
ICAgIAorICAgICAgICBtZW1jcHkoJmJ1ZmZlcltvbWl0U3RhcnQgKyAxXSwgJnN0cmluZy5kZXBy
ZWNhdGVkQ2hhcmFjdGVycygpW29taXRFbmRdLCBzaXplb2YoVUNoYXIpICogKGxlbmd0aCAtIG9t
aXRFbmQpKTsKICAgICB9IGVsc2UKLSAgICAgICAgbWVtY3B5KCZidWZmZXJbb21pdFN0YXJ0XSwg
JnN0cmluZy5jaGFyYWN0ZXJzKClbb21pdEVuZF0sIHNpemVvZihVQ2hhcikgKiAobGVuZ3RoIC0g
b21pdEVuZCkpOworICAgICAgICBtZW1jcHkoJmJ1ZmZlcltvbWl0U3RhcnRdLCAmc3RyaW5nLmRl
cHJlY2F0ZWRDaGFyYWN0ZXJzKClbb21pdEVuZF0sIHNpemVvZihVQ2hhcikgKiAobGVuZ3RoIC0g
b21pdEVuZCkpOwogICAgIHJldHVybiB0cnVuY2F0ZWRMZW5ndGg7CiB9CiAKQEAgLTExNSwxMSAr
MTE1LDExIEBAIHN0YXRpYyB1bnNpZ25lZCByaWdodFRydW5jYXRlVG9CdWZmZXIoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zCiAgICAgICAgIC0ta2VlcENvdW50Owog
I2VuZGlmCiAKLSAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KHN0cmluZy5j
aGFyYWN0ZXJzKCksIGxlbmd0aCk7CisgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRv
ciBpdChzdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgbGVuZ3RoKTsKICAgICB1bnNpZ25l
ZCBrZWVwTGVuZ3RoID0gdGV4dEJyZWFrQXRPclByZWNlZGluZyhpdCwga2VlcENvdW50KTsKICAg
ICB1bnNpZ25lZCB0cnVuY2F0ZWRMZW5ndGggPSBzaG91bGRJbnNlcnRFbGxpcHNpcyA/IGtlZXBM
ZW5ndGggKyAxIDoga2VlcExlbmd0aDsKIAotICAgIG1lbWNweShidWZmZXIsIHN0cmluZy5jaGFy
YWN0ZXJzKCksIHNpemVvZihVQ2hhcikgKiBrZWVwTGVuZ3RoKTsKKyAgICBtZW1jcHkoYnVmZmVy
LCBzdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgc2l6ZW9mKFVDaGFyKSAqIGtlZXBMZW5n
dGgpOwogICAgIGlmIChzaG91bGRJbnNlcnRFbGxpcHNpcykKICAgICAgICAgYnVmZmVyW2tlZXBM
ZW5ndGhdID0gaG9yaXpvbnRhbEVsbGlwc2lzOwogCkBAIC0xMzEsOSArMTMxLDkgQEAgc3RhdGlj
IHVuc2lnbmVkIHJpZ2h0Q2xpcFRvQ2hhcmFjdGVyQnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCB1bnNpZ25lZCBsZW5ndGgKICAgICBBU1NFUlQoa2VlcENvdW50IDwgbGVuZ3RoKTsKICAgICBB
U1NFUlQoa2VlcENvdW50IDwgU1RSSU5HX0JVRkZFUl9TSVpFKTsKIAotICAgIE5vblNoYXJlZENo
YXJhY3RlckJyZWFrSXRlcmF0b3IgaXQoc3RyaW5nLmNoYXJhY3RlcnMoKSwgbGVuZ3RoKTsKKyAg
ICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KHN0cmluZy5kZXByZWNhdGVkQ2hh
cmFjdGVycygpLCBsZW5ndGgpOwogICAgIHVuc2lnbmVkIGtlZXBMZW5ndGggPSB0ZXh0QnJlYWtB
dE9yUHJlY2VkaW5nKGl0LCBrZWVwQ291bnQpOwotICAgIG1lbWNweShidWZmZXIsIHN0cmluZy5j
aGFyYWN0ZXJzKCksIHNpemVvZihVQ2hhcikgKiBrZWVwTGVuZ3RoKTsKKyAgICBtZW1jcHkoYnVm
ZmVyLCBzdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgc2l6ZW9mKFVDaGFyKSAqIGtlZXBM
ZW5ndGgpOwogCiAgICAgcmV0dXJuIGtlZXBMZW5ndGg7CiB9CkBAIC0xNDMsOSArMTQzLDkgQEAg
c3RhdGljIHVuc2lnbmVkIHJpZ2h0Q2xpcFRvV29yZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmlu
ZywgdW5zaWduZWQgbGVuZ3RoLCB1bnMKICAgICBBU1NFUlQoa2VlcENvdW50IDwgbGVuZ3RoKTsK
ICAgICBBU1NFUlQoa2VlcENvdW50IDwgU1RSSU5HX0JVRkZFUl9TSVpFKTsKIAotICAgIFRleHRC
cmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKHN0cmluZy5jaGFyYWN0ZXJzKCks
IGxlbmd0aCk7CisgICAgVGV4dEJyZWFrSXRlcmF0b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3Io
c3RyaW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIGxlbmd0aCk7CiAgICAgdW5zaWduZWQga2Vl
cExlbmd0aCA9IHRleHRCcmVha0F0T3JQcmVjZWRpbmcoaXQsIGtlZXBDb3VudCk7Ci0gICAgbWVt
Y3B5KGJ1ZmZlciwgc3RyaW5nLmNoYXJhY3RlcnMoKSwgc2l6ZW9mKFVDaGFyKSAqIGtlZXBMZW5n
dGgpOworICAgIG1lbWNweShidWZmZXIsIHN0cmluZy5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBz
aXplb2YoVUNoYXIpICoga2VlcExlbmd0aCk7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBndWFyZCB0aGlzIGNvZGUgYmVoaW5kIGFuIGVkaXRpbmcgYmVoYXZp
b3IuIFRoZW4gd2UgY2FuIHJlbW92ZSB0aGUgUExBVEZPUk0oSU9TKS1ndWFyZC4KQEAgLTE2Myw3
ICsxNjMsNyBAQCBzdGF0aWMgdW5zaWduZWQgbGVmdFRydW5jYXRlVG9CdWZmZXIoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaQogCiAgICAgdW5zaWduZWQgc3RhcnRJ
bmRleCA9IGxlbmd0aCAtIGtlZXBDb3VudDsKIAotICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3IgaXQoc3RyaW5nLmNoYXJhY3RlcnMoKSwgbGVuZ3RoKTsKKyAgICBOb25TaGFyZWRD
aGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KHN0cmluZy5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBs
ZW5ndGgpOwogICAgIHVuc2lnbmVkIGFkanVzdGVkU3RhcnRJbmRleCA9IHN0YXJ0SW5kZXg7CiAg
ICAgc3RhcnRJbmRleCA9IGJvdW5kZWRUZXh0QnJlYWtGb2xsb3dpbmcoaXQsIHN0YXJ0SW5kZXgs
IGxlbmd0aCAtIHN0YXJ0SW5kZXgpOwogCkBAIC0xNzgsMTAgKzE3OCwxMCBAQCBzdGF0aWMgdW5z
aWduZWQgbGVmdFRydW5jYXRlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVk
IGxlbmd0aCwgdW5zaQogCiAgICAgaWYgKHNob3VsZEluc2VydEVsbGlwc2lzKSB7CiAgICAgICAg
IGJ1ZmZlclswXSA9IGhvcml6b250YWxFbGxpcHNpczsKLSAgICAgICAgbWVtY3B5KCZidWZmZXJb
MV0sICZzdHJpbmcuY2hhcmFjdGVycygpW2FkanVzdGVkU3RhcnRJbmRleF0sIHNpemVvZihVQ2hh
cikgKiAobGVuZ3RoIC0gYWRqdXN0ZWRTdGFydEluZGV4ICsgMSkpOworICAgICAgICBtZW1jcHko
JmJ1ZmZlclsxXSwgJnN0cmluZy5kZXByZWNhdGVkQ2hhcmFjdGVycygpW2FkanVzdGVkU3RhcnRJ
bmRleF0sIHNpemVvZihVQ2hhcikgKiAobGVuZ3RoIC0gYWRqdXN0ZWRTdGFydEluZGV4ICsgMSkp
OwogICAgICAgICByZXR1cm4gbGVuZ3RoIC0gYWRqdXN0ZWRTdGFydEluZGV4ICsgMTsKICAgICB9
Ci0gICAgbWVtY3B5KCZidWZmZXJbMF0sICZzdHJpbmcuY2hhcmFjdGVycygpW2FkanVzdGVkU3Rh
cnRJbmRleF0sIHNpemVvZihVQ2hhcikgKiAobGVuZ3RoIC0gYWRqdXN0ZWRTdGFydEluZGV4ICsg
MSkpOworICAgIG1lbWNweSgmYnVmZmVyWzBdLCAmc3RyaW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJz
KClbYWRqdXN0ZWRTdGFydEluZGV4XSwgc2l6ZW9mKFVDaGFyKSAqIChsZW5ndGggLSBhZGp1c3Rl
ZFN0YXJ0SW5kZXggKyAxKSk7CiAgICAgcmV0dXJuIGxlbmd0aCAtIGFkanVzdGVkU3RhcnRJbmRl
eDsKIH0KIApAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyBTdHJpbmcgdHJ1bmNhdGVTdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIGZsb2F0IG1heFdpZHRoLCBjb25zdCBGb250JiBmCiAgICAg
ICAgIHRydW5jYXRlZExlbmd0aCA9IGNlbnRlclRydW5jYXRlVG9CdWZmZXIoc3RyaW5nLCBsZW5n
dGgsIGtlZXBDb3VudCwgc3RyaW5nQnVmZmVyLCBzaG91bGRJbnNlcnRFbGxpcHNpcyk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAga2VlcENvdW50ID0gbGVuZ3RoOwotICAgICAgICBtZW1jcHkoc3Ry
aW5nQnVmZmVyLCBzdHJpbmcuY2hhcmFjdGVycygpLCBzaXplb2YoVUNoYXIpICogbGVuZ3RoKTsK
KyAgICAgICAgbWVtY3B5KHN0cmluZ0J1ZmZlciwgc3RyaW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJz
KCksIHNpemVvZihVQ2hhcikgKiBsZW5ndGgpOwogICAgICAgICB0cnVuY2F0ZWRMZW5ndGggPSBs
ZW5ndGg7CiAgICAgfQogCkBAIC0zMDEsNyArMzAxLDcgQEAgU3RyaW5nIFN0cmluZ1RydW5jYXRv
cjo6cmlnaHRUcnVuY2F0ZShjb25zdCBTdHJpbmcmIHN0cmluZywgZmxvYXQgbWF4V2lkdGgsIGNv
bnMKIAogZmxvYXQgU3RyaW5nVHJ1bmNhdG9yOjp3aWR0aChjb25zdCBTdHJpbmcmIHN0cmluZywg
Y29uc3QgRm9udCYgZm9udCwgRW5hYmxlUm91bmRpbmdIYWNrc09yTm90IGVuYWJsZVJvdW5kaW5n
SGFja3MpCiB7Ci0gICAgcmV0dXJuIHN0cmluZ1dpZHRoKGZvbnQsIHN0cmluZy5jaGFyYWN0ZXJz
KCksIHN0cmluZy5sZW5ndGgoKSwgIWVuYWJsZVJvdW5kaW5nSGFja3MpOworICAgIHJldHVybiBz
dHJpbmdXaWR0aChmb250LCBzdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgc3RyaW5nLmxl
bmd0aCgpLCAhZW5hYmxlUm91bmRpbmdIYWNrcyk7CiB9CiAKIFN0cmluZyBTdHJpbmdUcnVuY2F0
b3I6OmNlbnRlclRydW5jYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBmbG9hdCBtYXhXaWR0aCwg
Y29uc3QgRm9udCYgZm9udCwgRW5hYmxlUm91bmRpbmdIYWNrc09yTm90IGVuYWJsZVJvdW5kaW5n
SGFja3MsIGZsb2F0JiByZXN1bHRXaWR0aCwgYm9vbCBzaG91bGRJbnNlcnRFbGxpcHNpcywgZmxv
YXQgY3VzdG9tVHJ1bmNhdGlvbkVsZW1lbnRXaWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RleHRSdW4uaAppbmRleCA0ZjRlOWU1OTA0Mzk5NDBlOTllZDJiNmZjZTMyZWMy
ZDlkNjJjZGU4Li5iYjE3MmY1ZTdmMjAyNWRjOGRkZjdiMTQzMGUzMDVhNGUyM2RkYjY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCkBAIC0xMzIsNyArMTMy
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9pczhCaXQgPSBmYWxzZTsKICAgICAgICAgfQog
I2Vsc2UKLSAgICAgICAgbV9kYXRhLmNoYXJhY3RlcnMxNiA9IHMuY2hhcmFjdGVycygpOworICAg
ICAgICBtX2RhdGEuY2hhcmFjdGVyczE2ID0gcy5kZXByZWNhdGVkQ2hhcmFjdGVycygpOwogICAg
ICAgICBtX2lzOEJpdCA9IGZhbHNlOwogI2VuZGlmCiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KaW5kZXggNjk4MDA5ZWIxNTI3NTUzNGIyNGJlYzBiNzQ4ZTE4NWIzMmQ2OTFjYy4uZGZjOGI2
YzQ0NTY4ZDk0ZmU0Nzk2YzIxMzMxNDBkOWU2YmI3YmI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCkBAIC0xMDE1LDcgKzEwMTUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogICAgICAg
ICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4oMCwga2V5VVJJU2l6ZSwgdHJ1ZSk7CiAKICAg
ICAgICAgUmVmUHRyPFVpbnQxNkFycmF5PiBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVh
dGUoaW5pdERhdGFCdWZmZXIsIDQsIGtleVVSSS5sZW5ndGgoKSk7Ci0gICAgICAgIGtleVVSSUFy
cmF5LT5zZXRSYW5nZShrZXlVUkkuY2hhcmFjdGVycygpLCBrZXlVUkkubGVuZ3RoKCkgLyBzaXpl
b2YodW5zaWduZWQgY2hhciksIDApOworICAgICAgICBrZXlVUklBcnJheS0+c2V0UmFuZ2Uoa2V5
VVJJLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNp
Z25lZCBjaGFyKSwgMCk7CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogICAgICAgICBp
ZiAoIXBsYXllcigpLT5rZXlOZWVkZWQoImNvbS5hcHBsZS5sc2tkIiwgZW1wdHlTdHJpbmcoKSwg
c3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGluaXREYXRhQnVmZmVyLT5kYXRhKCkp
LCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAppbmRleCBlMjY3YTYwMWMwZDkx
YmYxZjRkMzNiYzEyNmVlZTZkYTk1NDljYzM5Li5hNzY5MTZlYmRmNTEwZTc4Mjc2OThiMTk2OGVh
MzViMGJhODZlOTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBGb3JtRGF0YUJ1
aWxkZXI6OmFkZEZpbGVuYW1lVG9NdWx0aVBhcnRIZWFkZXIoVmVjdG9yPGNoYXI+JiBidWZmZXIs
IGNvbnN0IFQKICAgICAvLyBGSVhNRTogVGhpcyBsb3NlcyBkYXRhIGlycmV2ZXJzaWJseSBpZiB0
aGUgZmlsZW5hbWUgaW5jbHVkZXMgY2hhcmFjdGVycyB5b3UgY2FuJ3QgZW5jb2RlCiAgICAgLy8g
aW4gdGhlIHdlYnNpdGUncyBjaGFyYWN0ZXIgc2V0LgogICAgIGFwcGVuZChidWZmZXIsICI7IGZp
bGVuYW1lPVwiIik7Ci0gICAgYXBwZW5kUXVvdGVkU3RyaW5nKGJ1ZmZlciwgZW5jb2RpbmcuZW5j
b2RlKGZpbGVuYW1lLmNoYXJhY3RlcnMoKSwgZmlsZW5hbWUubGVuZ3RoKCksIFF1ZXN0aW9uTWFy
a3NGb3JVbmVuY29kYWJsZXMpKTsKKyAgICBhcHBlbmRRdW90ZWRTdHJpbmcoYnVmZmVyLCBlbmNv
ZGluZy5lbmNvZGUoZmlsZW5hbWUuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgZmlsZW5hbWUubGVu
Z3RoKCksIFF1ZXN0aW9uTWFya3NGb3JVbmVuY29kYWJsZXMpKTsKICAgICBhcHBlbmQoYnVmZmVy
LCAnIicpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0
ZW1lbnQuY3BwCmluZGV4IDEyMDNlODRlZThhYTRhYjZmNWMxZjhhM2MyZGEyNDQyMDE4OGQzZjMu
LjM0ODZiMmJlMDcxMTlmMTFkNWQyMThjYjliNzNhNjhkMTc3M2FlYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC0xODIsNyArMTgy
LDcgQEAgaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZEJsb2IoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHRleHQpCiAgICAgaWYgKHRleHQuaXNFbXB0eSgpICYmICF0ZXh0LmlzTnVsbCgpKQogICAg
ICAgICBjaGFyYWN0ZXJzID0gJmFueUNoYXJhY3RlcjsKICAgICBlbHNlCi0gICAgICAgIGNoYXJh
Y3RlcnMgPSB0ZXh0LmNoYXJhY3RlcnMoKTsKKyAgICAgICAgY2hhcmFjdGVycyA9IHRleHQuZGVw
cmVjYXRlZENoYXJhY3RlcnMoKTsKIAogICAgIHJldHVybiBiaW5kQmxvYihpbmRleCwgY2hhcmFj
dGVycywgdGV4dC5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpOwogfQpAQCAtMjAwLDcgKzIwMCw3
IEBAIGludCBTUUxpdGVTdGF0ZW1lbnQ6OmJpbmRUZXh0KGludCBpbmRleCwgY29uc3QgU3RyaW5n
JiB0ZXh0KQogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSAmJiAhdGV4dC5pc051bGwoKSkKICAgICAg
ICAgY2hhcmFjdGVycyA9ICZhbnlDaGFyYWN0ZXI7CiAgICAgZWxzZQotICAgICAgICBjaGFyYWN0
ZXJzID0gdGV4dC5jaGFyYWN0ZXJzKCk7CisgICAgICAgIGNoYXJhY3RlcnMgPSB0ZXh0LmRlcHJl
Y2F0ZWRDaGFyYWN0ZXJzKCk7CiAKICAgICByZXR1cm4gc3FsaXRlM19iaW5kX3RleHQxNihtX3N0
YXRlbWVudCwgaW5kZXgsIGNoYXJhY3RlcnMsIHNpemVvZihVQ2hhcikgKiB0ZXh0Lmxlbmd0aCgp
LCBTUUxJVEVfVFJBTlNJRU5UKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0RlY29kZUVzY2FwZVNlcXVlbmNlcy5oCmluZGV4IGIwMjY3N2EzZjdmOGNlMzUxMmJl
MTRjNWU3OTQ1Nzg4OTYyNWM4ZTEuLjJmYTZlNDY1ODkxOGM2NDExYjFjMTE2NTdjNmQ3MGRhYTY5
ZjAyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvRGVjb2RlRXNj
YXBlU2VxdWVuY2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9EZWNvZGVF
c2NhcGVTZXF1ZW5jZXMuaApAQCAtMTM0LDcgKzEzNCw3IEBAIFN0cmluZyBkZWNvZGVFc2NhcGVT
ZXF1ZW5jZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2Rp
bmcpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyBk
ZWNvZGVkID0gRXNjYXBlU2VxdWVuY2U6OmRlY29kZVJ1bihzdHJpbmcuY2hhcmFjdGVycygpICsg
ZW5jb2RlZFJ1blBvc2l0aW9uLCBlbmNvZGVkUnVuRW5kIC0gZW5jb2RlZFJ1blBvc2l0aW9uLCBl
bmNvZGluZyk7CisgICAgICAgIFN0cmluZyBkZWNvZGVkID0gRXNjYXBlU2VxdWVuY2U6OmRlY29k
ZVJ1bihzdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSArIGVuY29kZWRSdW5Qb3NpdGlvbiwg
ZW5jb2RlZFJ1bkVuZCAtIGVuY29kZWRSdW5Qb3NpdGlvbiwgZW5jb2RpbmcpOwogICAgICAgICBp
ZiAoZGVjb2RlZC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcAppbmRleCBh
ZjI2ZGJkNzBkMDJhODI2NmY5ZjlhMjRmZTQ1YmRlODYwYjZhODMzLi4wMTlkYjY5NGJkNjU0YTgw
M2QyZWU1NjA3YTk2ZTMxYTcxN2Q2NzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcApAQCAtMzUsNyArMzUsNyBAQCB1bnNpZ25l
ZCBudW1HcmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZyYgcykKICAgICBpZiAocy5pczhCaXQo
KSAmJiAhcy5jb250YWlucygnXHInKSkKICAgICAgICAgcmV0dXJuIHN0cmluZ0xlbmd0aDsKIAot
ICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQocy5jaGFyYWN0ZXJzKCksIHN0
cmluZ0xlbmd0aCk7CisgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdChzLmRl
cHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHN0cmluZ0xlbmd0aCk7CiAgICAgaWYgKCFpdCkKICAgICAg
ICAgcmV0dXJuIHN0cmluZ0xlbmd0aDsKIApAQCAtNTYsNyArNTYsNyBAQCB1bnNpZ25lZCBudW1D
aGFyYWN0ZXJzSW5HcmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgbnVt
R3JhcGhlbWVDbAogICAgIGlmIChzLmlzOEJpdCgpICYmICFzLmNvbnRhaW5zKCdccicpKQogICAg
ICAgICByZXR1cm4gc3RkOjptaW4oc3RyaW5nTGVuZ3RoLCBudW1HcmFwaGVtZUNsdXN0ZXJzKTsK
IAotICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQocy5jaGFyYWN0ZXJzKCks
IHN0cmluZ0xlbmd0aCk7CisgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdChz
LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHN0cmluZ0xlbmd0aCk7CiAgICAgaWYgKCFpdCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bWluKHN0cmluZ0xlbmd0aCwgbnVtR3JhcGhlbWVDbHVzdGVycyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRl
cmF0b3JJQ1UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVy
YXRvcklDVS5jcHAKaW5kZXggNzg5M2VmMTczYjJkYzE0MGI0ODJmYmNlM2RmODA5YTAxNDMyZGRh
OC4uMWIyODRiMzkxODAwNWVkN2YyNWM1YTAxN2EwMTU0M2Y2OWE4ODBmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvcklDVS5jcHAK
QEAgLTIxOSw3ICsyMTksNyBAQCBzdGF0aWMgVGV4dEJyZWFrSXRlcmF0b3IqIHNldFVwSXRlcmF0
b3JXaXRoUnVsZXMoYm9vbCYgY3JlYXRlZEl0ZXJhdG9yLCBUZXh0QnJlYQogICAgICAgICBVUGFy
c2VFcnJvciBwYXJzZVN0YXR1czsKICAgICAgICAgVUVycm9yQ29kZSBvcGVuU3RhdHVzID0gVV9a
RVJPX0VSUk9SOwogICAgICAgICBTdHJpbmcgcnVsZXMoYnJlYWtSdWxlcyk7Ci0gICAgICAgIGl0
ZXJhdG9yID0gcmVpbnRlcnByZXRfY2FzdDxUZXh0QnJlYWtJdGVyYXRvcio+KHVicmtfb3BlblJ1
bGVzKHJ1bGVzLmNoYXJhY3RlcnMoKSwgcnVsZXMubGVuZ3RoKCksIDAsIDAsICZwYXJzZVN0YXR1
cywgJm9wZW5TdGF0dXMpKTsKKyAgICAgICAgaXRlcmF0b3IgPSByZWludGVycHJldF9jYXN0PFRl
eHRCcmVha0l0ZXJhdG9yKj4odWJya19vcGVuUnVsZXMocnVsZXMuZGVwcmVjYXRlZENoYXJhY3Rl
cnMoKSwgcnVsZXMubGVuZ3RoKCksIDAsIDAsICZwYXJzZVN0YXR1cywgJm9wZW5TdGF0dXMpKTsK
ICAgICAgICAgY3JlYXRlZEl0ZXJhdG9yID0gdHJ1ZTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShVX1NVQ0NFU1Mob3BlblN0YXR1cyksICJJQ1UgY291bGQgbm90IG9wZW4gYSBicmVhayBp
dGVyYXRvcjogJXMgKCVkKSIsIHVfZXJyb3JOYW1lKG9wZW5TdGF0dXMpLCBvcGVuU3RhdHVzKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2Rl
Y0lDVS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0lDVS5jcHAK
aW5kZXggY2M2ZWFhMjFmMDRhYWQ4YTQ5NjU2MGE2NTg1NjYyNzZhNGU5ZWI1My4uYzk1NGJmMjYz
NTgwZTBjMDg0Y2RlMTc4MzFhNDQxYWFjOGIxZjdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNJQ1UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcApAQCAtNDk4LDcgKzQ5OCw3IEBAIENTdHJpbmcg
VGV4dENvZGVjSUNVOjplbmNvZGUoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5n
dGgsIFVuZW5jb2RhYmxlCiAgICAgaWYgKHNob3VsZFNob3dCYWNrc2xhc2hBc0N1cnJlbmN5U3lt
Ym9sSW4obV9lbmNvZGluZ05hbWUpKSB7CiAgICAgICAgIGNvcHkuYXBwZW5kKGNoYXJhY3RlcnMs
IGxlbmd0aCk7CiAgICAgICAgIGNvcHkucmVwbGFjZSgnXFwnLCAweEE1KTsKLSAgICAgICAgc291
cmNlID0gY29weS5jaGFyYWN0ZXJzKCk7CisgICAgICAgIHNvdXJjZSA9IGNvcHkuZGVwcmVjYXRl
ZENoYXJhY3RlcnMoKTsKICAgICAgICAgc291cmNlTGltaXQgPSBzb3VyY2UgKyBjb3B5Lmxlbmd0
aCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNvdXJjZSA9IGNoYXJhY3RlcnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA5NDU2ZDRkMmM5MjVhNjM3MWE4
NDEyYzkwZjdlMDRiNjg0ZTRiMTA0Li4wODViMTYyZDc1NDU3MWYxYTk3ZjA1ZGYwNzNlYzMzMDc2
YTljN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTU0
NjAsNyArNTQ2MCw3IEBAIFRleHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oUmVu
ZGVyT2JqZWN0KiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjCiAgICAgICAgIHJldHVybiBj
b25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgdGV4dC0+Y2hhcmFjdGVyczgo
KSwgdGV4dC0+dGV4dExlbmd0aCgpLCBzdHlsZSwgZXhwYW5zaW9uKTsKICAgICByZXR1cm4gY29u
c3RydWN0VGV4dFJ1bkludGVybmFsKGNvbnRleHQsIGZvbnQsIHRleHQtPmNoYXJhY3RlcnMxNigp
LCB0ZXh0LT50ZXh0TGVuZ3RoKCksIHN0eWxlLCBleHBhbnNpb24pOwogI2Vsc2UKLSAgICByZXR1
cm4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKGNvbnRleHQsIGZvbnQsIHRleHQtPmNoYXJhY3Rl
cnMoKSwgdGV4dC0+dGV4dExlbmd0aCgpLCBzdHlsZSwgZXhwYW5zaW9uKTsKKyAgICByZXR1cm4g
Y29uc3RydWN0VGV4dFJ1bkludGVybmFsKGNvbnRleHQsIGZvbnQsIHRleHQtPmRlcHJlY2F0ZWRD
aGFyYWN0ZXJzKCksIHRleHQtPnRleHRMZW5ndGgoKSwgc3R5bGUsIGV4cGFuc2lvbik7CiAjZW5k
aWYKIH0KIApAQCAtNTQ3Miw3ICs1NDcyLDcgQEAgVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3Ry
dWN0VGV4dFJ1bihSZW5kZXJPYmplY3QqIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGMKICAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdFRleHRSdW5JbnRlcm5hbChjb250ZXh0LCBmb250LCB0ZXh0
LT5jaGFyYWN0ZXJzOCgpICsgb2Zmc2V0LCBsZW5ndGgsIHN0eWxlLCBleHBhbnNpb24pOwogICAg
IHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgdGV4dC0+Y2hh
cmFjdGVyczE2KCkgKyBvZmZzZXQsIGxlbmd0aCwgc3R5bGUsIGV4cGFuc2lvbik7CiAjZWxzZQot
ICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgdGV4dC0+
Y2hhcmFjdGVycygpICsgb2Zmc2V0LCBsZW5ndGgsIHN0eWxlLCBleHBhbnNpb24pOworICAgIHJl
dHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgdGV4dC0+ZGVwcmVj
YXRlZENoYXJhY3RlcnMoKSArIG9mZnNldCwgbGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uKTsKICNl
bmRpZgogfQogCkBAIC01NDg0LDcgKzU0ODQsNyBAQCBUZXh0UnVuIFJlbmRlckJsb2NrOjpjb25z
dHJ1Y3RUZXh0UnVuKFJlbmRlck9iamVjdCogY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgYwog
ICAgICAgICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKGNvbnRleHQsIGZvbnQsIHN0
cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgsIHN0eWxlLCBleHBhbnNpb24sIGZsYWdzKTsKICAg
ICByZXR1cm4gY29uc3RydWN0VGV4dFJ1bkludGVybmFsKGNvbnRleHQsIGZvbnQsIHN0cmluZy5j
aGFyYWN0ZXJzMTYoKSwgbGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uLCBmbGFncyk7CiAjZWxzZQot
ICAgIHJldHVybiBjb25zdHJ1Y3RUZXh0UnVuSW50ZXJuYWwoY29udGV4dCwgZm9udCwgc3RyaW5n
LmNoYXJhY3RlcnMoKSwgbGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uLCBmbGFncyk7CisgICAgcmV0
dXJuIGNvbnN0cnVjdFRleHRSdW5JbnRlcm5hbChjb250ZXh0LCBmb250LCBzdHJpbmcuZGVwcmVj
YXRlZENoYXJhY3RlcnMoKSwgbGVuZ3RoLCBzdHlsZSwgZXhwYW5zaW9uLCBmbGFncyk7CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RN
YXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3Bw
CmluZGV4IDY1ZWU1M2UyYWU2OGJjMDNhY2JlNjIxOTJlMTQyYTUyZjczNDVlZmYuLmYyODRlNDM5
MmQ4NmU0OGM4OTZkZjAxMDZlOWFhZmE5ZTEwNjhiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAgLTEzNTEsNyArMTM1MSw3IEBAIHZvaWQg
UmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNlCiAgICAgICAgICAgICByZXZlcnNlZFRleHQucmVzZXJ2ZUNhcGFj
aXR5KGxlbmd0aCk7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gbGVuZ3RoIC0gMTsgaSA+PSAw
OyAtLWkpCiAgICAgICAgICAgICAgICAgcmV2ZXJzZWRUZXh0LmFwcGVuZChtX3RleHRbaV0pOwot
ICAgICAgICAgICAgdGV4dFJ1bi5zZXRUZXh0KHJldmVyc2VkVGV4dC5jaGFyYWN0ZXJzKCksIGxl
bmd0aCk7CisgICAgICAgICAgICB0ZXh0UnVuLnNldFRleHQocmV2ZXJzZWRUZXh0LmRlcHJlY2F0
ZWRDaGFyYWN0ZXJzKCksIGxlbmd0aCk7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBVQ2hh
ciBzdWZmaXggPSBsaXN0TWFya2VyU3VmZml4KHR5cGUsIG1fbGlzdEl0ZW0udmFsdWUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggNjBkNzMxMGIyNmZiZDRj
NzM1ZTY0YWNmZDA4MDIxYmNmMDM2ZmM3Zi4uMzg5OWMwZDQ5NmM3MzFhZWY2YTZkNTM3ZGE1ZmRk
OTkyMzhmNmRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAt
NjQ4LDcgKzY0OCw3IEBAIHN0YXRpYyBmbG9hdCBtYXhXb3JkRnJhZ21lbnRXaWR0aChSZW5kZXJU
ZXh0KiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlCiAgICAgICAgIGZyYWdtZW50
V2l0aEh5cGhlbi5hcHBlbmQod29yZCArIHN1ZmZpeFN0YXJ0LCBmcmFnbWVudExlbmd0aCk7CiAg
ICAgICAgIGZyYWdtZW50V2l0aEh5cGhlbi5hcHBlbmQoc3R5bGUuaHlwaGVuU3RyaW5nKCkpOwog
Ci0gICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4ocmVu
ZGVyZXIsIGZvbnQsIGZyYWdtZW50V2l0aEh5cGhlbi5jaGFyYWN0ZXJzKCksIGZyYWdtZW50V2l0
aEh5cGhlbi5sZW5ndGgoKSwgc3R5bGUpOworICAgICAgICBUZXh0UnVuIHJ1biA9IFJlbmRlckJs
b2NrOjpjb25zdHJ1Y3RUZXh0UnVuKHJlbmRlcmVyLCBmb250LCBmcmFnbWVudFdpdGhIeXBoZW4u
ZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgZnJhZ21lbnRXaXRoSHlwaGVuLmxlbmd0aCgpLCBzdHls
ZSk7CiAgICAgICAgIHJ1bi5zZXRDaGFyYWN0ZXJzTGVuZ3RoKGZyYWdtZW50V2l0aEh5cGhlbi5s
ZW5ndGgoKSk7CiAgICAgICAgIHJ1bi5zZXRDaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgoIXJlbmRl
cmVyLT5jYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSk7CiAgICAgICAgIGZsb2F0IGZyYWdtZW50
V2lkdGggPSBmb250LndpZHRoKHJ1biwgJmZhbGxiYWNrRm9udHMsICZnbHlwaE92ZXJmbG93KTsK
QEAgLTc5Nyw3ICs3OTcsNyBAQCB2b2lkIFJlbmRlclRleHQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFzaFNldDxjb25zdCBTaQogCiAgICAgICAgICAg
ICBpZiAodyA+IG1heFdvcmRXaWR0aCkgewogICAgICAgICAgICAgICAgIGludCBzdWZmaXhTdGFy
dDsKLSAgICAgICAgICAgICAgICBmbG9hdCBtYXhGcmFnbWVudFdpZHRoID0gbWF4V29yZEZyYWdt
ZW50V2lkdGgodGhpcywgc3R5bGUsIGZvbnQsIGNoYXJhY3RlcnMoKSArIGksIHdvcmRMZW4sIG1p
bmltdW1QcmVmaXhMZW5ndGgsIG1pbmltdW1TdWZmaXhMZW5ndGgsIHN1ZmZpeFN0YXJ0LCBmYWxs
YmFja0ZvbnRzLCBnbHlwaE92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICBmbG9hdCBtYXhGcmFn
bWVudFdpZHRoID0gbWF4V29yZEZyYWdtZW50V2lkdGgodGhpcywgc3R5bGUsIGZvbnQsIGRlcHJl
Y2F0ZWRDaGFyYWN0ZXJzKCkgKyBpLCB3b3JkTGVuLCBtaW5pbXVtUHJlZml4TGVuZ3RoLCBtaW5p
bXVtU3VmZml4TGVuZ3RoLCBzdWZmaXhTdGFydCwgZmFsbGJhY2tGb250cywgZ2x5cGhPdmVyZmxv
dyk7CiAKICAgICAgICAgICAgICAgICBpZiAoc3VmZml4U3RhcnQpIHsKICAgICAgICAgICAgICAg
ICAgICAgZmxvYXQgc3VmZml4V2lkdGg7CkBAIC0xNTA4LDcgKzE1MDgsNyBAQCBib29sIFJlbmRl
clRleHQ6OmNvbXB1dGVDYW5Vc2VTaW1wbGVGb250Q29kZVBhdGgoKSBjb25zdAogewogICAgIGlm
IChpc0FsbEFTQ0lJKCkgfHwgbV90ZXh0LmlzOEJpdCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICByZXR1cm4gRm9udDo6Y2hhcmFjdGVyUmFuZ2VDb2RlUGF0aChjaGFyYWN0ZXJzKCksIGxl
bmd0aCgpKSA9PSBGb250OjpTaW1wbGU7CisgICAgcmV0dXJuIEZvbnQ6OmNoYXJhY3RlclJhbmdl
Q29kZVBhdGgoY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpKSA9PSBGb250OjpTaW1wbGU7CiB9CiAK
IHZvaWQgUmVuZGVyVGV4dDo6bW9tZW50YXJpbHlSZXZlYWxMYXN0VHlwZWRDaGFyYWN0ZXIodW5z
aWduZWQgbGFzdFR5cGVkQ2hhcmFjdGVyT2Zmc2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmgKaW5kZXggOWM2ZDNhZWEwYjgxYmM4YmE2MDA1NGViM2M3N2NiNDE0NTJmOTdkOS4u
NDE3MzAwMzk5ZTlmNjdlNzE5ZTA3YTg5M2MzMWQ0NGQ1Y2JiZDZmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC03Nyw3ICs3Nyw4IEBAIHB1YmxpYzoKICAgICBib29s
IGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dC5pczhCaXQoKTsgfQogICAgIGNvbnN0IExD
aGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dC5pbXBsKCktPmNoYXJhY3Rl
cnM4KCk7IH0KICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVyczE2KCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0LmltcGwoKS0+Y2hhcmFjdGVyczE2KCk7IH0KLSAgICBjb25zdCBVQ2hhciogY2hhcmFj
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dC5jaGFyYWN0ZXJzKCk7IH0KKyAgICBjb25zdCBV
Q2hhciogY2hhcmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIGRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7
IH0gLy8gRklYTUU6IERlbGV0ZSB0aGlzLgorICAgIGNvbnN0IFVDaGFyKiBkZXByZWNhdGVkQ2hh
cmFjdGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dC5kZXByZWNhdGVkQ2hhcmFjdGVycygpOyB9
CiAgICAgVUNoYXIgY2hhcmFjdGVyQXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gaXM4Qml0
KCkgPyBjaGFyYWN0ZXJzOCgpW2ldIDogY2hhcmFjdGVyczE2KClbaV07IH0KICAgICBVQ2hhciBv
cGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlckF0KGkpOyB9CiAg
ICAgdW5zaWduZWQgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dC5pbXBsKCktPmxl
bmd0aCgpOyB9IC8vIG5vbiB2aXJ0dWFsIGltcGxlbWVudGF0aW9uIG9mIGxlbmd0aCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRleHRJbmxp
bmVIZWFkZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9CcmVha2luZ0NvbnRl
eHRJbmxpbmVIZWFkZXJzLmgKaW5kZXggZjc2ZGI1MjFiZjk2YTMwZDNmNTU4MzhmZDAwYjE5ZDI5
MzE5OThlNC4uOTc4Mzg0Mjc2YWNkMzBmYWNhNTAwZjg5NTdjZWViYzFjNWViNWVhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvQnJlYWtpbmdDb250ZXh0SW5saW5l
SGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0JyZWFraW5nQ29u
dGV4dElubGluZUhlYWRlcnMuaApAQCAtNjA5LDcgKzYwOSw3IEBAIGlubGluZSB2b2lkIHRyeUh5
cGhlbmF0aW5nKFJlbmRlclRleHQqIHRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEF0b21p
Y1N0cmluCiAgICAgaWYgKHByZWZpeExlbmd0aCA8IG1pbmltdW1QcmVmaXhMZW5ndGgpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHByZWZpeExlbmd0aCA9IGxhc3RIeXBoZW5Mb2NhdGlvbih0ZXh0
LT5jaGFyYWN0ZXJzKCkgKyBsYXN0U3BhY2UsIHBvcyAtIGxhc3RTcGFjZSwgc3RkOjptaW4ocHJl
Zml4TGVuZ3RoLCBwb3MgLSBsYXN0U3BhY2UgLSBtaW5pbXVtU3VmZml4TGVuZ3RoKSArIDEsIGxv
Y2FsZUlkZW50aWZpZXIpOworICAgIHByZWZpeExlbmd0aCA9IGxhc3RIeXBoZW5Mb2NhdGlvbih0
ZXh0LT5kZXByZWNhdGVkQ2hhcmFjdGVycygpICsgbGFzdFNwYWNlLCBwb3MgLSBsYXN0U3BhY2Us
IHN0ZDo6bWluKHByZWZpeExlbmd0aCwgcG9zIC0gbGFzdFNwYWNlIC0gbWluaW11bVN1ZmZpeExl
bmd0aCkgKyAxLCBsb2NhbGVJZGVudGlmaWVyKTsKICAgICBpZiAoIXByZWZpeExlbmd0aCB8fCBw
cmVmaXhMZW5ndGggPCBtaW5pbXVtUHJlZml4TGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCmlu
ZGV4IDA5NTdkYWE5NDE1MmE0NDYxYjJkNTMzMzlmYmVjMDU4ZDVjMWVmYWMuLmZiN2YyNjk4YWE5
MzAzMmFmZmFhZGYxM2FkYWViZjc5YjgyN2JiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIFRl
eHRSdW4gU1ZHSW5saW5lVGV4dEJveDo6Y29uc3RydWN0VGV4dFJ1bihSZW5kZXJTdHlsZSogc3R5
bGUsIGNvbnN0IFNWR1RleHRGcmFnCiB7CiAgICAgQVNTRVJUKHN0eWxlKTsKIAotICAgIFRleHRS
dW4gcnVuKHJlbmRlcmVyKCkuY2hhcmFjdGVycygpICsgZnJhZ21lbnQuY2hhcmFjdGVyT2Zmc2V0
CisgICAgVGV4dFJ1biBydW4ocmVuZGVyZXIoKS5kZXByZWNhdGVkQ2hhcmFjdGVycygpICsgZnJh
Z21lbnQuY2hhcmFjdGVyT2Zmc2V0CiAgICAgICAgICAgICAgICAgLCBmcmFnbWVudC5sZW5ndGgK
ICAgICAgICAgICAgICAgICAsIDAgLyogeFBvcywgb25seSByZWxldmFudCB3aXRoIGFsbG93VGFi
cz10cnVlICovCiAgICAgICAgICAgICAgICAgLCAwIC8qIHBhZGRpbmcsIG9ubHkgcmVsZXZhbnQg
Zm9yIGp1c3RpZmllZCB0ZXh0LCBub3QgcmVsZXZhbnQgZm9yIFNWRyAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0QXR0cmli
dXRlc0J1aWxkZXIuY3BwCmluZGV4IDU1OTViYjVhN2FiNGI5MmViMjEzMDAwYWVjN2QxNGZlZWY3
YTkxNjIuLjFkYmIwMWZkOWQ0ODQzYWFkYWYwYzIwMjhkMjRkYThkOWMzM2FmZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEF0dHJpYnV0ZXNC
dWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlv
dXRBdHRyaWJ1dGVzQnVpbGRlci5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIHByb2Nlc3NSZW5kZXJTVkdJbmxpbmVUZXh0KFJlbmRlclNWR0lubGluZVRleHQqIHRleHQs
IHVuc2lnbmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzID0gdGV4dC0+Y2hhcmFjdGVycygpOworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
ID0gdGV4dC0+ZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsKICAgICB1bnNpZ25lZCB0ZXh0TGVuZ3Ro
ID0gdGV4dC0+dGV4dExlbmd0aCgpOyAgICAKICAgICBmb3IgKHVuc2lnbmVkIHRleHRQb3NpdGlv
biA9IDA7IHRleHRQb3NpdGlvbiA8IHRleHRMZW5ndGg7ICsrdGV4dFBvc2l0aW9uKSB7CiAgICAg
ICAgIGNvbnN0IFVDaGFyKiBjdXJyZW50Q2hhcmFjdGVyID0gY2hhcmFjdGVycyArIHRleHRQb3Np
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExh
eW91dEVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlv
dXRFbmdpbmUuY3BwCmluZGV4IDIwOTQ2MWZlOTMzODBmZTAzMzYwZDNmYjg1ZjZjMDI1YmNjYjIx
NDguLmFlYzI1ZTE0NjE3OGMwZDhjNDc0YTk0N2ViNTIyY2VhYzhiMDRjNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lLmNwcApA
QCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgU1ZHVGV4dExheW91dEVuZ2luZTo6bGF5b3V0VGV4dE9u
TGluZU9yUGF0aChTVkdJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LCBSZW5kCiAgICAgVmVjdG9yPFNW
R1RleHRNZXRyaWNzPiYgdmlzdWFsTWV0cmljc1ZhbHVlcyA9IHRleHQtPmxheW91dEF0dHJpYnV0
ZXMoKS0+dGV4dE1ldHJpY3NWYWx1ZXMoKTsKICAgICBBU1NFUlQoIXZpc3VhbE1ldHJpY3NWYWx1
ZXMuaXNFbXB0eSgpKTsKIAotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGV4dC0+Y2hh
cmFjdGVycygpOworICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdGV4dC0+ZGVwcmVjYXRl
ZENoYXJhY3RlcnMoKTsKICAgICBjb25zdCBGb250JiBmb250ID0gc3R5bGUtPmZvbnQoKTsKIAog
ICAgIFNWR1RleHRMYXlvdXRFbmdpbmVTcGFjaW5nIHNwYWNpbmdMYXlvdXQoZm9udCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCmluZGV4IDE5
OTJkZWQ4YmI3NDhlMzMyYjhiODgxYTlkZmRhNTJjMTBlOWY5NzIuLjBlNjQ0NmUzMWY2YzA5YWNj
YjQ0NjZlOGMwN2Q5ZWYyZTI3ZTY3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dE1ldHJpY3MuY3BwCkBAIC05Miw3ICs5Miw3IEBAIFRleHRSdW4gU1ZHVGV4
dE1ldHJpY3M6OmNvbnN0cnVjdFRleHRSdW4oUmVuZGVyU1ZHSW5saW5lVGV4dCogdGV4dCwgY29u
c3QgVUNoYXIqCiBTVkdUZXh0TWV0cmljcyBTVkdUZXh0TWV0cmljczo6bWVhc3VyZUNoYXJhY3Rl
clJhbmdlKFJlbmRlclNWR0lubGluZVRleHQqIHRleHQsIHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNp
Z25lZCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKHRleHQpOwotICAgIHJldHVybiBTVkdUZXh0TWV0
cmljcyh0ZXh0LCBjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHRleHQtPmNoYXJhY3RlcnMoKSwgcG9z
aXRpb24sIGxlbmd0aCkpOworICAgIHJldHVybiBTVkdUZXh0TWV0cmljcyh0ZXh0LCBjb25zdHJ1
Y3RUZXh0UnVuKHRleHQsIHRleHQtPmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHBvc2l0aW9uLCBs
ZW5ndGgpKTsKIH0KIAogU1ZHVGV4dE1ldHJpY3M6OlNWR1RleHRNZXRyaWNzKFJlbmRlclNWR0lu
bGluZVRleHQqIHRleHQsIHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGgsIGZsb2F0
IHdpZHRoLCBjb25zdCBTdHJpbmcmIGdseXBoTmFtZSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBTVkdU
ZXh0TWV0cmljczo6U1ZHVGV4dE1ldHJpY3MoUmVuZGVyU1ZHSW5saW5lVGV4dCogdGV4dCwgdW5z
aWduZWQgcG9zaXRpb24sIHVucwogICAgIG1faGVpZ2h0ID0gdGV4dC0+c2NhbGVkRm9udCgpLmZv
bnRNZXRyaWNzKCkuZmxvYXRIZWlnaHQoKSAvIHNjYWxpbmdGYWN0b3I7CiAgICAgaWYgKG5lZWRz
Q29udGV4dCkgewogICAgICAgICBtX2dseXBoLmlzVmFsaWQgPSB0cnVlOwotICAgICAgICBtX2ds
eXBoLnVuaWNvZGVTdHJpbmcgPSBTdHJpbmcodGV4dC0+Y2hhcmFjdGVycygpICsgcG9zaXRpb24s
IGxlbmd0aCk7CisgICAgICAgIG1fZ2x5cGgudW5pY29kZVN0cmluZyA9IFN0cmluZyh0ZXh0LT5k
ZXByZWNhdGVkQ2hhcmFjdGVycygpICsgcG9zaXRpb24sIGxlbmd0aCk7CiAgICAgICAgIG1fZ2x5
cGgubmFtZSA9IGdseXBoTmFtZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcAppbmRleCBkNjNlNjMxYjYx
ZDhiNzJmNzU0ZDgzMDgyNjQ0NTQzMGMwOGU0MTY3Li44NjAwOWU2ZTkxM2ViYTZiYTc1OWM4YTRm
OTM3ZTlhOTgzZjE5ZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRNZXRyaWNzQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBT
VkdUZXh0TWV0cmljc0J1aWxkZXI6OmluaXRpYWxpemVNZWFzdXJlbWVudFdpdGhUZXh0UmVuZGVy
ZXIoUmVuZGVyU1ZHSW5saW4KICAgICBtX3RvdGFsV2lkdGggPSAwOwogCiAgICAgY29uc3QgRm9u
dCYgc2NhbGVkRm9udCA9IHRleHQtPnNjYWxlZEZvbnQoKTsKLSAgICBtX3J1biA9IFNWR1RleHRN
ZXRyaWNzOjpjb25zdHJ1Y3RUZXh0UnVuKHRleHQsIHRleHQtPmNoYXJhY3RlcnMoKSwgMCwgdGV4
dC0+dGV4dExlbmd0aCgpKTsKKyAgICBtX3J1biA9IFNWR1RleHRNZXRyaWNzOjpjb25zdHJ1Y3RU
ZXh0UnVuKHRleHQsIHRleHQtPmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIDAsIHRleHQtPnRleHRM
ZW5ndGgoKSk7CiAgICAgbV9pc0NvbXBsZXhUZXh0ID0gc2NhbGVkRm9udC5jb2RlUGF0aChtX3J1
bikgPT0gRm9udDo6Q29tcGxleDsKIAogICAgIGlmIChtX2lzQ29tcGxleFRleHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuZ2xlLmNwcAppbmRleCA5Nzg3NGQ4NzY0MTUyNDkxYTNmNTNlMzk4ZDU0MGFhNzFkYWI4
ZDNkLi5jYjRhYTZmMDFhYThlNmU2NDg2MmE3MTNiNmRhOThlY2FkMjA5OWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmdsZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIFNWR0FuZ2xlOjpzZXRWYWx1
ZUFzU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIH0K
IAogICAgIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IDA7Ci0gICAgY29uc3QgVUNoYXIq
IHB0ciA9IHZhbHVlLmNoYXJhY3RlcnMoKTsKKyAgICBjb25zdCBVQ2hhciogcHRyID0gdmFsdWUu
ZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsKICAgICBjb25zdCBVQ2hhciogZW5kID0gcHRyICsgdmFs
dWUubGVuZ3RoKCk7CiAKICAgICBpZiAoIXBhcnNlTnVtYmVyKHB0ciwgZW5kLCB2YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMsIGZhbHNlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
TW90aW9uRWxlbWVudC5jcHAKaW5kZXggZDBkMGI5OWNjNDhkYmEzY2RmYTZhZDljZmY0NDFlZWRj
Njc5NzEzNi4uOGJiNjE1MDQ4OTNlMDU5YTQxYWZkY2ZiNzE1ZmE2MjhkMTc3OGNkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0xNTgs
NyArMTU4LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VQb2ludChjb25zdCBTdHJpbmcmIHMsIEZsb2F0
UG9pbnQmIHBvaW50KQogewogICAgIGlmIChzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGNvbnN0IFVDaGFyKiBjdXIgPSBzLmNoYXJhY3RlcnMoKTsKKyAgICBjb25zdCBV
Q2hhciogY3VyID0gcy5kZXByZWNhdGVkQ2hhcmFjdGVycygpOwogICAgIGNvbnN0IFVDaGFyKiBl
bmQgPSBjdXIgKyBzLmxlbmd0aCgpOwogICAgIAogICAgIGlmICghc2tpcE9wdGlvbmFsU1ZHU3Bh
Y2VzKGN1ciwgZW5kKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRp
b25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNw
cAppbmRleCAxNTQwNTdhOTI3NzE3ZDA3ZjU5ZjFhNzkxZGFiZTljNzM0NjliY2JmLi45NzdkNzg5
MjgxNGZiNWRjZTcxYWVmZDA2ODM4YjVmNmI4YjBkNTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHBh
cnNlS2V5U3BsaW5lcyhjb25zdCBTdHJpbmcmIHBhcnNlLCBWZWN0b3I8VW5pdEJlemllcj4mIHJl
c3VsdCkKICAgICByZXN1bHQuY2xlYXIoKTsKICAgICBpZiAocGFyc2UuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47Ci0gICAgY29uc3QgVUNoYXIqIGN1ciA9IHBhcnNlLmNoYXJhY3RlcnMoKTsK
KyAgICBjb25zdCBVQ2hhciogY3VyID0gcGFyc2UuZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsKICAg
ICBjb25zdCBVQ2hhciogZW5kID0gY3VyICsgcGFyc2UubGVuZ3RoKCk7CiAKICAgICBza2lwT3B0
aW9uYWxTVkdTcGFjZXMoY3VyLCBlbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpdFRvVmlld0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94
LmNwcAppbmRleCBmMWY2Y2Y0OWY1OGJiYjhkNDE5Y2U3ZTIxN2RlYTYzMzMxNGRjODJhLi4xM2Iw
NGM4MWNhNzNhZWUwZmEyNzI4YjU4NWI5ZWM5YjI1NjFmNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRml0VG9WaWV3Qm94LmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGJvb2wgU1ZHRml0VG9WaWV3Qm94OjpwYXJzZVZpZXdCb3goRG9jdW1lbnQqIGRvYywgY29u
c3QgU3RyaW5nJiBzLCBGbG9hdFJlY3QmIHZpZXdCb3gpCiB7Ci0gICAgY29uc3QgVUNoYXIqIGMg
PSBzLmNoYXJhY3RlcnMoKTsKKyAgICBjb25zdCBVQ2hhciogYyA9IHMuZGVwcmVjYXRlZENoYXJh
Y3RlcnMoKTsKICAgICBjb25zdCBVQ2hhciogZW5kID0gYyArIHMubGVuZ3RoKCk7CiAgICAgcmV0
dXJuIHBhcnNlVmlld0JveChkb2MsIGMsIGVuZCwgdmlld0JveCwgdHJ1ZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvbnREYXRhLmNwcAppbmRleCBhNzg2NDAwYzJjY2ZkMzBjMGMyN2JkNDNiNzgwNzhi
YzEzYjllMjdhLi4yNTc5M2E1ZWY3Y2JkOWYwNjE0ZGY1NzA4ODVmMTgxZTJmNjA2ZDQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBib29sIFNWR0Zv
bnREYXRhOjphcHBseVNWR0dseXBoU2VsZWN0aW9uKFdpZHRoSXRlcmF0b3ImIGl0ZXJhdG9yLCBH
bHlwaERhdGEmIGdseQogICAgIH0KIAogICAgIGlmIChtaXJyb3IpCi0gICAgICAgIHJlbWFpbmlu
Z1RleHRJblJ1biA9IGNyZWF0ZVN0cmluZ1dpdGhNaXJyb3JlZENoYXJhY3RlcnMocmVtYWluaW5n
VGV4dEluUnVuLmNoYXJhY3RlcnMoKSwgcmVtYWluaW5nVGV4dEluUnVuLmxlbmd0aCgpKTsKKyAg
ICAgICAgcmVtYWluaW5nVGV4dEluUnVuID0gY3JlYXRlU3RyaW5nV2l0aE1pcnJvcmVkQ2hhcmFj
dGVycyhyZW1haW5pbmdUZXh0SW5SdW4uZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgcmVtYWluaW5n
VGV4dEluUnVuLmxlbmd0aCgpKTsKICAgICBpZiAoIWN1cnJlbnRDaGFyYWN0ZXIgJiYgYXJhYmlj
Rm9ybXMuaXNFbXB0eSgpKQogICAgICAgICBhcmFiaWNGb3JtcyA9IGNoYXJhY3RlcnNXaXRoQXJh
YmljRm9ybShyZW1haW5pbmdUZXh0SW5SdW4sIG1pcnJvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBo
TWFwLmgKaW5kZXggNDA3NTkyZDU2YTAzOTExNzVjZjlhODBjMTdhMDdlZmZhYzAyZTMwNy4uMDhi
ZmE1OTgxYzRmZjJmMjRkMWU2YWFiM2QxMTg0MTk3YzcyODZhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ds
eXBoTWFwLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAgICAgIFVDaGFyMzIgY2hh
cmFjdGVyID0gMDsKICAgICAgICAgdW5zaWduZWQgY2x1c3Rlckxlbmd0aCA9IDA7Ci0gICAgICAg
IFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvciB0ZXh0SXRlcmF0b3IodW5pY29kZVN0cmlu
Zy5jaGFyYWN0ZXJzKCksIDAsIGxlbmd0aCwgbGVuZ3RoKTsKKyAgICAgICAgU3Vycm9nYXRlUGFp
ckF3YXJlVGV4dEl0ZXJhdG9yIHRleHRJdGVyYXRvcih1bmljb2RlU3RyaW5nLmRlcHJlY2F0ZWRD
aGFyYWN0ZXJzKCksIDAsIGxlbmd0aCwgbGVuZ3RoKTsKICAgICAgICAgd2hpbGUgKHRleHRJdGVy
YXRvci5jb25zdW1lKGNoYXJhY3RlciwgY2x1c3Rlckxlbmd0aCkpIHsKICAgICAgICAgICAgIG5v
ZGUgPSBjdXJyZW50TGF5ZXItPmdldChjaGFyYWN0ZXIpOwogICAgICAgICAgICAgaWYgKCFub2Rl
KSB7CkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgR2x5cGhNYXBM
YXllciogY3VycmVudExheWVyID0gJm1fcm9vdExheWVyOwogCi0gICAgICAgIGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzID0gc3RyaW5nLmNoYXJhY3RlcnMoKTsKKyAgICAgICAgY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMgPSBzdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsKICAgICAgICAgc2l6
ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKIAogICAgICAgICBVQ2hhcjMyIGNoYXJhY3Rl
ciA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuY3BwCmluZGV4IDNi
NGE4MDM0MmJhOWFmZjk0ODJhZDA1ZjJlNzY2M2Y0MDI5ZDRiZWEuLjliMjdlYWVmNDYzN2NhNjFj
MDI5NjAzYWI5ZTg3NDUyMzZhYThiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHbHlwaFJlZkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaFJl
ZkVsZW1lbnQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIGJvb2wgU1ZHR2x5cGhSZWZFbGVtZW50Ojpo
YXNWYWxpZEdseXBoRWxlbWVudChTdHJpbmcmIGdseXBoTmFtZSkgY29uc3QKIAogdm9pZCBTVkdH
bHlwaFJlZkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgY29uc3QgVUNoYXIqIHN0YXJ0UHRy
ID0gdmFsdWUuY2hhcmFjdGVycygpOworICAgIGNvbnN0IFVDaGFyKiBzdGFydFB0ciA9IHZhbHVl
LnN0cmluZygpLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7CiAgICAgY29uc3QgVUNoYXIqIGVuZFB0
ciA9IHN0YXJ0UHRyICsgdmFsdWUubGVuZ3RoKCk7CiAKICAgICAvLyBGSVhNRTogV2UgbmVlZCBz
b21lIGVycm9yIGhhbmRsaW5nIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwCmluZGV4IDA2
MGJhZTRiMzIzYzU2ODBmYmM5OWZjNTBmZDY0Mzg2OTJiYTY2YjUuLjBhMjI4NDg5NmFhNGFjYzIw
YjI2ZTU1ZGRkYmFmODE2NTA1ZDg1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwCkBAIC0y
MjYsNyArMjI2LDcgQEAgdm9pZCBTVkdMZW5ndGg6OnNldFZhbHVlQXNTdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAKICAgICBm
bG9hdCBjb252ZXJ0ZWROdW1iZXIgPSAwOwotICAgIGNvbnN0IFVDaGFyKiBwdHIgPSBzdHJpbmcu
Y2hhcmFjdGVycygpOworICAgIGNvbnN0IFVDaGFyKiBwdHIgPSBzdHJpbmcuZGVwcmVjYXRlZENo
YXJhY3RlcnMoKTsKICAgICBjb25zdCBVQ2hhciogZW5kID0gcHRyICsgc3RyaW5nLmxlbmd0aCgp
OwogCiAgICAgaWYgKCFwYXJzZU51bWJlcihwdHIsIGVuZCwgY29udmVydGVkTnVtYmVyLCBmYWxz
ZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmNwcAppbmRleCA3MDM2NzdiMWVhMDFl
MTA0NWJjODM1MWRlNGQyNWJlMTMwYjU2NDM1Li4zMWM3M2Y0Mzc1MWRhY2FkZDQ1MjJmYTUzMWU1
ZjFhMDRkNDkwYzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuY3BwCkBAIC0zMyw3
ICszMyw3IEBAIHZvaWQgU1ZHTGVuZ3RoTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwg
U1ZHTGVuZ3RoTW9kZSBtb2RlKQogICAgIGNsZWFyKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAKLSAgICBjb25zdCBVQ2hhciogcHRyID0gdmFsdWUuY2hhcmFjdGVycygpOworICAgIGNv
bnN0IFVDaGFyKiBwdHIgPSB2YWx1ZS5kZXByZWNhdGVkQ2hhcmFjdGVycygpOwogICAgIGNvbnN0
IFVDaGFyKiBlbmQgPSBwdHIgKyB2YWx1ZS5sZW5ndGgoKTsKICAgICB3aGlsZSAocHRyIDwgZW5k
KSB7CiAgICAgICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdO
dW1iZXJMaXN0LmNwcAppbmRleCA3YWI3NDQxNjczODAxMGI0MzliZDk0ZDYwZWY1NDllZGNlYjI0
ZDFhLi5iMWZkOTQ2NGQwZTc2ZGNlMGFjNGE1MWNjNDJjYmQ2NTZhOTk2ZDE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR051bWJlckxpc3QuY3BwCkBAIC0zMyw3ICszMyw3IEBAIHZvaWQgU1ZHTnVtYmVy
TGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBjbGVhcigpOwogCiAgICAgZmxv
YXQgbnVtYmVyID0gMDsKLSAgICBjb25zdCBVQ2hhciogcHRyID0gdmFsdWUuY2hhcmFjdGVycygp
OworICAgIGNvbnN0IFVDaGFyKiBwdHIgPSB2YWx1ZS5kZXByZWNhdGVkQ2hhcmFjdGVycygpOwog
ICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwdHIgKyB2YWx1ZS5sZW5ndGgoKTsKIAogICAgIC8vIFRo
ZSBzcGVjIHN0cmFuZ2VseSBkb2Vzbid0IGFsbG93IGxlYWRpbmcgd2hpdGVzcGFjZS4gIFdlIG1p
Z2h0IGNob29zZSB0byB2aW9sYXRlIHRoYXQgaW50ZW50aW9uYWxseS4gKHNlY3Rpb24gNC4xKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhcnNlclV0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVzLmNwcAppbmRleCA4N2U1MDk2MmMy
Nzg1NWJiMWE5ZWExYWUyNzNkMjA3OTBhMzkwNzlhLi5iN2FlMTUwNTE0YjViZmNmMzMwOTg4MzZi
OWM2ZmZiMTRiNmY0YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2Vy
VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFyc2VyVXRpbGl0aWVz
LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIGJvb2wgcGFyc2VOdW1iZXIoY29uc3QgVUNoYXIqJiBw
dHIsIGNvbnN0IFVDaGFyKiBlbmQsIGZsb2F0JiBudW1iZXIsIGJvb2wgc2tpcCkKIAogYm9vbCBw
YXJzZU51bWJlckZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGZsb2F0JiBudW1iZXIs
IGJvb2wgc2tpcCkKIHsKLSAgICBjb25zdCBVQ2hhciogcHRyID0gc3RyaW5nLmNoYXJhY3RlcnMo
KTsKKyAgICBjb25zdCBVQ2hhciogcHRyID0gc3RyaW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7
CiAgICAgY29uc3QgVUNoYXIqIGVuZCA9IHB0ciArIHN0cmluZy5sZW5ndGgoKTsKICAgICByZXR1
cm4gZ2VuZXJpY1BhcnNlTnVtYmVyKHB0ciwgZW5kLCBudW1iZXIsIHNraXApICYmIHB0ciA9PSBl
bmQ7CiB9CkBAIC0yMDUsNyArMjA1LDcgQEAgYm9vbCBwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVy
KGNvbnN0IFN0cmluZyYgcywgZmxvYXQmIHgsIGZsb2F0JiB5KQogewogICAgIGlmIChzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNvbnN0IFVDaGFyKiBjdXIgPSBzLmNo
YXJhY3RlcnMoKTsKKyAgICBjb25zdCBVQ2hhciogY3VyID0gcy5kZXByZWNhdGVkQ2hhcmFjdGVy
cygpOwogICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBjdXIgKyBzLmxlbmd0aCgpOwogCiAgICAgaWYg
KCFwYXJzZU51bWJlcihjdXIsIGVuZCwgeCkpCkBAIC0yMjEsNyArMjIxLDcgQEAgYm9vbCBwYXJz
ZU51bWJlck9wdGlvbmFsTnVtYmVyKGNvbnN0IFN0cmluZyYgcywgZmxvYXQmIHgsIGZsb2F0JiB5
KQogCiBib29sIHBhcnNlUmVjdChjb25zdCBTdHJpbmcmIHN0cmluZywgRmxvYXRSZWN0JiByZWN0
KQogewotICAgIGNvbnN0IFVDaGFyKiBwdHIgPSBzdHJpbmcuY2hhcmFjdGVycygpOworICAgIGNv
bnN0IFVDaGFyKiBwdHIgPSBzdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsKICAgICBjb25z
dCBVQ2hhciogZW5kID0gcHRyICsgc3RyaW5nLmxlbmd0aCgpOwogICAgIHNraXBPcHRpb25hbFNW
R1NwYWNlcyhwdHIsIGVuZCk7CiAgICAgCkBAIC0yMzgsNyArMjM4LDcgQEAgYm9vbCBwb2ludHNM
aXN0RnJvbVNWR0RhdGEoU1ZHUG9pbnRMaXN0JiBwb2ludHNMaXN0LCBjb25zdCBTdHJpbmcmIHBv
aW50cykKIHsKICAgICBpZiAocG9pbnRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgY29uc3QgVUNoYXIqIGN1ciA9IHBvaW50cy5jaGFyYWN0ZXJzKCk7CisgICAgY29uc3Qg
VUNoYXIqIGN1ciA9IHBvaW50cy5kZXByZWNhdGVkQ2hhcmFjdGVycygpOwogICAgIGNvbnN0IFVD
aGFyKiBlbmQgPSBjdXIgKyBwb2ludHMubGVuZ3RoKCk7CiAKICAgICBza2lwT3B0aW9uYWxTVkdT
cGFjZXMoY3VyLCBlbmQpOwpAQCAtMjcyLDcgKzI3Miw3IEBAIGJvb2wgcGFyc2VHbHlwaE5hbWUo
Y29uc3QgU3RyaW5nJiBpbnB1dCwgSGFzaFNldDxTdHJpbmc+JiB2YWx1ZXMpCiAgICAgLy8gRklY
TUU6IFBhcnNpbmcgZXJyb3IgZGV0ZWN0aW9uIGlzIG1pc3NpbmcuCiAgICAgdmFsdWVzLmNsZWFy
KCk7CiAKLSAgICBjb25zdCBVQ2hhciogcHRyID0gaW5wdXQuY2hhcmFjdGVycygpOworICAgIGNv
bnN0IFVDaGFyKiBwdHIgPSBpbnB1dC5kZXByZWNhdGVkQ2hhcmFjdGVycygpOwogICAgIGNvbnN0
IFVDaGFyKiBlbmQgPSBwdHIgKyBpbnB1dC5sZW5ndGgoKTsKICAgICBza2lwT3B0aW9uYWxTVkdT
cGFjZXMocHRyLCBlbmQpOwogCkBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VV
bmljb2RlUmFuZ2UoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgVW5p
Y29kZVIKIGJvb2wgcGFyc2VLZXJuaW5nVW5pY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGlucHV0
LCBVbmljb2RlUmFuZ2VzJiByYW5nZUxpc3QsIEhhc2hTZXQ8U3RyaW5nPiYgc3RyaW5nTGlzdCkK
IHsKICAgICAvLyBGSVhNRTogUGFyc2luZyBlcnJvciBkZXRlY3Rpb24gaXMgbWlzc2luZy4KLSAg
ICBjb25zdCBVQ2hhciogcHRyID0gaW5wdXQuY2hhcmFjdGVycygpOworICAgIGNvbnN0IFVDaGFy
KiBwdHIgPSBpbnB1dC5kZXByZWNhdGVkQ2hhcmFjdGVycygpOwogICAgIGNvbnN0IFVDaGFyKiBl
bmQgPSBwdHIgKyBpbnB1dC5sZW5ndGgoKTsKIAogICAgIHdoaWxlIChwdHIgPCBlbmQpIHsKQEAg
LTM5Niw3ICszOTYsNyBAQCBWZWN0b3I8U3RyaW5nPiBwYXJzZURlbGltaXRlZFN0cmluZyhjb25z
dCBTdHJpbmcmIGlucHV0LCBjb25zdCBjaGFyIHNlcGVyYXRvcikKIHsKICAgICBWZWN0b3I8U3Ry
aW5nPiB2YWx1ZXM7CiAKLSAgICBjb25zdCBVQ2hhciogcHRyID0gaW5wdXQuY2hhcmFjdGVycygp
OworICAgIGNvbnN0IFVDaGFyKiBwdHIgPSBpbnB1dC5kZXByZWNhdGVkQ2hhcmFjdGVycygpOwog
ICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwdHIgKyBpbnB1dC5sZW5ndGgoKTsKICAgICBza2lwT3B0
aW9uYWxTVkdTcGFjZXMocHRyLCBlbmQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJl
c2VydmVBc3BlY3RSYXRpby5jcHAKaW5kZXggYWZlZWYzNWY2NzQ2ODU3NzhjZGFlMDQzMDlhNmJk
ZGI3OWZhMmEwOS4uNzc1OGE1YzRmMGYxOTk4ZDNmMzJhOTdmNDcxMzUwNmI4YmY1YjEyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcApAQCAtNjAs
NyArNjAsNyBAQCB2b2lkIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OnNldE1lZXRPclNsaWNlKHVu
c2lnbmVkIHNob3J0IG1lZXRPclNsaWNlLCBFeGNlcHRpbwogCiB2b2lkIFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW86OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgY29uc3QgVUNoYXIq
IGJlZ2luID0gdmFsdWUuY2hhcmFjdGVycygpOworICAgIGNvbnN0IFVDaGFyKiBiZWdpbiA9IHZh
bHVlLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7CiAgICAgcGFyc2UoYmVnaW4sIGJlZ2luICsgdmFs
dWUubGVuZ3RoKCksIHRydWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3RyaW5nTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5jcHAK
aW5kZXggYTBkOWUzYjE5M2NhZDcxYzRmMjRmYWRjMzRlMzE3MGViNmMzZmMxMS4uZTczOGNmNTk2
YjY3YWQzM2VlNGRlNTg4NWI3Y2I4MDhmNWNjNjI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0cmluZ0xpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJp
bmdMaXN0LmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFNWR1N0cmluZ0xpc3Q6OnBhcnNlKGNv
bnN0IFN0cmluZyYgZGF0YSwgVUNoYXIgZGVsaW1pdGVyKQogICAgIC8vIFRPRE8gOiBtb3JlIGVy
cm9yIGNoZWNraW5nL3JlcG9ydGluZwogICAgIGNsZWFyKCk7CiAKLSAgICBjb25zdCBVQ2hhciog
cHRyID0gZGF0YS5jaGFyYWN0ZXJzKCk7CisgICAgY29uc3QgVUNoYXIqIHB0ciA9IGRhdGEuZGVw
cmVjYXRlZENoYXJhY3RlcnMoKTsKICAgICBjb25zdCBVQ2hhciogZW5kID0gcHRyICsgZGF0YS5s
ZW5ndGgoKTsKICAgICB3aGlsZSAocHRyIDwgZW5kKSB7CiAgICAgICAgIGNvbnN0IFVDaGFyKiBz
dGFydCA9IHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1M
aXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAppbmRleCBk
OTc0NjFkNjBhM2U1ZTJiMTEzMTFkMjdlN2UwNjJmNTE5ZGVkN2I0Li5kZmFiMTIyZDQxYjBjZjli
MjA5MmU1NjY4YjZkMTkyNWYxNjgwYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVHJhbnNmb3JtTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9y
bUxpc3QuY3BwCkBAIC03Niw3ICs3Niw3IEBAIFN0cmluZyBTVkdUcmFuc2Zvcm1MaXN0Ojp2YWx1
ZUFzU3RyaW5nKCkgY29uc3QKIAogdm9pZCBTVkdUcmFuc2Zvcm1MaXN0OjpwYXJzZShjb25zdCBT
dHJpbmcmIHRyYW5zZm9ybSkKIHsKLSAgICBjb25zdCBVQ2hhciogc3RhcnQgPSB0cmFuc2Zvcm0u
Y2hhcmFjdGVycygpOworICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IHRyYW5zZm9ybS5kZXByZWNh
dGVkQ2hhcmFjdGVycygpOwogICAgIGlmICghU1ZHVHJhbnNmb3JtYWJsZTo6cGFyc2VUcmFuc2Zv
cm1BdHRyaWJ1dGUoKnRoaXMsIHN0YXJ0LCBzdGFydCArIHRyYW5zZm9ybS5sZW5ndGgoKSkpCiAg
ICAgICAgIGNsZWFyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJh
bnNmb3JtYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5jcHAK
aW5kZXggOTljNTUzNzVjZTVmZjdhYTI0ZGI0YzE5MzQyNDA0Y2RjZDEyOWE5ZC4uZmI4ZmY4ODY2
ZGJiNTc2NTgzOTY5OWU5NTllMmQ1OTM2M2U3MzUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
cmFuc2Zvcm1hYmxlLmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBw
YXJzZUFuZFNraXBUeXBlKGNvbnN0IFVDaGFyKiYgY3VyclRyYW5zZm9ybSwgY29uc3QgVUNoYXIq
IGVuCiBTVkdUcmFuc2Zvcm06OlNWR1RyYW5zZm9ybVR5cGUgU1ZHVHJhbnNmb3JtYWJsZTo6cGFy
c2VUcmFuc2Zvcm1UeXBlKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZykKIHsKICAgICB1bnNpZ25l
ZCBzaG9ydCB0eXBlID0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1VOS05PV047Ci0gICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB0eXBlU3RyaW5nLmNoYXJhY3RlcnMoKTsKKyAgICBj
b25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHR5cGVTdHJpbmcuZGVwcmVjYXRlZENoYXJhY3RlcnMo
KTsKICAgICBwYXJzZUFuZFNraXBUeXBlKGNoYXJhY3RlcnMsIGNoYXJhY3RlcnMgKyB0eXBlU3Ry
aW5nLmxlbmd0aCgpLCB0eXBlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHVHJhbnNmb3Jt
OjpTVkdUcmFuc2Zvcm1UeXBlPih0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdWaWV3U3BlYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3Bw
CmluZGV4IGMzZDgyOWNhNjdhYTAwNWM0YWJiMzZjOTBhYjg0MjllZjVlZGJiZmYuLmVlMjUxMGMx
MGI5OWI4ODhjODRkOGUwNzhiY2Q5ZjNkNTA5ZGY4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdT
cGVjLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHN0YXRpYyBjb25zdCBVQ2hhciB2aWV3VGFyZ2V0
U3BlY1tdID0gIHsndicsICdpJywgJ2UnLCAndycsICdUJywgJ2EnLCAncicsICdnJywKIAogYm9v
bCBTVkdWaWV3U3BlYzo6cGFyc2VWaWV3U3BlYyhjb25zdCBTdHJpbmcmIHZpZXdTcGVjKQogewot
ICAgIGNvbnN0IFVDaGFyKiBjdXJyVmlld1NwZWMgPSB2aWV3U3BlYy5jaGFyYWN0ZXJzKCk7Cisg
ICAgY29uc3QgVUNoYXIqIGN1cnJWaWV3U3BlYyA9IHZpZXdTcGVjLmRlcHJlY2F0ZWRDaGFyYWN0
ZXJzKCk7CiAgICAgY29uc3QgVUNoYXIqIGVuZCA9IGN1cnJWaWV3U3BlYyArIHZpZXdTcGVjLmxl
bmd0aCgpOwogCiAgICAgaWYgKGN1cnJWaWV3U3BlYyA+PSBlbmQgfHwgIW1fY29udGV4dEVsZW1l
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uaAppbmRleCBmYTExNzllN2U4Zjc1NWI0ODE3
MGQ5YWMxNjBhYzljNzIwMzk5YjZkLi5hMjkzNTNjMmU3ODhjZDFhMWMyZjE0MDlhMTNkM2VlODc1
ZmEzZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmgKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKHRhcmdldCk7CiAgICAgICAgIGlmIChuYW1l
ID09IFNWR05hbWVzOjp6b29tQW5kUGFuQXR0cikgewotICAgICAgICAgICAgY29uc3QgVUNoYXIq
IHN0YXJ0ID0gdmFsdWUuY2hhcmFjdGVycygpOworICAgICAgICAgICAgY29uc3QgVUNoYXIqIHN0
YXJ0ID0gdmFsdWUuc3RyaW5nKCkuZGVwcmVjYXRlZENoYXJhY3RlcnMoKTsKICAgICAgICAgICAg
IGNvbnN0IFVDaGFyKiBlbmQgPSBzdGFydCArIHZhbHVlLmxlbmd0aCgpOwogICAgICAgICAgICAg
U1ZHWm9vbUFuZFBhblR5cGUgem9vbUFuZFBhbiA9IFNWR1pvb21BbmRQYW5Vbmtub3duOwogICAg
ICAgICAgICAgcGFyc2Vab29tQW5kUGFuKHN0YXJ0LCBlbmQsIHpvb21BbmRQYW4pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYTRiMGYyMTk0YzZiNGJhZjI4ZDZlMzM2
MWNlZmNiZmNlYzA5OTA2ZS4uMTAwMjllZTQ2NjNkNDAwYmM0YmJkNTA1ZjBmZmFkZGI0NTlkNjI2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC02MjMsNyArNjIzLDcg
QEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2VuZChEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogCiAgICAgICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCB1c2UgdmFsdWUgb2Yg
ZG9jdW1lbnQuaW5wdXRFbmNvZGluZyB0byBkZXRlcm1pbmUgdGhlIGVuY29kaW5nIHRvIHVzZS4K
ICAgICAgICAgVGV4dEVuY29kaW5nIGVuY29kaW5nID0gVVRGOEVuY29kaW5nKCk7Ci0gICAgICAg
IG1fcmVxdWVzdEVudGl0eUJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKGVuY29kaW5nLmVuY29kZShi
b2R5LmNoYXJhY3RlcnMoKSwgYm9keS5sZW5ndGgoKSwgRW50aXRpZXNGb3JVbmVuY29kYWJsZXMp
KTsKKyAgICAgICAgbV9yZXF1ZXN0RW50aXR5Qm9keSA9IEZvcm1EYXRhOjpjcmVhdGUoZW5jb2Rp
bmcuZW5jb2RlKGJvZHkuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgYm9keS5sZW5ndGgoKSwgRW50
aXRpZXNGb3JVbmVuY29kYWJsZXMpKTsKICAgICAgICAgaWYgKG1fdXBsb2FkKQogICAgICAgICAg
ICAgbV9yZXF1ZXN0RW50aXR5Qm9keS0+c2V0QWx3YXlzU3RyZWFtKHRydWUpOwogICAgIH0KQEAg
LTY1MCw3ICs2NTAsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZW5kKGNvbnN0IFN0cmluZyYg
Ym9keSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgICAgICBtX3JlcXVlc3RIZWFkZXJzLnNl
dCgiQ29udGVudC1UeXBlIiwgY29udGVudFR5cGUpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9y
ZXF1ZXN0RW50aXR5Qm9keSA9IEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2Rl
KGJvZHkuY2hhcmFjdGVycygpLCBib2R5Lmxlbmd0aCgpLCBFbnRpdGllc0ZvclVuZW5jb2RhYmxl
cykpOworICAgICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5ID0gRm9ybURhdGE6OmNyZWF0ZShVVEY4
RW5jb2RpbmcoKS5lbmNvZGUoYm9keS5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCBib2R5Lmxlbmd0
aCgpLCBFbnRpdGllc0ZvclVuZW5jb2RhYmxlcykpOwogICAgICAgICBpZiAobV91cGxvYWQpCiAg
ICAgICAgICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5LT5zZXRBbHdheXNTdHJlYW0odHJ1ZSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxlU2hlZXRMaWJ4c2x0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0TGlieHNsdC5jcHAKaW5kZXgg
ODEzMWYzZjljNTM2MjkzYzI4ZjY0Y2YzNzczZmE2YTdhYzg1ZmMxMS4uMjhhNDMwNDQ2MDlmMjEy
MDllMDJiMTg0MDM1MzUyMDUxMzE4OWJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hTTFN0eWxlU2hlZXRMaWJ4c2x0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMU3R5
bGVTaGVldExpYnhzbHQuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgYm9vbCBYU0xTdHlsZVNoZWV0
OjpwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIAogICAgIFhNTERvY3VtZW50UGFy
c2VyU2NvcGUgc2NvcGUoY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSwgWFNMVFByb2Nlc3Nvcjo6Z2Vu
ZXJpY0Vycm9yRnVuYywgWFNMVFByb2Nlc3Nvcjo6cGFyc2VFcnJvckZ1bmMsIGNvbnNvbGUpOwog
Ci0gICAgY29uc3QgY2hhciogYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
c3RyaW5nLmNoYXJhY3RlcnMoKSk7CisgICAgY29uc3QgY2hhciogYnVmZmVyID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oc3RyaW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCkpOwogICAg
IGludCBzaXplID0gc3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKIAogICAgIHhtbFBh
cnNlckN0eHRQdHIgY3R4dCA9IHhtbENyZWF0ZU1lbW9yeVBhcnNlckN0eHQoYnVmZmVyLCBzaXpl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUVW5pY29kZVNvcnQuY3BwIGIv
U291cmNlL1dlYkNvcmUveG1sL1hTTFRVbmljb2RlU29ydC5jcHAKaW5kZXggNjZiOGE2ZDVlNzk2
MjdiNzJjZDJlOTAzOTc5N2YyN2Q0ZTY0NWQ0Mi4uYTg1MzczNDBhMjk1ZDRmZjhhMjRhMGJjYmIy
N2JkNGNmYjBlMDZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRVbmljb2Rl
U29ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRVbmljb2RlU29ydC5jcHAKQEAg
LTE5OCw3ICsxOTgsNyBAQCB2b2lkIHhzbHRVbmljb2RlU29ydEZ1bmN0aW9uKHhzbHRUcmFuc2Zv
cm1Db250ZXh0UHRyIGN0eHQsIHhtbE5vZGVQdHIgKnNvcnRzLCBpbgogICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHN0cjEgPSBTdHJp
bmc6OmZyb21VVEY4KChjb25zdCBjaGFyKilyZXN1bHRzW2pdLT5zdHJpbmd2YWwpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nIHN0cjIgPSBTdHJpbmc6OmZyb21VVEY4KChjb25zdCBj
aGFyKilyZXN1bHRzW2ogKyBpbmNyXS0+c3RyaW5ndmFsKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRzdCA9IGNvbGxhdG9yLmNvbGxhdGUoc3RyMS5jaGFyYWN0ZXJzKCksIHN0cjEubGVuZ3Ro
KCksIHN0cjIuY2hhcmFjdGVycygpLCBzdHIyLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRzdCA9IGNvbGxhdG9yLmNvbGxhdGUoc3RyMS5kZXByZWNhdGVkQ2hhcmFjdGVycygp
LCBzdHIxLmxlbmd0aCgpLCBzdHIyLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHN0cjIubGVuZ3Ro
KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChkZXNj
ZW5kaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgdHN0ID0gLXRzdDsKQEAgLTI1Myw3ICsy
NTMsNyBAQCB2b2lkIHhzbHRVbmljb2RlU29ydEZ1bmN0aW9uKHhzbHRUcmFuc2Zvcm1Db250ZXh0
UHRyIGN0eHQsIHhtbE5vZGVQdHIgKnNvcnRzLCBpbgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzdHIx
ID0gU3RyaW5nOjpmcm9tVVRGOCgoY29uc3QgY2hhciopcmVzW2pdLT5zdHJpbmd2YWwpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgc3RyMiA9IFN0cmluZzo6ZnJvbVVU
RjgoKGNvbnN0IGNoYXIqKXJlc1tqICsgaW5jcl0tPnN0cmluZ3ZhbCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRzdCA9IGNvbGxhdG9yLmNvbGxhdGUoc3RyMS5jaGFyYWN0ZXJz
KCksIHN0cjEubGVuZ3RoKCksIHN0cjIuY2hhcmFjdGVycygpLCBzdHIyLmxlbmd0aCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHN0ID0gY29sbGF0b3IuY29sbGF0ZShzdHIx
LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCksIHN0cjEubGVuZ3RoKCksIHN0cjIuZGVwcmVjYXRlZENo
YXJhY3RlcnMoKSwgc3RyMi5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXNjKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0c3QgPSAtdHN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGVmMDE4ZmNiMjRi
NjgxODE1MDI2MjZlNDk5YWFkZDM2NGE1ODNlZjAuLmQ4MWY5ZGVkN2U0MjMwNWU3YjQxOTM3MmY3
MjBhNGFiMjBhZTk4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2Vy
L1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTY3Nyw3ICs2NzcsNyBAQCB2b2lkIFhN
TERvY3VtZW50UGFyc2VyOjpkb1dyaXRlKGNvbnN0IFN0cmluZyYgcGFyc2VTdHJpbmcpCiAKICAg
ICAgICAgc3dpdGNoVG9VVEYxNihjb250ZXh0LT5jb250ZXh0KCkpOwogICAgICAgICBYTUxEb2N1
bWVudFBhcnNlclNjb3BlIHNjb3BlKGRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCkp
OwotICAgICAgICB4bWxQYXJzZUNodW5rKGNvbnRleHQtPmNvbnRleHQoKSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4ocGFyc2VTdHJpbmcuY2hhcmFjdGVycygpKSwgc2l6ZW9mKFVDaGFy
KSAqIHBhcnNlU3RyaW5nLmxlbmd0aCgpLCAwKTsKKyAgICAgICAgeG1sUGFyc2VDaHVuayhjb250
ZXh0LT5jb250ZXh0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHBhcnNlU3RyaW5n
LmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCkpLCBzaXplb2YoVUNoYXIpICogcGFyc2VTdHJpbmcubGVu
Z3RoKCksIDApOwogCiAgICAgICAgIC8vIEphdmFTY3JpcHQgKHdoaWNoIG1heSBiZSBydW4gdW5k
ZXIgdGhlIHhtbFBhcnNlQ2h1bmsgY2FsbHN0YWNrKSBtYXkKICAgICAgICAgLy8gY2F1c2UgdGhl
IHBhcnNlciB0byBiZSBzdG9wcGVkIG9yIGRldGFjaGVkLgpAQCAtMTUzNiw3ICsxNTM2LDcgQEAg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcGFyc2VBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBib29sJiBhdHRyc09LKQogICAgIHNheC5pbml0aWFsaXplZCA9IFhNTF9TQVgyX01BR0lD
OwogICAgIFJlZlB0cjxYTUxQYXJzZXJDb250ZXh0PiBwYXJzZXIgPSBYTUxQYXJzZXJDb250ZXh0
OjpjcmVhdGVTdHJpbmdQYXJzZXIoJnNheCwgJnN0YXRlKTsKICAgICBTdHJpbmcgcGFyc2VTdHJp
bmcgPSAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz48YXR0cnMgIiArIHN0cmluZyArICIgLz4iOwot
ICAgIHhtbFBhcnNlQ2h1bmsocGFyc2VyLT5jb250ZXh0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KHBhcnNlU3RyaW5nLmNoYXJhY3RlcnMoKSksIHBhcnNlU3RyaW5nLmxlbmd0aCgp
ICogc2l6ZW9mKFVDaGFyKSwgMSk7CisgICAgeG1sUGFyc2VDaHVuayhwYXJzZXItPmNvbnRleHQo
KSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocGFyc2VTdHJpbmcuZGVwcmVjYXRlZENo
YXJhY3RlcnMoKSksIHBhcnNlU3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSwgMSk7CiAg
ICAgYXR0cnNPSyA9IHN0YXRlLmdvdEF0dHJpYnV0ZXM7CiAgICAgcmV0dXJuIHN0YXRlLmF0dHJp
YnV0ZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L0JpbmFyeVBy
b3BlcnR5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L0JpbmFyeVByb3BlcnR5
TGlzdC5jcHAKaW5kZXggZjg0MTA0YzY4MDZjNDQ4MGMwNjlkMDRlNzFhNDU0M2E5ZGIyZWQyYy4u
Zjg0NjIyYTBlOTllNDBjZjRmNTI3YWE3NmU1MzIxOTgxODJlMzNlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0hpc3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcApAQCAtNjkxLDcgKzY5
MSw3IEBAIHZvaWQgQmluYXJ5UHJvcGVydHlMaXN0U2VyaWFsaXplcjo6YXBwZW5kSW50ZWdlcihz
aXplX3QgaW50ZWdlcikKIHZvaWQgQmluYXJ5UHJvcGVydHlMaXN0U2VyaWFsaXplcjo6YXBwZW5k
U3RyaW5nT2JqZWN0KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIHN0YXJ0T2JqZWN0KCk7
Ci0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFjdGVycygpOworICAg
IGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gc3RyaW5nLmRlcHJlY2F0ZWRDaGFyYWN0ZXJzKCk7
CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwogICAgIGlmIChjaGFyYWN0
ZXJzQXJlQWxsQVNDSUkoY2hhcmFjdGVycywgbGVuZ3RoKSkgewogICAgICAgICBpZiAobGVuZ3Ro
IDw9IG1heExlbmd0aEluTWFya2VyQnl0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElTdHJpbmcuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElTdHJpbmcuaAppbmRl
eCBhYjg1NDQwYTU5OTc4ZDVmNjNiOWIyOGQzZTQ0M2ViZTM3NzU4MzI0Li45MDg4NWViYTRkZjgx
MzI0YTFjMjQ1Mjg0NjM0MzhiMTg4MTMxNDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJU3RyaW5nLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVN0cmluZy5o
CkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFidWZmZXJMZW5ndGgpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgYnVmZmVyTGVuZ3RoID0gc3RkOjptaW4oYnVm
ZmVyTGVuZ3RoLCBzdGF0aWNfY2FzdDxzaXplX3Q+KG1fc3RyaW5nLmxlbmd0aCgpKSk7Ci0gICAg
ICAgIG1lbWNweShidWZmZXIsIG1fc3RyaW5nLmNoYXJhY3RlcnMoKSwgYnVmZmVyTGVuZ3RoICog
c2l6ZW9mKFVDaGFyKSk7CisgICAgICAgIG1lbWNweShidWZmZXIsIG1fc3RyaW5nLmRlcHJlY2F0
ZWRDaGFyYWN0ZXJzKCksIGJ1ZmZlckxlbmd0aCAqIHNpemVvZihVQ2hhcikpOwogICAgICAgICBy
ZXR1cm4gYnVmZmVyTGVuZ3RoOwogICAgIH0KIApAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmICghYnVmZmVyU2l6ZSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBj
aGFyKiBwID0gYnVmZmVyOwotICAgICAgICBjb25zdCBVQ2hhciogZCA9IG1fc3RyaW5nLmNoYXJh
Y3RlcnMoKTsKKyAgICAgICAgY29uc3QgVUNoYXIqIGQgPSBtX3N0cmluZy5kZXByZWNhdGVkQ2hh
cmFjdGVycygpOwogICAgICAgICBXVEY6OlVuaWNvZGU6OkNvbnZlcnNpb25SZXN1bHQgcmVzdWx0
ID0gV1RGOjpVbmljb2RlOjpjb252ZXJ0VVRGMTZUb1VURjgoJmQsIGQgKyBtX3N0cmluZy5sZW5n
dGgoKSwgJnAsIHAgKyBidWZmZXJTaXplIC0gMSwgLyogc3RyaWN0ICovIHRydWUpOwogICAgICAg
ICAqcCsrID0gJ1wwJzsKICAgICAgICAgaWYgKHJlc3VsdCAhPSBXVEY6OlVuaWNvZGU6OmNvbnZl
cnNpb25PSyAmJiByZXN1bHQgIT0gV1RGOjpVbmljb2RlOjp0YXJnZXRFeGhhdXN0ZWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDJhNjQxODYxYmZjZWI3
Zjc4MTM1ZDZkY2M5M2JlYTRmNGFiMjQ3M2YuLjc1OGVlNGYxMmVmNTVmNWIxN2NhNDRlOTQ4Nzkw
Nzk1YzQwMWIwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0zMzczLDE4ICszMzczLDE4IEBAIGludDY0X3QgV2ViUGFnZVByb3h5OjpzcGVsbERvY3Vt
ZW50VGFnKCkKICNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogdm9pZCBXZWJQYWdlUHJv
eHk6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgY2hl
Y2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCiB7Ci0gICAg
cmVzdWx0cyA9IFRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaChzcGVsbERvY3VtZW50
VGFnKCksIHRleHQuY2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpLCBjaGVja2luZ1R5cGVzKTsK
KyAgICByZXN1bHRzID0gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKHNwZWxsRG9j
dW1lbnRUYWcoKSwgdGV4dC5kZXByZWNhdGVkQ2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpLCBj
aGVja2luZ1R5cGVzKTsKIH0KICNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hlY2tTcGVs
bGluZ09mU3RyaW5nKGNvbnN0IFN0cmluZyYgdGV4dCwgaW50MzJfdCYgbWlzc3BlbGxpbmdMb2Nh
dGlvbiwgaW50MzJfdCYgbWlzc3BlbGxpbmdMZW5ndGgpCiB7Ci0gICAgVGV4dENoZWNrZXI6OmNo
ZWNrU3BlbGxpbmdPZlN0cmluZyhzcGVsbERvY3VtZW50VGFnKCksIHRleHQuY2hhcmFjdGVycygp
LCB0ZXh0Lmxlbmd0aCgpLCBtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGluZ0xlbmd0aCk7
CisgICAgVGV4dENoZWNrZXI6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhzcGVsbERvY3VtZW50VGFn
KCksIHRleHQuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgbWlzc3BlbGxp
bmdMb2NhdGlvbiwgbWlzc3BlbGxpbmdMZW5ndGgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgU3RyaW5nJiB0ZXh0LCBWZWN0b3I8R3JhbW1hckRl
dGFpbD4mIGdyYW1tYXJEZXRhaWxzLCBpbnQzMl90JiBiYWRHcmFtbWFyTG9jYXRpb24sIGludDMy
X3QmIGJhZEdyYW1tYXJMZW5ndGgpCiB7Ci0gICAgVGV4dENoZWNrZXI6OmNoZWNrR3JhbW1hck9m
U3RyaW5nKHNwZWxsRG9jdW1lbnRUYWcoKSwgdGV4dC5jaGFyYWN0ZXJzKCksIHRleHQubGVuZ3Ro
KCksIGdyYW1tYXJEZXRhaWxzLCBiYWRHcmFtbWFyTG9jYXRpb24sIGJhZEdyYW1tYXJMZW5ndGgp
OworICAgIFRleHRDaGVja2VyOjpjaGVja0dyYW1tYXJPZlN0cmluZyhzcGVsbERvY3VtZW50VGFn
KCksIHRleHQuZGVwcmVjYXRlZENoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSwgZ3JhbW1hckRl
dGFpbHMsIGJhZEdyYW1tYXJMb2NhdGlvbiwgYmFkR3JhbW1hckxlbmd0aCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzcGVsbGluZ1VJSXNTaG93aW5nKGJvb2wmIGlzU2hvd2luZykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FbmNvZGVyQWRhcHRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuY3Bw
CmluZGV4IGRlZGFjNDNhNjBkYzA0YWUwMzBlYzY4ZTMwMmM4YmQ0MGIwMjg5ZTEuLjM4ZWMxZGM4
MTEzMjA0MGU0ZjY5ZTU4ODgxNTVhNzE0MWNmNWM2MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FbmNvZGVyQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0VuY29kZXJBZGFwdGVyLmNwcApAQCAtMTA4LDcgKzEw
OCw3IEBAIHZvaWQgRW5jb2RlckFkYXB0ZXI6OmVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIHZh
bHVlKQogCiAgICAgdWludDY0X3QgbGVuZ3RoSW5CeXRlcyA9IGxlbmd0aCAqIHNpemVvZihVQ2hh
cik7CiAgICAgbV9lbmNvZGVyIDw8IGxlbmd0aEluQnl0ZXM7Ci0gICAgbV9lbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih2YWx1ZS5j
aGFyYWN0ZXJzKCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBhbGlnbm9mKFVDaGFyKSk7Cisg
ICAgbV9lbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPih2YWx1ZS5kZXByZWNhdGVkQ2hhcmFjdGVycygpKSwgbGVuZ3RoICogc2l6ZW9m
KFVDaGFyKSwgYWxpZ25vZihVQ2hhcikpOwogfQogCiB9Cg==
</data>
<flag name="review"
          id="244825"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>