<?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>109071</bug_id>
          
          <creation_ts>2013-02-06 10:55:43 -0800</creation_ts>
          <short_desc>Rename isMainThread to isInWebCoreExecutionContext</short_desc>
          <delta_ts>2013-02-08 13:44:40 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="Pratik Solanki">psolanki</reporter>
          <assigned_to name="Pratik Solanki">psolanki</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>danw</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>hta</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>mitz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter+ews</cc>
    
    <cc>psolanki</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tommyw</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>826556</commentid>
    <comment_count>0</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2013-02-06 10:55:43 -0800</bug_when>
    <thetext>When USE(WEB_THREAD) is defined, we can have WebCore running on main thread or web thread. We should rename isMainThread to be clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826561</commentid>
    <comment_count>1</comment_count>
      <attachid>186877</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2013-02-06 10:58:45 -0800</bug_when>
    <thetext>Created attachment 186877
WIP patch for the EWS bots to chew on

First shot at the rename. Lets see what the EWS bots say.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826565</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 11:01:23 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826566</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 11:01:53 -0800</bug_when>
    <thetext>Attachment 186877 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreExports.def&apos;, u&apos;Source/JavaScriptCore/bytecode/SamplingTool.h&apos;, u&apos;Source/JavaScriptCore/heap/HeapTimer.cpp&apos;, u&apos;Source/WTF/wtf/MainThread.cpp&apos;, u&apos;Source/WTF/wtf/MainThread.h&apos;, u&apos;Source/WTF/wtf/mac/MainThreadMac.mm&apos;, u&apos;Source/WTF/wtf/text/StringStatics.cpp&apos;, u&apos;Source/WebCore/Modules/filesystem/LocalFileSystem.cpp&apos;, u&apos;Source/WebCore/Modules/filesystem/chromium/DraggedIsolatedFileSystem.cpp&apos;, u&apos;Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamRegistry.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AsyncAudioDecoder.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioBasicInspectorNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioContext.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioContext.h&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/ConvolverNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/OscillatorNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/RealtimeAnalyser.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/WaveShaperNode.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp&apos;, u&apos;Source/WebCore/bindings/js/DOMWrapperWorld.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptFunctionCall.cpp&apos;, u&apos;Source/WebCore/bindings/objc/WebScriptObject.mm&apos;, u&apos;Source/WebCore/bindings/v8/DOMDataStore.cpp&apos;, u&apos;Source/WebCore/bindings/v8/DOMWrapperWorld.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8GCController.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8Initializer.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8StringResource.cpp&apos;, u&apos;Source/WebCore/dom/ContainerNode.h&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/MutationObserver.cpp&apos;, u&apos;Source/WebCore/dom/Node.h&apos;, u&apos;Source/WebCore/dom/ScriptExecutionContext.cpp&apos;, u&apos;Source/WebCore/fileapi/ThreadableBlobRegistry.cpp&apos;, u&apos;Source/WebCore/html/DOMURL.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLTreeBuilder.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditor.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditorDelegate.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCounters.h&apos;, u&apos;Source/WebCore/inspector/InstrumentingAgents.cpp&apos;, u&apos;Source/WebCore/loader/CrossOriginPreflightResultCache.cpp&apos;, u&apos;Source/WebCore/loader/ResourceLoadScheduler.cpp&apos;, u&apos;Source/WebCore/loader/WorkerThreadableLoader.cpp&apos;, u&apos;Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp&apos;, u&apos;Source/WebCore/loader/cache/MemoryCache.cpp&apos;, u&apos;Source/WebCore/loader/icon/IconDatabase.cpp&apos;, u&apos;Source/WebCore/page/DOMWindow.cpp&apos;, u&apos;Source/WebCore/page/History.cpp&apos;, u&apos;Source/WebCore/page/MemoryInfo.cpp&apos;, u&apos;Source/WebCore/page/SecurityPolicy.cpp&apos;, u&apos;Source/WebCore/page/mac/EventHandlerMac.mm&apos;, u&apos;Source/WebCore/page/scrolling/ScrollingCoordinator.cpp&apos;, u&apos;Source/WebCore/page/scrolling/ScrollingTree.cpp&apos;, u&apos;Source/WebCore/page/scrolling/mac/ScrollingCoordinatorMac.mm&apos;, u&apos;Source/WebCore/platform/MIMETypeRegistry.cpp&apos;, u&apos;Source/WebCore/platform/ThreadGlobalData.cpp&apos;, u&apos;Source/WebCore/platform/ThreadTimers.cpp&apos;, u&apos;Source/WebCore/platform/TreeShared.h&apos;, u&apos;Source/WebCore/platform/audio/HRTFDatabaseLoader.cpp&apos;, u&apos;Source/WebCore/platform/chromium/support/WebMediaStreamSource.cpp&apos;, u&apos;Source/WebCore/platform/efl/MIMETypeRegistryEfl.cpp&apos;, u&apos;Source/WebCore/platform/graphics/Font.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FontFallbackList.h&apos;, u&apos;Source/WebCore/platform/graphics/FontFastPath.cpp&apos;, u&apos;Source/WebCore/platform/graphics/Image.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/ca/mac/TileCache.mm&apos;, u&apos;Source/WebCore/platform/graphics/ca/mac/WebTileCacheLayer.mm&apos;, u&apos;Source/WebCore/platform/graphics/ca/win/PlatformCALayerWinInternal.cpp&apos;, u&apos;Source/WebCore/platform/graphics/ca/win/WKCACFViewLayerTreeHost.cpp&apos;, u&apos;Source/WebCore/platform/graphics/cairo/GLContext.cpp&apos;, u&apos;Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gpu/SharedGraphicsContext3D.cpp&apos;, u&apos;Source/WebCore/platform/graphics/mac/FontCacheMac.mm&apos;, u&apos;Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm&apos;, u&apos;Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLCommon.cpp&apos;, u&apos;Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp&apos;, u&apos;Source/WebCore/platform/gtk/MIMETypeRegistryGtk.cpp&apos;, u&apos;Source/WebCore/platform/mac/Language.mm&apos;, u&apos;Source/WebCore/platform/mac/LocalizedStringsMac.cpp&apos;, u&apos;Source/WebCore/platform/mac/MIMETypeRegistryMac.mm&apos;, u&apos;Source/WebCore/platform/mac/WebCoreObjCExtras.mm&apos;, u&apos;Source/WebCore/platform/mac/WebVideoFullscreenController.mm&apos;, u&apos;Source/WebCore/platform/mediastream/blackberry/MediaStreamCenterBlackBerry.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/chromium/MediaStreamCenterChromium.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/gstreamer/MediaStreamCenterGStreamer.cpp&apos;, u&apos;Source/WebCore/platform/network/BlobRegistryImpl.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceHandle.cpp&apos;, u&apos;Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp&apos;, u&apos;Source/WebCore/platform/network/cf/DNSCFNet.cpp&apos;, u&apos;Source/WebCore/platform/network/cf/LoaderRunLoopCF.cpp&apos;, u&apos;Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp&apos;, u&apos;Source/WebCore/platform/network/cf/SocketStreamHandleCFNet.cpp&apos;, u&apos;Source/WebCore/platform/network/chromium/BlobRegistryProxy.cpp&apos;, u&apos;Source/WebCore/platform/network/soup/DNSSoup.cpp&apos;, u&apos;Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp&apos;, u&apos;Source/WebCore/platform/text/TextEncodingRegistry.cpp&apos;, u&apos;Source/WebCore/platform/text/cf/StringImplCF.cpp&apos;, u&apos;Source/WebCore/platform/win/LocalizedStringsWin.cpp&apos;, u&apos;Source/WebCore/platform/win/MIMETypeRegistryWin.cpp&apos;, u&apos;Source/WebCore/platform/wx/MimeTypeRegistryWx.cpp&apos;, u&apos;Source/WebCore/storage/StorageAreaImpl.cpp&apos;, u&apos;Source/WebCore/storage/StorageAreaSync.cpp&apos;, u&apos;Source/WebCore/storage/StorageNamespaceImpl.cpp&apos;, u&apos;Source/WebCore/storage/StorageSyncManager.cpp&apos;, u&apos;Source/WebCore/storage/StorageThread.cpp&apos;, u&apos;Source/WebCore/storage/StorageTracker.cpp&apos;, u&apos;Source/WebCore/workers/SharedWorker.cpp&apos;, u&apos;Source/WebCore/workers/Worker.cpp&apos;, u&apos;Source/WebCore/workers/WorkerMessagingProxy.cpp&apos;, u&apos;Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in&apos;, u&apos;Source/WebKit/chromium/src/WebKit.cpp&apos;, u&apos;Source/WebKit/chromium/src/WorkerFileSystemCallbacksBridge.cpp&apos;, u&apos;Source/WebKit/chromium/src/WorkerFileWriterCallbacksBridge.cpp&apos;, u&apos;Source/WebKit/gtk/webkit/webkitfavicondatabase.cpp&apos;, u&apos;Source/WebKit/mac/Misc/WebLocalizableStrings.mm&apos;, u&apos;Source/WebKit/mac/Storage/WebDatabaseManagerClient.mm&apos;, u&apos;Source/WebKit/mac/Storage/WebStorageTrackerClient.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebFrameNetworkingContext.mm&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebFrameNetworkingContext.cpp&apos;, u&apos;Source/WebKit/win/WebDatabaseManager.cpp&apos;, u&apos;Source/WebKit/win/WebKit.vcproj/WebKitExports.def.in&apos;, u&apos;Source/WebKit/win/WebKit.vcproj/WebKit_Cairo.def&apos;, u&apos;Source/WebKit/win/WebKit.vcproj/WebKit_Cairo_debug.def&apos;, u&apos;Source/WebKit2/NetworkProcess/HostRecord.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/SchedulableLoader.h&apos;, u&apos;Source/WebKit2/NetworkProcess/SyncNetworkResourceLoader.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm&apos;, u&apos;Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKPrintingView.mm&apos;, u&apos;Source/WebKit2/UIProcess/WebProcessProxy.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp&apos;, u&apos;Tools/Scripts/do-webcore-rename&apos;]&quot; exit_code: 1
Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:279:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp:343:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 149 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>826590</commentid>
    <comment_count>4</comment_count>
      <attachid>186877</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 11:29:49 -0800</bug_when>
    <thetext>Comment on attachment 186877
WIP patch for the EWS bots to chew on

Attachment 186877 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16395313</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826599</commentid>
    <comment_count>5</comment_count>
      <attachid>186877</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 11:36:42 -0800</bug_when>
    <thetext>Comment on attachment 186877
WIP patch for the EWS bots to chew on

Attachment 186877 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16395316</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826603</commentid>
    <comment_count>6</comment_count>
      <attachid>186877</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-06 11:38:00 -0800</bug_when>
    <thetext>Comment on attachment 186877
WIP patch for the EWS bots to chew on

Attachment 186877 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16396301</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826620</commentid>
    <comment_count>7</comment_count>
      <attachid>186877</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-02-06 12:02:19 -0800</bug_when>
    <thetext>Comment on attachment 186877
WIP patch for the EWS bots to chew on

Attachment 186877 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16401222</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826633</commentid>
    <comment_count>8</comment_count>
      <attachid>186893</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2013-02-06 12:21:20 -0800</bug_when>
    <thetext>Created attachment 186893
Take 2 for EWS

This fixes some compile issues and renames isMainThreadOrGCThread to isInWebCoreExecutionContextOrGCThread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826635</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 12:28:30 -0800</bug_when>
    <thetext>Attachment 186893 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreExports.def&apos;, u&apos;Source/JavaScriptCore/bytecode/SamplingTool.h&apos;, u&apos;Source/JavaScriptCore/heap/HeapTimer.cpp&apos;, u&apos;Source/WTF/wtf/MainThread.cpp&apos;, u&apos;Source/WTF/wtf/MainThread.h&apos;, u&apos;Source/WTF/wtf/chromium/MainThreadChromium.cpp&apos;, u&apos;Source/WTF/wtf/mac/MainThreadMac.mm&apos;, u&apos;Source/WTF/wtf/text/StringStatics.cpp&apos;, u&apos;Source/WebCore/Modules/filesystem/LocalFileSystem.cpp&apos;, u&apos;Source/WebCore/Modules/filesystem/chromium/DraggedIsolatedFileSystem.cpp&apos;, u&apos;Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamRegistry.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AsyncAudioDecoder.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioBasicInspectorNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioBufferSourceNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioContext.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioContext.h&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioScheduledSourceNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/ConvolverNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/DefaultAudioDestinationNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/OscillatorNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/RealtimeAnalyser.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/ScriptProcessorNode.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/WaveShaperNode.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp&apos;, u&apos;Source/WebCore/bindings/js/DOMWrapperWorld.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSInjectedScriptManager.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMainThreadExecState.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptFunctionCall.cpp&apos;, u&apos;Source/WebCore/bindings/objc/WebScriptObject.mm&apos;, u&apos;Source/WebCore/bindings/v8/DOMDataStore.cpp&apos;, u&apos;Source/WebCore/bindings/v8/DOMWrapperWorld.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8GCController.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8Initializer.cpp&apos;, u&apos;Source/WebCore/bindings/v8/V8StringResource.cpp&apos;, u&apos;Source/WebCore/dom/ContainerNode.h&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/MutationObserver.cpp&apos;, u&apos;Source/WebCore/dom/Node.h&apos;, u&apos;Source/WebCore/dom/ScriptExecutionContext.cpp&apos;, u&apos;Source/WebCore/fileapi/ThreadableBlobRegistry.cpp&apos;, u&apos;Source/WebCore/html/DOMURL.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLTreeBuilder.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditor.cpp&apos;, u&apos;Source/WebCore/html/parser/XSSAuditorDelegate.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCounters.h&apos;, u&apos;Source/WebCore/inspector/InstrumentingAgents.cpp&apos;, u&apos;Source/WebCore/loader/CrossOriginPreflightResultCache.cpp&apos;, u&apos;Source/WebCore/loader/ResourceLoadScheduler.cpp&apos;, u&apos;Source/WebCore/loader/WorkerThreadableLoader.cpp&apos;, u&apos;Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp&apos;, u&apos;Source/WebCore/loader/cache/MemoryCache.cpp&apos;, u&apos;Source/WebCore/loader/icon/IconDatabase.cpp&apos;, u&apos;Source/WebCore/page/DOMWindow.cpp&apos;, u&apos;Source/WebCore/page/History.cpp&apos;, u&apos;Source/WebCore/page/MemoryInfo.cpp&apos;, u&apos;Source/WebCore/page/SecurityPolicy.cpp&apos;, u&apos;Source/WebCore/page/mac/EventHandlerMac.mm&apos;, u&apos;Source/WebCore/page/scrolling/ScrollingCoordinator.cpp&apos;, u&apos;Source/WebCore/page/scrolling/ScrollingTree.cpp&apos;, u&apos;Source/WebCore/page/scrolling/mac/ScrollingCoordinatorMac.mm&apos;, u&apos;Source/WebCore/platform/MIMETypeRegistry.cpp&apos;, u&apos;Source/WebCore/platform/ThreadGlobalData.cpp&apos;, u&apos;Source/WebCore/platform/ThreadTimers.cpp&apos;, u&apos;Source/WebCore/platform/TreeShared.h&apos;, u&apos;Source/WebCore/platform/audio/HRTFDatabaseLoader.cpp&apos;, u&apos;Source/WebCore/platform/chromium/support/WebMediaStreamSource.cpp&apos;, u&apos;Source/WebCore/platform/efl/MIMETypeRegistryEfl.cpp&apos;, u&apos;Source/WebCore/platform/graphics/Font.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FontFallbackList.h&apos;, u&apos;Source/WebCore/platform/graphics/FontFastPath.cpp&apos;, u&apos;Source/WebCore/platform/graphics/Image.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/ca/mac/TileCache.mm&apos;, u&apos;Source/WebCore/platform/graphics/ca/mac/WebTileCacheLayer.mm&apos;, u&apos;Source/WebCore/platform/graphics/ca/win/PlatformCALayerWinInternal.cpp&apos;, u&apos;Source/WebCore/platform/graphics/ca/win/WKCACFViewLayerTreeHost.cpp&apos;, u&apos;Source/WebCore/platform/graphics/cairo/GLContext.cpp&apos;, u&apos;Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gpu/SharedGraphicsContext3D.cpp&apos;, u&apos;Source/WebCore/platform/graphics/mac/FontCacheMac.mm&apos;, u&apos;Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm&apos;, u&apos;Source/WebCore/platform/graphics/opengl/Extensions3DOpenGLCommon.cpp&apos;, u&apos;Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp&apos;, u&apos;Source/WebCore/platform/gtk/MIMETypeRegistryGtk.cpp&apos;, u&apos;Source/WebCore/platform/mac/Language.mm&apos;, u&apos;Source/WebCore/platform/mac/LocalizedStringsMac.cpp&apos;, u&apos;Source/WebCore/platform/mac/MIMETypeRegistryMac.mm&apos;, u&apos;Source/WebCore/platform/mac/WebCoreObjCExtras.mm&apos;, u&apos;Source/WebCore/platform/mediastream/blackberry/MediaStreamCenterBlackBerry.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/chromium/MediaStreamCenterChromium.cpp&apos;, u&apos;Source/WebCore/platform/mediastream/gstreamer/MediaStreamCenterGStreamer.cpp&apos;, u&apos;Source/WebCore/platform/network/BlobRegistryImpl.cpp&apos;, u&apos;Source/WebCore/platform/network/ResourceHandle.cpp&apos;, u&apos;Source/WebCore/platform/network/cf/CookieStorageCFNet.cpp&apos;, u&apos;Source/WebCore/platform/network/cf/DNSCFNet.cpp&apos;, u&apos;Source/WebCore/platform/network/cf/LoaderRunLoopCF.cpp&apos;, u&apos;Source/WebCore/platform/network/cf/NetworkStorageSessionCFNet.cpp&apos;, u&apos;Source/WebCore/platform/network/cf/SocketStreamHandleCFNet.cpp&apos;, u&apos;Source/WebCore/platform/network/chromium/BlobRegistryProxy.cpp&apos;, u&apos;Source/WebCore/platform/network/soup/DNSSoup.cpp&apos;, u&apos;Source/WebCore/platform/network/soup/NetworkStorageSessionSoup.cpp&apos;, u&apos;Source/WebCore/platform/text/TextEncodingRegistry.cpp&apos;, u&apos;Source/WebCore/platform/text/cf/StringImplCF.cpp&apos;, u&apos;Source/WebCore/platform/win/LocalizedStringsWin.cpp&apos;, u&apos;Source/WebCore/platform/win/MIMETypeRegistryWin.cpp&apos;, u&apos;Source/WebCore/platform/wx/MimeTypeRegistryWx.cpp&apos;, u&apos;Source/WebCore/storage/StorageAreaImpl.cpp&apos;, u&apos;Source/WebCore/storage/StorageAreaSync.cpp&apos;, u&apos;Source/WebCore/storage/StorageNamespaceImpl.cpp&apos;, u&apos;Source/WebCore/storage/StorageSyncManager.cpp&apos;, u&apos;Source/WebCore/storage/StorageThread.cpp&apos;, u&apos;Source/WebCore/storage/StorageTracker.cpp&apos;, u&apos;Source/WebCore/workers/SharedWorker.cpp&apos;, u&apos;Source/WebCore/workers/Worker.cpp&apos;, u&apos;Source/WebCore/workers/WorkerMessagingProxy.cpp&apos;, u&apos;Source/WebKit/WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in&apos;, u&apos;Source/WebKit/chromium/src/WebKit.cpp&apos;, u&apos;Source/WebKit/chromium/src/WorkerFileSystemCallbacksBridge.cpp&apos;, u&apos;Source/WebKit/chromium/src/WorkerFileWriterCallbacksBridge.cpp&apos;, u&apos;Source/WebKit/gtk/webkit/webkitfavicondatabase.cpp&apos;, u&apos;Source/WebKit/mac/Misc/WebLocalizableStrings.mm&apos;, u&apos;Source/WebKit/mac/Storage/WebDatabaseManagerClient.mm&apos;, u&apos;Source/WebKit/mac/Storage/WebStorageTrackerClient.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebFrameNetworkingContext.mm&apos;, u&apos;Source/WebKit/win/WebCoreSupport/WebFrameNetworkingContext.cpp&apos;, u&apos;Source/WebKit/win/WebDatabaseManager.cpp&apos;, u&apos;Source/WebKit/win/WebKit.vcproj/WebKitExports.def.in&apos;, u&apos;Source/WebKit/win/WebKit.vcproj/WebKit_Cairo.def&apos;, u&apos;Source/WebKit/win/WebKit.vcproj/WebKit_Cairo_debug.def&apos;, u&apos;Source/WebKit2/NetworkProcess/HostRecord.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoadScheduler.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/SchedulableLoader.h&apos;, u&apos;Source/WebKit2/NetworkProcess/SyncNetworkResourceLoader.cpp&apos;, u&apos;Source/WebKit2/NetworkProcess/mac/RemoteNetworkingContext.mm&apos;, u&apos;Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm&apos;, u&apos;Source/WebKit2/UIProcess/API/gtk/WebKitFaviconDatabase.cpp&apos;, u&apos;Source/WebKit2/UIProcess/API/mac/WKPrintingView.mm&apos;, u&apos;Source/WebKit2/UIProcess/WebProcessProxy.cpp&apos;, u&apos;Source/WebKit2/WebProcess/Cookies/WebCookieManager.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/EventDispatcher.cpp&apos;, u&apos;Tools/Scripts/do-webcore-rename&apos;]&quot; exit_code: 1
Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:279:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 1 in 149 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>826636</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-06 12:29:13 -0800</bug_when>
    <thetext>I&apos;m not sure I understand this new threading model.  Would you be willing to explain it on webkit-dev?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826672</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-06 12:52:02 -0800</bug_when>
    <thetext>o_O</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826673</commentid>
    <comment_count>12</comment_count>
      <attachid>186893</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-06 12:53:27 -0800</bug_when>
    <thetext>Comment on attachment 186893
Take 2 for EWS

Pending resolution of Comment #10.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826765</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-02-06 14:38:22 -0800</bug_when>
    <thetext>Can this be named isInWebCoreExecutionThread?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826770</commentid>
    <comment_count>14</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-06 14:41:36 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; I&apos;m not sure I understand this new threading model.  Would you be willing to explain it on webkit-dev?

I know this looks a little scary, but there is really not much threading involved other than some message passing in the WebKit layer. :)

There are two threads, one for WebKit (the Web Thread) and the main thread where the UI lives. The two threads can enter WebKit, but not simultaneously (locking at the event loop, not in WebCore).

The biggest changes are really in assertions. Many of them assume WebCore runs in the main thread, while on iOS you can be either one of two threads.

The change is mostly transparent for WebKit. Except assertions and a few details, the code runs just like on Mac. We want this to be mostly an implementation detail, not something people have to consider extensively when making changes.
How do you suggest we can make this change as painless a possible?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826820</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-06 15:46:45 -0800</bug_when>
    <thetext>Maybe we should change what isMainThread means on iOS rather than renaming it everywhere?  From WebCore&apos;s point of view, it sounds like there&apos;s still a main thread...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826900</commentid>
    <comment_count>16</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2013-02-06 17:01:07 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Maybe we should change what isMainThread means on iOS rather than renaming it everywhere?

Sure. But that would have been confusing on iOS. Which is why we wanted to come up with a function name that works for both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826916</commentid>
    <comment_count>17</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2013-02-06 17:34:44 -0800</bug_when>
    <thetext>Ok. So for the moment we will just change isMainThread to have an PLATFORM(IOS) part. It would be good to have a name for isMainThread that can work for both though. But that can be done later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826962</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-06 18:21:03 -0800</bug_when>
    <thetext>Thanks.  I think it&apos;s better to hide this information from WebCore as much as possible, including avoiding mysterious names like &quot;WebCore execution context&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828643</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-08 09:49:04 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; I think it&apos;s better to hide this information from WebCore as much as possible, including avoiding mysterious names like &quot;WebCore execution context&quot;.

Adam, I wish we could talk about this in person. I’m not sure I can do this justice in a bug comment.

I do want to shield WebCore from confusing concepts, but I think we can make things better by making some change here. The issue is that there are two different concepts.

A)

One is checking that it’s safe to use single-threaded WebCore data structures. Today, we write this:

ASSERT(isMainThread());

But iOS WebKit, one of the older WebKit ports, but one that’s not integrated in the repository yet, has a different policy. It would be good if there was a clearer way to indicate that we want to check whether we are on a thread where it’s safe to run WebKit.

ASSERT(isSafeToAccessWebCoreDataStructures());

Or something brief and clear.

B)

The second concept is that there is a “main thread” and you can do things like run code on that main thread. This is a basic WTF concept, and not one defined at the higher WebCore level. Mechanically checking if this is the that special thread is different than asking if it’s safe to use WebCore data structures. I think it’s this concept (B) that deserves the name isMainThread(), not the first.

The current way of doing our WebCore data structure assertions makes the intent unclear at many call sites because it’s too specific and mechanical.

I think this new threading assertion might belong in some higher level than WTF, although I suppose that may be impractical because the “single thread WebCore” concept may indeed already be present at the WTF level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828648</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-08 09:54:51 -0800</bug_when>
    <thetext>It&apos;s not clear to me that running WebCore on multiple interlocked threads is a good idea.  That seems like a pretty major change to WebCore&apos;s architecture.  Is that something that&apos;s up for discussion?

&gt; ASSERT(isSafeToAccessWebCoreDataStructures());

The problem with names like these is that they&apos;re confusing.  WebCore itself uses multiple threads (e.g., for databases, workers, and likely more things in the future).  Those threads are also part of WebCore and have data structures.  Presumably it&apos;s safe to access those WebCore data structures on background threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828652</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-08 09:58:10 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; It&apos;s not clear to me that running WebCore on multiple interlocked threads is a good idea.  That seems like a pretty major change to WebCore&apos;s architecture.  Is that something that&apos;s up for discussion?

I agree that it’s not something I’d do if I was starting a project now.

In the iOS context, it’s fantastic for discussion as a possibly multi-year major architecture change, but if we take a hard line on this, then we won’t have the iOS port in the tree for years, and I think it would be good if we do. iOS WebKit has worked this way for the entire history of iPhone, so it’s not a change that can be made easily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828655</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-08 10:00:58 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; &gt; ASSERT(isSafeToAccessWebCoreDataStructures());
&gt; 
&gt; The problem with names like these is that they&apos;re confusing. WebCore itself uses multiple threads (e.g., for databases, workers, and likely more things in the future). Those threads are also part of WebCore and have data structures. Presumably it&apos;s safe to access those WebCore data structures on background threads.

I understand that it’s hard to find a good name for the concept. I understand that you are moving the WebCore threading model forward, too, and this might be an unwanted distraction during that process.

That makes clear that this is a difficult problem to be solved.

I think where you and I may differ is on whether a good solution to the problem would be valuable to the WebKit project. Is there some way I convince you of the value of fitting an important existing port of WebKit into our tree in as clean as possible a way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828745</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-08 13:44:40 -0800</bug_when>
    <thetext>I replied on webkit-dev.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186877</attachid>
            <date>2013-02-06 10:58:45 -0800</date>
            <delta_ts>2013-02-06 12:21:20 -0800</delta_ts>
            <desc>WIP patch for the EWS bots to chew on</desc>
            <filename>109071.patch</filename>
            <type>text/plain</type>
            <size>176489</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVFeHBvcnRzLmRlZiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmVFeHBvcnRzLmRlZgppbmRleCA5NDE5NWMxLi42YWJhNGU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlRXhwb3J0cy5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUV4cG9ydHMuZGVmCkBA
IC0yNzYsNyArMjc2LDcgQEAgRVhQT1JUUwogICAgID9pc0J1c3lASGVhcEBKU0NAQFFBRV9OWFoK
ICAgICA/aXNEYXRhRGVzY3JpcHRvckBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQkVfTlhaCiAg
ICAgP2lzSG9zdEZ1bmN0aW9uTm9uSW5saW5lQEpTRnVuY3Rpb25ASlNDQEBBQkVfTlhaCi0gICAg
P2lzTWFpblRocmVhZEBXVEZAQFlBX05YWgorICAgID9pc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHRAV1RGQEBZQV9OWFoKICAgICA/aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHNAV2Vha0hhbmRs
ZU93bmVyQEpTQ0BAVUFFX05WPyRIYW5kbGVAVzRVbmtub3duQEpTQ0BAQDJAUEFYQUFWU2xvdFZp
c2l0b3JAMkBAWgogICAgID9pc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb25ASlNDQEBZQV9O
VkpTVmFsdWVAMUBAWgogICAgID9pc1ZhbGlkQWxsb2NhdGlvbkBIZWFwQEpTQ0BAQUFFX05JQFoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlRXhwb3J0R2VuZXJhdG9yL0phdmFTY3JpcHRDb3JlRXhwb3J0cy5kZWYu
aW4gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZUV4cG9ydEdlbmVyYXRvci9KYXZhU2NyaXB0Q29yZUV4cG9ydHMuZGVmLmluCmluZGV4
IGY4ZjQwNTQuLjAwNGY0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlRXhwb3J0R2VuZXJhdG9yL0phdmFTY3Jp
cHRDb3JlRXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVFeHBvcnRHZW5lcmF0b3IvSmF2YVNjcmlwdENv
cmVFeHBvcnRzLmRlZi5pbgpAQCAtMjc2LDcgKzI3Niw3IEBAIEVYUE9SVFMKICAgICA/aXNCdXN5
QEhlYXBASlNDQEBRQUVfTlhaDQogICAgID9pc0RhdGFEZXNjcmlwdG9yQFByb3BlcnR5RGVzY3Jp
cHRvckBKU0NAQFFCRV9OWFoNCiAgICAgP2lzSG9zdEZ1bmN0aW9uTm9uSW5saW5lQEpTRnVuY3Rp
b25ASlNDQEBBQkVfTlhaDQotICAgID9pc01haW5UaHJlYWRAV1RGQEBZQV9OWFoNCisgICAgP2lz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dEBXVEZAQFlBX05YWg0KICAgICA/aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHNAV2Vha0hhbmRsZU93bmVyQEpTQ0BAVUFFX05WPyRIYW5kbGVAVzRVbmtu
b3duQEpTQ0BAQDJAUEFYQUFWU2xvdFZpc2l0b3JAMkBAWg0KICAgICA/aXNUZXJtaW5hdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uQEpTQ0BAWUFfTlZKU1ZhbHVlQDFAQFoNCiAgICAgP2lzVmFsaWRBbGxv
Y2F0aW9uQEhlYXBASlNDQEBBQUVfTklAWg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlRXhwb3J0cy5kZWYgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZUV4cG9ydHMuZGVmCmluZGV4IGE2NDFjOTkuLjNjODMwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlRXhwb3J0
cy5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmVFeHBvcnRzLmRlZgpAQCAtMjc1LDcgKzI3NSw3IEBAIEVYUE9SVFMKICAg
ICA/aXNCdXN5QEhlYXBASlNDQEBRQUVfTlhaCiAgICAgP2lzRGF0YURlc2NyaXB0b3JAUHJvcGVy
dHlEZXNjcmlwdG9yQEpTQ0BAUUJFX05YWgogICAgID9pc0hvc3RGdW5jdGlvbk5vbklubGluZUBK
U0Z1bmN0aW9uQEpTQ0BAQUJFX05YWgotICAgID9pc01haW5UaHJlYWRAV1RGQEBZQV9OWFoKKyAg
ICA/aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0QFdURkBAWUFfTlhaCiAgICAgP2lzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzQFdlYWtIYW5kbGVPd25lckBKU0NAQFVBRV9OVj8kSGFuZGxlQFc0
VW5rbm93bkBKU0NAQEAyQFBBWEFBVlNsb3RWaXNpdG9yQDJAQFoKICAgICA/aXNUZXJtaW5hdGVk
RXhlY3V0aW9uRXhjZXB0aW9uQEpTQ0BAWUFfTlZKU1ZhbHVlQDFAQFoKICAgICA/aXNWYWxpZEFs
bG9jYXRpb25ASGVhcEBKU0NAQEFBRV9OSUBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU2FtcGxpbmdUb29sLmgKaW5kZXggNmM5ZGY2Mi4uNzIxMzZiNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaApAQCAtMTA0LDcgKzEwNCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBsaWZldGltZSBvZiB0aGUgcHJvY2VzcyBh
bmQgaXMgaW1tdXRhYmxlLgogICAgICAgICBTYW1wbGluZ1JlZ2lvbihjb25zdCBjaGFyKiBuYW1l
KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAg
ICAgICBpZiAoIWlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAgICAgICAg
ICAgbV9uYW1lID0gMDsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAppbmRleCBkNjllZTk2Li5hNjBh
OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5jcHAKQEAgLTExMyw3
ICsxMTMsNyBAQCBIZWFwVGltZXI6OkhlYXBUaW1lcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEp
CiAgICAgLCBtX3RpbWVyKHRoaXMsICZIZWFwVGltZXI6OnRpbWVyRGlkRmlyZSkKIHsKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IEhlYXBUaW1lciBmb3Igb3RoZXIgdGhyZWFkcy4KLSAgICBpZiAo
V1RGOjppc01haW5UaHJlYWQoKSAmJiAhbV90aW1lci50cnlDcmVhdGVDbGllbnQoKSkKKyAgICBp
ZiAoV1RGOjppc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSAmJiAhbV90aW1lci50cnlDcmVh
dGVDbGllbnQoKSkKICAgICAgICAgQ1JBU0goKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWFpblRocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRl
eCBmODY4NmFhLi5lMmZlYjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFk
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtMTM3LDcgKzEzNyw3
IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4UnVuTG9vcFN1c3BlbnNpb25UaW1lID0gMC4wNTsK
IAogdm9pZCBkaXNwYXRjaEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKCkKIHsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAKICAgICBpZiAoY2FsbGJhY2tzUGF1c2VkKQogICAgICAgICByZXR1cm47CkBAIC0xODcs
NyArMTg3LDcgQEAgdm9pZCBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChNYWluVGhyZWFkRnVuY3Rp
b24qIGZ1bmN0aW9uLCB2b2lkKiBjb250ZXh0KQogewogICAgIEFTU0VSVChmdW5jdGlvbik7CiAK
LSAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICBpZiAoaXNJbldlYkNvcmVFeGVjdXRpb25D
b250ZXh0KCkpIHsKICAgICAgICAgZnVuY3Rpb24oY29udGV4dCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBjYWxsT25NYWluVGhyZWFkKGNvbnN0IEZ1
bmN0aW9uPHZvaWQgKCk+JiBmdW5jdGlvbikKIAogdm9pZCBzZXRNYWluVGhyZWFkQ2FsbGJhY2tz
UGF1c2VkKGJvb2wgcGF1c2VkKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIGlmIChjYWxsYmFj
a3NQYXVzZWQgPT0gcGF1c2VkKQogICAgICAgICByZXR1cm47CkBAIC0yNDUsNyArMjQ1LDcgQEAg
dm9pZCBzZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKGJvb2wgcGF1c2VkKQogfQogCiAjaWYg
IVBMQVRGT1JNKE1BQykKLWJvb2wgaXNNYWluVGhyZWFkKCkKK2Jvb2wgaXNJbldlYkNvcmVFeGVj
dXRpb25Db250ZXh0KCkKIHsKICAgICByZXR1cm4gY3VycmVudFRocmVhZCgpID09IG1haW5UaHJl
YWRJZGVudGlmaWVyOwogfQpAQCAtMjc5LDEzICsyNzksMTMgQEAgYm9vbCBpc01haW5UaHJlYWRP
ckdDVGhyZWFkKCkKICAgICBpZiAoaXNHQ1RocmVhZC0+aXNTZXQoKSAmJiAqKmlzR0NUaHJlYWQp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGlzTWFpblRocmVhZCgpOworICAg
IHJldHVybiBpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KICNlbGlmIFBMQVRGT1JN
KE1BQykKIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgSmF2YVNjcmlwdENvcmUuZXhwIGRv
ZXNuJ3Qgc3VwcG9ydCBwcmVwcm9jZXNzb3IgbWFjcm9zLgogYm9vbCBpc01haW5UaHJlYWRPckdD
VGhyZWFkKCkKIHsKLSAgICByZXR1cm4gaXNNYWluVGhyZWFkKCk7CisgICAgcmV0dXJuIGlzSW5X
ZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL01haW5UaHJlYWQuaCBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuaAppbmRl
eCA5YTQwYWQ0Li4xM2NkNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFk
LmgKKysrIGIvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCkBAIC00OSw3ICs0OSw3IEBAIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIGNhbGxPbk1haW5UaHJlYWQoY29uc3QgRnVuY3Rpb248dm9p
ZCAoKT4mKTsKICAgICAKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldE1haW5UaHJlYWRDYWxs
YmFja3NQYXVzZWQoYm9vbCBwYXVzZWQpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc01h
aW5UaHJlYWQoKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIGlzSW5XZWJDb3JlRXhlY3V0aW9u
Q29udGV4dCgpOwogCiB2b2lkIGluaXRpYWxpemVHQ1RocmVhZHMoKTsKIApAQCAtNTksNyArNTks
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc01haW5UaHJlYWRPckdDVGhyZWFkKCk7CiAj
ZWxpZiBQTEFURk9STShNQUMpCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc01haW5UaHJlYWRP
ckdDVGhyZWFkKCk7CiAjZWxzZQotaW5saW5lIGJvb2wgaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgp
IHsgcmV0dXJuIGlzTWFpblRocmVhZCgpOyB9CitpbmxpbmUgYm9vbCBpc01haW5UaHJlYWRPckdD
VGhyZWFkKCkgeyByZXR1cm4gaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCk7IH0KICNlbmRp
ZgogCiAvLyBOT1RFOiB0aGVzZSBmdW5jdGlvbnMgYXJlIGludGVybmFsIHRvIHRoZSBjYWxsT25N
YWluVGhyZWFkIGltcGxlbWVudGF0aW9uLgpAQCAtODEsNiArODEsNiBAQCB1c2luZyBXVEY6OmNh
bGxPbk1haW5UaHJlYWQ7CiB1c2luZyBXVEY6OmNhbGxPbk1haW5UaHJlYWRBbmRXYWl0OwogdXNp
bmcgV1RGOjpjYW5jZWxDYWxsT25NYWluVGhyZWFkOwogdXNpbmcgV1RGOjpzZXRNYWluVGhyZWFk
Q2FsbGJhY2tzUGF1c2VkOwotdXNpbmcgV1RGOjppc01haW5UaHJlYWQ7Cit1c2luZyBXVEY6Omlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dDsKIHVzaW5nIFdURjo6aXNNYWluVGhyZWFkT3JHQ1Ro
cmVhZDsKICNlbmRpZiAvLyBNYWluVGhyZWFkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L21hYy9NYWluVGhyZWFkTWFjLm1tIGIvU291cmNlL1dURi93dGYvbWFjL01haW5UaHJlYWRNYWMu
bW0KaW5kZXggNWE4MmY0MC4uNWE1Njg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvbWFj
L01haW5UaHJlYWRNYWMubW0KKysrIGIvU291cmNlL1dURi93dGYvbWFjL01haW5UaHJlYWRNYWMu
bW0KQEAgLTg1LDYgKzg1LDE3IEBAIHZvaWQgaW5pdGlhbGl6ZU1haW5UaHJlYWRUb1Byb2Nlc3NN
YWluVGhyZWFkUGxhdGZvcm0oKQogICAgIGluaXRpYWxpemVHQ1RocmVhZHMoKTsKIH0KIAorc3Rh
dGljIGJvb2wgaXNNYWluVGhyZWFkKCkKK3sKKyAgICBpZiAobWFpblRocmVhZEVzdGFibGlzaGVk
QXNQdGhyZWFkTWFpbikgeworICAgICAgICBBU1NFUlQoIW1haW5UaHJlYWRQdGhyZWFkKTsKKyAg
ICAgICAgcmV0dXJuIHB0aHJlYWRfbWFpbl9ucCgpOworICAgIH0KKworICAgIEFTU0VSVChtYWlu
VGhyZWFkUHRocmVhZCk7CisgICAgcmV0dXJuIHB0aHJlYWRfZXF1YWwocHRocmVhZF9zZWxmKCks
IG1haW5UaHJlYWRQdGhyZWFkKTsKK30KKwogc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxv
b3BUaW1lclJlZiB0aW1lciwgdm9pZCopCiB7CiAgICAgQ0ZSZWxlYXNlKHRpbWVyKTsKQEAgLTEy
MiwxNSArMTMzLDEzIEBAIHZvaWQgc2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmVh
ZCgpCiAgICAgW3N0YXRpY01haW5UaHJlYWRDYWxsZXIgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3Rv
cihjYWxsKSBvblRocmVhZDptYWluVGhyZWFkTlNUaHJlYWQgd2l0aE9iamVjdDpuaWwgd2FpdFVu
dGlsRG9uZTpOT107CiB9CiAKLWJvb2wgaXNNYWluVGhyZWFkKCkKK2Jvb2wgaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkKIHsKLSAgICBpZiAobWFpblRocmVhZEVzdGFibGlzaGVkQXNQdGhy
ZWFkTWFpbikgewotICAgICAgICBBU1NFUlQoIW1haW5UaHJlYWRQdGhyZWFkKTsKLSAgICAgICAg
cmV0dXJuIHB0aHJlYWRfbWFpbl9ucCgpOwotICAgIH0KLQotICAgIEFTU0VSVChtYWluVGhyZWFk
UHRocmVhZCk7Ci0gICAgcmV0dXJuIHB0aHJlYWRfZXF1YWwocHRocmVhZF9zZWxmKCksIG1haW5U
aHJlYWRQdGhyZWFkKTsKKyNpZiBVU0UoV0VCX1RIUkVBRCkKKyAgICByZXR1cm4gaXNNYWluVGhy
ZWFkKCkgfHwgcHRocmVhZF9tYWluX25wKCk7CisjZWxzZQorICAgIHJldHVybiBpc01haW5UaHJl
YWQoKTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1N0YXRpY3MuY3BwCmluZGV4IDJlMWI5NTUuLmYyZTM2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdTdGF0aWNzLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIEF0b21pY1N0cmluZzo6
aW5pdCgpCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAgICAgaWYgKCFpbml0aWFsaXpl
ZCkgewogICAgICAgICAvLyBJbml0aWFsaXphdGlvbiBpcyBub3QgdGhyZWFkIHNhZmUsIHNvIHRo
aXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQgZmlyc3QuCi0g
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChpc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICAgICAgLy8gVXNlIHBsYWNlbWVudCBuZXcgdG8g
aW5pdGlhbGl6ZSB0aGUgZ2xvYmFscy4KICAgICAgICAgbmV3IChOb3ROdWxsLCAodm9pZCopJm51
bGxBdG9tKSBBdG9taWNTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZpbGVzeXN0ZW0vTG9jYWxGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0ZW0uY3BwCmluZGV4IGQ1MzRiMjAuLmYzZDkyZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVTeXN0
ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZpbGVT
eXN0ZW0uY3BwCkBAIC01Niw3ICs1Niw3IEBAIExvY2FsRmlsZVN5c3RlbSogTG9jYWxGaWxlU3lz
dGVtOjpzX2luc3RhbmNlID0gMDsKIHZvaWQgTG9jYWxGaWxlU3lzdGVtOjppbml0aWFsaXplTG9j
YWxGaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgYmFzZVBhdGgpCiB7CiAgICAgLy8gRklYTUU6IFNo
b3VsZCBpbml0aWFsaXplIHRoZSBxdW90YSBzZXR0aW5ncyBhcyB3ZWxsLgotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgp
KTsKICAgICBBU1NFUlQoIXNfaW5zdGFuY2UpOwogICAgIGlmIChzX2luc3RhbmNlKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0v
Y2hyb21pdW0vRHJhZ2dlZElzb2xhdGVkRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZpbGVzeXN0ZW0vY2hyb21pdW0vRHJhZ2dlZElzb2xhdGVkRmlsZVN5c3RlbS5jcHAK
aW5kZXggNDM3MjYxNS4uNTI2ZGY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9maWxlc3lzdGVtL2Nocm9taXVtL0RyYWdnZWRJc29sYXRlZEZpbGVTeXN0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9jaHJvbWl1bS9EcmFnZ2VkSXNvbGF0
ZWRGaWxlU3lzdGVtLmNwcApAQCAtNTgsNyArNTgsNyBAQCBET01GaWxlU3lzdGVtKiBEcmFnZ2Vk
SXNvbGF0ZWRGaWxlU3lzdGVtOjpnZXRET01GaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eAogLy8gc3RhdGljCiBjb25zdCBjaGFyKiBEcmFnZ2VkSXNvbGF0ZWRGaWxlU3lzdGVtOjpzdXBw
bGVtZW50TmFtZSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQo
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHJldHVybiAiRHJhZ2dlZElzb2xh
dGVkRmlsZVN5c3RlbSI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwCmluZGV4IDFjNjI2NzQuLmEz
Zjk0NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2VSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcApAQCAtNDEsMTQgKzQxLDE0IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogTWVkaWFTb3VyY2VSZWdpc3RyeSYgTWVkaWFTb3VyY2VSZWdpc3RyeTo6
cmVnaXN0cnkoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE1l
ZGlhU291cmNlUmVnaXN0cnksIGluc3RhbmNlLCAoKSk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwog
fQogCiB2b2lkIE1lZGlhU291cmNlUmVnaXN0cnk6OnJlZ2lzdGVyTWVkaWFTb3VyY2VVUkwoY29u
c3QgS1VSTCYgdXJsLCBQYXNzUmVmUHRyPE1lZGlhU291cmNlPiBzb3VyY2UpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogCiAgICAgc291cmNlLT5zZXRQZW5kaW5nQWN0aXZpdHkoc291cmNlLmdldCgpKTsK
IApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIE1lZGlhU291cmNlUmVnaXN0cnk6OnJlZ2lzdGVyTWVk
aWFTb3VyY2VVUkwoY29uc3QgS1VSTCYgdXJsLCBQYXNzUmVmUHRyPE1lZAogCiB2b2lkIE1lZGlh
U291cmNlUmVnaXN0cnk6OnVucmVnaXN0ZXJNZWRpYVNvdXJjZVVSTChjb25zdCBLVVJMJiB1cmwp
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8TWVkaWFTb3Vy
Y2U+ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX21lZGlhU291cmNlcy5maW5kKHVybC5zdHJpbmcoKSk7
CiAgICAgaWYgKGl0ZXIgPT0gbV9tZWRpYVNvdXJjZXMuZW5kKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyTWVk
aWFTb3VyY2VVUkwoY29uc3QgS1VSTCYgdXJsKQogCiBNZWRpYVNvdXJjZSogTWVkaWFTb3VyY2VS
ZWdpc3RyeTo6bG9va3VwTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIHJldHVybiBtX21lZGlhU291cmNlcy5nZXQodXJsKS5nZXQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1SZWdpc3RyeS5jcHAKaW5kZXggODQzZWFhYi4uMzM4ZGIzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0
cnkuY3BwCkBAIC0zNiwyNiArMzYsMjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTWVkaWFTdHJl
YW1SZWdpc3RyeSYgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKQogewogICAgIC8vIFNp
bmNlIFdlYldvcmtlcnMgY2Fubm90IG9idGFpbiBNZWRpYVNvdXJjZSBvYmplY3RzLCB3ZSBzaG91
bGQgYmUgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKE1lZGlhU3RyZWFtUmVnaXN0cnksIGluc3RhbmNlLCAoKSk7CiAgICAgcmV0dXJu
IGluc3RhbmNlOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdGVyTWVkaWFT
dHJlYW1VUkwoY29uc3QgS1VSTCYgdXJsLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0p
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIG1fc3RyZWFtRGVzY3JpcHRvcnMuc2V0KHVybC5zdHJp
bmcoKSwgc3RyZWFtLT5kZXNjcmlwdG9yKCkpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtUmVnaXN0
cnk6OnVucmVnaXN0ZXJNZWRpYVN0cmVhbVVSTChjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIG1fc3RyZWFtRGVzY3JpcHRvcnMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CiB9
CiAKIE1lZGlhU3RyZWFtRGVzY3JpcHRvciogTWVkaWFTdHJlYW1SZWdpc3RyeTo6bG9va3VwTWVk
aWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsK
ICAgICByZXR1cm4gbV9zdHJlYW1EZXNjcmlwdG9ycy5nZXQodXJsKS5nZXQoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVy
LmNwcAppbmRleCBmMDBiZDFhLi5kN2RhZTQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKQEAgLTU1LDcgKzU1LDcg
QEAgQXN5bmNBdWRpb0RlY29kZXI6On5Bc3luY0F1ZGlvRGVjb2RlcigpCiAKIHZvaWQgQXN5bmNB
dWRpb0RlY29kZXI6OmRlY29kZUFzeW5jKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNh
bXBsZVJhdGUsIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNr
LCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25D
b250ZXh0KCkpOwogICAgIEFTU0VSVChhdWRpb0RhdGEpOwogICAgIGlmICghYXVkaW9EYXRhKQog
ICAgICAgICByZXR1cm47CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgQXN5bmNBdWRpb0RlY29kZXI6
OnRocmVhZEVudHJ5KHZvaWQqIHRocmVhZERhdGEpCiAKIHZvaWQgQXN5bmNBdWRpb0RlY29kZXI6
OnJ1bkxvb3AoKQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCgh
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgewogICAgICAgICAvLyBXYWl0
IGZvciB1bnRpbCB3ZSBoYXZlIG1fdGhyZWFkSUQgZXN0YWJsaXNoZWQgYmVmb3JlIHN0YXJ0aW5n
IHRoZSBydW4gbG9vcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKaW5kZXggZDA2YzEyNS4uZWI3NzRh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2lj
SW5zcGVjdG9yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBBdWRpb0Jh
c2ljSW5zcGVjdG9yTm9kZTo6cHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogCiB2
b2lkIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpjb25uZWN0KEF1ZGlvTm9kZSogZGVzdGluYXRp
b24sIHVuc2lnbmVkIG91dHB1dEluZGV4LCB1bnNpZ25lZCBpbnB1dEluZGV4LCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0lu
V2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2Nr
ZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBBdWRpb0Jhc2lj
SW5zcGVjdG9yTm9kZTo6Y29ubmVjdChBdWRpb05vZGUqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBv
dXRwdXRJbmQKIAogdm9pZCBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6ZGlzY29ubmVjdCh1bnNp
Z25lZCBvdXRwdXRJbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwog
CiAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNl
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291
cmNlTm9kZS5jcHAKaW5kZXggNDViMjU3Yi4uMTZlNTY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcApA
QCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpyZXNldCgpCiAK
IGJvb2wgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRCdWZmZXIoQXVkaW9CdWZmZXIqIGJ1ZmZl
cikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgCiAgICAgLy8gVGhlIGNvbnRleHQgbXVzdCBiZSBs
b2NrZWQgc2luY2UgY2hhbmdpbmcgdGhlIGJ1ZmZlciBjYW4gcmUtY29uZmlndXJlIHRoZSBudW1i
ZXIgb2YgY2hhbm5lbHMgdGhhdCBhcmUgb3V0cHV0LgogICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xv
Y2tlciBjb250ZXh0TG9ja2VyKGNvbnRleHQoKSk7CkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBB
dWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0R3JhaW4oZG91YmxlIHdoZW4sIGRvdWJsZSBncmFp
bk9mZnNldCkKIAogdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0R3JhaW4oZG91Ymxl
IHdoZW4sIGRvdWJsZSBncmFpbk9mZnNldCwgZG91YmxlIGdyYWluRHVyYXRpb24pCiB7Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25D
b250ZXh0KCkpOwogCiAgICAgaWYgKG1fcGxheWJhY2tTdGF0ZSAhPSBVTlNDSEVEVUxFRF9TVEFU
RSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDY0ODgyN2YuLjAyM2IxMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTExMSw3ICsx
MTEsNyBAQCBQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gQXVkaW9Db250ZXh0OjpjcmVhdGUoRG9j
dW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJgogICAgIFVOVVNFRF9QQVJBTShlYyk7CiAK
ICAgICBBU1NFUlQoZG9jdW1lbnQpOwotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBpZiAoc19oYXJkd2Fy
ZUNvbnRleHRDb3VudCA+PSBNYXhIYXJkd2FyZUNvbnRleHRzKQogICAgICAgICByZXR1cm4gMDsK
IApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpjbGVhcigpCiAKIHZvaWQg
QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIGlm
ICghbV9pc0luaXRpYWxpemVkKQogICAgICAgICByZXR1cm47CkBAIC0zNDMsNyArMzQzLDcgQEAg
dm9pZCBBdWRpb0NvbnRleHQ6OmRlY29kZUF1ZGlvRGF0YShBcnJheUJ1ZmZlciogYXVkaW9EYXRh
LCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmUKIAogUGFzc1JlZlB0cjxBdWRpb0J1ZmZlclNvdXJjZU5v
ZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyU291cmNlKCkKIHsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgbGF6eUluaXRpYWxpemUoKTsKICAgICBSZWZQdHI8QXVkaW9CdWZmZXJTb3VyY2VOb2Rl
PiBub2RlID0gQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlv
bk5vZGUtPnNhbXBsZVJhdGUoKSk7CiAKQEAgLTM2Myw3ICszNjMsNyBAQCBQYXNzUmVmUHRyPE1l
ZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYUVsZW1l
bnRTb3VyY2UoSAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgICAgIAotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogICAgIAogICAgIC8vIEZpcnN0IGNoZWNrIGlm
IHRoaXMgbWVkaWEgZWxlbWVudCBhbHJlYWR5IGhhcyBhIHNvdXJjZSBub2RlLgpAQCAtMzkwLDcg
KzM5MCw3IEBAIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IEF1ZGlvQ29u
dGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkCiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogCiAgICAgQXVkaW9T
b3VyY2VQcm92aWRlciogcHJvdmlkZXIgPSAwOwpAQCAtNDM1LDcgKzQzNSw3IEBAIFBhc3NSZWZQ
dHI8U2NyaXB0UHJvY2Vzc29yTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVTY3JpcHRQcm9jZXNz
b3Ioc2l6ZV90IGJ1ZmZlCiAKIFBhc3NSZWZQdHI8U2NyaXB0UHJvY2Vzc29yTm9kZT4gQXVkaW9D
b250ZXh0OjpjcmVhdGVTY3JpcHRQcm9jZXNzb3Ioc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgbGF6eUluaXRpYWxpemUoKTsK
ICAgICBSZWZQdHI8U2NyaXB0UHJvY2Vzc29yTm9kZT4gbm9kZSA9IFNjcmlwdFByb2Nlc3Nvck5v
ZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpLCBidWZmZXJT
aXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwogCkBA
IC00NTAsNDkgKzQ1MCw0OSBAQCBQYXNzUmVmUHRyPFNjcmlwdFByb2Nlc3Nvck5vZGU+IEF1ZGlv
Q29udGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZQogCiBQYXNzUmVmUHRy
PEJpcXVhZEZpbHRlck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKCkKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAgICAgbGF6eUluaXRpYWxpemUoKTsKICAgICByZXR1cm4gQmlxdWFk
RmlsdGVyTm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkp
OwogfQogCiBQYXNzUmVmUHRyPFdhdmVTaGFwZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZVdh
dmVTaGFwZXIoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogICAg
IHJldHVybiBXYXZlU2hhcGVyTm9kZTo6Y3JlYXRlKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPFBh
bm5lck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlUGFubmVyKCkKIHsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgbGF6eUluaXRpYWxpemUoKTsKICAgICByZXR1cm4gUGFubmVyTm9kZTo6Y3JlYXRlKHRo
aXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkpOwogfQogCiBQYXNzUmVmUHRyPENv
bnZvbHZlck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ29udm9sdmVyKCkKIHsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHQoKSk7CiAgICAgbGF6eUluaXRpYWxpemUoKTsKICAgICByZXR1cm4gQ29udm9sdmVyTm9kZTo6
Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkpOwogfQogCiBQYXNz
UmVmUHRyPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlRHluYW1p
Y3NDb21wcmVzc29yKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgbGF6eUluaXRpYWxpemUoKTsK
ICAgICByZXR1cm4gRHluYW1pY3NDb21wcmVzc29yTm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGlu
YXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkpOwogfQogCiBQYXNzUmVmUHRyPEFuYWx5c2VyTm9kZT4g
QXVkaW9Db250ZXh0OjpjcmVhdGVBbmFseXNlcigpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGxh
enlJbml0aWFsaXplKCk7CiAgICAgcmV0dXJuIEFuYWx5c2VyTm9kZTo6Y3JlYXRlKHRoaXMsIG1f
ZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkpOwogfQogCiBQYXNzUmVmUHRyPEdhaW5Ob2Rl
PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUdhaW4oKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBsYXp5
SW5pdGlhbGl6ZSgpOwogICAgIHJldHVybiBHYWluTm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGlu
YXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkpOwogfQpAQCAtNTA1LDcgKzUwNSw3IEBAIFBhc3NSZWZQ
dHI8RGVsYXlOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5KEV4Y2VwdGlvbkNvZGUmIGVj
KQogCiBQYXNzUmVmUHRyPERlbGF5Tm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVEZWxheShkb3Vi
bGUgbWF4RGVsYXlUaW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAg
ICAgbGF6eUluaXRpYWxpemUoKTsKICAgICBSZWZQdHI8RGVsYXlOb2RlPiBub2RlID0gRGVsYXlO
b2RlOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgbWF4RGVs
YXlUaW1lLCBlYyk7CiAgICAgaWYgKGVjKQpAQCAtNTIxLDcgKzUyMSw3IEBAIFBhc3NSZWZQdHI8
Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVDaGFubmVsU3BsaXR0ZXIo
RXhjZXB0aW9uQ29kCiAKIFBhc3NSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQXVkaW9Db250
ZXh0OjpjcmVhdGVDaGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51bWJlck9mT3V0cHV0cywgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQo
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7CiAK
ICAgICBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gbm9kZSA9IENoYW5uZWxTcGxpdHRlck5v
ZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpLCBudW1iZXJP
Zk91dHB1dHMpOwpAQCAtNTQyLDcgKzU0Miw3IEBAIFBhc3NSZWZQdHI8Q2hhbm5lbE1lcmdlck5v
ZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcihFeGNlcHRpb25Db2RlJiBlCiAK
IFBhc3NSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5l
bE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJbnB1dHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9u
Q29udGV4dCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogCiAgICAgUmVmUHRyPENoYW5uZWxN
ZXJnZXJOb2RlPiBub2RlID0gQ2hhbm5lbE1lcmdlck5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3Rp
bmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpLCBudW1iZXJPZklucHV0cyk7CkBAIC01NTcsNyArNTU3
LDcgQEAgUGFzc1JlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVD
aGFubmVsTWVyZ2VyKHNpemVfdCBudW1iZXJPZkkKIAogUGFzc1JlZlB0cjxPc2NpbGxhdG9yTm9k
ZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVPc2NpbGxhdG9yKCkKIHsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAg
ICAgbGF6eUluaXRpYWxpemUoKTsKIAogICAgIFJlZlB0cjxPc2NpbGxhdG9yTm9kZT4gbm9kZSA9
IE9zY2lsbGF0b3JOb2RlOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJh
dGUoKSk7CkBAIC01NzEsNyArNTcxLDcgQEAgUGFzc1JlZlB0cjxPc2NpbGxhdG9yTm9kZT4gQXVk
aW9Db250ZXh0OjpjcmVhdGVPc2NpbGxhdG9yKCkKIAogUGFzc1JlZlB0cjxXYXZlVGFibGU+IEF1
ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVRhYmxlKEZsb2F0MzJBcnJheSogcmVhbCwgRmxvYXQzMkFy
cmF5KiBpbWFnLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgCiAg
ICAgaWYgKCFyZWFsIHx8ICFpbWFnIHx8IChyZWFsLT5sZW5ndGgoKSAhPSBpbWFnLT5sZW5ndGgo
KSkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwpAQCAtNjAwLDcgKzYwMCw3IEBAIHZvaWQg
QXVkaW9Db250ZXh0OjpkZXJlZkZpbmlzaGVkU291cmNlTm9kZXMoKQogCiB2b2lkIEF1ZGlvQ29u
dGV4dDo6cmVmTm9kZShBdWRpb05vZGUqIG5vZGUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEF1
dG9Mb2NrZXIgbG9ja2VyKHRoaXMpOwogICAgIAogICAgIG5vZGUtPnJlZihBdWRpb05vZGU6OlJl
ZlR5cGVDb25uZWN0aW9uKTsKQEAgLTYyMyw3ICs2MjMsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6
ZGVyZWZOb2RlKEF1ZGlvTm9kZSogbm9kZSkKIAogdm9pZCBBdWRpb0NvbnRleHQ6OmRlcmVmVW5m
aW5pc2hlZFNvdXJjZU5vZGVzKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkgJiYgaXNB
dWRpb1RocmVhZEZpbmlzaGVkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNv
bnRleHQoKSAmJiBpc0F1ZGlvVGhyZWFkRmluaXNoZWQoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fcmVmZXJlbmNlZE5vZGVzLnNpemUoKTsgKytpKQogICAgICAgICBtX3JlZmVy
ZW5jZWROb2Rlc1tpXS0+ZGVyZWYoQXVkaW9Ob2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7CiAKQEAg
LTYzMyw3ICs2MzMsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6ZGVyZWZVbmZpbmlzaGVkU291cmNl
Tm9kZXMoKQogdm9pZCBBdWRpb0NvbnRleHQ6OmxvY2soYm9vbCYgbXVzdFJlbGVhc2VMb2NrKQog
ewogICAgIC8vIERvbid0IGFsbG93IHJlZ3VsYXIgbG9jayBpbiByZWFsLXRpbWUgYXVkaW8gdGhy
ZWFkLgotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIFRocmVhZElkZW50aWZpZXIgdGhpc1RocmVhZCA9
IGN1cnJlbnRUaHJlYWQoKTsKIApAQCAtODE1LDcgKzgxNSw3IEBAIHZvaWQgQXVkaW9Db250ZXh0
OjpkZWxldGVNYXJrZWROb2Rlc0Rpc3BhdGNoKHZvaWQqIHVzZXJEYXRhKQogCiB2b2lkIEF1ZGlv
Q29udGV4dDo6ZGVsZXRlTWFya2VkTm9kZXMoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIC8v
IFByb3RlY3QgdGhpcyBvYmplY3QgZnJvbSBiZWluZyBkZWxldGVkIGJlZm9yZSB3ZSByZWxlYXNl
IHRoZSBtdXRleCBsb2NrZWQgYnkgQXV0b0xvY2tlci4KICAgICBSZWZQdHI8QXVkaW9Db250ZXh0
PiBwcm90ZWN0KHRoaXMpOwpAQCAtODUxLDcgKzg1MSw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojpt
YXJrU3VtbWluZ0p1bmN0aW9uRGlydHkoQXVkaW9TdW1taW5nSnVuY3Rpb24qIHN1bW1pbmdKdW5j
dGlvCiAKIHZvaWQgQXVkaW9Db250ZXh0OjpyZW1vdmVNYXJrZWRTdW1taW5nSnVuY3Rpb24oQXVk
aW9TdW1taW5nSnVuY3Rpb24qIHN1bW1pbmdKdW5jdGlvbikKIHsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAg
ICAgQXV0b0xvY2tlciBsb2NrZXIodGhpcyk7CiAgICAgbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnMu
cmVtb3ZlKHN1bW1pbmdKdW5jdGlvbik7CiB9CkBAIC05NDUsOCArOTQ1LDggQEAgdm9pZCBBdWRp
b0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5nKCkKIAogdm9pZCBBdWRpb0NvbnRleHQ6OmZpcmVDb21w
bGV0aW9uRXZlbnQoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKCFp
c01haW5UaHJlYWQoKSkKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkp
OworICAgIGlmICghaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCiAgICAgQXVkaW9CdWZmZXIqIHJlbmRlcmVkQnVmZmVyID0gbV9yZW5kZXJU
YXJnZXQuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaAppbmRleCA4YTA2NjY4Li40ZWZlZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTE2Nyw3ICsxNjcsNyBAQCBwdWJsaWM6
CiAgICAgLy8gS2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBjb25uZWN0aW9ucyBtYWRlLgog
ICAgIHZvaWQgaW5jcmVtZW50Q29ubmVjdGlvbkNvdW50KCkKICAgICB7Ci0gICAgICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAgICAgICAgIG1fY29ubmVjdGlvbkNvdW50Kys7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKaW5kZXggOWE0MjJmYS4u
OTNiYzU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIEF1ZGlvTm9kZU91dHB1dCogQXVkaW9Ob2RlOjpvdXRw
dXQodW5zaWduZWQgaSkKIAogdm9pZCBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Ob2RlKiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0SW5kZXgsIHVuc2lnbmVkIGlucHV0SW5kZXgsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7IAorICAgIEFTU0VS
VChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7IAogICAgIEF1ZGlvQ29udGV4dDo6QXV0
b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIGlmICghZGVzdGluYXRpb24pIHsKQEAg
LTE1Nyw3ICsxNTcsNyBAQCB2b2lkIEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb05vZGUqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBvdXRwdXRJbmRleCwgdW5zaWduZWQgaQogCiB2b2lkIEF1ZGlvTm9k
ZTo6Y29ubmVjdChBdWRpb1BhcmFtKiBwYXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBdWRpb0NvbnRleHQ6OkF1dG9M
b2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBpZiAoIXBhcmFtKSB7CkBAIC0xODEsNyAr
MTgxLDcgQEAgdm9pZCBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9QYXJhbSogcGFyYW0sIHVuc2ln
bmVkIG91dHB1dEluZGV4LCBFeGNlcHRpb25Db2RlJgogCiB2b2lkIEF1ZGlvTm9kZTo6ZGlzY29u
bmVjdCh1bnNpZ25lZCBvdXRwdXRJbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsK
IAogICAgIC8vIFNhbml0eSBjaGVjayBpbnB1dCBhbmQgb3V0cHV0IGluZGljZXMuCkBAIC0yNzMs
NyArMjczLDcgQEAgdm9pZCBBdWRpb05vZGU6OnVuc2lsZW5jZU91dHB1dHMoKQogdm9pZCBBdWRp
b05vZGU6OmVuYWJsZU91dHB1dHNJZk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKG1faXNEaXNhYmxl
ZCAmJiBtX2Nvbm5lY3Rpb25SZWZDb3VudCA+IDApIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsK
ICAgICAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAg
ICAgICAgIG1faXNEaXNhYmxlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCmluZGV4
IGYxNTdmYjcuLjI2ODE3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKQEAgLTEzNCw3ICsx
MzQsNyBAQCB2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6dXBkYXRlU2NoZWR1bGluZ0lu
Zm8oc2l6ZV90IHF1YW50dW1GcmFtZVNpemUsCiAKIHZvaWQgQXVkaW9TY2hlZHVsZWRTb3VyY2VO
b2RlOjpzdGFydChkb3VibGUgd2hlbikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKG1fcGxh
eWJhY2tTdGF0ZSAhPSBVTlNDSEVEVUxFRF9TVEFURSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0x
NDQsNyArMTQ0LDcgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OnN0YXJ0KGRvdWJs
ZSB3aGVuKQogCiB2b2lkIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6c3RvcChkb3VibGUgd2hl
bikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKCEobV9wbGF5YmFja1N0YXRlID09IFNDSEVE
VUxFRF9TVEFURSB8fCBtX3BsYXliYWNrU3RhdGUgPT0gUExBWUlOR19TVEFURSkpCiAgICAgICAg
IHJldHVybjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQ29udm9sdmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Nv
bnZvbHZlck5vZGUuY3BwCmluZGV4IGM4MDEwZDAuLmRjMDdlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcApAQCAtMTExLDcgKzEx
MSw3IEBAIHZvaWQgQ29udm9sdmVyTm9kZTo6dW5pbml0aWFsaXplKCkKIAogdm9pZCBDb252b2x2
ZXJOb2RlOjpzZXRCdWZmZXIoQXVkaW9CdWZmZXIqIGJ1ZmZlcikKIHsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgCiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTE0Nyw3ICsxNDcs
NyBAQCB2b2lkIENvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVyKQog
CiBBdWRpb0J1ZmZlciogQ29udm9sdmVyTm9kZTo6YnVmZmVyKCkKIHsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgcmV0dXJuIG1fYnVmZmVyLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHAKaW5kZXggMDAyYzI1NC4uYWQ2NjI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmNwcApAQCAtNDgsNyArNDgsNyBAQCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6On5EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoKQogCiB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsgCisgICAg
QVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsgCiAgICAgaWYgKGlzSW5pdGlh
bGl6ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC01OCw3ICs1OCw3IEBAIHZvaWQgRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlOjppbml0aWFsaXplKCkKIAogdm9pZCBEZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OnVuaW5pdGlhbGl6ZSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsgCisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsgCiAgICAg
aWYgKCFpc0luaXRpYWxpemVkKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlRGVzdGluYXRpb24oKQog
CiB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6ZW5hYmxlSW5wdXQoKQogewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7IAorICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlv
bkNvbnRleHQoKSk7IAogICAgIGlmIChtX251bWJlck9mSW5wdXRDaGFubmVscyAhPSBFbmFibGVk
SW5wdXRDaGFubmVscykgewogICAgICAgICBtX251bWJlck9mSW5wdXRDaGFubmVscyA9IEVuYWJs
ZWRJbnB1dENoYW5uZWxzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggMDgz
ZDliYi4uOWQyMmM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNzcsNyAr
NzcsNyBAQCB2b2lkIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6dW5pbml0aWFsaXplKCkK
IAogdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVuZGVyaW5nKCkKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKG1fcmVuZGVyVGFyZ2V0LmdldCgpKTsKICAgICBp
ZiAoIW1fcmVuZGVyVGFyZ2V0LmdldCgpKQogICAgICAgICByZXR1cm47CkBAIC05OSw3ICs5OSw3
IEBAIHZvaWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpvZmZsaW5lUmVuZGVyRW50cnko
dm9pZCogdGhyZWFkRGF0YSkKIAogdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om9m
ZmxpbmVSZW5kZXIoKQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VCghaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChtX3JlbmRlckJ1
cy5nZXQoKSk7CiAgICAgaWYgKCFtX3JlbmRlckJ1cy5nZXQoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNw
cAppbmRleCA5MWMyOTE3Li4xYjY4ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQg
T3NjaWxsYXRvck5vZGU6OnJlc2V0KCkKIAogdm9pZCBPc2NpbGxhdG9yTm9kZTo6c2V0V2F2ZVRh
YmxlKFdhdmVUYWJsZSogd2F2ZVRhYmxlKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIC8vIFRo
aXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgogICAgIE11dGV4TG9ja2VyIHByb2Nlc3NM
b2NrZXIobV9wcm9jZXNzTG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcAppbmRleCA3YTkwOWNiLi44ZjJhYTg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5hbHlzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNl
ci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpyZXNldCgpCiAK
IGJvb2wgUmVhbHRpbWVBbmFseXNlcjo6c2V0RmZ0U2l6ZShzaXplX3Qgc2l6ZSkKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAKICAgICAvLyBPbmx5IGFsbG93IHBvd2VycyBvZiB0d28uCiAgICAgdW5zaWdu
ZWQgbG9nMnNpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obG9nMihzaXplKSk7CkBAIC0xMzks
NyArMTM5LDcgQEAgbmFtZXNwYWNlIHsKIAogdm9pZCBhcHBseVdpbmRvdyhmbG9hdCogcCwgc2l6
ZV90IG4pCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldl
YkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIAogICAgIC8vIEJsYWNrbWFuIHdpbmRvdwog
ICAgIGRvdWJsZSBhbHBoYSA9IDAuMTY7CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBhcHBseVdp
bmRvdyhmbG9hdCogcCwgc2l6ZV90IG4pCiAKIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6ZG9GRlRB
bmFseXNpcygpCiB7ICAgIAotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIC8vIFVucm9sbCB0aGUgaW5w
dXQgYnVmZmVyIGludG8gYSB0ZW1wb3JhcnkgYnVmZmVyLCB3aGVyZSB3ZSdsbCBhcHBseSBhbiBh
bmFseXNpcyB3aW5kb3cgZm9sbG93ZWQgYnkgYW4gRkZULgogICAgIHNpemVfdCBmZnRTaXplID0g
dGhpcy0+ZmZ0U2l6ZSgpOwpAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNl
cjo6ZG9GRlRBbmFseXNpcygpCiAKIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0RmxvYXRGcmVx
dWVuY3lEYXRhKEZsb2F0MzJBcnJheSogZGVzdGluYXRpb25BcnJheSkKIHsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAKICAgICBpZiAoIWRlc3RpbmF0aW9uQXJyYXkpCiAgICAgICAgIHJldHVybjsKQEAgLTIz
Myw3ICsyMzMsNyBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEZsb2F0RnJlcXVlbmN5RGF0
YShGbG9hdDMyQXJyYXkqIGRlc3RpbmF0aW9uQXJyYXkpCiAKIHZvaWQgUmVhbHRpbWVBbmFseXNl
cjo6Z2V0Qnl0ZUZyZXF1ZW5jeURhdGEoVWludDhBcnJheSogZGVzdGluYXRpb25BcnJheSkKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAKICAgICBpZiAoIWRlc3RpbmF0aW9uQXJyYXkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OmdldEJ5dGVG
cmVxdWVuY3lEYXRhKFVpbnQ4QXJyYXkqIGRlc3RpbmF0aW9uQXJyYXkpCiAKIHZvaWQgUmVhbHRp
bWVBbmFseXNlcjo6Z2V0Qnl0ZVRpbWVEb21haW5EYXRhKFVpbnQ4QXJyYXkqIGRlc3RpbmF0aW9u
QXJyYXkpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldl
YkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgaWYgKCFkZXN0aW5hdGlvbkFycmF5KQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRleCAzNjBhYTE3Li45MGZjMThmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFNjcmlwdFByb2Nlc3Nvck5vZGU6
OmZpcmVQcm9jZXNzRXZlbnREaXNwYXRjaCh2b2lkKiB1c2VyRGF0YSkKIAogdm9pZCBTY3JpcHRQ
cm9jZXNzb3JOb2RlOjpmaXJlUHJvY2Vzc0V2ZW50KCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkgJiYgbV9pc1JlcXVlc3RPdXRzdGFuZGluZyk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpICYmIG1faXNSZXF1ZXN0T3V0c3RhbmRpbmcpOwogICAgIAogICAg
IGJvb2wgaXNJbmRleEdvb2QgPSBtX2RvdWJsZUJ1ZmZlckluZGV4Rm9yRXZlbnQgPCAyOwogICAg
IEFTU0VSVChpc0luZGV4R29vZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCmluZGV4IDAzNTA0ZTcuLjk4ZThiOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCkBA
IC00MCw3ICs0MCw3IEBAIFdhdmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRl
eHQqIGNvbnRleHQpCiAKIHZvaWQgV2F2ZVNoYXBlck5vZGU6OnNldEN1cnZlKEZsb2F0MzJBcnJh
eSogY3VydmUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsgCisgICAgQVNTRVJUKGlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsgCiAgICAgd2F2ZVNoYXBlclByb2Nlc3Nvcigp
LT5zZXRDdXJ2ZShjdXJ2ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwCmluZGV4IDE0M2M4ZjIuLmFiNTVkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTUwLDE5ICsxNTAsMTkgQEAgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OlBlZXIoUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm4KICAgICAsIG1fbWFpbldlYlNvY2tldENoYW5uZWwoV2ViU29ja2V0Q2hhbm5l
bDo6Y3JlYXRlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCksIHRoaXMpKQogICAgICwg
bV90YXNrTW9kZSh0YXNrTW9kZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAKIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjp+UGVlcigpCiB7Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgIGlmIChtX21haW5XZWJTb2NrZXRDaGFubmVsKQogICAgICAgICBtX21haW5XZWJTb2NrZXRD
aGFubmVsLT5kaXNjb25uZWN0KCk7CiB9CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlBlZXI6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5X
ZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBpZiAoIW1fbWFpbldlYlNvY2tldENoYW5u
ZWwpCiAgICAgICAgIHJldHVybjsKICAgICBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5jb25uZWN0
KHVybCwgcHJvdG9jb2wpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHN0YXRpYyB2b2lkIHdvcmtlckNv
bnRleHREaWRTZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8
VGhyCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBpZiAoIW1fbWFp
bldlYlNvY2tldENoYW5uZWwgfHwgIW1fd29ya2VyQ2xpZW50V3JhcHBlcikKICAgICAgICAgcmV0
dXJuOwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmRSZXF1
ZXN0UmVzdWx0ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c2VuZChtZXNzYWdlKTsKQEAgLTE4
NSw3ICsxODUsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVy
OjpzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkK
IHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4
ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVsIHx8ICFt
X3dvcmtlckNsaWVudFdyYXBwZXIpCiAgICAgICAgIHJldHVybjsKICAgICBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kUmVxdWVzdFJlc3VsdCA9IG1fbWFpbldlYlNv
Y2tldENoYW5uZWwtPnNlbmQoYmluYXJ5RGF0YSwgMCwgYmluYXJ5RGF0YS5ieXRlTGVuZ3RoKCkp
OwpAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlBlZXI6OnNlbmQoY29uc3QgQXJyYXlCdWZmZXImIGJpbmFyeURhdGEpCiAKIHZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQoY29uc3QgQmxvYiYgYmlu
YXJ5RGF0YSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0lu
V2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFu
bmVsIHx8ICFtX3dvcmtlckNsaWVudFdyYXBwZXIpCiAgICAgICAgIHJldHVybjsKICAgICBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kUmVxdWVzdFJlc3VsdCA9IG1f
bWFpbldlYlNvY2tldENoYW5uZWwtPnNlbmQoYmluYXJ5RGF0YSk7CkBAIC0yMDksNyArMjA5LDcg
QEAgc3RhdGljIHZvaWQgd29ya2VyQ29udGV4dERpZEdldEJ1ZmZlcmVkQW1vdW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFAKIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6UGVlcjo6YnVmZmVyZWRBbW91bnQoKQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICBpZiAoIW1fbWFpbldlYlNvY2tldENoYW5uZWwgfHwgIW1fd29ya2VyQ2xpZW50V3JhcHBlcikK
ICAgICAgICAgcmV0dXJuOwogICAgIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQgPSBtX21h
aW5XZWJTb2NrZXRDaGFubmVsLT5idWZmZXJlZEFtb3VudCgpOwpAQCAtMjE4LDcgKzIxOCw3IEBA
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmJ1ZmZlcmVkQW1v
dW50KCkKIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6Y2xv
c2UoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICBpZiAoIW1fbWFpbldlYlNvY2tldENoYW5uZWwpCiAgICAgICAgIHJldHVybjsKICAgICBtX21h
aW5XZWJTb2NrZXRDaGFubmVsLT5jbG9zZShjb2RlLCByZWFzb24pOwpAQCAtMjI2LDcgKzIyNiw3
IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmNsb3NlKGlu
dCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OlBlZXI6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIGlmICghbV9tYWluV2ViU29ja2V0Q2hhbm5lbCkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmZhaWwocmVhc29uKTsKQEAgLTIzNCw3ICsy
MzQsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpmYWls
KGNvbnN0IFN0cmluZyYgcmVhc29uKQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpQZWVyOjpkaXNjb25uZWN0KCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKCFt
X21haW5XZWJTb2NrZXRDaGFubmVsKQogICAgICAgICByZXR1cm47CiAgICAgbV9tYWluV2ViU29j
a2V0Q2hhbm5lbC0+ZGlzY29ubmVjdCgpOwpAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpc2Nvbm5lY3QoKQogCiB2b2lkIFdv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpzdXNwZW5kKCkKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAgICAgaWYgKCFtX21haW5XZWJTb2NrZXRDaGFubmVsKQogICAgICAgICByZXR1
cm47CiAgICAgbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c3VzcGVuZCgpOwpAQCAtMjUxLDcgKzI1
MSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnN1c3Bl
bmQoKQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpyZXN1
bWUoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJD
b3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBpZiAoIW1fbWFpbldlYlNvY2tldENoYW5uZWwp
CiAgICAgICAgIHJldHVybjsKICAgICBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5yZXN1bWUoKTsK
QEAgLTI2Nyw3ICsyNjcsNyBAQCBzdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkQ29ubmVjdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPAogCiB2b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRDb25uZWN0KCkKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRl
eHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkQ29ubmVjdCwgbV93b3JrZXJD
bGllbnRXcmFwcGVyLCBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5zdWJwcm90b2NvbCgpLCBtX21h
aW5XZWJTb2NrZXRDaGFubmVsLT5leHRlbnNpb25zKCkpLCBtX3Rhc2tNb2RlKTsKIH0KIApAQCAt
Mjc5LDcgKzI3OSw3IEBAIHN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRSZWNlaXZlTWVzc2Fn
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzCiAKIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgbV9sb2FkZXJQcm94eS5wb3N0
VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250
ZXh0RGlkUmVjZWl2ZU1lc3NhZ2UsIG1fd29ya2VyQ2xpZW50V3JhcHBlciwgbWVzc2FnZSksIG1f
dGFza01vZGUpOwogfQogCkBAIC0yOTEsNyArMjkxLDcgQEAgc3RhdGljIHZvaWQgd29ya2VyQ29u
dGV4dERpZFJlY2VpdmVCaW5hcnlEYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFAKIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVj
ZWl2ZUJpbmFyeURhdGEoUGFzc093blB0cjxWZWN0b3I8Y2hhcj4gPiBiaW5hcnlEYXRhKQogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0
aW9uQ29udGV4dCgpKTsKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
Q29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlQmluYXJ5
RGF0YSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBiaW5hcnlEYXRhKSwgbV90YXNrTW9kZSk7CiB9
CiAKQEAgLTMwMyw3ICszMDMsNyBAQCBzdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkVXBkYXRl
QnVmZmVyZWRBbW91bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dAogCiB2b2lkIFdv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRVcGRhdGVCdWZmZXJlZEFt
b3VudCh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxs
YmFja1Rhc2soJndvcmtlckNvbnRleHREaWRVcGRhdGVCdWZmZXJlZEFtb3VudCwgbV93b3JrZXJD
bGllbnRXcmFwcGVyLCBidWZmZXJlZEFtb3VudCksIG1fdGFza01vZGUpOwogfQogCkBAIC0zMTUs
NyArMzE1LDcgQEAgc3RhdGljIHZvaWQgd29ya2VyQ29udGV4dERpZFN0YXJ0Q2xvc2luZ0hhbmRz
aGFrZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKIAogdm9pZCBXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkU3RhcnRDbG9zaW5n
SGFuZHNoYWtlLCBtX3dvcmtlckNsaWVudFdyYXBwZXIpLCBtX3Rhc2tNb2RlKTsKIH0KIApAQCAt
MzI3LDcgKzMyNyw3IEBAIHN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRDbG9zZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRoCiAKIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5o
YW5kbGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNs
b3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJp
bmcmIHJlYXNvbikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgbV9tYWluV2ViU29ja2V0Q2hhbm5l
bCA9IDA7CiAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQo
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkQ2xvc2UsIG1fd29ya2VyQ2xpZW50
V3JhcHBlciwgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0
aW9uLCBjb2RlLCByZWFzb24pLCBtX3Rhc2tNb2RlKTsKIH0KQEAgLTM0MCw3ICszNDAsNyBAQCBz
dGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LAogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkKIHsKLSAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgp
KTsKICAgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGlkUmVjZWl2ZU1lc3NhZ2VFcnJvciwgbV93
b3JrZXJDbGllbnRXcmFwcGVyKSwgbV90YXNrTW9kZSk7CiB9CiAKQEAgLTM5OSw3ICszOTksNyBA
QCBwcml2YXRlOgogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlk
Z2U6Om1haW5UaHJlYWRJbml0aWFsaXplKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFdvcmtlckxvYWRlclByb3h5KiBsb2FkZXJQcm94eSwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHBycENsaWVudFdyYXBwZXIsIGNvbnN0IFN0cmlu
ZyYgdGFza01vZGUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQo
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4
dCwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKIAogICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IGNsaWVudFdyYXBwZXIgPSBwcnBDbGllbnRXcmFwcGVy
OwpAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OkJyaWRnZTo6aW5pdGlhbGl6ZSgpCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6Om1haW5UaHJlYWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBlZXIqIHBlZXIsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkK
IHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4
ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5p
c0RvY3VtZW50KCkpOwogICAgIEFTU0VSVChwZWVyKTsKIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZv
aWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y29ubmVjdChjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6Om1haW5UaHJlYWRTZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBl
ZXIqIHBlZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
QVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIEFTU0VS
VChwZWVyKTsKIApAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiAK
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5kQXJy
YXlCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGVlciogcGVlciwgUGFz
c093blB0cjxWZWN0b3I8Y2hhcj4gPiBkYXRhKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKHBl
ZXIpOwogCkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6bWFpblRocmVhZFNlbmRBcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb24KIAogdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFNlbmRCbG9iKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxvbmcgc2l6ZSkKIHsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAg
IEFTU0VSVChwZWVyKTsKIApAQCAtNTIyLDcgKzUyMiw3IEBAIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlk
Z2U6CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRC
dWZmZXJlZEFtb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVy
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQt
PmlzRG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKHBlZXIpOwogCkBAIC01NDUsNyArNTQ1LDcgQEAg
dW5zaWduZWQgbG9uZyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpi
dWZmZXJlZEFtb3VudCgpCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
Om1haW5UaHJlYWRDbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBw
ZWVyLCBpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiB7Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKICAgICBB
U1NFUlQocGVlcik7CiAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJl
YQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkRmFp
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBjb25zdCBTdHJp
bmcmIHJlYXNvbikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0
LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIEFTU0VSVChwZWVyKTsKIApAQCAtNTc3LDcg
KzU3Nyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6
ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6bWFpblRocmVhZERlc3Ryb3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc093blB0cjxQZWVyPiBwZWVyKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUX1VO
VVNFRChwZWVyLCBwZWVyKTsKIApAQCAtNTk4LDcgKzU5OCw3IEBAIHZvaWQgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6ZGlzY29ubmVjdCgpCiAKIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTdXNwZW5kKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAg
IEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKICAgICBBU1NF
UlQocGVlcik7CiAKQEAgLTYxNCw3ICs2MTQsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpCcmlkZ2U6OnN1c3BlbmQoKQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkUmVzdW1lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBlZXIqIHBlZXIpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVF9VTlVT
RUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKICAgICBBU1NFUlQocGVlcik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwCmluZGV4
IGE0NzAyMzIuLjNlNDE2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0RPTVdyYXBwZXJXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9N
V3JhcHBlcldvcmxkLmNwcApAQCAtNjksNyArNjksNyBAQCBET01XcmFwcGVyV29ybGQqIG5vcm1h
bFdvcmxkKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogCiBET01XcmFwcGVyV29ybGQq
IG1haW5UaHJlYWROb3JtYWxXb3JsZCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHN0YXRpYyBE
T01XcmFwcGVyV29ybGQqIGNhY2hlZE5vcm1hbFdvcmxkID0gbm9ybWFsV29ybGQoKkpTRE9NV2lu
ZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7CiAgICAgcmV0dXJuIGNhY2hlZE5vcm1hbFdvcmxk
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
aW5kZXggYTVmMDAzZS4uZTk3YmJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgSlNET01XaW5kb3dTaGVs
bCogSlNET01XaW5kb3dCYXNlOjpzaGVsbCgpIGNvbnN0CiAKIEpTR2xvYmFsRGF0YSogSlNET01X
aW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKQogewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAg
IHN0YXRpYyBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAwOwogICAgIGlmICghZ2xvYmFsRGF0
YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNj
cmlwdE1hbmFnZXIuY3BwCmluZGV4IDlmOTEwOTguLmZmOGM5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRl
SW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIFMKIAogICAgIEpTVmFsdWUgZXZh
bHVhdGlvbkV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIGV2YWx1YXRpb25SZXR1cm5WYWx1ZTsKLSAg
ICBpZiAoaXNNYWluVGhyZWFkKCkpCisgICAgaWYgKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4
dCgpKQogICAgICAgICBldmFsdWF0aW9uUmV0dXJuVmFsdWUgPSBKU01haW5UaHJlYWRFeGVjU3Rh
dGU6OmV2YWx1YXRlKHNjcmlwdFN0YXRlLCBzb3VyY2VDb2RlLCBnbG9iYWxUaGlzVmFsdWUsICZl
dmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBlbHNlIHsKICAgICAgICAgSlNDOjpKU0xvY2tIb2xk
ZXIgbG9jayhzY3JpcHRTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCmluZGV4IDI5N2M5NTMuLmI1ZmE3NjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCkBA
IC00Myw3ICs0Myw3IEBAIGNsYXNzIEpTTWFpblRocmVhZEV4ZWNTdGF0ZSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIEpTQzo6RXhlY1N0YXRlKiBjdXJyZW50U3RhdGUoKQogICAgIHsgCi0gICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAgICAgICAgIHJldHVybiBzX21haW5UaHJlYWRTdGF0ZTsKICAgICB9
OwogICAgIApAQCAtODEsMTMgKzgxLDEzIEBAIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBKU01h
aW5UaHJlYWRFeGVjU3RhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIDogbV9wcmV2
aW91c1N0YXRlKHNfbWFpblRocmVhZFN0YXRlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgp
KTsKICAgICAgICAgc19tYWluVGhyZWFkU3RhdGUgPSBleGVjOwogICAgIH07CiAKICAgICB+SlNN
YWluVGhyZWFkRXhlY1N0YXRlKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAg
ICAgICAgYm9vbCBkaWRFeGl0SmF2YVNjcmlwdCA9IHNfbWFpblRocmVhZFN0YXRlICYmICFtX3By
ZXZpb3VzU3RhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEZ1bmN0aW9uQ2FsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRG
dW5jdGlvbkNhbGwuY3BwCmluZGV4IDQ5MzdiMzYuLjJmMTZhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApAQCAtMTM2LDcgKzEz
Niw3IEBAIFNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6Y2FsbChib29sJiBoYWRFeGNl
cHRpb24sIGJvb2wgcmVwb3J0RXhjZXB0aW9ucykKICAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVl
KCk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpCisgICAg
aWYgKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXN1bHQgPSBKU01h
aW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwobV9leGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxE
YXRhLCB0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cyk7CiAgICAgZWxzZQogICAgICAgICByZXN1bHQg
PSBKU0M6OmNhbGwobV9leGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzT2Jq
ZWN0LCBtX2FyZ3VtZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2Vi
U2NyaXB0T2JqZWN0Lm1tCmluZGV4IDMyNTk4NGUuLjY1MmQ3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC02NCw3ICs2NCw3IEBA
IHN0YXRpYyBTcGluTG9jayBzcGluTG9jayA9IFNQSU5MT0NLX0lOSVRJQUxJWkVSOwogCiBOU09i
amVjdCogZ2V0SlNXcmFwcGVyKEpTT2JqZWN0KiBpbXBsKQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICBTcGluTG9ja0hvbGRlciBob2xkZXIoJnNwaW5Mb2NrKTsKIAogICAgIGlmICghSlNXcmFwcGVy
Q2FjaGUpCkBAIC03NSw3ICs3NSw3IEBAIE5TT2JqZWN0KiBnZXRKU1dyYXBwZXIoSlNPYmplY3Qq
IGltcGwpCiAKIHZvaWQgYWRkSlNXcmFwcGVyKE5TT2JqZWN0KiB3cmFwcGVyLCBKU09iamVjdCog
aW1wbCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2Vi
Q29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgU3BpbkxvY2tIb2xkZXIgaG9sZGVyKCZzcGlu
TG9jayk7CiAKICAgICBpZiAoIUpTV3JhcHBlckNhY2hlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKaW5kZXggY2NiOWI4YS4uMDJhZjNmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCkBAIC01NSw3ICs1NSw3IEBA
IERPTURhdGFTdG9yZTo6fkRPTURhdGFTdG9yZSgpCiBET01EYXRhU3RvcmUqIERPTURhdGFTdG9y
ZTo6bWFpbldvcmxkU3RvcmUoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoRE9NRGF0YVN0
b3JlLCBtYWluV29ybGRET01EYXRhU3RvcmUsIChNYWluV29ybGQpKTsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgcmV0dXJuICZtYWluV29ybGRET01EYXRhU3RvcmU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuY3BwCmluZGV4IGZlZTJmNzguLjA1NTM0
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3Js
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNw
cApAQCAtNjIsNyArNjIsNyBAQCBET01XcmFwcGVyV29ybGQ6OkRPTVdyYXBwZXJXb3JsZChpbnQg
d29ybGRJZCwgaW50IGV4dGVuc2lvbkdyb3VwKQogCiBET01XcmFwcGVyV29ybGQqIG1haW5UaHJl
YWROb3JtYWxXb3JsZCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NF
UlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4sIGNhY2hlZE5vcm1hbFdvcmxkLCAoRE9NV3JhcHBl
cldvcmxkOjpjcmVhdGVNYWluV29ybGQoKSkpOwogICAgIHJldHVybiBjYWNoZWROb3JtYWxXb3Js
ZC5nZXQoKTsKIH0KQEAgLTcwLDcgKzcwLDcgQEAgRE9NV3JhcHBlcldvcmxkKiBtYWluVGhyZWFk
Tm9ybWFsV29ybGQoKQogI2lmbmRlZiBOREVCVUcKIHZvaWQgRE9NV3JhcHBlcldvcmxkOjphc3Nl
cnRDb250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250
ZXh0KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJD
b3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoVjhET01XcmFwcGVyOjppc1dyYXBw
ZXJPZlR5cGUodG9Jbm5lckdsb2JhbE9iamVjdChjb250ZXh0KSwgJlY4RE9NV2luZG93OjppbmZv
KSk7CiB9CiAjZW5kaWYKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBET01XcmFwcGVyV29ybGQ6OnNl
dElzb2xhdGVkV29ybGRGaWVsZCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogdHlw
ZWRlZiBIYXNoTWFwPGludCwgRE9NV3JhcHBlcldvcmxkKj4gV29ybGRNYXA7CiBzdGF0aWMgV29y
bGRNYXAmIGlzb2xhdGVkV29ybGRNYXAoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFdvcmxkTWFwLCBtYXAsICgpKTsKICAgICByZXR1cm4gbWFwOwogfQpAQCAt
MTYyLDcgKzE2Miw3IEBAIFBhc3NSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBET01XcmFwcGVyV29y
bGQ6OmVuc3VyZUlzb2xhdGVkV29ybGQoaW50IHdvcmxkSWQsIGluCiB0eXBlZGVmIEhhc2hNYXA8
aW50LCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4gSXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2lu
TWFwOwogc3RhdGljIElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbk1hcCYgaXNvbGF0ZWRXb3Js
ZFNlY3VyaXR5T3JpZ2lucygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIERFRklORV9TVEFUSUNf
TE9DQUwoSXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luTWFwLCBtYXAsICgpKTsKICAgICByZXR1
cm4gbWFwOwogfQpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgRE9NV3JhcHBlcldvcmxkOjpjbGVh
cklzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbihpbnQgd29ybGRJRCkKIHR5cGVkZWYgSGFzaE1h
cDxpbnQsIGJvb2w+IElzb2xhdGVkV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3lNYXA7CiBzdGF0
aWMgSXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeU1hcCYgaXNvbGF0ZWRXb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljaWVzKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChJc29sYXRlZFdvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5TWFwLCBtYXAsICgp
KTsKICAgICByZXR1cm4gbWFwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhH
Q0NvbnRyb2xsZXIuY3BwCmluZGV4IDI4MmM0MTAuLmVmZmFhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKQEAgLTMzMSw3ICszMzEsNyBAQCB2
b2lkIFY4R0NDb250cm9sbGVyOjpnY1Byb2xvZ3VlKHY4OjpHQ1R5cGUgdHlwZSwgdjg6OkdDQ2Fs
bGJhY2tGbGFncyBmbGFncykKICAgICBlbHNlIGlmICh0eXBlID09IHY4OjprR0NUeXBlTWFya1N3
ZWVwQ29tcGFjdCkKICAgICAgICAgbWFqb3JHQ1Byb2xvZ3VlKCk7CiAKLSAgICBpZiAoaXNNYWlu
VGhyZWFkT3JHQ1RocmVhZCgpICYmIG1fZWRlbk5vZGVzKSB7CisgICAgaWYgKGlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dE9yR0NUaHJlYWQoKSAmJiBtX2VkZW5Ob2RlcykgewogICAgICAgICAv
LyBUaGUgRWRlbiBzcGFjZSBpcyBjbGVhcmVkIGF0IGV2ZXJ5IG1pbm9yL21ham9yIEdDLgogICAg
ICAgICBtX2VkZW5Ob2Rlcy0+Y2xlYXIoKTsKICAgICB9CkBAIC0zNDEsNyArMzQxLDcgQEAgdm9p
ZCBWOEdDQ29udHJvbGxlcjo6bWlub3JHQ1Byb2xvZ3VlKCkKIHsKICAgICBUUkFDRV9FVkVOVF9C
RUdJTjAoInY4IiwgIkdDIik7CiAKLSAgICBpZiAoaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpICYm
IG1fZWRlbk5vZGVzKSB7CisgICAgaWYgKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dE9yR0NU
aHJlYWQoKSAmJiBtX2VkZW5Ob2RlcykgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fZWRlbk5vZGVzLT5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgQVNTRVJUKCFtX2VkZW5O
b2Rlcy0+YXQoaSktPndyYXBwZXIoKS5Jc0VtcHR5KCkpOwogICAgICAgICAgICAgaWYgKG1fZWRl
bk5vZGVzLT5hdChpKS0+aXNWOENvbGxlY3RhYmxlRHVyaW5nTWlub3JHQygpKSAvLyBUaGlzIGJy
YW5jaCBpcyBqdXN0IGZvciBwZXJmb3JtYW5jZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhJbml0aWFsaXplci5jcHAKaW5kZXggY2IzYmM2ZC4uMGE4NmZmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbml0aWFsaXplci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbml0aWFsaXplci5jcHAKQEAgLTExNSw3ICsxMTUsNyBA
QCBzdGF0aWMgdm9pZCBpbml0aWFsaXplVjhDb21tb24oKQogCiB2b2lkIFY4SW5pdGlhbGl6ZXI6
OmluaXRpYWxpemVNYWluVGhyZWFkSWZOZWVkZWQodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRp
b25Db250ZXh0KCkpOwogCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAg
ICBpZiAoaW5pdGlhbGl6ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFN0cmluZ1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4U3Ry
aW5nUmVzb3VyY2UuY3BwCmluZGV4IDhhYzZmMGMuLjM2OWI0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4U3RyaW5nUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4U3RyaW5nUmVzb3VyY2UuY3BwCkBAIC0xODYsNyArMTg2LDcg
QEAgU3RyaW5nIGludDMyVG9XZWJDb3JlU3RyaW5nRmFzdChpbnQgdmFsdWUpCiB7CiAgICAgLy8g
Q2FjaGluZyBvZiBzbWFsbCBzdHJpbmdzIGJlbG93IGlzIG5vdCB0aHJlYWQgc2FmZTogbmV3bHkg
Y29uc3RydWN0ZWQgQXRvbWljU3RyaW5nCiAgICAgLy8gYXJlIG5vdCBzYWZlbHkgcHVibGlzaGVk
LgotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhl
Y3V0aW9uQ29udGV4dCgpKTsKIAogICAgIC8vIE1vc3QgbnVtYmVycyB1c2VkIGFyZSA8PSAxMDAu
IEV2ZW4gaWYgdGhleSBhcmVuJ3QgdXNlZCB0aGVyZSdzIHZlcnkgbGl0dGxlIGNvc3QgaW4gdXNp
bmcgdGhlIHNwYWNlLgogICAgIGNvbnN0IGludCBrTG93TnVtYmVycyA9IDEwMDsKQEAgLTIwNyw3
ICsyMDcsNyBAQCBTdHJpbmcgaW50MzJUb1dlYkNvcmVTdHJpbmdGYXN0KGludCB2YWx1ZSkKIFN0
cmluZyBpbnQzMlRvV2ViQ29yZVN0cmluZyhpbnQgdmFsdWUpCiB7CiAgICAgLy8gSWYgd2UgYXJl
IG9uIHRoZSBtYWluIHRocmVhZCAodGhpcyBzaG91bGQgYWx3YXlzIHRydWUgZm9yIG5vbi13b3Jr
ZXJzKSwgY2FsbCB0aGUgZmFzdGVyIG9uZS4KLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpCisgICAg
aWYgKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gaW50MzJU
b1dlYkNvcmVTdHJpbmdGYXN0KHZhbHVlKTsKICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIodmFs
dWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggZmUyZWM4NS4uZTgzY2Jm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1Ymxp
YzoKICAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKQogICAgIHsKICNpZm5kZWYgTkRFQlVH
Ci0gICAgICAgIGlmICghaXNNYWluVGhyZWFkKCkpCisgICAgICAgIGlmICghaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHNfY291bnQr
KzsKICNlbmRpZgpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgfk5vRXZlbnREaXNwYXRj
aEFzc2VydGlvbigpCiAgICAgewogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgaWYgKCFpc01haW5U
aHJlYWQoKSkKKyAgICAgICAgaWYgKCFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgQVNTRVJUKHNfY291bnQpOwogICAgICAgICBzX2Nv
dW50LS07CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICNpZm5kZWYgTkRFQlVHCiAgICAgc3Rh
dGljIGJvb2wgaXNFdmVudERpc3BhdGNoRm9yYmlkZGVuKCkKICAgICB7Ci0gICAgICAgIGlmICgh
aXNNYWluVGhyZWFkKCkpCisgICAgICAgIGlmICghaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiBzX2NvdW50Owog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDYyMTQ3NTYuLmZmZTBkODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTg0NSw3ICsxODQ1LDcgQEAgdm9pZCBEb2N1bWVudDo6
cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogCiB2b2lkIERvY3VtZW50Ojp1cGRhdGVT
dHlsZUlmTmVlZGVkKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKCF2aWV3KCkgfHwg
KCF2aWV3KCktPmlzSW5MYXlvdXQoKSAmJiAhdmlldygpLT5pc1BhaW50aW5nKCkpKTsKICAgICAK
ICAgICBpZiAoKCFtX3BlbmRpbmdTdHlsZVJlY2FsY1Nob3VsZEZvcmNlICYmICFjaGlsZE5lZWRz
U3R5bGVSZWNhbGMoKSkgfHwgaW5QYWdlQ2FjaGUoKSkKQEAgLTE4NTcsNyArMTg1Nyw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxlSWZOZWVkZWQoKQogCiB2b2lkIERvY3VtZW50Ojp1cGRh
dGVTdHlsZUZvckFsbERvY3VtZW50cygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGlmICghZG9j
dW1lbnRzVGhhdE5lZWRTdHlsZVJlY2FsYykKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODcxLDcg
KzE4NzEsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVTdHlsZUZvckFsbERvY3VtZW50cygpCiAK
IHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUxheW91dCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAg
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB2aWV3KCk7CiAgICAgaWYgKGZyYW1lVmlldyAmJiBmcmFt
ZVZpZXctPmlzSW5MYXlvdXQoKSkgewpAQCAtNDYzOSw3ICs0NjM5LDcgQEAgdm9pZCBEb2N1bWVu
dDo6ZGlkVXBkYXRlU2VjdXJpdHlPcmlnaW4oKQogCiBib29sIERvY3VtZW50Ojppc0NvbnRleHRU
aHJlYWQoKSBjb25zdAogewotICAgIHJldHVybiBpc01haW5UaHJlYWQoKTsKKyAgICByZXR1cm4g
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0
ZVVSTEZvclB1c2hPclJlcGxhY2VTdGF0ZShjb25zdCBLVVJMJiB1cmwpCkBAIC00Nzk2LDcgKzQ3
OTYsNyBAQCBwdWJsaWM6CiAKIHZvaWQgRG9jdW1lbnQ6OmRpZFJlY2VpdmVUYXNrKHZvaWQqIHVu
dHlwZWRDb250ZXh0KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIE93blB0cjxQZXJmb3JtVGFz
a0NvbnRleHQ+IGNvbnRleHQgPSBhZG9wdFB0cihzdGF0aWNfY2FzdDxQZXJmb3JtVGFza0NvbnRl
eHQqPih1bnR5cGVkQ29udGV4dCkpOwogICAgIEFTU0VSVChjb250ZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCA1NGU3ODE1Li4zNmU0ZmM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHN0cnVj
dCBNdXRhdGlvbk9ic2VydmVyOjpPYnNlcnZlckxlc3NUaGFuIHsKIAogUGFzc1JlZlB0cjxNdXRh
dGlvbk9ic2VydmVyPiBNdXRhdGlvbk9ic2VydmVyOjpjcmVhdGUoUGFzc1JlZlB0cjxNdXRhdGlv
bkNhbGxiYWNrPiBjYWxsYmFjaykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBNdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNrKSk7CiB9CiAKQEAgLTE2MCwxNCArMTYw
LDE0IEBAIHN0YXRpYyBNdXRhdGlvbk9ic2VydmVyU2V0JiBzdXNwZW5kZWRNdXRhdGlvbk9ic2Vy
dmVycygpCiAKIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKFBh
c3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9uKQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICBtX3JlY29yZHMuYXBwZW5kKG11dGF0aW9uKTsKICAgICBhY3RpdmVNdXRhdGlvbk9ic2VydmVy
cygpLmFkZCh0aGlzKTsKIH0KIAogdm9pZCBNdXRhdGlvbk9ic2VydmVyOjpzZXRIYXNUcmFuc2ll
bnRSZWdpc3RyYXRpb24oKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBhY3RpdmVNdXRhdGlvbk9i
c2VydmVycygpLmFkZCh0aGlzKTsKIH0KIApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgTXV0YXRp
b25PYnNlcnZlcjo6ZGVsaXZlcigpCiAKIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFs
bE11dGF0aW9ucygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQo
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHN0YXRpYyBib29sIGRlbGl2ZXJ5
SW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgIGlmIChkZWxpdmVyeUluUHJvZ3Jlc3MpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDk5NjY0MjIuLjgwNzhlOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApA
QCAtODU0LDEzICs4NTQsMTMgQEAgaW5saW5lIHZvaWQgYWRkU3VicmVzb3VyY2VVUkwoTGlzdEhh
c2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IEtVUkwmIHVybCkKIAogaW5saW5lIHZvaWQgTm9kZTo6
c2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZShDb250YWluZXJOb2RlKiBwYXJlbnQpCiB7Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25D
b250ZXh0KCkpOwogICAgIG1fcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSA9IHBhcmVudDsKIH0KIAog
aW5saW5lIENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSBjb25z
dAogewotICAgIEFTU0VSVChpc01haW5UaHJlYWRPckdDVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHRPckdDVGhyZWFkKCkpOwogICAgIHJldHVybiBtX3Bh
cmVudE9yU2hhZG93SG9zdE5vZGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA4MDIyMjQzLi5iMzg4ZDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0xNjMsNyArMTYzLDcg
QEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjcmVhdGVkTWVzc2FnZVBvcnQoTWVzc2Fn
ZVBvcnQqIHBvcnQpCiB7CiAgICAgQVNTRVJUKHBvcnQpOwogI2lmIEVOQUJMRShXT1JLRVJTKQot
ICAgIEFTU0VSVCgoaXNEb2N1bWVudCgpICYmIGlzTWFpblRocmVhZCgpKQorICAgIEFTU0VSVCgo
aXNEb2N1bWVudCgpICYmIGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICB8
fCAoaXNXb3JrZXJDb250ZXh0KCkgJiYgY3VycmVudFRocmVhZCgpID09IHN0YXRpY19jYXN0PFdv
cmtlckNvbnRleHQqPih0aGlzKS0+dGhyZWFkKCktPnRocmVhZElEKCkpKTsKICNlbmRpZgogCkBA
IC0xNzQsNyArMTc0LDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkZXN0cm95ZWRN
ZXNzYWdlUG9ydChNZXNzYWdlUG9ydCogcG9ydCkKIHsKICAgICBBU1NFUlQocG9ydCk7CiAjaWYg
RU5BQkxFKFdPUktFUlMpCi0gICAgQVNTRVJUKChpc0RvY3VtZW50KCkgJiYgaXNNYWluVGhyZWFk
KCkpCisgICAgQVNTRVJUKChpc0RvY3VtZW50KCkgJiYgaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpCiAgICAgICAgIHx8IChpc1dvcmtlckNvbnRleHQoKSAmJiBjdXJyZW50VGhyZWFkKCkg
PT0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KHRoaXMpLT50aHJlYWQoKS0+dGhyZWFkSUQo
KSkpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVC
bG9iUmVnaXN0cnkuY3BwCmluZGV4IGFmZTViNjYuLmJlMzljN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtODksNyArODks
NyBAQCBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JVUkxUYXNrKHZvaWQqIGNvbnRleHQpCiAKIHZv
aWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVy
bCwgUGFzc093blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEpCiB7Ci0gICAgaWYgKGlzTWFpblRocmVh
ZCgpKQorICAgIGlmIChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgYmxv
YlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgYmxvYkRhdGEpOwogICAgIGVsc2Ugewog
ICAgICAgICBPd25QdHI8QmxvYlJlZ2lzdHJ5Q29udGV4dD4gY29udGV4dCA9IGFkb3B0UHRyKG5l
dyBCbG9iUmVnaXN0cnlDb250ZXh0KHVybCwgYmxvYkRhdGEpKTsKQEAgLTEwOSw3ICsxMDksNyBA
QCB2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9y
aWdpbiogb3JpZ2luLCBjb25zdCBLVVJMJgogICAgIGlmIChvcmlnaW4gJiYgQmxvYlVSTDo6Z2V0
T3JpZ2luKHVybCkgPT0gIm51bGwiKQogICAgICAgICBvcmlnaW5NYXAoKS0+YWRkKHVybC5zdHJp
bmcoKSwgb3JpZ2luKTsKIAotICAgIGlmIChpc01haW5UaHJlYWQoKSkKKyAgICBpZiAoaXNJbldl
YkNvcmVFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVy
QmxvYlVSTCh1cmwsIHNyY1VSTCk7CiAgICAgZWxzZSB7CiAgICAgICAgIE93blB0cjxCbG9iUmVn
aXN0cnlDb250ZXh0PiBjb250ZXh0ID0gYWRvcHRQdHIobmV3IEJsb2JSZWdpc3RyeUNvbnRleHQo
dXJsLCBzcmNVUkwpKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCkKICAgICBpZiAoQmxvYlVS
TDo6Z2V0T3JpZ2luKHVybCkgPT0gIm51bGwiKQogICAgICAgICBvcmlnaW5NYXAoKS0+cmVtb3Zl
KHVybC5zdHJpbmcoKSk7CiAKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpCisgICAgaWYgKGlzSW5X
ZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lz
dGVyQmxvYlVSTCh1cmwpOwogICAgIGVsc2UgewogICAgICAgICBPd25QdHI8QmxvYlJlZ2lzdHJ5
Q29udGV4dD4gY29udGV4dCA9IGFkb3B0UHRyKG5ldyBCbG9iUmVnaXN0cnlDb250ZXh0KHVybCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9ET01VUkwuY3BwCmluZGV4IGY2NTg2MjYuLmZkZDI3OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0RPTVVSTC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU3RyaW5n
IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIE1lZGlhU291cmNlKiBzb3VyY2UpCiB7CiAgICAgLy8gU2luY2UgV2Vi
V29ya2VycyBjYW5ub3Qgb2J0YWluIE1lZGlhU291cmNlIG9iamVjdHMsIHdlIHNob3VsZCBiZSBv
biB0aGUgbWFpbiB0aHJlYWQuCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NF
UlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgaWYgKCFzY3JpcHRFeGVj
dXRpb25Db250ZXh0IHx8ICFzb3VyY2UpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTg1
LDcgKzg1LDcgQEAgU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE0KICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCiAgICAgLy8gU2luY2UgV2ViV29ya2VycyBjYW5ub3Qgb2J0YWluIFN0cmVhbSBvYmpl
Y3RzLCB3ZSBzaG91bGQgYmUgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAog
ICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkucmVnaXN0ZXJNZWRpYVN0cmVhbVVS
TChwdWJsaWNVUkwsIHN0cmVhbSk7CiAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cHVibGlj
VVJMTWFuYWdlcigpLnN0cmVhbVVSTHMoKS5hZGQocHVibGljVVJMLnN0cmluZygpKTsKQEAgLTEz
NSw3ICsxMzUsNyBAQCB2b2lkIERPTVVSTDo6cmV2b2tlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbgogICAgIGlmIChzdHJlYW1VUkxz
LmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IG1ha2Ugc3VyZSBv
ZiB0aGlzIGFzc2VydGlvbiBiZWxvdy4gUmFpc2UgYSBzcGVjIHF1ZXN0aW9uIGlmIHJlcXVpcmVk
LgogICAgICAgICAvLyBTaW5jZSBXZWJXb3JrZXJzIGNhbm5vdCBvYnRhaW4gU3RyZWFtIG9iamVj
dHMsIHdlIHNob3VsZCBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAgICAgICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rlck1l
ZGlhU3RyZWFtVVJMKHVybCk7CiAgICAgICAgIHN0cmVhbVVSTHMucmVtb3ZlKHVybC5zdHJpbmco
KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRy
ZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5jcHAKaW5kZXggZTc4ZTVjNy4uZGI2MWRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgc3RhdGljIGJv
b2wgaXNGb3JtYXR0aW5nVGFnKGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKIAogc3RhdGlj
IEhUTUxGb3JtRWxlbWVudCogY2xvc2VzdEZvcm1BbmNlc3RvcihFbGVtZW50KiBlbGVtZW50KQog
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhl
Y3V0aW9uQ29udGV4dCgpKTsKICAgICB3aGlsZSAoZWxlbWVudCkgewogICAgICAgICBpZiAoZWxl
bWVudC0+aGFzVGFnTmFtZShmb3JtVGFnKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxIVE1MRm9ybUVsZW1lbnQqPihlbGVtZW50KTsKQEAgLTI5Myw3ICsyOTMsNyBAQCBIVE1MVHJl
ZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcihIVE1MRG9jdW1lbnRQYXJzZXIqIHBhcnNlciwgRG9j
dW1lbnRGcmFnbWVudCogZgogICAgICwgbV9zY3JpcHRUb1Byb2Nlc3NTdGFydFBvc2l0aW9uKHVu
aW5pdGlhbGl6ZWRQb3NpdGlvblZhbHVlMSgpKQogICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiB7
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVj
dXRpb25Db250ZXh0KCkpOwogICAgIC8vIEZJWE1FOiBUaGlzIGFzc2VydGlvbiB3aWxsIGJlY29t
ZSBpbnZhbGlkIGlmIDxodHRwOi8vd2Via2l0Lm9yZy9iLzYwMzE2PiBpcyBmaXhlZC4KICAgICBB
U1NFUlQoY29udGV4dEVsZW1lbnQpOwogICAgIGlmIChjb250ZXh0RWxlbWVudCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAppbmRleCA2OWQwMzNjLi5kOTI5OWZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcApAQCAtMTg5LDcg
KzE4OSw3IEBAIHZvaWQgWFNTQXVkaXRvcjo6aW5pdChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAg
Y29uc3Qgc2l6ZV90IG1pbml1bUxlbmd0aEZvclN1ZmZpeFRyZWUgPSA1MTI7IC8vIEZJWE1FOiBU
dW5lIHRoaXMgcGFyYW1ldGVyLgogICAgIGNvbnN0IGludCBzdWZmaXhUcmVlRGVwdGggPSA1Owog
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVj
dXRpb25Db250ZXh0KCkpOwogICAgIGlmIChtX3N0YXRlID09IEluaXRpYWxpemVkKQogICAgICAg
ICByZXR1cm47CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gVW5pbml0aWFsaXplZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcAppbmRleCA1
ZDRmYTU5Li40MGEwZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9Y
U1NBdWRpdG9yRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hT
U0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBYU1NBdWRpdG9yRGVsZWdh
dGU6OlhTU0F1ZGl0b3JEZWxlZ2F0ZShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBtX2RvY3Vt
ZW50KGRvY3VtZW50KQogICAgICwgbV9kaWROb3RpZnlDbGllbnQoZmFsc2UpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIEFTU0VSVChtX2RvY3VtZW50KTsKIH0KIAogdm9pZCBYU1NBdWRpdG9yRGVs
ZWdhdGU6OmRpZEJsb2NrU2NyaXB0KGNvbnN0IFhTU0luZm8mIHhzc0luZm8pCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogCiAgICAgLy8gRklYTUU6IENvbnNpZGVyIHVzaW5nIGEgbW9yZSBoZWxwZnVsIGNv
bnNvbGUgbWVzc2FnZS4KICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1l
c3NhZ2UsIChBU0NJSUxpdGVyYWwoIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2Ny
aXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuXG4iKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvdW50ZXJzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ291bnRlcnMuaAppbmRleCAxOGU5
ZTgwLi5iNTBkNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ291bnRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ291
bnRlcnMuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGlubGluZSB2b2lk
IGluY3JlbWVudENvdW50ZXIoQ291bnRlclR5cGUgdHlwZSkKICAgICB7CiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJU
KGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgKytzX2NvdW50ZXJzW3R5
cGVdOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHR5cGUpOwpAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGlubGluZSB2b2lkIGRlY3JlbWVudENvdW50ZXIoQ291bnRl
clR5cGUgdHlwZSkKICAgICB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29u
dGV4dCgpKTsKICAgICAgICAgLS1zX2NvdW50ZXJzW3R5cGVdOwogI2Vsc2UKICAgICAgICAgVU5V
U0VEX1BBUkFNKHR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3RydW1lbnRpbmdBZ2VudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1l
bnRpbmdBZ2VudHMuY3BwCmluZGV4IGExYjdhMzQuLjljZjZkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5jcHAKQEAgLTExMiw3ICsxMTIs
NyBAQCB2b2lkIEluc3RydW1lbnRpbmdBZ2VudHM6OnJlc2V0KCkKIAogSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGF0aW9uRm9yUGFnZShQYWdlKiBwYWdlKQogewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgp
KTsKICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlciA9IHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKSkKICAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXItPm1faW5zdHJ1bWVu
dGluZ0FnZW50cy5nZXQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcAppbmRleCA5
ZDUxYzg3Li5iNmNhMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCkBAIC0xNTAsMTkgKzE1MCwxOSBA
QCBib29sIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtOjphbGxvd3NSZXF1ZXN0
KFN0b3JlZENyZWRlbnRpYWxzIGluY2x1ZAogQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNo
ZSYgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6c2hhcmVkKCkKIHsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUsIGNhY2hlLCAo
KSk7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIHJldHVybiBjYWNoZTsKIH0KIAogdm9pZCBDcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdENhY2hlOjphcHBlbmRFbnRyeShjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgS1VSTCYgdXJsLCBQYXNzT3duUHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0
Q2FjaGVJdGVtPiBwcmVmbGlnaHRSZXN1bHQpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIG1fcHJl
ZmxpZ2h0SGFzaE1hcC5zZXQobWFrZV9wYWlyKG9yaWdpbiwgdXJsKSwgcHJlZmxpZ2h0UmVzdWx0
KTsKIH0KIAogYm9vbCBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlOjpjYW5Ta2lwUHJl
ZmxpZ2h0KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBLVVJMJiB1cmwsIFN0b3JlZENyZWRl
bnRpYWxzIGluY2x1ZGVDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhU
VFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBDcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdEhhc2hNYXA6Oml0ZXJhdG9yIGNhY2hlSXQgPSBtX3ByZWZs
aWdodEhhc2hNYXAuZmluZChtYWtlX3BhaXIob3JpZ2luLCB1cmwpKTsKICAgICBpZiAoY2FjaGVJ
dCA9PSBtX3ByZWZsaWdodEhhc2hNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTE3Niw3ICsxNzYsNyBAQCBib29sIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmNh
blNraXBQcmVmbGlnaHQoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbgogCiB2b2lkIENyb3NzT3Jp
Z2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmVtcHR5KCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
bV9wcmVmbGlnaHRIYXNoTWFwLmNsZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggYjRjZGExYS4uYzU1NTg2NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAg
LTc2LDcgKzc2LDcgQEAgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3JtYXRpb24qIFJl
c291cmNlTG9hZFNjaGVkdWxlcjo6aG9zdEZvclVSTChjb25zdAogCiBSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIqIHJlc291cmNlTG9hZFNjaGVkdWxlcigpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHN0
YXRpYyBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIGdsb2JhbFNjaGVkdWxlciA9IDA7CiAgICAgCiAg
ICAgaWYgKCFnbG9iYWxTY2hlZHVsZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9X
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA0NDYxODg5Li4xMmIxMTY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0x
MDYsNyArMTA2LDcgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
fk1haW5UaHJlYWRCcmlkZ2UoKQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgTWFpblRocmVhZEJyaWRnZSogdGhpc1B0ciwgUGFzc093blB0cjxDcm9zc1Ro
cmVhZFJlc291cmNlUmVxdWVzdERhdGE+IHJlcXVlc3REYXRhLCBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucyBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGNvbnRleHQtPmlz
RG9jdW1lbnQoKSk7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihjb250ZXh0KTsKIApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlcihTY3JpcHRF
eGVjCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFp
blRocmVhZERlc3Ryb3koU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWFpblRocmVh
ZEJyaWRnZSogdGhpc1B0cikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIGRlbGV0ZSB0aGlzUHRyOwogfQpA
QCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVh
ZEJyaWRnZTo6ZGVzdHJveSgpCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6bWFpblRocmVhZENhbmNlbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBNYWluVGhyZWFkQnJpZGdlKiB0aGlzUHRyKQogewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBB
U1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKICAgICBpZiAo
IXRoaXNQdHItPm1fbWFpblRocmVhZExvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggMmVlOWRl
OC4uZTA4OTRlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTExMTQsNyArMTExNCw3IEBAIHByaXZh
dGU6CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzY2hlZHVsZVJlYWNoZWRNYXhBcHBD
YWNoZVNpemVDYWxsYmFjaygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIENocm9tZUNsaWVudENh
bGxiYWNrVGltZXIqIHRpbWVyID0gbmV3IENocm9tZUNsaWVudENhbGxiYWNrVGltZXIodGhpcyk7
CiAgICAgdGltZXItPnN0YXJ0T25lU2hvdCgwKTsKICAgICAvLyBUaGUgdGltZXIgd2lsbCBkZWxl
dGUgaXRzZWxmIG9uY2UgaXQgZmlyZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcAppbmRleCAxZGYwZWRkLi4yODM4Yjc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIGNv
bnN0IGRvdWJsZSBjRGVmYXVsdERlY29kZWREYXRhRGVsZXRpb25JbnRlcnZhbCA9IDA7CiBNZW1v
cnlDYWNoZSogbWVtb3J5Q2FjaGUoKQogewogICAgIHN0YXRpYyBNZW1vcnlDYWNoZSogc3RhdGlj
Q2FjaGUgPSBuZXcgTWVtb3J5Q2FjaGU7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChXVEY6OmlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAg
IHJldHVybiBzdGF0aWNDYWNoZTsKIH0KQEAgLTEwMCw3ICsxMDAsNyBAQCBib29sIE1lbW9yeUNh
Y2hlOjphZGQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgIGlmIChkaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKFdURjo6aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAg
bV9yZXNvdXJjZXMuc2V0KHJlc291cmNlLT51cmwoKSwgcmVzb3VyY2UpOwogICAgIHJlc291cmNl
LT5zZXRJbkNhY2hlKHRydWUpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6
OnJldmFsaWRhdGlvblN1Y2NlZWRlZChDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0aW5nUmVzb3Vy
Y2UsIGNvCiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnJldmFsaWRhdGlvbkZhaWxlZChDYWNoZWRSZXNv
dXJjZSogcmV2YWxpZGF0aW5nUmVzb3VyY2UpCiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChXVEY6OmlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsK
ICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmV2YWxpZGF0aW9uIGZhaWxlZCBmb3IgJXAiLCBy
ZXZhbGlkYXRpbmdSZXNvdXJjZSk7CiAgICAgQVNTRVJUKHJldmFsaWRhdGluZ1Jlc291cmNlLT5y
ZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKTsKICAgICByZXZhbGlkYXRpbmdSZXNvdXJjZS0+Y2xlYXJS
ZXNvdXJjZVRvUmV2YWxpZGF0ZSgpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgTWVtb3J5Q2Fj
aGU6OnJldmFsaWRhdGlvbkZhaWxlZChDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0aW5nUmVzb3Vy
Y2UpCiAKIENhY2hlZFJlc291cmNlKiBNZW1vcnlDYWNoZTo6cmVzb3VyY2VGb3JVUkwoY29uc3Qg
S1VSTCYgcmVzb3VyY2VVUkwpCiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChXVEY6OmlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBLVVJM
IHVybCA9IHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKHJlc291cmNlVVJMKTsKICAg
ICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBtX3Jlc291cmNlcy5nZXQodXJsKTsKICAgICBi
b29sIHdhc1B1cmdlYWJsZSA9IE1lbW9yeUNhY2hlOjpzaG91bGRNYWtlUmVzb3VyY2VQdXJnZWFi
bGVPbkV2aWN0aW9uKCkgJiYgcmVzb3VyY2UgJiYgcmVzb3VyY2UtPmlzUHVyZ2VhYmxlKCk7CkBA
IC0zODgsNyArMzg4LDcgQEAgYm9vbCBNZW1vcnlDYWNoZTo6bWFrZVJlc291cmNlUHVyZ2VhYmxl
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIAogdm9pZCBNZW1vcnlDYWNoZTo6ZXZpY3QoQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlKQogewotICAgIEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQoV1RGOjppc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
TE9HKFJlc291cmNlTG9hZGluZywgIkV2aWN0aW5nIHJlc291cmNlICVwIGZvciAnJXMnIGZyb20g
Y2FjaGUiLCByZXNvdXJjZSwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEo
KSk7CiAgICAgLy8gVGhlIHJlc291cmNlIG1heSBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGJ5
IHNvbWVvbmUgb3RoZXIgdGhhbiBvdXIgY2FsbGVyLAogICAgIC8vIHdobyBuZWVkZWQgYSBmcmVz
aCBjb3B5IGZvciBhIHJlbG9hZC4gU2VlIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjQ3OSNjNj4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFi
YXNlLmNwcAppbmRleCBiM2I2N2JmLi5iYzE0OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTgwNiw3ICs4MDYsNyBAQCBJY29uRGF0YWJhc2U6
Okljb25EYXRhYmFzZSgpCiAgICAgLCBtX2NsaWVudChkZWZhdWx0Q2xpZW50KCkpCiB7CiAgICAg
TE9HKEljb25EYXRhYmFzZSwgIkNyZWF0aW5nIEljb25EYXRhYmFzZSAlcCIsIHRoaXMpOwotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9u
Q29udGV4dCgpKTsKIH0KIAogSWNvbkRhdGFiYXNlOjp+SWNvbkRhdGFiYXNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAppbmRleCAxY2NiZjNjLi45OWRmMjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCkBAIC05MjAsNyArOTIwLDcgQEAgdm9pZCBET01XaW5kb3c6OmZvY3VzKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAKICAgICBib29sIGFsbG93Rm9jdXMgPSBX
aW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3I6OndpbmRvd0ZvY3VzQWxsb3dlZCgpIHx8ICFtX2Zy
YW1lLT5zZXR0aW5ncygpLT53aW5kb3dGb2N1c1Jlc3RyaWN0ZWQoKTsKICAgICBpZiAoY29udGV4
dCkgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQoaXNJ
bldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgICAgICBEb2N1bWVudCogYWN0aXZlRG9j
dW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOwogICAgICAgICBpZiAob3Bl
bmVyKCkgJiYgYWN0aXZlRG9jdW1lbnQtPmRvbVdpbmRvdygpID09IG9wZW5lcigpKQogICAgICAg
ICAgICAgYWxsb3dGb2N1cyA9IHRydWU7CkBAIC05NjgsNyArOTY4LDcgQEAgdm9pZCBET01XaW5k
b3c6OmNsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChjb250ZXh0KSB7Ci0gICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgICAg
IERvY3VtZW50KiBhY3RpdmVEb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4
dCk7CiAgICAgICAgIGlmICghYWN0aXZlRG9jdW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9IaXN0b3J5LmNwcAppbmRleCA4N2Q4NTA2Li4yZTYwNzU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
SGlzdG9yeS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIEhpc3Rvcnk6OmdvKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludCBkaXN0YW5jZSkKICAgICBpZiAoIW1fZnJhbWUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBEb2N1bWVudCogYWN0aXZl
RG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOwogICAgIGlmICghYWN0
aXZlRG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVtb3J5SW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeUluZm8uY3Bw
CmluZGV4IDgzNmVjMzMuLmFmOWMyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TWVtb3J5SW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlJbmZvLmNwcApA
QCAtOTIsNyArOTIsNyBAQCBzaXplX3QgcXVhbnRpemVNZW1vcnlTaXplKHNpemVfdCBzaXplKQog
ICAgIGNvbnN0IGludCBudW1iZXJPZkJ1Y2tldHMgPSAxMDA7CiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChWZWN0b3I8c2l6ZV90PiwgYnVja2V0U2l6ZUxpc3QsICgpKTsKIAotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgp
KTsKICAgICBpZiAoYnVja2V0U2l6ZUxpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIGJ1Y2tldFNp
emVMaXN0LnJlc2l6ZShudW1iZXJPZkJ1Y2tldHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlQb2xpY3kuY3BwCmluZGV4IDViMzZmNGYuLjg2MmFiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgYm9vbCBTZWN1cml0eVBvbGlj
eTo6aXNBY2Nlc3NUb1VSTFdoaXRlTGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVP
cmlnaW4KIAogdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQo
IXNvdXJjZU9yaWdpbi5pc1VuaXF1ZSgpKTsKICAgICBpZiAoc291cmNlT3JpZ2luLmlzVW5pcXVl
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFNlY3VyaXR5UG9s
aWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYg
c291cmNlTwogCiB2b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJv
b2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFT
U0VSVCghc291cmNlT3JpZ2luLmlzVW5pcXVlKCkpOwogICAgIGlmIChzb3VyY2VPcmlnaW4uaXNV
bmlxdWUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgU2VjdXJp
dHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5
T3JpZ2luJiBzb3VyCiAKIHZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hp
dGVsaXN0cygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJ
bldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIG9yaWdpbkFjY2Vzc01hcCgpLmNsZWFy
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxl
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRl
eCA0NTE1MGU0Li5jY2VhNWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tCkBAIC0zOTAsMTQgKzM5MCwxNCBAQCBzdGF0aWMgdm9pZCBzZWxmUmV0YWluaW5n
TlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwoTlNTY3JvbGxWaWV3ICosIFNFTCwgTlNFdmVudCAqKQog
CiBzdGF0aWMgYm9vbCBuc1Njcm9sbFZpZXdTY3JvbGxXaGVlbFNob3VsZFJldGFpblNlbGYoKQog
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhl
Y3V0aW9uQ29udGV4dCgpKTsKIAogICAgIHJldHVybiBfbnNTY3JvbGxWaWV3U2Nyb2xsV2hlZWxT
aG91bGRSZXRhaW5TZWxmOwogfQogCiBzdGF0aWMgdm9pZCBzZXROU1Njcm9sbFZpZXdTY3JvbGxX
aGVlbFNob3VsZFJldGFpblNlbGYoYm9vbCBzaG91bGRSZXRhaW4pCiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkp
OwogCiAgICAgaWYgKCFvcmlnaW5hbE5TU2Nyb2xsVmlld1Njcm9sbFdoZWVsKSB7CiAgICAgICAg
IE1ldGhvZCBtZXRob2QgPSBjbGFzc19nZXRJbnN0YW5jZU1ldGhvZChvYmpjX2dldFJlcXVpcmVk
Q2xhc3MoIk5TU2Nyb2xsVmlldyIpLCBAc2VsZWN0b3Ioc2Nyb2xsV2hlZWw6KSk7CkBAIC00MDks
NyArNDA5LDcgQEAgc3RhdGljIHZvaWQgc2V0TlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWxTaG91bGRS
ZXRhaW5TZWxmKGJvb2wgc2hvdWxkUmV0YWluKQogCiBzdGF0aWMgdm9pZCBzZWxmUmV0YWluaW5n
TlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwoTlNTY3JvbGxWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3Is
IE5TRXZlbnQgKmV2ZW50KQogewotICAgIGJvb2wgc2hvdWxkUmV0YWluU2VsZiA9IGlzTWFpblRo
cmVhZCgpICYmIG5zU2Nyb2xsVmlld1Njcm9sbFdoZWVsU2hvdWxkUmV0YWluU2VsZigpOworICAg
IGJvb2wgc2hvdWxkUmV0YWluU2VsZiA9IGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpICYm
IG5zU2Nyb2xsVmlld1Njcm9sbFdoZWVsU2hvdWxkUmV0YWluU2VsZigpOwogCiAgICAgaWYgKHNo
b3VsZFJldGFpblNlbGYpCiAgICAgICAgIFtzZWxmIHJldGFpbl07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXgg
ZjEyYzI4MC4uZDg4YWU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnBhZ2VEZXN0cm95ZWQoKQogCiBib29sIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZy
YW1lVmlldykgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAK
ICAgICAvLyBXZSBjdXJyZW50bHkgb25seSBoYW5kbGUgdGhlIG1haW4gZnJhbWUuCkBAIC0yNjUs
NyArMjY1LDcgQEAgdW5zaWduZWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvbXB1dGVDdXJyZW50
V2hlZWxFdmVudEhhbmRsZXJDb3VudCgpCiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZy
YW1lVmlld1doZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKEZyYW1lVmlldyogZnJhbWVWaWV3
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQobV9wYWdlKTsKIAogICAgIHJlY29tcHV0
ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KTsKQEAgLTI3Myw3
ICsyNzMsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdXaGVlbEV2ZW50
SGFuZGxlckNvdW50Q2hhbmdlZChGcmFtZVZpZXcqIGZyYQogCiB2b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpmcmFtZVZpZXdIYXNTbG93UmVwYWludE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3
KiBmcmFtZVZpZXcpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQo
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwogCiAg
ICAgaWYgKCFjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhmcmFtZVZpZXcpKQpAQCAt
Mjg0LDcgKzI4NCw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0hhc1Ns
b3dSZXBhaW50T2JqZWN0c0RpZENoYW5nZShGcmFtZVZpZXcqIGZyCiAKIHZvaWQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OmZyYW1lVmlld0ZpeGVkT2JqZWN0c0RpZENoYW5nZShGcmFtZVZpZXcqIGZy
YW1lVmlldykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0lu
V2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAKICAgICBp
ZiAoIWNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpCkBAIC0zMjks
NyArMzI5LDcgQEAgR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNvdW50ZXJT
Y3JvbGxpbmdMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcKIAogdm9pZCBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQobV9wYWdlKTsKIAogICAgIGlmICghY29v
cmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKQEAgLTM2OSw3ICszNjks
NyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3Np
dGlvblRpbWVyRmlyZWQoVGltZXI8U2Nyb2xsaQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
Ojp1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9z
aXRpb24sIGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xsLCBTZXRPclN5bmNTY3JvbGxpbmdMYXllclBv
c2l0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCiB7Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwog
CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTQxMSw3ICs0MTEsNyBAQCB2
b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihj
b25zdCBJbnRQb2ludCYgc2Nyb2xsUAogI2lmIFBMQVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENI
Uk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFuZGxl
V2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlKQogewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29u
dGV4dCgpKTsKIAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCmluZGV4IDcwZTY4OTku
LjA3MmMwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWUuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVX
aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIAogc3RhdGlj
IHZvaWQgZGVyZWZTY3JvbGxpbmdDb29yZGluYXRvcihTY3JvbGxpbmdDb29yZGluYXRvciogc2Ny
b2xsaW5nQ29vcmRpbmF0b3IpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgc2Nyb2xsaW5nQ29v
cmRpbmF0b3ItPmRlcmVmKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KaW5kZXggMzAwYTEy
ZC4uZmE3M2M0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQpAQCAtMTA0LDcgKzEwNCw3IEBA
IHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmNvbW1pdFRyZWVTdGF0ZUlmTmVlZGVkKCkK
IAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6ZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChG
cmFtZVZpZXcqIGZyYW1lVmlldykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKG1fcGFn
ZSk7CiAKICAgICAvLyBDb21wdXRlIHRoZSByZWdpb24gb2YgdGhlIHBhZ2UgdGhhdCB3ZSBjYW4n
dCBkbyBmYXN0IHNjcm9sbGluZyBmb3IuIFRoaXMgY3VycmVudGx5IGluY2x1ZGVzCkBAIC0xNDks
NyArMTQ5LDcgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6cmVjb21wdXRlV2hlZWxF
dmVudEhhbmRsZXJDb3VudEZvckZyYW1lVmlldyhGcmFtZVYKIAogdm9pZCBTY3JvbGxpbmdDb29y
ZGluYXRvck1hYzo6ZnJhbWVWaWV3Um9vdExheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVW
aWV3KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJD
b3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQobV9wYWdlKTsKIAogICAgIGlmICgh
Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKQEAgLTE2OCw3ICsx
NjgsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpmcmFtZVZpZXdSb290TGF5ZXJE
aWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNYWM6OmZyYW1lVmlld0hvcml6b250YWxTY3JvbGxiYXJMYXllckRpZENoYW5nZShGcmFtZVZp
ZXcqIGZyYW1lVmlldywgR3JhcGhpY3NMYXllciopCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFT
U0VSVChtX3BhZ2UpOwogCiAgICAgaWYgKGZyYW1lVmlldy0+ZnJhbWUoKSAhPSBtX3BhZ2UtPm1h
aW5GcmFtZSgpKQpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JN
YWM6OmZyYW1lVmlld0hvcml6b250YWxTY3JvbGxiYXJMYXllckRpZENoYW5nZShGcmFtZVZpCiAK
IHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmZyYW1lVmlld1ZlcnRpY2FsU2Nyb2xsYmFy
TGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIEdyYXBoaWNzTGF5ZXIqKQogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0
aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQobV9wYWdlKTsKICAgICAKICAgICBpZiAoZnJhbWVW
aWV3LT5mcmFtZSgpICE9IG1fcGFnZS0+bWFpbkZyYW1lKCkpCkBAIC0xOTAsNyArMTkwLDcgQEAg
dm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6ZnJhbWVWaWV3VmVydGljYWxTY3JvbGxiYXJM
YXllckRpZENoYW5nZShGcmFtZVZpZXcKIAogYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6
cmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKEZyYW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJ
bnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVCht
X3BhZ2UpOwogCiAgICAgaWYgKCFjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhmcmFt
ZVZpZXcpKQpAQCAtMjE1LDcgKzIxNSw3IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6
OnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShGcmFtZVZpZXcqIGZyYW1lVmlldywKIAogYm9v
bCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudChGcmFtZVZpZXcqLCBj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgIEFTU0VSVChtX3BhZ2UpOwogCiAgICAgaWYgKG1fc2Nyb2xsaW5nVHJlZS0+d2lsbFdoZWVs
RXZlbnRTdGFydFN3aXBlR2VzdHVyZSh3aGVlbEV2ZW50KSkKQEAgLTM4Myw3ICszODMsNyBAQCB2
b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBv
c2l0aW9uT25NYWluVGhyZWFkKE1haQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjp1
cGRhdGVNYWluRnJhbWVTY3JvbGxMYXllclBvc2l0aW9uKCkKIHsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAK
ICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRleCA4NjkxYWM4Li4xMzY0NzcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcApAQCAtNTI1LDcgKzUy
NSw3IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlN
RVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojpp
c1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNvZGluZyhjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Ro
cmVhZEdsb2JhbERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFs
RGF0YS5jcHAKaW5kZXggYmMxZDY1ZS4uMWU3MzFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgVGhyZWFkR2xvYmFs
RGF0YTo6VGhyZWFkR2xvYmFsRGF0YSgpCiAgICAgLCBtX3RocmVhZFRpbWVycyhhZG9wdFB0cihu
ZXcgVGhyZWFkVGltZXJzKSkKICAgICAsIG1feG1sVHlwZVJlZ0V4cChhZG9wdFB0cihuZXcgWE1M
TUlNRVR5cGVSZWdFeHApKQogI2lmbmRlZiBOREVCVUcKLSAgICAsIG1faXNNYWluVGhyZWFkKGlz
TWFpblRocmVhZCgpKQorICAgICwgbV9pc01haW5UaHJlYWQoaXNJbldlYkNvcmVFeGVjdXRpb25D
b250ZXh0KCkpCiAjZW5kaWYKICNpZiBVU0UoSUNVX1VOSUNPREUpCiAgICAgLCBtX2NhY2hlZENv
bnZlcnRlcklDVShhZG9wdFB0cihuZXcgSUNVQ29udmVydGVyV3JhcHBlcikpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcAppbmRleCA0ZDg2NjA1Li4xNmZlYzdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJlYWRUaW1lcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRpbWVycy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAg
VGhyZWFkVGltZXJzOjpUaHJlYWRUaW1lcnMoKQogICAgIDogbV9zaGFyZWRUaW1lcigwKQogICAg
ICwgbV9maXJpbmdUaW1lcnMoZmFsc2UpCiB7Ci0gICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAg
IGlmIChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgc2V0U2hhcmVkVGlt
ZXIobWFpblRocmVhZFNoYXJlZFRpbWVyKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVl
U2hhcmVkLmgKaW5kZXggOGEwMTk4Ni4uYmNkOTA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Ry
ZWVTaGFyZWQuaApAQCAtNDEsNyArNDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9hZG9w
dGlvbklzUmVxdWlyZWQodHJ1ZSkKICNlbmRpZgogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgp
KTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IGZhbHNlOwog
ICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IGZhbHNlOwpAQCAtNTAsNyArNTAs
NyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB+VHJlZVNoYXJlZCgpCiAgICAgewotICAgICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25D
b250ZXh0KCkpOwogICAgICAgICBBU1NFUlQoIW1fcmVmQ291bnQpOwogICAgICAgICBBU1NFUlQo
bV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJl
ZCk7CkBAIC01OSw3ICs1OSw3IEBAIHByb3RlY3RlZDoKIHB1YmxpYzoKICAgICB2b2lkIHJlZigp
CiAgICAgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQo
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgICAgICBBU1NFUlQoIW1fZGVsZXRp
b25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24p
OwogICAgICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKQEAgLTY4LDcgKzY4LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBkZXJlZigpCiAgICAgewotICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0
KCkpOwogICAgICAgICBBU1NFUlQobV9yZWZDb3VudCA+PSAwKTsKICAgICAgICAgQVNTRVJUKCFt
X2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICBBU1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1
bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZE
YXRhYmFzZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0
YWJhc2VMb2FkZXIuY3BwCmluZGV4IDQyZTAzNDEuLmNmMTI1OTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcApAQCAtNDMs
NyArNDMsNyBAQCBIUlRGRGF0YWJhc2VMb2FkZXIqIEhSVEZEYXRhYmFzZUxvYWRlcjo6c19sb2Fk
ZXIgPSAwOwogCiBQYXNzUmVmUHRyPEhSVEZEYXRhYmFzZUxvYWRlcj4gSFJURkRhdGFiYXNlTG9h
ZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3VzbHlJZk5lY2Vzc2FyeShmbG9hdCBzYW1wbGVS
YXRlKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJD
b3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIFJlZlB0cjxIUlRGRGF0YWJhc2VMb2FkZXI+
IGxvYWRlcjsKICAgICAKQEAgLTY0LDEyICs2NCwxMiBAQCBIUlRGRGF0YWJhc2VMb2FkZXI6OkhS
VEZEYXRhYmFzZUxvYWRlcihmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogbV9kYXRhYmFzZUxvYWRl
clRocmVhZCgwKQogICAgICwgbV9kYXRhYmFzZVNhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKIHsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlv
bkNvbnRleHQoKSk7CiB9CiAKIEhSVEZEYXRhYmFzZUxvYWRlcjo6fkhSVEZEYXRhYmFzZUxvYWRl
cigpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNv
cmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgd2FpdEZvckxvYWRlclRocmVhZENvbXBsZXRp
b24oKTsKICAgICBtX2hydGZEYXRhYmFzZS5jbGVhcigpOwpAQCAtOTAsNyArOTAsNyBAQCBzdGF0
aWMgdm9pZCBkYXRhYmFzZUxvYWRlckVudHJ5KHZvaWQqIHRocmVhZERhdGEpCiAKIHZvaWQgSFJU
RkRhdGFiYXNlTG9hZGVyOjpsb2FkKCkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQoIWlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBpZiAoIW1f
aHJ0ZkRhdGFiYXNlLmdldCgpKSB7CiAgICAgICAgIC8vIExvYWQgdGhlIGRlZmF1bHQgSFJURiBk
YXRhYmFzZS4KICAgICAgICAgbV9ocnRmRGF0YWJhc2UgPSBIUlRGRGF0YWJhc2U6OmNyZWF0ZSht
X2RhdGFiYXNlU2FtcGxlUmF0ZSk7CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgSFJURkRhdGFiYXNl
TG9hZGVyOjpsb2FkKCkKIAogdm9pZCBIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWRBc3luY2hyb25v
dXNseSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldl
YkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGhy
ZWFkTG9jayk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IDE1
YTczYjkuLjcyNzBiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC0x
ODcsNyArMTg3LDcgQEAgdm9pZCBDb25zdW1lcldyYXBwZXI6OmNvbnN1bWVBdWRpbyhBdWRpb0J1
cyogYnVzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpCiAKIHZvaWQgV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2U6OmFkZEF1ZGlvQ29uc3VtZXIoV2ViQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyKiBjb25zdW1l
cikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkgJiYg
Y29uc3VtZXIpOwogCiAgICAgbV9wcml2YXRlLT5hZGRBdWRpb0NvbnN1bWVyKENvbnN1bWVyV3Jh
cHBlcjo6Y3JlYXRlKGNvbnN1bWVyKSk7CkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBXZWJNZWRp
YVN0cmVhbVNvdXJjZTo6YWRkQXVkaW9Db25zdW1lcihXZWJBdWRpb0Rlc3RpbmF0aW9uQ29uc3Vt
ZXIqIGNvbnN1bWUKIAogYm9vbCBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6cmVtb3ZlQXVkaW9Db25z
dW1lcihXZWJBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqIGNvbnN1bWVyKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051bGwoKSAmJiBjb25zdW1lcik7CiAKICAg
ICBjb25zdCBWZWN0b3I8UmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Db25zdW1lcj4gPiYgY29uc3Vt
ZXJzID0gbV9wcml2YXRlLT5hdWRpb0NvbnN1bWVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL01JTUVUeXBlUmVnaXN0cnlFZmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL01JTUVUeXBlUmVnaXN0cnlFZmwuY3BwCmluZGV4IDU0MGJiMmQuLjk0
OTQwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9NSU1FVHlwZVJl
Z2lzdHJ5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvTUlNRVR5cGVS
ZWdpc3RyeUVmbC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIGNvbnN0IEV4dGVuc2lvbk1h
cCBleHRlbnNpb25NYXBbXSA9IHsKIAogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVU
eXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyAmZXh0KQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAog
ICAgIFN0cmluZyBzID0gZXh0Lmxvd2VyKCk7CiAgICAgY29uc3QgRXh0ZW5zaW9uTWFwICplID0g
ZXh0ZW5zaW9uTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApp
bmRleCA3YjczZTJjLi43MzA4OGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250LmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIHN0YXRpYyBib29sIHNob3VsZFVzZUZvbnRT
bW9vdGhpbmcgPSB0cnVlOwogCiB2b2lkIEZvbnQ6OnNldFNob3VsZFVzZVNtb290aGluZyhib29s
IHNob3VsZFVzZVNtb290aGluZykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgc2hvdWxkVXNlRm9u
dFNtb290aGluZyA9IHNob3VsZFVzZVNtb290aGluZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbGxiYWNrTGlzdC5oCmluZGV4IDAwNGE1M2Eu
LjA5MzcxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRGYWxsYmFja0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250RmFsbGJhY2tMaXN0LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0
IFNpbXBsZUZvbnREYXRhKiBwcmltYXJ5U2ltcGxlRm9udERhdGEoY29uc3QgRm9udCogZikKICAg
ICB7IAotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQoaXNJ
bldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgICAgICBpZiAoIW1fY2FjaGVkUHJpbWFy
eVNpbXBsZUZvbnREYXRhKQogICAgICAgICAgICAgbV9jYWNoZWRQcmltYXJ5U2ltcGxlRm9udERh
dGEgPSBwcmltYXJ5Rm9udERhdGEoZiktPmZvbnREYXRhRm9yQ2hhcmFjdGVyKCcgJyk7CiAgICAg
ICAgIHJldHVybiBtX2NhY2hlZFByaW1hcnlTaW1wbGVGb250RGF0YTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwCmluZGV4IDlhOTQ1Y2Eu
LjVhNTAwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRGYXN0UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dEZhc3RQYXRoLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpwYWly
PEdseXBoRGF0YSwgR2x5cGhQYWdlKj4gZ2x5cGhEYXRhQW5kUGFnZUZvck5vbkNKS0NoYXJhY3Rl
CiAKIHN0ZDo6cGFpcjxHbHlwaERhdGEsIEdseXBoUGFnZSo+IEZvbnQ6OmdseXBoRGF0YUFuZFBh
Z2VGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjLCBib29sIG1pcnJvciwgRm9udERhdGFWYXJpYW50IHZh
cmlhbnQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQo
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgaWYgKHZhcmlhbnQgPT0gQXV0
b1ZhcmlhbnQpIHsKICAgICAgICAgaWYgKG1fZm9udERlc2NyaXB0aW9uLnNtYWxsQ2FwcygpICYm
ICFwcmltYXJ5Rm9udCgpLT5pc1NWR0ZvbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDE3MTg4ODQuLmM0ZjVlM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgSW1hZ2U6
On5JbWFnZSgpCiAKIEltYWdlKiBJbWFnZTo6bnVsbEltYWdlKCkKIHsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8SW1hZ2U+LCBudWxsSW1hZ2UsIChCaXRt
YXBJbWFnZTo6Y3JlYXRlKCkpKTs7CiAgICAgcmV0dXJuIG51bGxJbWFnZS5nZXQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5j
cHAKaW5kZXggNGQ2NGJhMS4uNTU2MTFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTcwNCw3ICs3MDQsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90
aWZpY2F0aW9uKE5vdGlmaWNhdGlvbgogICAgIC8vIHNvIGFsd2F5cyBnbyB0aHJvdWdoIHRoZSBx
dWV1ZSBiZWNhdXNlIG5vdGlmaWNhdGlvbnMgaGFwcGVuIG9uIGRpZmZlcmVudCB0aHJlYWRzLgog
ICAgIG1fcXVldWVkTm90aWZpY2F0aW9ucy5hcHBlbmQobm90aWZpY2F0aW9uKTsKIAotICAgIGJv
b2wgZGVsYXlEaXNwYXRjaCA9IG1fZGVsYXlDYWxsYmFja3MgfHwgIWlzTWFpblRocmVhZCgpOwor
ICAgIGJvb2wgZGVsYXlEaXNwYXRjaCA9IG1fZGVsYXlDYWxsYmFja3MgfHwgIWlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChkZWxheURpc3BhdGNoICYmICFtX21haW5UaHJl
YWRDYWxsUGVuZGluZykgewogICAgICAgICBtX21haW5UaHJlYWRDYWxsUGVuZGluZyA9IHRydWU7
CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQobWFpblRocmVhZENhbGxiYWNrLCB0aGlzKTsKQEAg
LTcyMiw3ICs3MjIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2No
ZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbgogCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZGlzcGF0Y2hOb3RpZmljYXRpb24oKQogewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29u
dGV4dCgpKTsKIAogICAgIE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24gPSBOb3RpZmljYXRpb24o
KTsKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvVGlsZUNhY2hlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
bWFjL1RpbGVDYWNoZS5tbQppbmRleCBmYzQwNTNjLi5lY2VhMzliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ2FjaGUubW0KQEAgLTEy
NCw3ICsxMjQsNyBAQCBUaWxlQ2FjaGU6OlRpbGVDYWNoZShXZWJUaWxlQ2FjaGVMYXllciogdGls
ZUNhY2hlTGF5ZXIpCiAKIFRpbGVDYWNoZTo6flRpbGVDYWNoZSgpCiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkp
OwogCiAgICAgZm9yIChUaWxlTWFwOjppdGVyYXRvciBpdCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5k
ID0gbV90aWxlcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGNvbnN0IFRpbGVJ
bmZvJiB0aWxlSW5mbyA9IGl0LT52YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL21hYy9XZWJUaWxlQ2FjaGVMYXllci5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9XZWJUaWxlQ2FjaGVMYXllci5tbQppbmRleCBk
MTE5ZjViLi45ZmE1MWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9tYWMvV2ViVGlsZUNhY2hlTGF5ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVDYWNoZUxheWVyLm1tCkBAIC0xMjQsNyArMTI0
LDcgQEAgLSAoV2ViQ29yZTo6VGlsZWRCYWNraW5nKil0aWxlZEJhY2tpbmcKIAogLSAodm9pZClp
bnZhbGlkYXRlCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJ
bldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChfdGlsZUNhY2hlKTsKICAg
ICBfdGlsZUNhY2hlID0gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2lu
SW50ZXJuYWwuY3BwCmluZGV4IDE1Mjc1YjMuLjgyMmNhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5h
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FMYXllcldpbkludGVybmFsLmNwcApAQCAtNjMsNyArNjMsNyBAQCBQbGF0Zm9ybUNBTGF5
ZXJXaW5JbnRlcm5hbDo6flBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsKCkKIAogdm9pZCBQbGF0
Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6ZGlzcGxheUNhbGxiYWNrKENBQ0ZMYXllclJlZiBjYUxh
eWVyLCBDR0NvbnRleHRSZWYgY29udGV4dCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgCiAgICAg
aWYgKCFvd25lcigpIHx8ICFvd25lcigpLT5vd25lcigpKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmll
d0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNwcAppbmRleCBkOTQ1YzNlLi40ZmY1ZDQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNG
Vmlld0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTExMCw3ICsxMTAsNyBA
QCB2b2lkIFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0Ojpjb250ZXh0RGlkQ2hhbmdlKCkKICAgICAv
LyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkIHdoZW4g
bm8gY2hhbmdlcyBoYXZlIGFjdHVhbGx5IAogICAgIC8vIGJlZW4gY29tbWl0dGVkIHRvIHRoZSBj
b250ZXh0LCBlZy4gd2hlbiBhIHZpZGVvIGZyYW1lIGhhcyBiZWVuIGFkZGVkIHRvIGFuIGltYWdl
CiAgICAgLy8gcXVldWUsIHNvIHJldHVybiB3aXRob3V0IHRyaWdnZXJpbmcgYW5pbWF0aW9ucyBl
dGMuCi0gICAgaWYgKCFpc01haW5UaHJlYWQoKSkKKyAgICBpZiAoIWlzSW5XZWJDb3JlRXhlY3V0
aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUZWxsIHRoZSBXS0NBQ0ZW
aWV3IHRvIHN0YXJ0IHJlbmRlcmluZyBub3cgdGhhdCB3ZSBoYXZlIHNvbWUgY29udGVudHMgdG8g
cmVuZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dMQ29udGV4dC5jcHAKaW5kZXggMmNiMGFiMy4uNTE2MDkwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRleHQuY3BwCkBAIC0zMyw3
ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogR0xDb250ZXh0KiBHTENvbnRleHQ6OnNo
YXJpbmdDb250ZXh0KCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChPd25QdHI8R0xDb250ZXh0Piwgc2hhcmluZywgKGNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoKSkp
OwogICAgIHJldHVybiBzaGFyaW5nLmdldCgpOwogfQpAQCAtMTU1LDE0ICsxNTUsMTQgQEAgR0xD
b250ZXh0Ojp+R0xDb250ZXh0KCkKIAogYm9vbCBHTENvbnRleHQ6Om1ha2VDb250ZXh0Q3VycmVu
dCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNv
cmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGdDdXJyZW50Q29udGV4dCA9IHRoaXM7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIEdMQ29udGV4dCogR0xDb250ZXh0OjpnZXRDdXJyZW50KCkKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAgICAgcmV0dXJuIGdDdXJyZW50Q29udGV4dDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNw
cAppbmRleCA3ZTA0MzRjLi5jYTI1MmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMzgzLDcgKzM4Myw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUZyb21NSU1FVHlwZShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICByZXR1cm4gYWRvcHRDRihVVFR5
cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1p
bWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApKTsKICNlbHNlCi0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsgLy8gSXQgaXMgdW5jbGVhciBpZiBDRlNUUiBpcyB0aHJlYWRzYWZlLgor
ICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7IC8vIEl0IGlzIHVuY2xl
YXIgaWYgQ0ZTVFIgaXMgdGhyZWFkc2FmZS4KIAogICAgIC8vIEZJWE1FOiBBZGQgV2luZG93cyBz
dXBwb3J0IGZvciBhbGwgdGhlIHN1cHBvcnRlZCBVVElzIHdoZW4gYSB3YXkgdG8gY29udmVydCBm
cm9tIE1JTUVUeXBlIHRvIFVUSSByZWxpYWJseSBpcyBmb3VuZC4KICAgICAvLyBGb3Igbm93LCBv
bmx5IHN1cHBvcnQgUE5HLCBKUEVHLCBhbmQgR0lGLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzYwOTUy
ODY+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1No
YXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHAKaW5kZXggYTcwNzRiNy4uNjVmM2Vk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJl
ZEdyYXBoaWNzQ29udGV4dDNELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuY3BwCkBAIC0xMDAsMTMgKzEwMCwxMyBA
QCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6
Z2V0Rm9ySW1wbFRocmVhZCgpCiAKIGJvb2wgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmhhdmVG
b3JJbXBsVGhyZWFkKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgcmV0dXJuIGdldE9yQ3JlYXRl
Q29udGV4dEZvckltcGxUaHJlYWQoR2V0KTsKIH0KIAogYm9vbCBTaGFyZWRHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlRm9ySW1wbFRocmVhZCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHJldHVy
biBnZXRPckNyZWF0ZUNvbnRleHRGb3JJbXBsVGhyZWFkKENyZWF0ZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENhY2hlTWFjLm1tCmlu
ZGV4IDUxNzE4MWEuLjdhNzJmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5tbQpAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAvLyBUaGUgInZvaWQqIiBwYXJhbWV0ZXIgbWFrZXMgdGhlIGZ1bmN0aW9u
IG1hdGNoIHRoZSBwcm90b3R5cGUgZm9yIGNhbGxiYWNrcyBmcm9tIGNhbGxPbk1haW5UaHJlYWQu
CiBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9udENhY2hlKHZvaWQqKQogewotICAgIGlmICghaXNN
YWluVGhyZWFkKCkpIHsKKyAgICBpZiAoIWlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKSB7
CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoJmludmFsaWRhdGVGb250Q2FjaGUsIDApOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFjLm1tCmluZGV4IDgxNjM2OTMuLjNhN2Nm
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1w
bGVGb250RGF0YU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvU2ltcGxlRm9udERhdGFNYWMubW0KQEAgLTQzMiw3ICs0MzIsNyBAQCBzdGF0aWMgY29uc3Qg
VW5pQ2hhciogcHJvdmlkZVN0cmluZ0FuZEF0dHJpYnV0ZXMoQ0ZJbmRleCBzdHJpbmdJbmRleCwg
Q0ZJbmRleCogYwogCiBib29sIFNpbXBsZUZvbnREYXRhOjpjYW5SZW5kZXJDb21iaW5pbmdDaGFy
YWN0ZXJTZXF1ZW5jZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkgY29u
c3QKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBpZiAoIW1fY29tYmluaW5nQ2hhcmFjdGVyU2Vx
dWVuY2VTdXBwb3J0KQogICAgICAgICBtX2NvbWJpbmluZ0NoYXJhY3RlclNlcXVlbmNlU3VwcG9y
dCA9IGFkb3B0UHRyKG5ldyBIYXNoTWFwPFN0cmluZywgYm9vbD4pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENv
bW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uczNET3BlbkdMQ29tbW9uLmNwcAppbmRleCA5OGY4MGI0Li40MDQzYTg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3Bl
bkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNwcApAQCAtODAsNyArODAsNyBAQCBFeHRlbnNp
b25zM0RPcGVuR0xDb21tb246OkV4dGVuc2lvbnMzRE9wZW5HTENvbW1vbihHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCkKIAogICAgIGJvb2wgc3lzdGVtU3VwcG9ydHNNdWx0aXNhbXBsaW5nID0g
dHJ1ZTsKICNpZiAhUExBVEZPUk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEIDwgMTA4MAotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5X
ZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBzdGF0aWMgU0ludDMyIHZlcnNpb247CiAg
ICAgaWYgKCF2ZXJzaW9uKSB7CiAgICAgICAgIGlmIChHZXN0YWx0KGdlc3RhbHRTeXN0ZW1WZXJz
aW9uLCAmdmVyc2lvbikgIT0gbm9FcnIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGQyMTVmYjMuLjYyZDkxNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRpc3BhdGNoT25NYWluVGhyZWFkKGNvbnN0IEZ1bmN0aW9u
PHZvaWQoKT4mIGZ1bmN0aW9uKQogewotICAgIGlmIChpc01haW5UaHJlYWQoKSkKKyAgICBpZiAo
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIGZ1bmN0aW9uKCk7CiAgICAg
ZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFkKGZ1bmN0aW9uKTsKQEAgLTc3LDcgKzc3LDcg
QEAgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW4KICAgICAsIG1fYmFja2dyb3VuZENvbG9yKENvbG9y
Ojp3aGl0ZSkKICAgICAsIG1fc2V0RHJhd3NCYWNrZ3JvdW5kKGZhbHNlKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4
dCgpKTsKIH0KIAogQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp+Q29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lKCkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaQogI2lm
IEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjphbmltYXRpb25GcmFtZVJlYWR5KCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYg
KG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+YW5pbWF0aW9uRnJhbWVSZWFkeSgpOwogfQpA
QCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRWaXNp
YmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIAogdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVZpZXdwb3J0KCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
aWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+dXBkYXRlVmlld3BvcnQoKTsKIH0KQEAg
LTU5OCw3ICs1OTgsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY1JlbW90
ZUNvbnRlbnQoKQogICAgIGVuc3VyZVJvb3RMYXllcigpOwogCiAgICAgVmVjdG9yPEZ1bmN0aW9u
PHZvaWQoKT4gPiByZW5kZXJRdWV1ZTsKLSAgICBib29sIGNhbGxlZE9uTWFpblRocmVhZCA9IFdU
Rjo6aXNNYWluVGhyZWFkKCk7CisgICAgYm9vbCBjYWxsZWRPbk1haW5UaHJlYWQgPSBXVEY6Omlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY2FsbGVkT25NYWluVGhyZWFk
KQogICAgICAgICBtX3JlbmRlclF1ZXVlTXV0ZXgubG9jaygpOwogICAgIHJlbmRlclF1ZXVlLnN3
YXAobV9yZW5kZXJRdWV1ZSk7CkBAIC02NjAsNyArNjYwLDcgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OnNldEFuaW1hdGlvbnNMb2NrZWQoYm9vbCBsb2NrZWQpCiAKIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpkZXRhY2goKQogewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBt
X2NsaWVudCA9IDA7CiB9CiAKQEAgLTY2OSw3ICs2NjksNyBAQCB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6YXBwZW5kVXBkYXRlKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9u
KQogICAgIGlmICghbV9pc0FjdGl2ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkp
OwogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3JlbmRlclF1ZXVlTXV0ZXgpOwogICAgIG1fcmVu
ZGVyUXVldWUuYXBwZW5kKGZ1bmN0aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9NSU1FVHlwZVJlZ2lzdHJ5R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9NSU1FVHlwZVJlZ2lzdHJ5R3RrLmNwcAppbmRleCA5ZjdmMTRjLi5lODJjMjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvTUlNRVR5cGVSZWdpc3Ry
eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL01JTUVUeXBlUmVnaXN0
cnlHdGsuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBjb25zdCBFeHRlbnNpb25NYXAgZXh0
ZW5zaW9uTWFwIFtdID0gewogCiBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVG
b3JFeHRlbnNpb24oY29uc3QgU3RyaW5nICZleHQpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAg
U3RyaW5nIHMgPSBleHQubG93ZXIoKTsKICAgICBjb25zdCBFeHRlbnNpb25NYXAgKmUgPSBleHRl
bnNpb25NYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3Vh
Z2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0KaW5kZXggYzE1
ZmY1YS4uMTU1ZjE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xh
bmd1YWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9MYW5ndWFnZS5tbQpA
QCAtNDUsNyArNDUsNyBAQCBAaW1wbGVtZW50YXRpb24gV2ViTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZl
cgogCiArICh2b2lkKV93ZWJraXRfbGFuZ3VhZ2VQcmVmZXJlbmNlc0RpZENoYW5nZQogewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9u
Q29udGV4dCgpKTsKIAogICAgIHVzZUNhY2hlZFByZWZlcnJlZExhbmd1YWdlcyA9IE5POwogCkBA
IC01OCw3ICs1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFN0cmluZyBodHRw
U3R5bGVMYW5ndWFnZUNvZGUoTlNTdHJpbmcgKmxhbmd1YWdlQ29kZSkKIHsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAKICAgICAvLyBMb29rIHVwIHRoZSBsYW5ndWFnZSBjb2RlIHVzaW5nIENGQnVuZGxlLgog
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVycmVkTGFuZ3VhZ2VDb2RlKEFkb3B0Q0Ys
IHdrQ29weUNGTG9jYWxpemF0aW9uUHJlZmVycmVkTmFtZSgoQ0ZTdHJpbmdSZWYpbGFuZ3VhZ2VD
b2RlKSk7CkBAIC04Myw3ICs4Myw3IEBAIFZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZl
cnJlZExhbmd1YWdlcygpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8U3RyaW5n
PiwgdXNlclByZWZlcnJlZExhbmd1YWdlcywgKCkpOwogCi0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvTG9jYWxpemVkU3RyaW5nc01hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvTG9jYWxpemVkU3RyaW5nc01hYy5jcHAKaW5kZXggOGNhYmU4Ni4uYTZkNmJm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xvY2FsaXplZFN0cmlu
Z3NNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Mb2NhbGl6ZWRTdHJp
bmdzTWFjLmNwcApAQCAtNDEsNyArNDEsNyBAQCBTdHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0
IGNoYXIqIGtleSkKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIC8vIENhbiBiZSBjYWxsZWQgb24g
YSBkaXNwYXRjaCBxdWV1ZSB3aGVuIGluaXRpYWxpemluZyBzdHJpbmdzIG9uIGlPUy4KICAgICAv
LyBTZWUgTG9hZFdlYkxvY2FsaXplZFN0cmluZ3MgYW5kIDxyZGFyOi8vcHJvYmxlbS83OTAyNDcz
Pi4KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4
ZWN1dGlvbkNvbnRleHQoKSk7CiAjZW5kaWYKIAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
a2V5U3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoMCwga2V5
LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFsbG9jYXRvck51bGwpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9NSU1FVHlwZVJlZ2lzdHJ5TWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01JTUVUeXBlUmVnaXN0cnlNYWMubW0KaW5kZXggMzc5
MmI1YS4uOTMwZWIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01J
TUVUeXBlUmVnaXN0cnlNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01J
TUVUeXBlUmVnaXN0cnlNYWMubW0KQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUK
IAogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyAmZXh0KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICByZXR1cm4gd2tHZXRNSU1FVHlw
ZUZvckV4dGVuc2lvbihleHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViQ29yZU9iakNFeHRyYXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViQ29yZU9iakNFeHRyYXMubW0KaW5kZXggZjQxM2I0MC4uZDkxY2VlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkNvcmVPYmpDRXh0cmFzLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJDb3JlT2JqQ0V4dHJhcy5tbQpAQCAtNzIs
NyArNzIsNyBAQCBib29sIFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFk
KENsYXNzIGNscywgaWQgb2JqZWN0KQogewogICAgIEFTU0VSVChbb2JqZWN0IGlzS2luZE9mQ2xh
c3M6Y2xzXSk7CiAKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpCisgICAgaWYgKGlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgQ2xh
c3NBbmRJZFBhaXIqIHBhaXIgPSBuZXcgQ2xhc3NBbmRJZFBhaXIoY2xzLCBvYmplY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlci5tbQppbmRleCAzZWRjMzYxLi5kMDM0MmNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlci5tbQpAQCAtNTIyLDcgKzUyMiw3IEBAIC0gKHZvaWQpYW5pbWF0ZUZyb21SZWN0OihOU1Jl
Y3Qpc3RhcnRSZWN0IHRvUmVjdDooTlNSZWN0KWVuZFJlY3Qgd2l0aFN1YkFuaW1hdGlvCiAKIC0g
KHZvaWQpYW5pbWF0aW9uRGlkRW5kOihOU0FuaW1hdGlvbiAqKWFuaW1hdGlvbgogewotICAgIGlm
ICghW05TVGhyZWFkIGlzTWFpblRocmVhZF0pIHsKKyAgICBpZiAoIVtOU1RocmVhZCBpc0luV2Vi
Q29yZUV4ZWN1dGlvbkNvbnRleHRdKSB7CiAgICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3Rvck9u
TWFpblRocmVhZDpAc2VsZWN0b3IoYW5pbWF0aW9uRGlkRW5kOikgd2l0aE9iamVjdDphbmltYXRp
b24gd2FpdFVudGlsRG9uZTpOT107CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9ibGFja2JlcnJ5L01lZGlhU3Ry
ZWFtQ2VudGVyQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9ibGFja2JlcnJ5L01lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeS5jcHAKaW5kZXggZDkx
ZWYxMS4uMDM1NTAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vYmxhY2tiZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFTdHJlYW1D
ZW50ZXJCbGFja0JlcnJ5LmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIE1lZGlhU3RyZWFtQ2VudGVyJiBNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKQogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0
aW9uQ29udGV4dCgpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE1lZGlhU3RyZWFtQ2VudGVy
QmxhY2tCZXJyeSwgY2VudGVyLCAoKSk7CiAgICAgcmV0dXJuIGNlbnRlcjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL01lZGlhU3Ry
ZWFtQ2VudGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vY2hyb21pdW0vTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bS5jcHAKaW5kZXggYjY2NTU3ZC4u
ZDMzN2IyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y2hyb21pdW0vTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1
bS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBNZWRpYVN0cmVh
bUNlbnRlciYgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkKIHsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChNZWRpYVN0cmVhbUNlbnRlckNocm9taXVtLCBjZW50
ZXIsICgpKTsKICAgICByZXR1cm4gY2VudGVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9N
ZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHAKaW5kZXggZjE4NDJjYi4uMzU4NjM5ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9N
ZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLmNwcApA
QCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1lZGlhU3RyZWFtQ2VudGVy
JiBNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKQogewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKE1lZGlhU3RyZWFtQ2VudGVyR1N0cmVhbWVyLCBjZW50ZXIsICgp
KTsKICAgICByZXR1cm4gY2VudGVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKaW5kZXggYzI1OTAxNC4uYjFhMWZkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuY3BwCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiAhUExB
VEZPUk0oQ0hST01JVU0pCiBCbG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSgpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQmxvYlJlZ2lzdHJ5SW1wbCwgaW5zdGFu
Y2UsICgpKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9p
ZCBCbG9iUmVnaXN0cnlJbXBsOjphcHBlbmRTdG9yYWdlSXRlbXMoQmxvYlN0b3JhZ2VEYXRhKiBi
bG9iU3RvcmFnZURhdGEsIGNvbnMKIAogdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJs
b2JVUkwoY29uc3QgS1VSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSkKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAgICAgcmVnaXN0ZXJCbG9iUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3Rv
cigpOwogCiAgICAgUmVmUHRyPEJsb2JTdG9yYWdlRGF0YT4gYmxvYlN0b3JhZ2VEYXRhID0gQmxv
YlN0b3JhZ2VEYXRhOjpjcmVhdGUoYmxvYkRhdGEtPmNvbnRlbnRUeXBlKCksIGJsb2JEYXRhLT5j
b250ZW50RGlzcG9zaXRpb24oKSk7CkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBCbG9iUmVnaXN0
cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsLCBQYXNzT3duUHRyPEJsb2JE
YXRhPiBibG8KIAogdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBLVVJMJiBzcmNVUkwpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHJl
Z2lzdGVyQmxvYlJlc291cmNlSGFuZGxlQ29uc3RydWN0b3IoKTsKIAogICAgIFJlZlB0cjxCbG9i
U3RvcmFnZURhdGE+IHNyYyA9IG1fYmxvYnMuZ2V0KHNyY1VSTC5zdHJpbmcoKSk7CkBAIC0yMDEs
MTMgKzIwMSwxMyBAQCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IEtVUkwmIHNyY1VSTCkKIAogdm9pZCBCbG9iUmVnaXN0cnlJbXBs
Ojp1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgIG1fYmxvYnMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CiB9CiAKIFBhc3NSZWZQdHI8QmxvYlN0
b3JhZ2VEYXRhPiBCbG9iUmVnaXN0cnlJbXBsOjpnZXRCbG9iRGF0YUZyb21VUkwoY29uc3QgS1VS
TCYgdXJsKSBjb25zdAogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICByZXR1cm4gbV9ibG9icy5nZXQo
dXJsLnN0cmluZygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlSGFuZGxlLmNwcAppbmRleCAxM2UwZmMzLi5mYmRjYzJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcApAQCAt
NDMsNyArNDMsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRGb3JjZUNvbnRlbnRTbmlmZmluZzsKIHR5
cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFJlc291cmNlSGFuZGxlOjpCdWlsdGluQ29uc3Ry
dWN0b3I+IEJ1aWx0aW5SZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yTWFwOwogc3RhdGljIEJ1aWx0
aW5SZXNvdXJjZUhhbmRsZUNvbnN0cnVjdG9yTWFwJiBidWlsdGluUmVzb3VyY2VIYW5kbGVDb25z
dHJ1Y3Rvck1hcCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQo
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAsIG1hcCwgKCkpOwogICAgIHJldHVy
biBtYXA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKaW5kZXggZTMwM2VkOC4uMmFhYjQ1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZO
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3Rv
cmFnZUNGTmV0LmNwcApAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgQ29va2llQ2hhbmdlQ2FsbGJh
Y2tQdHIgY29va2llQ2hhbmdlQ2FsbGJhY2s7CiAKIHN0YXRpYyB2b2lkIG5vdGlmeUNvb2tpZXND
aGFuZ2VkT25NYWluVGhyZWFkKHZvaWQqKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBjb29raWVD
aGFuZ2VDYWxsYmFjaygpOwogfQogCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgQ0ZS
dW5Mb29wUmVmIGNvb2tpZVN0b3JhZ2VPYnNlcnZlclJ1bkxvb3AoKQogCiB2b2lkIHN0YXJ0T2Jz
ZXJ2aW5nQ29va2llQ2hhbmdlcyhDb29raWVDaGFuZ2VDYWxsYmFja1B0ciBjYWxsYmFjaykKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAKICAgICBBU1NFUlQoIWNvb2tpZUNoYW5nZUNhbGxiYWNrKTsKICAg
ICBjb29raWVDaGFuZ2VDYWxsYmFjayA9IGNhbGxiYWNrOwpAQCAtODQsNyArODQsNyBAQCB2b2lk
IHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhDb29raWVDaGFuZ2VDYWxsYmFja1B0ciBjYWxs
YmFjaykKIAogdm9pZCBzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCiB7Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0
KCkpOwogCiAgICAgY29va2llQ2hhbmdlQ2FsbGJhY2sgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmluZGV4IGNlMTQ1MTkuLjI1MGU2
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZO
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQu
Y3BwCkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyB2b2lkIGNsaWVudENhbGxiYWNrKENGSG9zdFJl
ZiB0aGVIb3N0LCBDRkhvc3RJbmZvVHlwZSwgY29uc3QgQ0ZTdHJlYW1FcnJvCiAKIHZvaWQgRE5T
UmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRD
RihDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7CiAgICAgaWYgKCFob3N0KSB7CkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBETlNSZXNvbHZl
UXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogCiB2b2lkIHBy
ZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAg
IGlmIChob3N0bmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBETlNSZXNvbHZl
UXVldWU6OnNoYXJlZCgpLmFkZChob3N0bmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKaW5kZXggZWYyMjA4OC4u
ZmQ4YjRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9M
b2FkZXJSdW5Mb29wQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvTG9hZGVyUnVuTG9vcENGLmNwcApAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgdm9pZCBydW5M
b2FkZXJUaHJlYWQodm9pZCopCiAKIENGUnVuTG9vcFJlZiBsb2FkZXJSdW5Mb29wKCkKIHsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlv
bkNvbnRleHQoKSk7CiAKICAgICBNdXRleExvY2tlciBsb2NrKGxvYWRlclJ1bkxvb3BNdXRleCgp
KTsKICAgICBpZiAoIWxvYWRlclJ1bkxvb3BPYmplY3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DRk5ldC5jcHAKaW5kZXggYmQwNDc4OS4uZDlkMjMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwbGF0Zm9ybVNlc3MK
IAogc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBkZWZhdWx0TmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOwogICAgIHJldHVy
biBzZXNzaW9uOwogfQpAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+JiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKQogCiB2b2lkIG92ZXJyaWRl
Q29va2llU3RvcmFnZShDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRp
b25Db250ZXh0KCkpOwogICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2UgcmV0YWluIGl0PyBUaGUg
b25seSBjYWxsZXIgaXMgYW4gQVBJIG1ldGhvZCB0aGF0IHRha2VzIGNvb2tpZSBzdG9yYWdlIGFz
IGEgcmF3IGFyZ3VtZW50LgogICAgIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpLmFkb3B0Q0YoY29v
a2llU3RvcmFnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDRiNDdjYzEu
LmNkYzQ3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCkBAIC00MTEsNyArNDExLDcg
QEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnJlYWRTdHJlYW1DYWxsYmFjayhDRlJlYWRTdHJl
YW1SZWYgc3RyZWFtLCBDRlN0cmVhbUV2ZW4KICAgICBNYWluVGhyZWFkRXZlbnRDYWxsYmFja0lu
Zm8gaW5mbyh0eXBlLCBoYW5kbGUpOwogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KHJlYWRT
dHJlYW1DYWxsYmFja01haW5UaHJlYWQsICZpbmZvKTsKICNlbHNlCi0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgIGhhbmRsZS0+cmVhZFN0cmVhbUNhbGxiYWNrKHR5cGUpOwogI2VuZGlmCiB9CkBAIC00MjQs
NyArNDI0LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OndyaXRlU3RyZWFtQ2FsbGJhY2so
Q0ZXcml0ZVN0cmVhbVJlZiBzdHJlYW0sIENGU3RyZWFtRXYKICAgICBNYWluVGhyZWFkRXZlbnRD
YWxsYmFja0luZm8gaW5mbyh0eXBlLCBoYW5kbGUpOwogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRX
YWl0KHdyaXRlU3RyZWFtQ2FsbGJhY2tNYWluVGhyZWFkLCAmaW5mbyk7CiAjZWxzZQotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29u
dGV4dCgpKTsKICAgICBoYW5kbGUtPndyaXRlU3RyZWFtQ2FsbGJhY2sodHlwZSk7CiAjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0v
QmxvYlJlZ2lzdHJ5UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
aHJvbWl1bS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKaW5kZXggMTAyNDc1Ny4uNmQ1ZGQzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9CbG9iUmVn
aXN0cnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJv
bWl1bS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBCbG9iUmVnaXN0cnkmIGJsb2JSZWdpc3RyeSgpCiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkp
OwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQmxvYlJlZ2lzdHJ5UHJveHksIGluc3RhbmNlLCAo
KSk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCmluZGV4IGJhYmEyMDQuLjY4MzhmM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKQEAg
LTUxLDE0ICs1MSwxNCBAQCBzdGF0aWMgdm9pZCByZXNvbHZlZENhbGxiYWNrKFNvdXBBZGRyZXNz
KiwgZ3VpbnQsIHZvaWQqKQogCiB2b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZl
KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgc291cF9z
ZXNzaW9uX3ByZWZldGNoX2RucyhSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKSwgaG9z
dG5hbWUudXRmOCgpLmRhdGEoKSwgMCwgcmVzb2x2ZWRDYWxsYmFjaywgMCk7CiB9CiAKIHZvaWQg
cHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAg
ICAgaWYgKGhvc3RuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKaW5kZXggZGQ1NmUyYi4uNGE3MWE5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNDAsNyArNDAsNyBAQCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihTb3VwU2Vzc2lvbiogc2Vzc2lvbikK
IAogc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBkZWZhdWx0U2Vzc2lvbigp
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4sIHNlc3Npb24sICgpKTsKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0K
QEAgLTU0LDcgKzU0LDcgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCiAKIFBhc3NPd25QdHI8TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZURlZmF1bHRTZXNzaW9uKGNv
bnN0IFN0cmluZyYpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQo
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHJldHVybiBhZG9wdFB0cihuZXcg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29k
aW5nUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rp
bmdSZWdpc3RyeS5jcHAKaW5kZXggMWQxMjIwMi4uOWI5OWJkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5jcHAKQEAgLTIw
Nyw3ICsyMDcsNyBAQCBzdGF0aWMgdm9pZCBwcnVuZUJsYWNrbGlzdGVkQ29kZWNzKCkKIAogc3Rh
dGljIHZvaWQgYnVpbGRCYXNlVGV4dENvZGVjTWFwcygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAg
IEFTU0VSVCghdGV4dENvZGVjTWFwKTsKICAgICBBU1NFUlQoIXRleHRFbmNvZGluZ05hbWVNYXAp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0lt
cGxDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5j
cHAKaW5kZXggMDA4NDkzYi4uYjZhODlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcApAQCAtNTgsNyArNTgsNyBAQCBuYW1lc3BhY2Ug
U3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yIHsKICAgICBzdGF0aWMgdm9pZCogYWxsb2NhdGUoQ0ZJ
bmRleCBzaXplLCBDRk9wdGlvbkZsYWdzLCB2b2lkKikKICAgICB7CiAgICAgICAgIFN0cmluZ0lt
cGwqIHVuZGVybHlpbmdTdHJpbmcgPSAwOwotICAgICAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsK
KyAgICAgICAgaWYgKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAgICAg
ICB1bmRlcmx5aW5nU3RyaW5nID0gY3VycmVudFN0cmluZzsKICAgICAgICAgICAgIGlmICh1bmRl
cmx5aW5nU3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgY3VycmVudFN0cmluZyA9IDA7CkBAIC05
NSw3ICs5NSw3IEBAIG5hbWVzcGFjZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3IgewogICAgICAg
ICBpZiAoIXVuZGVybHlpbmdTdHJpbmcpCiAgICAgICAgICAgICBmYXN0RnJlZShoZWFkZXIpOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmICghaXNNYWluVGhyZWFkKCkpCisgICAgICAg
ICAgICBpZiAoIWlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoZGVhbGxvY2F0ZU9uTWFpblRocmVhZCwgaGVhZGVyKTsKICAgICAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHVuZGVybHlpbmdTdHJpbmctPmRlcmVmKCk7
IC8vIEJhbGFuY2VkIGJ5IGNhbGwgdG8gcmVmIGluIGFsbG9jYXRlIGFib3ZlLgpAQCAtMTM1LDcg
KzEzNSw3IEBAIG5hbWVzcGFjZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3IgewogCiBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKIHsKLSAgICBpZiAo
IW1fbGVuZ3RoIHx8ICFpc01haW5UaHJlYWQoKSkgeworICAgIGlmICghbV9sZW5ndGggfHwgIWlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKICAg
ICAgICAgICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKDAsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjaGFyYWN0ZXJzOCgpKSwgbV9sZW5ndGgsIGtDRlN0
cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSkpOwogICAgICAgICByZXR1cm4gYWRvcHRDRihD
RlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5p
Q2hhcio+KGNoYXJhY3RlcnMxNigpKSwgbV9sZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAppbmRleCBjYzJmNWMyLi41
ZTNiNzQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXpl
ZFN0cmluZ3NXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6
ZWRTdHJpbmdzV2luLmNwcApAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMgQ0ZCdW5kbGVSZWYgd2Vi
S2l0QnVuZGxlKCkKIAogU3RyaW5nIGxvY2FsaXplZFN0cmluZyhjb25zdCBjaGFyKiBrZXkpCiB7
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVj
dXRpb25Db250ZXh0KCkpOwogCiAjaWYgVVNFKENGKQogICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBu
b3RGb3VuZCA9IENGU1RSKCJsb2NhbGl6ZWQgc3RyaW5nIG5vdCBmb3VuZCIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCmluZGV4
IGVkN2I0MjUuLjA4ZTVkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgU3RyaW5nIE1JTUVU
eXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIAogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyAmZXh0KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIGlmIChleHQu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93eC9NaW1lVHlwZVJlZ2lzdHJ5V3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd3gvTWltZVR5cGVSZWdpc3RyeVd4LmNwcAppbmRleCA5NGE4MTVlLi42NjZl
NDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9NaW1lVHlwZVJlZ2lz
dHJ5V3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L01pbWVUeXBlUmVnaXN0
cnlXeC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIGNvbnN0IEV4dGVuc2lvbk1hcCBleHRl
bnNpb25NYXAgW10gPSB7CiAgICAgCiBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5
cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nICZleHQpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAg
ICAgU3RyaW5nIHMgPSBleHQubG93ZXIoKTsKICAgICBjb25zdCBFeHRlbnNpb25NYXAgKmUgPSBl
eHRlbnNpb25NYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VB
cmVhSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAK
aW5kZXggOGQ4NWNjNS4uNDlmYjFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZUFyZWFJbXBsLmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0
b3JhZ2VBcmVhSW1wbDo6flN0b3JhZ2VBcmVhSW1wbCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogfQog
CiBpbmxpbmUgU3RvcmFnZUFyZWFJbXBsOjpTdG9yYWdlQXJlYUltcGwoU3RvcmFnZVR5cGUgc3Rv
cmFnZVR5cGUsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiwgUGFzc1JlZlB0cjxT
dG9yYWdlU3luY01hbmFnZXI+IHN5bmNNYW5hZ2VyLCB1bnNpZ25lZCBxdW90YSkKQEAgLTU4LDcg
KzU4LDcgQEAgaW5saW5lIFN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBsKFN0b3JhZ2VU
eXBlIHN0b3JhZ2VUeXBlLCBQYXNzUmVmUHRyPFNlY3UKICAgICAsIG1fYWNjZXNzQ291bnQoMCkK
ICAgICAsIG1fY2xvc2VEYXRhYmFzZVRpbWVyKHRoaXMsICZTdG9yYWdlQXJlYUltcGw6OmNsb3Nl
RGF0YWJhc2VUaW1lckZpcmVkKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQobV9zZWN1
cml0eU9yaWdpbik7CiAgICAgQVNTRVJUKG1fc3RvcmFnZU1hcCk7CiAgICAgCkBAIC05OCw3ICs5
OCw3IEBAIFN0b3JhZ2VBcmVhSW1wbDo6U3RvcmFnZUFyZWFJbXBsKFN0b3JhZ2VBcmVhSW1wbCog
YXJlYSkKICAgICAsIG1fYWNjZXNzQ291bnQoMCkKICAgICAsIG1fY2xvc2VEYXRhYmFzZVRpbWVy
KHRoaXMsICZTdG9yYWdlQXJlYUltcGw6OmNsb3NlRGF0YWJhc2VUaW1lckZpcmVkKQogewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9u
Q29udGV4dCgpKTsKICAgICBBU1NFUlQobV9zZWN1cml0eU9yaWdpbik7CiAgICAgQVNTRVJUKG1f
c3RvcmFnZU1hcCk7CiAgICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCmluZGV4IGZjYjEyNmEuLmI4Mzk0YTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKQEAgLTY0LDcgKzY0LDcg
QEAgaW5saW5lIFN0b3JhZ2VBcmVhU3luYzo6U3RvcmFnZUFyZWFTeW5jKFBhc3NSZWZQdHI8U3Rv
cmFnZVN5bmNNYW5hZ2VyPiBzdG9yYWdlU3kKICAgICAsIG1fc3luY0Nsb3NlRGF0YWJhc2UoZmFs
c2UpCiAgICAgLCBtX2ltcG9ydENvbXBsZXRlKGZhbHNlKQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICBBU1NFUlQobV9zdG9yYWdlQXJlYSk7CiAgICAgQVNTRVJUKG1fc3luY01hbmFnZXIpOwogfQpA
QCAtODMsMTQgKzgzLDE0IEBAIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWFTeW5jPiBTdG9yYWdlQXJl
YVN5bmM6OmNyZWF0ZShQYXNzUmVmUHRyPFN0b3JhZ2VTeW5jTWFuYWdlCiAKIFN0b3JhZ2VBcmVh
U3luYzo6flN0b3JhZ2VBcmVhU3luYygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVCgh
bV9zeW5jVGltZXIuaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKG1fZmluYWxTeW5jU2NoZWR1bGVk
KTsKIH0KIAogdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnNjaGVkdWxlRmluYWxTeW5jKCkKIHsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlv
bkNvbnRleHQoKSk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgdG8gYXZvaWQgcmFjZXMsIGJ1
dCBpdCdkIGJlIGJldHRlciB0byBtYWtlIHRoaW5ncyBzYWZlIHdpdGhvdXQgYmxvY2tpbmcuCiAg
ICAgYmxvY2tVbnRpbEltcG9ydENvbXBsZXRlKCk7CiAgICAgbV9zdG9yYWdlQXJlYSA9IDA7ICAv
LyBUaGlzIGlzIGRvbmUgaW4gYmxvY2tVbnRpbEltcG9ydENvbXBsZXRlKCkgYnV0IHRoaXMgaXMg
aGVyZSBhcyBhIGZvcm0gb2YgZG9jdW1lbnRhdGlvbiB0aGF0IHdlIG11c3QgYmUgYWJzb2x1dGVs
eSBzdXJlIHRoZSByZWYgY291bnQgY3ljbGUgaXMgYnJva2VuLgpAQCAtMTExLDcgKzExMSw3IEBA
IHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpzY2hlZHVsZUZpbmFsU3luYygpCiAKIHZvaWQgU3RvcmFn
ZUFyZWFTeW5jOjpzY2hlZHVsZUl0ZW1Gb3JTeW5jKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoIW1fZmluYWxTeW5j
U2NoZWR1bGVkKTsKIAogICAgIG1fY2hhbmdlZEl0ZW1zLnNldChrZXksIHZhbHVlKTsKQEAgLTEy
Niw3ICsxMjYsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6c2NoZWR1bGVJdGVtRm9yU3luYyhj
b25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZQogCiB2b2lkIFN0b3JhZ2VBcmVh
U3luYzo6c2NoZWR1bGVDbGVhcigpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVCghbV9m
aW5hbFN5bmNTY2hlZHVsZWQpOwogCiAgICAgbV9jaGFuZ2VkSXRlbXMuY2xlYXIoKTsKQEAgLTE0
Miw3ICsxNDIsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6c2NoZWR1bGVDbGVhcigpCiAKIHZv
aWQgU3RvcmFnZUFyZWFTeW5jOjpzY2hlZHVsZUNsb3NlRGF0YWJhc2UoKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICBBU1NFUlQoIW1fZmluYWxTeW5jU2NoZWR1bGVkKTsKIAogICAgIGlmICghbV9k
YXRhYmFzZS5pc09wZW4oKSkKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3lu
Yzo6c2NoZWR1bGVDbG9zZURhdGFiYXNlKCkKIAogdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnN5bmNU
aW1lckZpcmVkKFRpbWVyPFN0b3JhZ2VBcmVhU3luYz4qKQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAog
ICAgIGJvb2wgcGFydGlhbFN5bmMgPSBmYWxzZTsKICAgICB7CkBAIC0yMjcsNyArMjI3LDcgQEAg
dm9pZCBTdG9yYWdlQXJlYVN5bmM6OnN5bmNUaW1lckZpcmVkKFRpbWVyPFN0b3JhZ2VBcmVhU3lu
Yz4qKQogCiB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6b3BlbkRhdGFiYXNlKE9wZW5EYXRhYmFzZVBh
cmFtVHlwZSBvcGVuaW5nU3RyYXRlZ3kpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKCFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJU
KCFtX2RhdGFiYXNlLmlzT3BlbigpKTsKICAgICBBU1NFUlQoIW1fZGF0YWJhc2VPcGVuRmFpbGVk
KTsKIApAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjptaWdyYXRlSXRl
bVRhYmxlSWZOZWVkZWQoKQogCiB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybUltcG9ydCgp
CiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFpc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlLmlzT3BlbigpKTsK
IAogICAgIG9wZW5EYXRhYmFzZShTa2lwSWZOb25FeGlzdGVudCk7CkBAIC0zNjYsNyArMzY2LDcg
QEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6Om1hcmtJbXBvcnRlZCgpCiAvLyBqb2IgZmlyc3QuCiB2
b2lkIFN0b3JhZ2VBcmVhU3luYzo6YmxvY2tVbnRpbEltcG9ydENvbXBsZXRlKCkKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAKICAgICAvLyBGYXN0IHBhdGguICBXZSBzZXQgbV9zdG9yYWdlQXJlYSB0byAw
IG9ubHkgYWZ0ZXIgbV9pbXBvcnRDb21wbGV0ZSBiZWluZyB0cnVlLgogICAgIGlmICghbV9zdG9y
YWdlQXJlYSkKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6YmxvY2tV
bnRpbEltcG9ydENvbXBsZXRlKCkKIAogdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnN5bmMoYm9vbCBj
bGVhckl0ZW1zLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMpCiB7Ci0gICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFpc0luV2ViQ29yZUV4ZWN1dGlv
bkNvbnRleHQoKSk7CiAKICAgICBpZiAoaXRlbXMuaXNFbXB0eSgpICYmICFjbGVhckl0ZW1zICYm
ICFtX3N5bmNDbG9zZURhdGFiYXNlKQogICAgICAgICByZXR1cm47CkBAIC00NjAsNyArNDYwLDcg
QEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnN5bmMoYm9vbCBjbGVhckl0ZW1zLCBjb25zdCBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiYgaXRlbXMKIAogdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnBlcmZv
cm1TeW5jKCkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIWlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIGJvb2wgY2xlYXJJdGVtczsKICAg
ICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBpdGVtczsKQEAgLTQ5MSw3ICs0OTEsNyBAQCB2b2lk
IFN0b3JhZ2VBcmVhU3luYzo6cGVyZm9ybVN5bmMoKQogCiB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6
ZGVsZXRlRW1wdHlEYXRhYmFzZSgpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKCFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKCFtX2Rh
dGFiYXNlLmlzT3BlbigpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggNmJkOWY0MC4uMmRjMWM1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAK
QEAgLTc2LDcgKzc2LDcgQEAgU3RvcmFnZU5hbWVzcGFjZUltcGw6OlN0b3JhZ2VOYW1lc3BhY2VJ
bXBsKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBjb25zdCBTdHJpbmcKIAogU3RvcmFnZU5hbWVz
cGFjZUltcGw6On5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAg
ICAgaWYgKG1fc3RvcmFnZVR5cGUgPT0gTG9jYWxTdG9yYWdlKSB7CiAgICAgICAgIEFTU0VSVChs
b2NhbFN0b3JhZ2VOYW1lc3BhY2VNYXAoKS5nZXQobV9wYXRoKSA9PSB0aGlzKTsKQEAgLTg5LDcg
Kzg5LDcgQEAgU3RvcmFnZU5hbWVzcGFjZUltcGw6On5TdG9yYWdlTmFtZXNwYWNlSW1wbCgpCiAK
IFBhc3NSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHko
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoIW1faXNTaHV0ZG93bik7CiAgICAgQVNT
RVJUKG1fc3RvcmFnZVR5cGUgPT0gU2Vzc2lvblN0b3JhZ2UpOwogCkBAIC0xMDMsNyArMTAzLDcg
QEAgUGFzc1JlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29w
eSgpCiAKIFBhc3NSZWZQdHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9y
YWdlQXJlYShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBPcmlnaW4pCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIEFTU0VSVCghbV9pc1NodXRkb3duKTsKIAogICAgIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gb3JpZ2luID0gcHJwT3JpZ2luOwpAQCAtMTE4LDcgKzExOCw3IEBAIFBhc3NSZWZQ
dHI8U3RvcmFnZUFyZWE+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzdG9yYWdlQXJlYShQYXNzUmVm
UHRyPFNlY3VyaXR5T3JpCiAKIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsb3NlKCkKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAKICAgICBpZiAobV9pc1NodXRkb3duKQogICAgICAgICByZXR1cm47
CkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y2xvc2UoKQog
CiB2b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbGVhck9yaWdpbkZvckRlbGV0aW9uKFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4pCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgUmVmUHRyPFN0b3Jh
Z2VBcmVhSW1wbD4gc3RvcmFnZUFyZWEgPSBtX3N0b3JhZ2VBcmVhTWFwLmdldChvcmlnaW4pOwog
ICAgIGlmIChzdG9yYWdlQXJlYSkKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjbGVhck9yaWdpbkZvckRlbGV0aW9uKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4p
CiAKIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsZWFyQWxsT3JpZ2luc0ZvckRlbGV0aW9u
KCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBTdG9yYWdlQXJlYU1hcDo6aXRlcmF0b3IgZW5k
ID0gbV9zdG9yYWdlQXJlYU1hcC5lbmQoKTsKICAgICBmb3IgKFN0b3JhZ2VBcmVhTWFwOjppdGVy
YXRvciBpdCA9IG1fc3RvcmFnZUFyZWFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQpAQCAt
MTU5LDcgKzE1OSw3IEBAIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsZWFyQWxsT3JpZ2lu
c0ZvckRlbGV0aW9uKCkKICAgICAKIHZvaWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN5bmMoKQog
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhl
Y3V0aW9uQ29udGV4dCgpKTsKICAgICBTdG9yYWdlQXJlYU1hcDo6aXRlcmF0b3IgZW5kID0gbV9z
dG9yYWdlQXJlYU1hcC5lbmQoKTsKICAgICBmb3IgKFN0b3JhZ2VBcmVhTWFwOjppdGVyYXRvciBp
dCA9IG1fc3RvcmFnZUFyZWFNYXAuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICBp
dC0+dmFsdWUtPnN5bmMoKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpzeW5jKCkKIAogdm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y2xvc2VJZGxlTG9j
YWxTdG9yYWdlRGF0YWJhc2VzKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgU3RvcmFnZUFyZWFN
YXA6Oml0ZXJhdG9yIGVuZCA9IG1fc3RvcmFnZUFyZWFNYXAuZW5kKCk7CiAgICAgZm9yIChTdG9y
YWdlQXJlYU1hcDo6aXRlcmF0b3IgaXQgPSBtX3N0b3JhZ2VBcmVhTWFwLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkKICAgICAgICAgaXQtPnZhbHVlLT5jbG9zZURhdGFiYXNlSWZJZGxlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKaW5kZXggYzM5
ZmUwZC4uZGY2ZmUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
U3luY01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVN5bmNN
YW5hZ2VyLmNwcApAQCAtNTAsMTQgKzUwLDE0IEBAIFN0b3JhZ2VTeW5jTWFuYWdlcjo6U3RvcmFn
ZVN5bmNNYW5hZ2VyKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICA6IG1fdGhyZWFkKFN0b3JhZ2VU
aHJlYWQ6OmNyZWF0ZSgpKQogICAgICwgbV9wYXRoKHBhdGguaXNvbGF0ZWRDb3B5KCkpCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRp
b25Db250ZXh0KCkpOwogICAgIEFTU0VSVCghbV9wYXRoLmlzRW1wdHkoKSk7CiAgICAgbV90aHJl
YWQtPnN0YXJ0KCk7CiB9CiAKIFN0b3JhZ2VTeW5jTWFuYWdlcjo6flN0b3JhZ2VTeW5jTWFuYWdl
cigpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNv
cmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVCghbV90aHJlYWQpOwogfQogCkBAIC03
NCw3ICs3NCw3IEBAIFN0cmluZyBTdG9yYWdlU3luY01hbmFnZXI6OmZ1bGxEYXRhYmFzZUZpbGVu
YW1lKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyCiAKIHZvaWQgU3RvcmFnZVN5bmNN
YW5hZ2VyOjpjbG9zZSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NF
UlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgaWYgKG1fdGhyZWFkKSB7
CiAgICAgICAgIG1fdGhyZWFkLT50ZXJtaW5hdGUoKTsKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBT
dG9yYWdlU3luY01hbmFnZXI6OmNsb3NlKCkKIAogYm9vbCBTdG9yYWdlU3luY01hbmFnZXI6OnNj
aGVkdWxlSW1wb3J0KFBhc3NSZWZQdHI8U3RvcmFnZUFyZWFTeW5jPiBhcmVhKQogewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29u
dGV4dCgpKTsKICAgICBBU1NFUlQobV90aHJlYWQpOwogICAgIGlmIChtX3RocmVhZCkKICAgICAg
ICAgbV90aHJlYWQtPnNjaGVkdWxlVGFzayhTdG9yYWdlVGFzazo6Y3JlYXRlSW1wb3J0KGFyZWEu
Z2V0KCkpKTsKQEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBTdG9yYWdlU3luY01hbmFnZXI6OnNjaGVk
dWxlSW1wb3J0KFBhc3NSZWZQdHI8U3RvcmFnZUFyZWFTeW5jPiBhcmVhKQogCiB2b2lkIFN0b3Jh
Z2VTeW5jTWFuYWdlcjo6c2NoZWR1bGVTeW5jKFBhc3NSZWZQdHI8U3RvcmFnZUFyZWFTeW5jPiBh
cmVhKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJD
b3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQobV90aHJlYWQpOwogICAgIGlmICht
X3RocmVhZCkKICAgICAgICAgbV90aHJlYWQtPnNjaGVkdWxlVGFzayhTdG9yYWdlVGFzazo6Y3Jl
YXRlU3luYyhhcmVhLmdldCgpKSk7CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTdG9yYWdlU3lu
Y01hbmFnZXI6OnNjaGVkdWxlU3luYyhQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhU3luYz4gYXJlYSkK
IAogdm9pZCBTdG9yYWdlU3luY01hbmFnZXI6OnNjaGVkdWxlRGVsZXRlRW1wdHlEYXRhYmFzZShQ
YXNzUmVmUHRyPFN0b3JhZ2VBcmVhU3luYz4gYXJlYSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
QVNTRVJUKG1fdGhyZWFkKTsKICAgICBpZiAobV90aHJlYWQpCiAgICAgICAgIG1fdGhyZWFkLT5z
Y2hlZHVsZVRhc2soU3RvcmFnZVRhc2s6OmNyZWF0ZURlbGV0ZUVtcHR5RGF0YWJhc2UoYXJlYS5n
ZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVGhyZWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKaW5kZXggOTZl
NjQ3OC4uMWMyYWZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdl
VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3Bw
CkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hTZXQ8
U3RvcmFnZVRocmVhZCo+JiBhY3RpdmVTdG9yYWdlVGhyZWFkcygpCiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkp
OwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdG9yYWdlVGhyZWFkKj4sIHRocmVh
ZHMsICgpKTsKICAgICByZXR1cm4gdGhyZWFkczsKIH0KQEAgLTQ5LDE4ICs0OSwxOCBAQCBQYXNz
T3duUHRyPFN0b3JhZ2VUaHJlYWQ+IFN0b3JhZ2VUaHJlYWQ6OmNyZWF0ZSgpCiBTdG9yYWdlVGhy
ZWFkOjpTdG9yYWdlVGhyZWFkKCkKICAgICA6IG1fdGhyZWFkSUQoMCkKIHsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQo
KSk7CiB9CiAKIFN0b3JhZ2VUaHJlYWQ6On5TdG9yYWdlVGhyZWFkKCkKIHsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAgICAgQVNTRVJUKCFtX3RocmVhZElEKTsKIH0KIAogYm9vbCBTdG9yYWdlVGhyZWFkOjpz
dGFydCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldl
YkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGlmICghbV90aHJlYWRJRCkKICAgICAgICAg
bV90aHJlYWRJRCA9IGNyZWF0ZVRocmVhZChTdG9yYWdlVGhyZWFkOjp0aHJlYWRFbnRyeVBvaW50
Q2FsbGJhY2ssIHRoaXMsICJXZWJDb3JlOiBMb2NhbFN0b3JhZ2UiKTsKICAgICBhY3RpdmVTdG9y
YWdlVGhyZWFkcygpLmFkZCh0aGlzKTsKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBTdG9yYWdlVGhy
ZWFkOjp0aHJlYWRFbnRyeVBvaW50Q2FsbGJhY2sodm9pZCogdGhyZWFkKQogCiB2b2lkIFN0b3Jh
Z2VUaHJlYWQ6OnRocmVhZEVudHJ5UG9pbnQoKQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVCghaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEF1
dG9kcmFpbmVkUG9vbCBwb29sOwogICAgIAogICAgIHdoaWxlIChPd25QdHI8U3RvcmFnZVRhc2s+
IHRhc2sgPSBtX3F1ZXVlLndhaXRGb3JNZXNzYWdlKCkpIHsKQEAgLTg1LDE0ICs4NSwxNCBAQCB2
b2lkIFN0b3JhZ2VUaHJlYWQ6OnRocmVhZEVudHJ5UG9pbnQoKQogCiB2b2lkIFN0b3JhZ2VUaHJl
YWQ6OnNjaGVkdWxlVGFzayhQYXNzT3duUHRyPFN0b3JhZ2VUYXNrPiB0YXNrKQogewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29u
dGV4dCgpKTsKICAgICBBU1NFUlQoIW1fcXVldWUua2lsbGVkKCkgJiYgbV90aHJlYWRJRCk7CiAg
ICAgbV9xdWV1ZS5hcHBlbmQodGFzayk7CiB9CiAKIHZvaWQgU3RvcmFnZVRocmVhZDo6dGVybWlu
YXRlKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2Vi
Q29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKCFtX3F1ZXVlLmtpbGxlZCgpICYm
IG1fdGhyZWFkSUQpOwogICAgIGFjdGl2ZVN0b3JhZ2VUaHJlYWRzKCkucmVtb3ZlKHRoaXMpOwog
ICAgIC8vIEV2ZW4gaW4gd2VpcmQsIGV4Y2VwdGlvbmFsIGNhc2VzLCBkb24ndCB3YWl0IG9uIGEg
bm9uZXhpc3RlbnQgdGhyZWFkIHRvIHRlcm1pbmF0ZS4KQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lk
IFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCiAKIHZvaWQgU3RvcmFnZVRocmVhZDo6cGVyZm9y
bVRlcm1pbmF0ZSgpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KCFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgbV9xdWV1ZS5raWxsKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggNDJhNTM2
Zi4uYjllMDk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJh
Y2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAK
QEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBEZWZhdWx0U3RvcmFnZURhdGFi
YXNlSWRsZUludGVydmFsID0gMzAwOwogICAgIAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6aW5pdGlh
bGl6ZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCwgU3RvcmFnZVRyYWNrZXJDbGll
bnQqIGNsaWVudCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKCFzdG9yYWdlVHJhY2tl
ciB8fCAhc3RvcmFnZVRyYWNrZXItPm1fY2xpZW50KTsKICAgICAKICAgICBpZiAoIXN0b3JhZ2VU
cmFja2VyKQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjppbnRlcm5hbElu
aXRpYWxpemUoKQogewogICAgIG1fbmVlZHNJbml0aWFsaXphdGlvbiA9IGZhbHNlOwogCi0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25D
b250ZXh0KCkpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRleHQgZW5jb2RpbmcgbWFwcyBoYXZlIGJl
ZW4gYnVpbHQgb24gdGhlIG1haW4gdGhyZWFkLCBhcyB0aGUgU3RvcmFnZVRyYWNrZXIgdGhyZWFk
IG1pZ2h0IHRyeSB0byBkbyBpdCB0aGVyZSBpbnN0ZWFkLgogICAgIC8vIEZJWE1FICg8cmRhcjov
L3Byb2JsZW0vOTEyNzgxOT4pOiBJcyB0aGVyZSBhIG1vcmUgZXhwbGljaXQgd2F5IG9mIGRvaW5n
IHRoaXMgYmVzaWRlcyBhY2Nlc3NpbmcgdGhlIFVURjhFbmNvZGluZz8KQEAgLTEzMyw3ICsxMzMs
NyBAQCBTdHJpbmcgU3RvcmFnZVRyYWNrZXI6OnRyYWNrZXJEYXRhYmFzZVBhdGgoKQogdm9pZCBT
dG9yYWdlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShib29sIGNyZWF0ZUlmRG9lc05vdEV4
aXN0KQogewogICAgIEFTU0VSVChtX2lzQWN0aXZlKTsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoIWlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBB
U1NFUlQoIW1fZGF0YWJhc2VHdWFyZC50cnlMb2NrKCkpOwogCiAgICAgaWYgKG1fZGF0YWJhc2Uu
aXNPcGVuKCkpCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6aW1wb3J0
T3JpZ2luSWRlbnRpZmllcnMoKQogICAgIGlmICghbV9pc0FjdGl2ZSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJD
b3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQobV90aHJlYWQpOwogCiAgICAgbV90
aHJlYWQtPnNjaGVkdWxlVGFzayhTdG9yYWdlVGFzazo6Y3JlYXRlT3JpZ2luSWRlbnRpZmllcnNJ
bXBvcnQoKSk7CkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0lt
cG9ydE9yaWdpbklkZW50aWZpZXJzKCkKIHsKICAgICBBU1NFUlQobV9pc0FjdGl2ZSk7CiAgICAg
Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFpc0luV2ViQ29yZUV4
ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tEYXRh
YmFzZShtX2RhdGFiYXNlR3VhcmQpOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgU3RvcmFnZVRy
YWNrZXI6OnN5bmNJbXBvcnRPcmlnaW5JZGVudGlmaWVycygpCiAgICAgCiB2b2lkIFN0b3JhZ2VU
cmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSgpCiB7Ci0gICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHQoKSk7CiAgICAgQVNTRVJUKG1faXNBY3RpdmUpOwogCiAgICAgbV9kYXRhYmFzZUd1YXJkLmxv
Y2soKTsKQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzZXRPcmlnaW5E
ZXRhaWxzKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaQogCiAgICAg
T3duUHRyPFN0b3JhZ2VUYXNrPiB0YXNrID0gU3RvcmFnZVRhc2s6OmNyZWF0ZVNldE9yaWdpbkRl
dGFpbHMob3JpZ2luSWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgZGF0YWJhc2VGaWxlKTsKIAot
ICAgIGlmIChpc01haW5UaHJlYWQoKSkgeworICAgIGlmIChpc0luV2ViQ29yZUV4ZWN1dGlvbkNv
bnRleHQoKSkgewogICAgICAgICBBU1NFUlQobV90aHJlYWQpOwogICAgICAgICBtX3RocmVhZC0+
c2NoZWR1bGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKICAgICB9IGVsc2UgCkBAIC0zMTMsNyArMzEz
LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c2V0T3JpZ2luRGV0YWlscyhjb25zdCBTdHJpbmcm
IG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmkKIAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6c2No
ZWR1bGVUYXNrKHZvaWQqIHRhc2tJbikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKFN0
b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkubV90aHJlYWQpOwogICAgIAogICAgIE93blB0cjxTdG9y
YWdlVGFzaz4gdGFzayA9IGFkb3B0UHRyKHJlaW50ZXJwcmV0X2Nhc3Q8U3RvcmFnZVRhc2sqPih0
YXNrSW4pKTsKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzY2hlZHVs
ZVRhc2sodm9pZCogdGFza0luKQogCiB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jU2V0T3JpZ2lu
RGV0YWlscyhjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VGaWxlKQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCgh
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgTXV0ZXhMb2NrZXIgbG9ja0Rh
dGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIFN0b3Jh
Z2VUcmFja2VyOjpvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3Vs
dCkKIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmRlbGV0ZUFsbE9yaWdpbnMoKQogewogICAgIEFTU0VS
VChtX2lzQWN0aXZlKTsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKG1fdGhyZWFkKTsKICAg
ICAKICAgICBpZiAoIW1faXNBY3RpdmUpCkBAIC0zOTMsNyArMzkzLDcgQEAgdm9pZCBTdG9yYWdl
VHJhY2tlcjo6ZGVsZXRlQWxsT3JpZ2lucygpCiAgICAgCiB2b2lkIFN0b3JhZ2VUcmFja2VyOjpz
eW5jRGVsZXRlQWxsT3JpZ2lucygpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKCFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgCiAgICAgTXV0
ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgCkBAIC00NDgsNyAr
NDQ4LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMoKQogCiB2
b2lkIFN0b3JhZ2VUcmFja2VyOjpkZWxldGVPcmlnaW5Pbk1haW5UaHJlYWQodm9pZCogb3JpZ2lu
SWRlbnRpZmllcikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBTdHJpbmcgaWRlbnRpZmllciA9
IGFkb3B0UmVmKHJlaW50ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1wbCo+KG9yaWdpbklkZW50aWZpZXIp
KTsKICAgICB0cmFja2VyKCkuZGVsZXRlT3JpZ2luKGlkZW50aWZpZXIpOwpAQCAtNDYyLDcgKzQ2
Miw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBTdHJpbmcmIG9y
aWdpbklkZW50aWZpZXIpCiB2b2lkIFN0b3JhZ2VUcmFja2VyOjpkZWxldGVPcmlnaW4oU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbikKIHsgICAgCiAgICAgQVNTRVJUKG1faXNBY3RpdmUpOwotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29u
dGV4dCgpKTsKICAgICBBU1NFUlQobV90aHJlYWQpOwogICAgIAogICAgIGlmICghbV9pc0FjdGl2
ZSkKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpkZWxldGVPcmlnaW4o
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKIAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0
ZU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiB7Ci0gICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAKICAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsKICAg
ICAKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjp3aWxsRGVsZXRlQWxs
T3JpZ2lucygpCiAKIHZvaWQgU3RvcmFnZVRyYWNrZXI6OndpbGxEZWxldGVPcmlnaW4oY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQo
IW1fb3JpZ2luU2V0R3VhcmQudHJ5TG9jaygpKTsKIAogICAgIG1fb3JpZ2luc0JlaW5nRGVsZXRl
ZC5hZGQob3JpZ2luSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
ci5jcHAKaW5kZXggOWMxYmM3Zi4uY2Q3NzBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hh
cmVkV29ya2VyLmNwcApAQCAtNTMsNyArNTMsNyBAQCBpbmxpbmUgU2hhcmVkV29ya2VyOjpTaGFy
ZWRXb3JrZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIAogUGFzc1JlZlB0cjxT
aGFyZWRXb3JrZXI+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBGZWF0dXJlT2JzZXJ2ZXI6Om9ic2Vy
dmUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZG9tV2luZG93KCksIEZlYXR1cmVP
YnNlcnZlcjo6U2hhcmVkV29ya2VyU3RhcnQpOwogCiAgICAgUmVmUHRyPFNoYXJlZFdvcmtlcj4g
d29ya2VyID0gYWRvcHRSZWYobmV3IFNoYXJlZFdvcmtlcihjb250ZXh0KSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5jcHAKaW5kZXggZjc5YThiMC4uMWMxZWZmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmNwcApAQCAtNTksNyArNTksNyBAQCBpbmxpbmUgV29ya2VyOjpXb3JrZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIAogUGFzc1JlZlB0cjxXb3JrZXI+IFdvcmtlcjo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJs
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgRmVhdHVyZU9ic2Vy
dmVyOjpvYnNlcnZlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmRvbVdpbmRvdygp
LCBGZWF0dXJlT2JzZXJ2ZXI6OldvcmtlclN0YXJ0KTsKIAogICAgIFJlZlB0cjxXb3JrZXI+IHdv
cmtlciA9IGFkb3B0UmVmKG5ldyBXb3JrZXIoY29udGV4dCkpOwpAQCAtODQsNyArODQsNyBAQCBQ
YXNzUmVmUHRyPFdvcmtlcj4gV29ya2VyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJgogCiBXb3JrZXI6On5Xb3JrZXIoKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsgLy8gVGhlIGNvbnRl
eHQgaXMgcHJvdGVjdGVkIGJ5IHdvcmtlciBjb250ZXh0IHByb3h5LCBzbyBpdCBjYW5ub3QgYmUg
ZGVzdHJveWVkIHdoaWxlIGEgV29ya2VyIGV4aXN0cy4KICAgICBtX2NvbnRleHRQcm94eS0+d29y
a2VyT2JqZWN0RGVzdHJveWVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwCmluZGV4IDE1YWNhNmQuLmMxZGJjYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0yNjAsMTQg
KzI2MCwxNCBAQCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6V29ya2VyTWVzc2FnaW5nUHJveHkoV29y
a2VyKiB3b3JrZXJPYmplY3QpCiAjZW5kaWYKIHsKICAgICBBU1NFUlQobV93b3JrZXJPYmplY3Qp
OwotICAgIEFTU0VSVCgobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkgJiYg
aXNNYWluVGhyZWFkKCkpCisgICAgQVNTRVJUKChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlz
RG9jdW1lbnQoKSAmJiBpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgICAg
fHwgKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkgJiYgY3VycmVu
dFRocmVhZCgpID09IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuZ2V0KCkpLT50aHJlYWQoKS0+dGhyZWFkSUQoKSkpOwogfQogCiBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6fldvcmtlck1lc3NhZ2luZ1Byb3h5KCkKIHsKICAgICBBU1NFUlQoIW1fd29y
a2VyT2JqZWN0KTsKLSAgICBBU1NFUlQoKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1
bWVudCgpICYmIGlzTWFpblRocmVhZCgpKQorICAgIEFTU0VSVCgobV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5pc0RvY3VtZW50KCkgJiYgaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpCiAg
ICAgICAgICAgIHx8IChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgp
ICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBzdGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4obV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmdldCgpKS0+dGhyZWFkKCktPnRocmVhZElEKCkpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5l
cmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9q
L1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgppbmRleCAxZjg2NTk4
Li4zMzlhZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktp
dEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5p
bgpAQCAtMTMyLDcgKzEzMiw3IEBAIEVYUE9SVFMKICAgICAgICAgP2luaXRpYWxpemVNYWluVGhy
ZWFkQFdURkBAWUFYWFoKICAgICAgICAgP2luaXRpYWxpemVUaHJlYWRpbmdAV1RGQEBZQVhYWgog
ICAgICAgICA/aW5zdHJ1bWVudGF0aW9uRm9yUGFnZUBXZWJDb3JlQEBZQVBBVkluc3RydW1lbnRp
bmdBZ2VudHNAMUBQQVZQYWdlQDFAQFoKLSAgICAgICAgP2lzTWFpblRocmVhZEBXVEZAQFlBX05Y
WgorICAgICAgICA/aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0QFdURkBAWUFfTlhaCiAgICAg
ICAgID9sb2NrQE11dGV4QFdURkBAUUFFWFhaCiAgICAgICAgID9sb2NrQXRvbWljYWxseUluaXRp
YWxpemVkU3RhdGljTXV0ZXhAV1RGQEBZQVhYWgogICAgICAgICA/c2lnbmFsQFRocmVhZENvbmRp
dGlvbkBXVEZAQFFBRVhYWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViS2l0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKaW5kZXgg
NWQyNDBmZS4uNWEzZTJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViS2l0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCkBA
IC0xMDYsNyArMTA2LDcgQEAgc3RhdGljIGJvb2wgZ2VuZXJhdGVFbnRyb3B5KHVuc2lnbmVkIGNo
YXIqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkKICNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgdm9pZCBh
c3NlcnRWOFJlY3Vyc2lvblNjb3BlKCkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpIHx8
IFdlYkNvcmU6OlY4UmVjdXJzaW9uU2NvcGU6OnByb3Blcmx5VXNlZCgpKTsKKyAgICBBU1NFUlQo
IWlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpIHx8IFdlYkNvcmU6OlY4UmVjdXJzaW9uU2Nv
cGU6OnByb3Blcmx5VXNlZCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2Uu
Y3BwCmluZGV4IDA2ZTNiOTIuLmRhMDY1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuY3Bw
CkBAIC00MzIsNyArNDMyLDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
OjpkaWRSZWFkRGlyZWN0b3J5T25Xb3JrZXJUaHJlYWQoU2NyaXB0RXhlY3UKIAogdm9pZCBXb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpydW5UYXNrT25NYWluVGhyZWFkKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFBhc3NSZWZQ
dHI8V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZT4gYnJpZGdlLCBQYXNzT3duUHRyPFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2tUb1J1bikKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAgICAgdGFza1RvUnVuLT5wZXJmb3JtVGFzayhzY3JpcHRFeGVjdXRpb25Db250
ZXh0KTsKIH0KIApAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxi
YWNrc0JyaWRnZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKFBhc3NPd25QdHI8V2ViQ29yCiB2
b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6Om1heVBvc3RUYXNrVG9Xb3JrZXIo
UGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBjb25zdCBTdHJp
bmcmIG1vZGUpCiB7CiAgICAgLy8gUmVsaWVzIG9uIGl0cyBjYWxsZXIgKE1haW5UaHJlYWRGaWxl
U3lzdGVtQ2FsbGJhY2tzOmRpZCopIHRvIGtlZXAgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZSBhbGl2ZS4KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0lu
V2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9s
b2FkZXJQcm94eU11dGV4KTsKICAgICBpZiAobV93b3JrZXJMb2FkZXJQcm94eSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NC
cmlkZ2UuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVdyaXRlckNh
bGxiYWNrc0JyaWRnZS5jcHAKaW5kZXggZGQ5MWM1Mi4uMzI1Y2I1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVdyaXRlckNhbGxi
YWNrc0JyaWRnZS5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIFdvcmtlckZpbGVXcml0ZXJD
YWxsYmFja3NCcmlkZ2U6OmRpZFRydW5jYXRlT25Xb3JrZXJUaHJlYWQoU2NyaXB0RXhlY3V0aW9u
QwogCiB2b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OnJ1blRhc2tPbk1haW5U
aHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUGFz
c1JlZlB0cjxXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlPiBicmlkZ2UsIFBhc3NPd25Q
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFza1RvUnVuKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICBpZiAoIWJyaWRnZS0+bV93cml0ZXJEZWxldGVkKQogICAgICAgICB0YXNrVG9S
dW4tPnBlcmZvcm1UYXNrKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogfQpAQCAtMjA0LDcgKzIw
NCw3IEBAIHZvaWQgV29ya2VyRmlsZVdyaXRlckNhbGxiYWNrc0JyaWRnZTo6ZGlzcGF0Y2hUYXNr
VG9NYWluVGhyZWFkKFBhc3NPd25QdHI8U2NyaXB0CiAKIHZvaWQgV29ya2VyRmlsZVdyaXRlckNh
bGxiYWNrc0JyaWRnZTo6ZGlzcGF0Y2hUYXNrVG9Xb3JrZXJUaHJlYWQoUGFzc093blB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrKQogewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBt
X3Byb3h5LT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoCiAgICAgICAgIGNyZWF0ZUNh
bGxiYWNrVGFzaygmcnVuVGFza09uV29ya2VyVGhyZWFkLCB0aGlzLCB0YXNrKSwgbV9tb2RlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGZhdmljb25kYXRhYmFz
ZS5jcHAKaW5kZXggYjQzOWE1NS4uZGNiYTNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdGZhdmljb25kYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdGZhdmljb25kYXRhYmFzZS5jcHAKQEAgLTM3Nyw3ICszNzcsNyBAQCBn
Y2hhciogd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb25fdXJpKFdlYktpdEZhdmlj
b25EYXRhYmFzZSogZGF0YWJhc2UsCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX0ZBVklDT05fREFUQUJBU0UoZGF0YWJhc2UpLCAwKTsKICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChwYWdlVVJJLCAwKTsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBTdHJpbmcgaWNvblVSSSA9
IGljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwoU3RyaW5nOjpmcm9t
VVRGOChwYWdlVVJJKSk7CiAgICAgaWYgKGljb25VUkkuaXNFbXB0eSgpKQpAQCAtMzg4LDcgKzM4
OCw3IEBAIGdjaGFyKiB3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbl91cmkoV2Vi
S2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwKIAogc3RhdGljIEdka1BpeGJ1ZiogZ2V0SWNv
blBpeGJ1ZlN5bmNocm9ub3VzbHkoV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29u
c3QgU3RyaW5nJiBwYWdlVVJMLCBjb25zdCBJbnRTaXplJiBpY29uU2l6ZSkKIHsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHQoKSk7CiAKICAgICAvLyBUaGUgZXhhY3Qgc2l6ZSB3ZSBwYXNzIGlzIGlycmVsZXZhbnQgdG8g
dGhlIGljb25EYXRhYmFzZSBjb2RlLgogICAgIC8vIFdlIG11c3QgcGFzcyBzb21ldGhpbmcgZ3Jl
YXRlciB0aGFuIDB4MCB0byBnZXQgYSBwaXhidWYuCkBAIC02MDMsNyArNjAzLDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0RmF2aWNvbkRhdGFiYXNlUHJvY2Vzc1BlbmRpbmdJY29uc0ZvclVSSShXZWJL
aXRGYXZpY29uRGF0YWJhc2UKIAogc3RhdGljIHZvaWQgd2Via2l0RmF2aWNvbkRhdGFiYXNlSW1w
b3J0RmluaXNoZWQoV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSkKIHsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHQoKSk7CiAgICAgZGF0YWJhc2UtPnByaXYtPmltcG9ydEZpbmlzaGVkID0gdHJ1ZTsKIAogICAg
IC8vIEltcG9ydCBpcyBjb21wbGV0ZSwgcHJvY2VzcyBwZW5kaW5nIHJlcXVlc3RzIGZvciBwYWdl
cyB0aGF0IGFyZSBub3QgaW4gdGhlIGRhdGFiYXNlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9N
aXNjL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5tbQppbmRleCA1MDZjYjVjLi5lYjE0MjdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5tbQpAQCAt
MzksNyArMzksNyBAQCBOU1N0cmluZyAqV2ViTG9jYWxpemVkU3RyaW5nKFdlYkxvY2FsaXphYmxl
U3RyaW5nc0J1bmRsZSAqc3RyaW5nc0J1bmRsZSwgY29uc3QgYwogICAgIC8vIGFuZCBpdHMgdXNl
IG9mIFtOU0J1bmRsZSBsb2NhbGl6ZWRTdHJpbmdGb3JLZXk6OjpdLCB3aGljaCBpcyBub3QgZ3Vh
cmFudGVlZCB0byBiZSB0aHJlYWQtc2FmZS4gSWYKICAgICAvLyB3ZSBkZWNpZGUgd2UgbmVlZCB0
byB1c2UgdGhpcyBvbiBiYWNrZ3JvdW5kIHRocmVhZHMsIHdlJ2xsIG5lZWQgdG8gYWRkIGxvY2tp
bmcgaGVyZSBhbmQgbWFrZSBzdXJlCiAgICAgLy8gaXQgZG9lc24ndCBhZmZlY3QgcGVyZm9ybWFu
Y2UuCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgTlNCdW5kbGUgKmJ1bmRsZTsKICAgICBpZiAoc3Ry
aW5nc0J1bmRsZSA9PSBOVUxMKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9y
YWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3Jh
Z2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50Lm1tCmluZGV4IDAyNzU5NDQuLjIxNjFiYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50Lm1tCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBk
aXNwYXRjaERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCh2b2lkKiBjb250ZXh0KQogICAgIHsK
LSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKGlzSW5XZWJD
b3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YSogaW5m
byA9IHN0YXRpY19jYXN0PERpZE1vZGlmeU9yaWdpbkRhdGEqPihjb250ZXh0KTsKICAgICAgICAg
aW5mby0+Y2xpZW50LT5kaXNwYXRjaERpZE1vZGlmeU9yaWdpbihpbmZvLT5vcmlnaW4uZ2V0KCkp
OwogICAgICAgICBkZWxldGUgaW5mbzsKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKIAogdm9p
ZCBXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4pCiB7Ci0gICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgIGlm
ICghaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpIHsKICAgICAgICAgRGlkTW9kaWZ5T3Jp
Z2luRGF0YTo6ZGlzcGF0Y2hUb01haW5UaHJlYWQodGhpcywgb3JpZ2luKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXJDbGll
bnQ6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAKIHZv
aWQgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQog
ewotICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICBpZiAoIWlzSW5XZWJDb3JlRXhlY3V0
aW9uQ29udGV4dCgpKSB7CiAgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9N
YWluVGhyZWFkKHRoaXMsIG9yaWdpbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VUcmFja2VyQ2xpZW50Lm1t
IGIvU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlVHJhY2tlckNsaWVudC5tbQpp
bmRleCAzYmM5ZjEwLi5hMmVjOWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9y
YWdlL1dlYlN0b3JhZ2VUcmFja2VyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0
b3JhZ2UvV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQubW0KQEAgLTUwLDcgKzUwLDcgQEAgV2ViU3Rv
cmFnZVRyYWNrZXJDbGllbnQ6On5XZWJTdG9yYWdlVHJhY2tlckNsaWVudCgpCiAKIHZvaWQgV2Vi
U3RvcmFnZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFk
KHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NF
UlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIC8vIGFkb3B0UmVmIGlzIGJh
bGFuY2VkIGJ5IGxlYWtSZWYgaW4gZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4uCiAgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBhZG9wdFJlZihzdGF0aWNfY2FzdDxTZWN1cml0eU9y
aWdpbio+KGNvbnRleHQpKTsKICAgICBXZWJTdG9yYWdlVHJhY2tlckNsaWVudDo6c2hhcmVkV2Vi
U3RvcmFnZVRyYWNrZXJDbGllbnQoKS0+ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4ob3JpZ2luLmdl
dCgpKTsKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBXZWJTdG9yYWdlVHJhY2tlckNsaWVudDo6ZGlz
cGF0Y2hEaWRNb2RpZnlPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGkKIHsKICAgICBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKTsKIAotICAgIGlmICghaXNN
YWluVGhyZWFkKCkpIHsKKyAgICBpZiAoIWlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKSB7
CiAgICAgICAgIC8vIGxlYWtSZWYgaXMgYmFsYW5jZWQgYnkgYWRvcHRSZWYgaW4gZGlzcGF0Y2hE
aWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQuCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoZGlz
cGF0Y2hEaWRNb2RpZnlPcmlnaW5Pbk1haW5UaHJlYWQsIG9yaWdpbi5sZWFrUmVmKCkpOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQppbmRleCAzMDU1ZjllLi5kNDI3
NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTU3LDcgKzU3LDcgQEAgUmVzb3Vy
Y2VFcnJvciBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpibG9ja2VkRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXEKIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKHBy
aXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmNwcAppbmRleCA0ZDVhNmQxLi40MjIxYWU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZQogCiBzdGF0aWMgU3RyaW5nJiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZp
ZXJCYXNlKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0lu
V2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIGJhc2UsICgpKTsKICAgICByZXR1cm4gYmFzZTsKIH0KQEAgLTczLDcgKzczLDcgQEAgdm9p
ZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbklkZW50aWZpZXJCYXNlKGMKIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAjaWYgVVNF
KENGTkVUV09SSykKICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5k
ZXggY2ZkMTI0Yy4uZDdhNDE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRGF0
YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwCkBAIC0zNDcsNyArMzQ3LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIGRp
c3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhyZWFkKHZvaWQqIGNvbnRleHQpCiAgICAgewot
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQoaXNJbldlYkNv
cmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhKiBpbmZv
ID0gc3RhdGljX2Nhc3Q8RGlkTW9kaWZ5T3JpZ2luRGF0YSo+KGNvbnRleHQpOwogICAgICAgICBp
bmZvLT5kYXRhYmFzZU1hbmFnZXItPmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGluZm8tPm9yaWdp
bi5nZXQoKSk7CiAgICAgICAgIGRlbGV0ZSBpbmZvOwpAQCAtMzU5LDcgKzM1OSw3IEBAIHByaXZh
dGU6CiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihT
ZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewotICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAg
ICBpZiAoIWlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAgIERpZE1vZGlm
eU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWluVGhyZWFkKHRoaXMsIG9yaWdpbik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0zODgsNyArMzg4LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJEYXRhYmFzZU1hbmFnZXI6OnNldFF1b3RhKAogCiB2b2lkIFdlYkRhdGFiYXNlTWFu
YWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKIHsKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7
CisgICAgaWYgKCFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSkgewogICAgICAgICBEaWRN
b2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCh0aGlzLCBvcmlnaW4pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0
LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbiBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52
Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5kZXggOGEwOTkzNC4uYTkxYmZkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVm
LmluCkBAIC0xMzIsNyArMTMyLDcgQEAgRVhQT1JUUwogICAgICAgICA/aW5pdGlhbGl6ZU1haW5U
aHJlYWRAV1RGQEBZQVhYWgogICAgICAgICA/aW5pdGlhbGl6ZVRocmVhZGluZ0BXVEZAQFlBWFha
CiAgICAgICAgID9pbnN0cnVtZW50YXRpb25Gb3JQYWdlQFdlYkNvcmVAQFlBUEFWSW5zdHJ1bWVu
dGluZ0FnZW50c0AxQFBBVlBhZ2VAMUBAWgotICAgICAgICA/aXNNYWluVGhyZWFkQFdURkBAWUFf
TlhaCisgICAgICAgID9pc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHRAV1RGQEBZQV9OWFoKICAg
ICAgICAgP2xvY2tATXV0ZXhAV1RGQEBRQUVYWFoKICAgICAgICAgP2xvY2tBdG9taWNhbGx5SW5p
dGlhbGl6ZWRTdGF0aWNNdXRleEBXVEZAQFlBWFhaCiAgICAgICAgID9zaWduYWxAVGhyZWFkQ29u
ZGl0aW9uQFdURkBAUUFFWFhaCkBAIC01MjAsNyArNTIwLDcgQEAgRVhQT1JUUwogICAgICAgICA/
aW5pdGlhbGl6ZU1haW5UaHJlYWRAV1RGQEBZQVhYWgogICAgICAgICA/aW5pdGlhbGl6ZVRocmVh
ZGluZ0BXVEZAQFlBWFhaCiAgICAgICAgID9pbnN0cnVtZW50YXRpb25Gb3JQYWdlQFdlYkNvcmVA
QFlBUEFWSW5zdHJ1bWVudGluZ0FnZW50c0AxQFBBVlBhZ2VAMUBAWgotICAgICAgICA/aXNNYWlu
VGhyZWFkQFdURkBAWUFfTlhaCisgICAgICAgID9pc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHRA
V1RGQEBZQV9OWFoKICAgICAgICAgP2xvY2tATXV0ZXhAV1RGQEBRQUVYWFoKICAgICAgICAgP2xv
Y2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNNdXRleEBXVEZAQFlBWFhaCiAgICAgICAgID9z
aWduYWxAVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFFWFhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdF9DYWlyby5kZWYgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJLaXQudmNwcm9qL1dlYktpdF9DYWlyby5kZWYKaW5kZXggZTRjZDI2Ni4uN2NiODI1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRfQ2Fpcm8u
ZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0X0NhaXJvLmRl
ZgpAQCAtMTI3LDcgKzEyNyw3IEBAIEVYUE9SVFMKICAgICAgICAgP2RldGFjaFRocmVhZEBXVEZA
QFlBWElAWgogICAgICAgICA/aW5pdGlhbGl6ZU1haW5UaHJlYWRAV1RGQEBZQVhYWgogICAgICAg
ICA/aW5pdGlhbGl6ZVRocmVhZGluZ0BXVEZAQFlBWFhaCi0gICAgICAgID9pc01haW5UaHJlYWRA
V1RGQEBZQV9OWFoKKyAgICAgICAgP2lzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dEBXVEZAQFlB
X05YWgogICAgICAgICA/bG9ja0BNdXRleEBXVEZAQFFBRVhYWgogICAgICAgICA/bG9ja0F0b21p
Y2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4QFdURkBAWUFYWFoKICAgICAgICAgP3NpZ25hbEBU
aHJlYWRDb25kaXRpb25AV1RGQEBRQUVYWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYktpdC52Y3Byb2ovV2ViS2l0X0NhaXJvX2RlYnVnLmRlZiBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYktpdC52Y3Byb2ovV2ViS2l0X0NhaXJvX2RlYnVnLmRlZgppbmRleCBlNGFjMTE5Li43ZDAx
MDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdF9D
YWlyb19kZWJ1Zy5kZWYKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJL
aXRfQ2Fpcm9fZGVidWcuZGVmCkBAIC0xMjcsNyArMTI3LDcgQEAgRVhQT1JUUwogICAgICAgICA/
ZGV0YWNoVGhyZWFkQFdURkBAWUFYSUBaCiAgICAgICAgID9pbml0aWFsaXplTWFpblRocmVhZEBX
VEZAQFlBWFhaCiAgICAgICAgID9pbml0aWFsaXplVGhyZWFkaW5nQFdURkBAWUFYWFoKLSAgICAg
ICAgP2lzTWFpblRocmVhZEBXVEZAQFlBX05YWgorICAgICAgICA/aXNJbldlYkNvcmVFeGVjdXRp
b25Db250ZXh0QFdURkBAWUFfTlhaCiAgICAgICAgID9sb2NrQE11dGV4QFdURkBAUUFFWFhaCiAg
ICAgICAgID9sb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXhAV1RGQEBZQVhYWgog
ICAgICAgICA/c2lnbmFsQFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRVhYWgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvSG9zdFJlY29yZC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9Ib3N0UmVjb3JkLmNwcAppbmRleCAwNzc1ZDI0Li41ZWY2MGMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Ib3N0UmVjb3JkLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Ib3N0UmVjb3JkLmNwcApAQCAt
NTgsNyArNTgsNyBAQCBIb3N0UmVjb3JkOjp+SG9zdFJlY29yZCgpCiAKIHZvaWQgSG9zdFJlY29y
ZDo6c2NoZWR1bGVSZXNvdXJjZUxvYWRlcihQYXNzUmVmUHRyPFNjaGVkdWxhYmxlTG9hZGVyPiBs
b2FkZXIpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldl
YkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgbG9hZGVyLT5zZXRIb3N0UmVjb3JkKHRo
aXMpOwogICAgIApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIEhvc3RSZWNvcmQ6OnNjaGVkdWxlUmVz
b3VyY2VMb2FkZXIoUGFzc1JlZlB0cjxTY2hlZHVsYWJsZUxvYWRlcj4gbG9hZGVyKQogCiB2b2lk
IEhvc3RSZWNvcmQ6OmFkZExvYWRlckluUHJvZ3Jlc3MoU2NoZWR1bGFibGVMb2FkZXIqIGxvYWRl
cikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBtX2xvYWRlcnNJblByb2dyZXNzLmFkZChsb2Fk
ZXIpOwogICAgIGxvYWRlci0+c2V0SG9zdFJlY29yZCh0aGlzKTsKQEAgLTc4LDcgKzc4LDcgQEAg
dm9pZCBIb3N0UmVjb3JkOjphZGRMb2FkZXJJblByb2dyZXNzKFNjaGVkdWxhYmxlTG9hZGVyKiBs
b2FkZXIpCiAKIHZvaWQgSG9zdFJlY29yZDo6cmVtb3ZlTG9hZGVyKFNjaGVkdWxhYmxlTG9hZGVy
KiBsb2FkZXIpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJ
bldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9j
ZXNzKTogRHVlIHRvIElQQyByYWNlIGNvbmRpdGlvbnMsIGl0J3MgcG9zc2libGUgdGhpcyBIb3N0
UmVjb3JkIHdpbGwgYmUgYXNrZWQgdG8gcmVtb3ZlIHRoZSBzYW1lIGxvYWRlciB0d2ljZS4KICAg
ICAvLyBJdCB3b3VsZCBiZSBuaWNlIHRvIGtub3cgdGhlIGxvYWRlciBoYXMgYWxyZWFkeSBiZWVu
IHJlbW92ZWQgYW5kIHRyZWF0IGl0IGFzIGEgbm8tb3AuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
Y3BwCmluZGV4IDhjMzMzMmIuLmNmNGIxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
CkBAIC03OSw3ICs3OSw3IEBAIEhvc3RSZWNvcmQqIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6Omhvc3RGb3JVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBDCiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6cmVtb3ZlTG9hZGVyKFNjaGVkdWxhYmxlTG9hZGVyKiBs
b2FkZXIpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldl
YkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChsb2FkZXIpOwogCiAgICAgTE9H
KE5ldHdvcmtTY2hlZHVsaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBOZXR3b3JrUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpyZW1vdmVMb2FkSWRlbnRpZmllciByZW1vdmluZyBsb2FkZXIgJXMiLCBsb2Fk
ZXItPnJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTk3LDcgKzk3
LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZW1vdmVMb2FkZXIoU2No
ZWR1bGFibGVMb2FkZXIqIGxvYWRlcikKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpyZWNlaXZlZFJlZGlyZWN0KFNjaGVkdWxhYmxlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdl
YkNvcmU6OktVUkwmIHJlZGlyZWN0VVJMKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBMT0coTmV0
d29ya1NjaGVkdWxpbmcsICIoTmV0d29ya1Byb2Nlc3MpIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI6OnJlY2VpdmVkUmVkaXJlY3QgbG9hZGVyIG9yaWdpbmFsbHkgZm9yICclcycgcmVkaXJl
Y3RlZCB0byAnJXMnIiwgbG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSwgcmVkaXJlY3RVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBIb3N0UmVj
b3JkKiBvbGRIb3N0ID0gbG9hZGVyLT5ob3N0UmVjb3JkKCk7CkBAIC0xNDEsNyArMTQxLDcgQEAg
c3RhdGljIGJvb2wgcmVtb3ZlU2NoZWR1bGVkTG9hZGVyc0NhbGxlZCA9IGZhbHNlOwogCiB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJlbW92ZVNjaGVkdWxlZExvYWRlcnModm9p
ZCogY29udGV4dCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKHJlbW92ZVNjaGVkdWxl
ZExvYWRlcnNDYWxsZWQpOwogCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlciogc2No
ZWR1bGVyID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcio+KGNvbnRl
eHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggN2Y0YmJkZC4uNWRjYzMyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC01MSwxMiArNTEsMTIgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyYgbG9hZFBhcmFtZXRlcnMsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBj
b25uZWN0aW9uKQogICAgIDogU2NoZWR1bGFibGVMb2FkZXIobG9hZFBhcmFtZXRlcnMsIGNvbm5l
Y3Rpb24pCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldl
YkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogfQogCiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6On5O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoIW1f
aGFuZGxlKTsKIH0KIApAQCAtNzIsNyArNzIsNyBAQCB1aW50NjRfdCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmRlc3RpbmF0aW9uSUQoKSBjb25zdAogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c3RhcnQoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIC8vIEV4cGxpY2l0IHJlZigpIGJh
bGFuY2VkIGJ5IGEgZGVyZWYoKSBpbiBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlSGFu
ZGxlU3RvcHBlZCgpCiAgICAgcmVmKCk7CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnBlcmZvcm1TdG9wcyh2b2lkKikKIAogdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnJlc291cmNlSGFuZGxlU3RvcHBlZCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAg
ICAgaWYgKEZvcm1EYXRhKiBmb3JtRGF0YSA9IHJlcXVlc3QoKS5odHRwQm9keSgpKQogICAgICAg
ICBmb3JtRGF0YS0+cmVtb3ZlR2VuZXJhdGVkRmlsZXNJZk5lZWRlZCgpOwpAQCAtMTgzLDcgKzE4
Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmIHJlCiB7CiAgICAgLy8gV2Ugb25seSBleHBlY3Qg
dG8gZ2V0IHRoZSB3aWxsU2VuZFJlcXVlc3QgY2FsbGJhY2sgZnJvbSBSZXNvdXJjZUhhbmRsZSBh
cyB0aGUgcmVzdWx0IG9mIGEgcmVkaXJlY3QuCiAgICAgQVNTRVJUKCFyZWRpcmVjdFJlc3BvbnNl
LmlzTnVsbCgpKTsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIWlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIC8vIElNUE9SVEFOVDogVGhlIGZh
Y3QgdGhhdCB0aGlzIG1lc3NhZ2UgdG8gdGhlIFdlYlByb2Nlc3MgaXMgc3luYyBpcyB3aGF0IG1h
a2VzIG91ciBjdXJyZW50IGFwcHJvYWNoIHRvIHN5bmNocm9ub3VzIFhNTEh0dHBSZXF1ZXN0cyBz
YWZlLgogICAgIC8vIElmIHRoaXMgbWVzc2FnZSBjaGFuZ2VzIHRvIGJlIGFzeW5jaHJvbm91cyB3
ZSBtaWdodCBpbnRyb2R1Y2UgYSBzaXR1YXRpb24gd2hlcmUgdGhlIE5ldHdvcmtQcm9jZXNzIGlz
IGRlYWRsb2NrZWQgd2FpdGluZyBmb3IgNiBjb25uZWN0aW9ucwpAQCAtMjM5LDcgKzIzOSw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9D
QUxMQkFDSykKIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUHJvdGVjdGlvblNwYWNl
JiBwcm90ZWN0aW9uU3BhY2UpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKCFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICAvLyBJTVBPUlRB
TlQ6IFRoZSBmYWN0IHRoYXQgdGhpcyBtZXNzYWdlIHRvIHRoZSBXZWJQcm9jZXNzIGlzIHN5bmMg
aXMgd2hhdCBtYWtlcyBvdXIgY3VycmVudCBhcHByb2FjaCB0byBzeW5jaHJvbm91cyBYTUxIdHRw
UmVxdWVzdHMgc2FmZS4KICAgICAvLyBJZiB0aGlzIG1lc3NhZ2UgY2hhbmdlcyB0byBiZSBhc3lu
Y2hyb25vdXMgd2UgbWlnaHQgaW50cm9kdWNlIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBOZXR3b3Jr
UHJvY2VzcyBpcyBkZWFkbG9ja2VkIHdhaXRpbmcgZm9yIDYgY29ubmVjdGlvbnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmggYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5oCmluZGV4IGE2
MWE2ZmYuLjE5MTQ2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L1NjaGVkdWxhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
U2NoZWR1bGFibGVMb2FkZXIuaApAQCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dmlydHVhbCBib29sIGlzU3luY2hyb25vdXMoKSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdm9p
ZCBzZXRIb3N0UmVjb3JkKEhvc3RSZWNvcmQqIGhvc3RSZWNvcmQpIHsgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsgbV9ob3N0UmVjb3JkID0gaG9zdFJlY29yZDsgfQotICAgIEhvc3RSZWNvcmQqIGhv
c3RSZWNvcmQoKSBjb25zdCB7IEFTU0VSVChpc01haW5UaHJlYWQoKSk7IHJldHVybiBtX2hvc3RS
ZWNvcmQuZ2V0KCk7IH0KKyAgICB2b2lkIHNldEhvc3RSZWNvcmQoSG9zdFJlY29yZCogaG9zdFJl
Y29yZCkgeyBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOyBtX2hvc3RSZWNv
cmQgPSBob3N0UmVjb3JkOyB9CisgICAgSG9zdFJlY29yZCogaG9zdFJlY29yZCgpIGNvbnN0IHsg
QVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsgcmV0dXJuIG1faG9zdFJlY29y
ZC5nZXQoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU2NoZWR1bGFibGVMb2FkZXIoY29uc3QgTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmLCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU3luY05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TeW5j
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAxZjgyZDE0Li5lOTdlM2VmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TeW5jTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TeW5jTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIFN5bmNOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0KCkKICAgICAvLyAgIEEgLSBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseSBpcyBzYWZlIHRvIHJ1biBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgog
ICAgIC8vICAgQiAtIFdyaXRlIGN1c3RvbSBsb2FkaW5nIGxvZ2ljIHRoYXQgaXMga25vd24gdG8g
YmUgc2FmZSBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgogICAgIAotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAog
ICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3
b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1v
dGVOZXR3b3JraW5nQ29udGV4dC5tbQppbmRleCA3ODE5NTMzLi5kNDExMzVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0Lm1tCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBz
dGF0aWMgT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChP
d25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOwogICAgIHJldHVybiBz
ZXNzaW9uOwogfQpAQCAtMTA4LDcgKzEwOCw3IEBAIFJlc291cmNlRXJyb3IgUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQ6OmJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAK
IHN0YXRpYyBTdHJpbmcmIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJh
c2UoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJD
b3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywg
YmFzZSwgKCkpOwogICAgIHJldHVybiBiYXNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1t
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1
Z2luTW9kdWxlTWFjLm1tCmluZGV4IDE3NDVmZTIuLmRjYTU0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVs
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMv
TmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KQEAgLTI5OCw3ICsyOTgsNyBAQCBzdGF0aWMgY29u
c3QgUmVzSUQgTUlNRUxpc3RTdHJpbmdTdHJpbmdOdW1iZXIgPSAxMjg7CiAKIHN0YXRpYyBib29s
IGdldFBsdWdpbkluZm9Gcm9tQ2FyYm9uUmVzb3VyY2VzT25NYWluVGhyZWFkKENGQnVuZGxlUmVm
IGJ1bmRsZSwgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAog
ICAgIFJlc291cmNlTWFwIHJlc291cmNlTWFwKGJ1bmRsZSk7CiAgICAgaWYgKCFyZXNvdXJjZU1h
cC5pc1ZhbGlkKCkpCkBAIC0zNTQsNyArMzU0LDcgQEAgc3RhdGljIGJvb2wgZ2V0UGx1Z2luSW5m
b0Zyb21DYXJib25SZXNvdXJjZXNPbk1haW5UaHJlYWQoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBQbHUK
IAogc3RhdGljIGJvb2wgZ2V0UGx1Z2luSW5mb0Zyb21DYXJib25SZXNvdXJjZXMoQ0ZCdW5kbGVS
ZWYgYnVuZGxlLCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiB7Ci0gICAgaWYgKGlzTWFpblRo
cmVhZCgpKQorICAgIGlmIChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAg
cmV0dXJuIGdldFBsdWdpbkluZm9Gcm9tQ2FyYm9uUmVzb3VyY2VzT25NYWluVGhyZWFkKGJ1bmRs
ZSwgY29uc3RfY2FzdDxQbHVnaW5Nb2R1bGVJbmZvJj4ocGx1Z2luKSk7CiAKICAgICBfX2Jsb2Nr
IGJvb2wgZ290UGx1Z2luSW5mbyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKaW5kZXggOWJi
YWMwMC4uZDY0ODE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAg
V0VCS0lUX0RFRklORV9BU1lOQ19EQVRBX1NUUlVDVChHZXRGYXZpY29uU3VyZmFjZUFzeW5jRGF0
YSkKIAogc3RhdGljIGNhaXJvX3N1cmZhY2VfdCogZ2V0SWNvblN1cmZhY2VTeW5jaHJvbm91c2x5
KFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCwg
R0Vycm9yKiogZXJyb3IpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NF
UlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgLy8gVGhlIGV4YWN0IHNp
emUgd2UgcGFzcyBpcyBpcnJlbGV2YW50IHRvIHRoZSBpY29uRGF0YWJhc2UgY29kZS4KICAgICAv
LyBXZSBtdXN0IHBhc3Mgc29tZXRoaW5nIGdyZWF0ZXIgdGhhbiAweDAgdG8gZ2V0IGFuIGljb24u
CkBAIC0yMDcsNyArMjA3LDcgQEAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkxD
YWxsYmFjayhXS0ljb25EYXRhYmFzZVJlZiB3a0ljb25EYXRhYmFzZSwgV0sKIAogc3RhdGljIHZv
aWQgaWNvbkRhdGFSZWFkeUZvclBhZ2VVUkxDYWxsYmFjayhXS0ljb25EYXRhYmFzZVJlZiB3a0lj
b25EYXRhYmFzZSwgV0tVUkxSZWYgd2tQYWdlVVJMLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQog
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhl
Y3V0aW9uQ29udGV4dCgpKTsKICAgICBwcm9jZXNzUGVuZGluZ0ljb25zRm9yUGFnZVVSTChXRUJL
SVRfRkFWSUNPTl9EQVRBQkFTRShjbGllbnRJbmZvKSwgdG9JbXBsKHdrUGFnZVVSTCktPnN0cmlu
ZygpKTsKIH0KIApAQCAtMzg1LDcgKzM4NSw3IEBAIGdjaGFyKiB3ZWJraXRfZmF2aWNvbl9kYXRh
YmFzZV9nZXRfZmF2aWNvbl91cmkoV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwKIHsK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfRkFWSUNPTl9EQVRBQkFTRShkYXRh
YmFzZSksIDApOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHBhZ2VVUkwsIDApOwotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29u
dGV4dCgpKTsKIAogICAgIFN0cmluZyBpY29uVVJMRm9yUGFnZVVSTDsKICAgICBkYXRhYmFzZS0+
cHJpdi0+aWNvbkRhdGFiYXNlLT5zeW5jaHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKFN0cmluZzo6
ZnJvbVVURjgocGFnZVVSTCksIGljb25VUkxGb3JQYWdlVVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1ZpZXcubW0KaW5kZXggNDA1ZTgzOS4u
ZDc1YWVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQ
cmludGluZ1ZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQ
cmludGluZ1ZpZXcubW0KQEAgLTEwMCw3ICsxMDAsNyBAQCAtICh2b2lkKV9zdXNwZW5kQXV0b2Rp
c3BsYXkKIAogLSAodm9pZClfZGVsYXllZFJlc3VtZUF1dG9kaXNwbGF5VGltZXJGaXJlZAogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0
aW9uQ29udGV4dCgpKTsKICAgICAKICAgICBfYXV0b2Rpc3BsYXlSZXN1bWVUaW1lciA9IG5pbDsK
ICAgICBbc2VsZiBfc2V0QXV0b2Rpc3BsYXk6WUVTXTsKQEAgLTEyMyw3ICsxMjMsNyBAQCAtICh2
b2lkKV9kZWxheWVkUmVzdW1lQXV0b2Rpc3BsYXkKIAogLSAodm9pZClfYWRqdXN0UHJpbnRpbmdN
YXJnaW5zRm9ySGVhZGVyQW5kRm9vdGVyCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsg
Ly8gVGhpcyBmdW5jaXRvbiBjYWxscyB0aGUgY2xpZW50LCB3aGljaCBzaG91bGQgb25seSBiZSBk
b25lIG9uIG1haW4gdGhyZWFkLgorICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHQoKSk7IC8vIFRoaXMgZnVuY2l0b24gY2FsbHMgdGhlIGNsaWVudCwgd2hpY2ggc2hvdWxkIG9u
bHkgYmUgZG9uZSBvbiBtYWluIHRocmVhZC4KIAogICAgIE5TUHJpbnRJbmZvICppbmZvID0gW19w
cmludE9wZXJhdGlvbiBwcmludEluZm9dOwogICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmluZm9E
aWN0aW9uYXJ5ID0gW2luZm8gZGljdGlvbmFyeV07CkBAIC0yMDksNyArMjA5LDcgQEAgc3RydWN0
IElQQ0NhbGxiYWNrQ29udGV4dCB7CiAKIHN0YXRpYyB2b2lkIHBhZ2VEaWREcmF3VG9JbWFnZShj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIFdLRXJyb3JSZWYsIHZv
aWQqIHVudHlwZWRDb250ZXh0KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIE93blB0cjxJUEND
YWxsYmFja0NvbnRleHQ+IGNvbnRleHQgPSBhZG9wdFB0cihzdGF0aWNfY2FzdDxJUENDYWxsYmFj
a0NvbnRleHQqPih1bnR5cGVkQ29udGV4dCkpOwogICAgIFdLUHJpbnRpbmdWaWV3ICp2aWV3ID0g
Y29udGV4dC0+dmlldy5nZXQoKTsKQEAgLTIzOCw3ICsyMzgsNyBAQCBzdGF0aWMgdm9pZCBwYWdl
RGlkRHJhd1RvSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGltYWdlSGFuZGxl
LCBXS0VycgogCiBzdGF0aWMgdm9pZCBwYWdlRGlkRHJhd1RvUERGKFdLRGF0YVJlZiBkYXRhUmVm
LCBXS0Vycm9yUmVmLCB2b2lkKiB1bnR5cGVkQ29udGV4dCkKIHsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAK
ICAgICBPd25QdHI8SVBDQ2FsbGJhY2tDb250ZXh0PiBjb250ZXh0ID0gYWRvcHRQdHIoc3RhdGlj
X2Nhc3Q8SVBDQ2FsbGJhY2tDb250ZXh0Kj4odW50eXBlZENvbnRleHQpKTsKICAgICBXS1ByaW50
aW5nVmlldyAqdmlldyA9IGNvbnRleHQtPnZpZXcuZ2V0KCk7CkBAIC0yNTcsNyArMjU3LDcgQEAg
c3RhdGljIHZvaWQgcGFnZURpZERyYXdUb1BERihXS0RhdGFSZWYgZGF0YVJlZiwgV0tFcnJvclJl
Ziwgdm9pZCogdW50eXBlZENvbnRleHQKIAogLSAodm9pZClfcHJlcGFyZVBERkRhdGFGb3JQcmlu
dGluZ09uU2Vjb25kYXJ5VGhyZWFkCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgaWYgKCFfd2Vi
RnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBfcHJpbnRpbmdDYWxsYmFja0NvbmRpdGlvbi5zaWdu
YWwoKTsKQEAgLTI5NCwxNCArMjk0LDE0IEBAIC0gKHZvaWQpX3ByZXBhcmVQREZEYXRhRm9yUHJp
bnRpbmdPblNlY29uZGFyeVRocmVhZAogCiBzdGF0aWMgdm9pZCBwYWdlRGlkQ29tcHV0ZVBhZ2VS
ZWN0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIHRv
dGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV0tFcnJvclJlZiwgdm9pZCogdW50eXBlZENvbnRl
eHQpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNv
cmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgT3duUHRyPElQQ0NhbGxiYWNrQ29udGV4dD4g
Y29udGV4dCA9IGFkb3B0UHRyKHN0YXRpY19jYXN0PElQQ0NhbGxiYWNrQ29udGV4dCo+KHVudHlw
ZWRDb250ZXh0KSk7CiAgICAgV0tQcmludGluZ1ZpZXcgKnZpZXcgPSBjb250ZXh0LT52aWV3Lmdl
dCgpOwogCiAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIGFscmVhZHkgY2hhbmdlZCBwcmludCBzZXR1
cCwgdGhlbiB0aGlzIHJlc3BvbnNlIGlzIG9ic29sZXRlLgogICAgIGlmIChjb250ZXh0LT5jYWxs
YmFja0lEID09IHZpZXctPl9leHBlY3RlZENvbXB1dGVkUGFnZXNDYWxsYmFjaykgewotICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVj
dXRpb25Db250ZXh0KCkpOwogICAgICAgICBBU1NFUlQodmlldy0+X2V4cGVjdGVkUHJldmlld0Nh
bGxiYWNrcy5pc0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQoIXZpZXctPl9sYXRlc3RFeHBlY3Rl
ZFByZXZpZXdDYWxsYmFjayk7CiAgICAgICAgIEFTU0VSVCghdmlldy0+X2V4cGVjdGVkUHJpbnRD
YWxsYmFjayk7CkBAIC0zMzYsNyArMzM2LDcgQEAgc3RhdGljIHZvaWQgcGFnZURpZENvbXB1dGVQ
YWdlUmVjdHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBwYWdlUmVjdHMsIGQKIAog
LSAoQk9PTClfYXNrUGFnZVRvQ29tcHV0ZVBhZ2VSZWN0cwogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAog
ICAgIGlmICghX3dlYkZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBOTzsKQEAgLTM1NSw3
ICszNTUsNyBAQCAtIChCT09MKV9hc2tQYWdlVG9Db21wdXRlUGFnZVJlY3RzCiAKIHN0YXRpYyB2
b2lkIHByZXBhcmVEYXRhRm9yUHJpbnRpbmdPblNlY29uZGFyeVRocmVhZCh2b2lkKiB1bnR5cGVk
Q29udGV4dCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0lu
V2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBXS1ByaW50aW5nVmlldyAqdmlldyA9
IHN0YXRpY19jYXN0PFdLUHJpbnRpbmdWaWV3ICo+KHVudHlwZWRDb250ZXh0KTsKICAgICBNdXRl
eExvY2tlciBsb2NrKHZpZXctPl9wcmludGluZ0NhbGxiYWNrTXV0ZXgpOwpAQCAtMzc1LDEyICsz
NzUsMTIgQEAgc3RhdGljIHZvaWQgcHJlcGFyZURhdGFGb3JQcmludGluZ09uU2Vjb25kYXJ5VGhy
ZWFkKHZvaWQqIHVudHlwZWRDb250ZXh0KQogCiAtIChCT09MKWtub3dzUGFnZVJhbmdlOihOU1Jh
bmdlUG9pbnRlcilyYW5nZQogewotICAgIExPRyhWaWV3LCAiLVtXS1ByaW50aW5nVmlldyAlcCBr
bm93c1BhZ2VSYW5nZTpdLCAlcywgJXMiLCBzZWxmLCBbc2VsZiBfaGFzUGFnZVJlY3RzXSA/ICJw
cmludCBkYXRhIGlzIGF2YWlsYWJsZSIgOiAicHJpbnQgZGF0YSBpcyBub3QgYXZhaWxhYmxlIHll
dCIsIGlzTWFpblRocmVhZCgpID8gIm9uIG1haW4gdGhyZWFkIiA6ICJvbiBzZWNvbmRhcnkgdGhy
ZWFkIik7CisgICAgTE9HKFZpZXcsICItW1dLUHJpbnRpbmdWaWV3ICVwIGtub3dzUGFnZVJhbmdl
Ol0sICVzLCAlcyIsIHNlbGYsIFtzZWxmIF9oYXNQYWdlUmVjdHNdID8gInByaW50IGRhdGEgaXMg
YXZhaWxhYmxlIiA6ICJwcmludCBkYXRhIGlzIG5vdCBhdmFpbGFibGUgeWV0IiwgaXNJbldlYkNv
cmVFeGVjdXRpb25Db250ZXh0KCkgPyAib24gbWFpbiB0aHJlYWQiIDogIm9uIHNlY29uZGFyeSB0
aHJlYWQiKTsKICAgICBBU1NFUlQoX3ByaW50T3BlcmF0aW9uID09IFtOU1ByaW50T3BlcmF0aW9u
IGN1cnJlbnRPcGVyYXRpb25dKTsKIAogICAgIC8vIEFzc3VtaW5nIHRoYXQgb25jZSB3ZSBzd2l0
Y2ggdG8gcHJpbnRpbmcgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIHdlIGRvbid0IGdvIGJhY2su
Ci0gICAgQVNTRVJUKCFfaXNQcmludGluZ0Zyb21TZWNvbmRhcnlUaHJlYWQgfHwgIWlzTWFpblRo
cmVhZCgpKTsKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpKQorICAgIEFTU0VSVCghX2lzUHJpbnRp
bmdGcm9tU2Vjb25kYXJ5VGhyZWFkIHx8ICFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7
CisgICAgaWYgKCFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgX2lzUHJp
bnRpbmdGcm9tU2Vjb25kYXJ5VGhyZWFkID0gWUVTOwogCiAgICAgaWYgKCFfd2ViRnJhbWUtPnBh
Z2UoKSkgewpAQCAtMzk0LDcgKzM5NCw3IEBAIC0gKEJPT0wpa25vd3NQYWdlUmFuZ2U6KE5TUmFu
Z2VQb2ludGVyKXJhbmdlCiAKICAgICBpZiAoW3NlbGYgX2hhc1BhZ2VSZWN0c10pCiAgICAgICAg
ICpyYW5nZSA9IE5TTWFrZVJhbmdlKDEsIF9wcmludGluZ1BhZ2VSZWN0cy5zaXplKCkpOwotICAg
IGVsc2UgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgIGVsc2UgaWYgKCFpc0luV2ViQ29yZUV4
ZWN1dGlvbkNvbnRleHQoKSkgewogICAgICAgICBBU1NFUlQoIVtzZWxmIF9pc1ByaW50aW5nUHJl
dmlld10pOwogICAgICAgICBNdXRleExvY2tlciBsb2NrKF9wcmludGluZ0NhbGxiYWNrTXV0ZXgp
OwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKHByZXBhcmVEYXRhRm9yUHJpbnRpbmdPblNlY29u
ZGFyeVRocmVhZCwgc2VsZik7CkBAIC00NzAsNyArNDcwLDcgQEAgLSAodm9pZClfZHJhd1BERkRv
Y3VtZW50OihQREZEb2N1bWVudCAqKXBkZkRvY3VtZW50IHBhZ2U6KHVuc2lnbmVkKXBhZ2UgYXRQ
b2ludDoKIAogLSAodm9pZClfZHJhd1ByZXZpZXc6KE5TUmVjdCluc1JlY3QKIHsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHQoKSk7CiAKICAgICBJbnRSZWN0IHNjYWxlZFByaW50aW5nUmVjdChuc1JlY3QpOwogICAgIHNj
YWxlZFByaW50aW5nUmVjdC5zY2FsZSgxIC8gX3RvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZyk7
CkBAIC01MzIsNyArNTMyLDcgQEAgLSAodm9pZClkcmF3UmVjdDooTlNSZWN0KW5zUmVjdAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKCFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKCFfcHJp
bnRlZFBhZ2VzRGF0YS5pc0VtcHR5KCkpOyAvLyBQcmVwYXJlZCBieSBrbm93c1BhZ2VSYW5nZToK
IAogICAgIGlmICghX3ByaW50ZWRQYWdlc1BERkRvY3VtZW50KSB7CkBAIC01NDYsNyArNTQ2LDcg
QEAgLSAodm9pZClkcmF3UmVjdDooTlNSZWN0KW5zUmVjdAogCiAtICh2b2lkKV9kcmF3UGFnZUJv
cmRlcldpdGhTaXplT25NYWluVGhyZWFkOihOU1NpemUpYm9yZGVyU2l6ZQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4
dCgpKTsKIAogICAgIC8vIFdoZW4gcHJpbnRpbmcgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQsIHRo
ZSBtYWluIHRocmVhZCBkb2Vzbid0IGhhdmUgZ3JhcGhpY3MgY29udGV4dCBhbmQgcHJpbnRpbmcg
b3BlcmF0aW9uIHNldCB1cC4KICAgICBOU0dyYXBoaWNzQ29udGV4dCAqY3VycmVudENvbnRleHQg
PSBbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdOwpAQCAtNTY2LDcgKzU2Niw3IEBA
IC0gKHZvaWQpZHJhd1BhZ2VCb3JkZXJXaXRoU2l6ZTooTlNTaXplKWJvcmRlclNpemUKICAgICBB
U1NFUlQoTlNFcXVhbFNpemVzKGJvcmRlclNpemUsIFtbX3ByaW50T3BlcmF0aW9uIHByaW50SW5m
b10gcGFwZXJTaXplXSkpOyAgICAKICAgICBBU1NFUlQoX3ByaW50T3BlcmF0aW9uID09IFtOU1By
aW50T3BlcmF0aW9uIGN1cnJlbnRPcGVyYXRpb25dKTsKIAotICAgIGlmICghaXNNYWluVGhyZWFk
KCkpIHsKKyAgICBpZiAoIWlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAg
IC8vIERvbid0IGNhbGwgdGhlIGNsaWVudCBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZC4KICAgICAg
ICAgTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gW05TSW52b2NhdGlvbiBpbnZvY2F0aW9uV2l0
aE1ldGhvZFNpZ25hdHVyZTpbV0tQcmludGluZ1ZpZXcgaW5zdGFuY2VNZXRob2RTaWduYXR1cmVG
b3JTZWxlY3RvcjpAc2VsZWN0b3IoX2RyYXdQYWdlQm9yZGVyV2l0aFNpemVPbk1haW5UaHJlYWQ6
KV1dOwogICAgICAgICBbaW52b2NhdGlvbiBzZXRTZWxlY3RvcjpAc2VsZWN0b3IoX2RyYXdQYWdl
Qm9yZGVyV2l0aFNpemVPbk1haW5UaHJlYWQ6KV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDk2ZTY0MjEuLjBjZjYxNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC04Myw3ICs4Myw3IEBA
IHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBhZ2VJRCgpCiAKIHN0YXRpYyBXZWJQcm9jZXNzUHJv
eHk6OldlYlBhZ2VQcm94eU1hcCYgZ2xvYmFsUGFnZU1hcCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoV2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXAs
IHBhZ2VNYXAsICgpKTsKICAgICByZXR1cm4gcGFnZU1hcDsKIH0KQEAgLTMyNSw3ICszMjUsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1J
RCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJ
KQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmREaWRHZXRQbHVnaW5zKHVpbnQ2NF90IHJlcXVl
c3RJRCwgUGFzc093blB0cjxWZWN0b3I8UGx1Z2luSW5mbz4gPiBwbHVnaW5JbmZvcykKIHsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlv
bkNvbnRleHQoKSk7CiAKICAgICBPd25QdHI8VmVjdG9yPFBsdWdpbkluZm8+ID4gcGx1Z2lucyhw
bHVnaW5JbmZvcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAppbmRleCA2ZDMxZWJmLi5mNTM5OWYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Y29va2llc0Rp
ZENoYW5nZSgpCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGlzcGF0Y2hDb29raWVzRGlkQ2hh
bmdlKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2Vi
Q29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OkNvb2tpZXNEaWRDaGFuZ2UoKSwgMCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmluZGV4IDQ4ZWY5Mzcu
LjgzMWNkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5tbQpAQCAtNTksNyArNTksNyBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcQogCiBzdGF0aWMg
U3RyaW5nJiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGJhc2UsICgp
KTsKICAgICByZXR1cm4gYmFzZTsKIH0KQEAgLTczLDcgKzczLDcgQEAgdm9pZCBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICAgICAv
LyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBEb24ndCBjcmVhdGUgYW4gdW5uZWNlc3Nhcnkgc2Vz
c2lvbiB3aGVuIHVzaW5nIG5ldHdvcmsgcHJvY2Vzcy4KIAotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBp
ZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRj
aGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNo
ZXIuY3BwCmluZGV4IDQzMjkyNmMuLmM5NDkzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC0xMjIsNyArMTIy
LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6Omdlc3R1cmVFdmVudChDb3JlSVBDOjpDb25uZWN0
aW9uKiwgdWludDY0X3QgcGFnZUlELCBjb25zdAogCiB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlz
cGF0Y2hXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0lu
V2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2Vi
UHJvY2Vzczo6c2hhcmVkKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkKQEAg
LTEzNCw3ICsxMzQsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2ZW50
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgdwogI2lmIEVOQUJMRShHRVNU
VVJFX0VWRU5UUykKIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEdlc3R1cmVFdmVudCh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0
aW9uQ29udGV4dCgpKTsKIAogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZSBiL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1y
ZW5hbWUKaW5kZXggY2QzY2RlZS4uY2ZjMDk3ZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9k
by13ZWJjb3JlLXJlbmFtZQorKysgYi9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCkBA
IC05NiwxMyArOTYsNyBAQCBzdWIgd2FudGVkCiBteSAkaXNET01UeXBlUmVuYW1lID0gMTsKIG15
ICVyZW5hbWVzID0gKAogICAgICMgUmVuYW1lcyBnbyBoZXJlIGluIHRoZSBmb3JtIG9mOgotICAg
ICJKYXZhU2NyaXB0QXVkaW9Ob2RlIiA9PiAiU2NyaXB0UHJvY2Vzc29yTm9kZSIsCi0gICAgIlJl
YWx0aW1lQW5hbHlzZXJOb2RlIiA9PiAiQW5hbHlzZXJOb2RlIiwKLSAgICAiQXVkaW9HYWluTm9k
ZSIgPT4gIkdhaW5Ob2RlIiwKLSAgICAiQXVkaW9QYW5uZXJOb2RlIiA9PiAiUGFubmVyTm9kZSIs
Ci0gICAgIkF1ZGlvQ2hhbm5lbFNwbGl0dGVyIiA9PiAiQ2hhbm5lbFNwbGl0dGVyTm9kZSIsCi0g
ICAgIkF1ZGlvQ2hhbm5lbE1lcmdlciIgPT4gIkNoYW5uZWxNZXJnZXJOb2RlIiwKLSAgICAiT3Nj
aWxsYXRvciIgPT4gIk9zY2lsbGF0b3JOb2RlIiwKKyAgICAiaXNNYWluVGhyZWFkIiA9PiAiaXNJ
bldlYkNvcmVFeGVjdXRpb25Db250ZXh0IiwKICk7CiAKIG15ICVyZW5hbWVzQ29udGVtcGxhdGVk
Rm9yVGhlRnV0dXJlID0gKAo=
</data>
<flag name="commit-queue"
          id="206485"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186893</attachid>
            <date>2013-02-06 12:21:20 -0800</date>
            <delta_ts>2013-02-06 12:53:27 -0800</delta_ts>
            <desc>Take 2 for EWS</desc>
            <filename>109071-2.patch</filename>
            <type>text/plain</type>
            <size>176979</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVFeHBvcnRzLmRlZiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmVFeHBvcnRzLmRlZgppbmRleCA5NDE5NWMxLi42YWJhNGU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlRXhwb3J0cy5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUV4cG9ydHMuZGVmCkBA
IC0yNzYsNyArMjc2LDcgQEAgRVhQT1JUUwogICAgID9pc0J1c3lASGVhcEBKU0NAQFFBRV9OWFoK
ICAgICA/aXNEYXRhRGVzY3JpcHRvckBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQkVfTlhaCiAg
ICAgP2lzSG9zdEZ1bmN0aW9uTm9uSW5saW5lQEpTRnVuY3Rpb25ASlNDQEBBQkVfTlhaCi0gICAg
P2lzTWFpblRocmVhZEBXVEZAQFlBX05YWgorICAgID9pc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHRAV1RGQEBZQV9OWFoKICAgICA/aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHNAV2Vha0hhbmRs
ZU93bmVyQEpTQ0BAVUFFX05WPyRIYW5kbGVAVzRVbmtub3duQEpTQ0BAQDJAUEFYQUFWU2xvdFZp
c2l0b3JAMkBAWgogICAgID9pc1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb25ASlNDQEBZQV9O
VkpTVmFsdWVAMUBAWgogICAgID9pc1ZhbGlkQWxsb2NhdGlvbkBIZWFwQEpTQ0BAQUFFX05JQFoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlRXhwb3J0R2VuZXJhdG9yL0phdmFTY3JpcHRDb3JlRXhwb3J0cy5kZWYu
aW4gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZUV4cG9ydEdlbmVyYXRvci9KYXZhU2NyaXB0Q29yZUV4cG9ydHMuZGVmLmluCmluZGV4
IGY4ZjQwNTQuLjAwNGY0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlRXhwb3J0R2VuZXJhdG9yL0phdmFTY3Jp
cHRDb3JlRXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmVFeHBvcnRHZW5lcmF0b3IvSmF2YVNjcmlwdENv
cmVFeHBvcnRzLmRlZi5pbgpAQCAtMjc2LDcgKzI3Niw3IEBAIEVYUE9SVFMKICAgICA/aXNCdXN5
QEhlYXBASlNDQEBRQUVfTlhaDQogICAgID9pc0RhdGFEZXNjcmlwdG9yQFByb3BlcnR5RGVzY3Jp
cHRvckBKU0NAQFFCRV9OWFoNCiAgICAgP2lzSG9zdEZ1bmN0aW9uTm9uSW5saW5lQEpTRnVuY3Rp
b25ASlNDQEBBQkVfTlhaDQotICAgID9pc01haW5UaHJlYWRAV1RGQEBZQV9OWFoNCisgICAgP2lz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dEBXVEZAQFlBX05YWg0KICAgICA/aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHNAV2Vha0hhbmRsZU93bmVyQEpTQ0BAVUFFX05WPyRIYW5kbGVAVzRVbmtu
b3duQEpTQ0BAQDJAUEFYQUFWU2xvdFZpc2l0b3JAMkBAWg0KICAgICA/aXNUZXJtaW5hdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uQEpTQ0BAWUFfTlZKU1ZhbHVlQDFAQFoNCiAgICAgP2lzVmFsaWRBbGxv
Y2F0aW9uQEhlYXBASlNDQEBBQUVfTklAWg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlRXhwb3J0cy5kZWYgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZUV4cG9ydHMuZGVmCmluZGV4IGE2NDFjOTkuLjNjODMwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlRXhwb3J0
cy5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmVFeHBvcnRzLmRlZgpAQCAtMjc1LDcgKzI3NSw3IEBAIEVYUE9SVFMKICAg
ICA/aXNCdXN5QEhlYXBASlNDQEBRQUVfTlhaCiAgICAgP2lzRGF0YURlc2NyaXB0b3JAUHJvcGVy
dHlEZXNjcmlwdG9yQEpTQ0BAUUJFX05YWgogICAgID9pc0hvc3RGdW5jdGlvbk5vbklubGluZUBK
U0Z1bmN0aW9uQEpTQ0BAQUJFX05YWgotICAgID9pc01haW5UaHJlYWRAV1RGQEBZQV9OWFoKKyAg
ICA/aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0QFdURkBAWUFfTlhaCiAgICAgP2lzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzQFdlYWtIYW5kbGVPd25lckBKU0NAQFVBRV9OVj8kSGFuZGxlQFc0
VW5rbm93bkBKU0NAQEAyQFBBWEFBVlNsb3RWaXNpdG9yQDJAQFoKICAgICA/aXNUZXJtaW5hdGVk
RXhlY3V0aW9uRXhjZXB0aW9uQEpTQ0BAWUFfTlZKU1ZhbHVlQDFAQFoKICAgICA/aXNWYWxpZEFs
bG9jYXRpb25ASGVhcEBKU0NAQEFBRV9OSUBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU2FtcGxpbmdUb29sLmgKaW5kZXggNmM5ZGY2Mi4uNzIxMzZiNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NhbXBsaW5nVG9vbC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TYW1wbGluZ1Rvb2wuaApAQCAtMTA0LDcgKzEwNCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBsaWZldGltZSBvZiB0aGUgcHJvY2VzcyBh
bmQgaXMgaW1tdXRhYmxlLgogICAgICAgICBTYW1wbGluZ1JlZ2lvbihjb25zdCBjaGFyKiBuYW1l
KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgICAg
ICAgICBpZiAoIWlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAgICAgICAg
ICAgbV9uYW1lID0gMDsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAppbmRleCBkNjllZTk2Li5hNjBh
OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5jcHAKQEAgLTExMyw3
ICsxMTMsNyBAQCBIZWFwVGltZXI6OkhlYXBUaW1lcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEp
CiAgICAgLCBtX3RpbWVyKHRoaXMsICZIZWFwVGltZXI6OnRpbWVyRGlkRmlyZSkKIHsKICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IEhlYXBUaW1lciBmb3Igb3RoZXIgdGhyZWFkcy4KLSAgICBpZiAo
V1RGOjppc01haW5UaHJlYWQoKSAmJiAhbV90aW1lci50cnlDcmVhdGVDbGllbnQoKSkKKyAgICBp
ZiAoV1RGOjppc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSAmJiAhbV90aW1lci50cnlDcmVh
dGVDbGllbnQoKSkKICAgICAgICAgQ1JBU0goKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvTWFpblRocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcAppbmRl
eCBmODY4NmFhLi4yOTJhNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFk
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmNwcApAQCAtMTM3LDcgKzEzNyw3
IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4UnVuTG9vcFN1c3BlbnNpb25UaW1lID0gMC4wNTsK
IAogdm9pZCBkaXNwYXRjaEZ1bmN0aW9uc0Zyb21NYWluVGhyZWFkKCkKIHsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAKICAgICBpZiAoY2FsbGJhY2tzUGF1c2VkKQogICAgICAgICByZXR1cm47CkBAIC0xODcs
NyArMTg3LDcgQEAgdm9pZCBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChNYWluVGhyZWFkRnVuY3Rp
b24qIGZ1bmN0aW9uLCB2b2lkKiBjb250ZXh0KQogewogICAgIEFTU0VSVChmdW5jdGlvbik7CiAK
LSAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICBpZiAoaXNJbldlYkNvcmVFeGVjdXRpb25D
b250ZXh0KCkpIHsKICAgICAgICAgZnVuY3Rpb24oY29udGV4dCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBjYWxsT25NYWluVGhyZWFkKGNvbnN0IEZ1
bmN0aW9uPHZvaWQgKCk+JiBmdW5jdGlvbikKIAogdm9pZCBzZXRNYWluVGhyZWFkQ2FsbGJhY2tz
UGF1c2VkKGJvb2wgcGF1c2VkKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIGlmIChjYWxsYmFj
a3NQYXVzZWQgPT0gcGF1c2VkKQogICAgICAgICByZXR1cm47CkBAIC0yNDUsNyArMjQ1LDcgQEAg
dm9pZCBzZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKGJvb2wgcGF1c2VkKQogfQogCiAjaWYg
IVBMQVRGT1JNKE1BQykKLWJvb2wgaXNNYWluVGhyZWFkKCkKK2Jvb2wgaXNJbldlYkNvcmVFeGVj
dXRpb25Db250ZXh0KCkKIHsKICAgICByZXR1cm4gY3VycmVudFRocmVhZCgpID09IG1haW5UaHJl
YWRJZGVudGlmaWVyOwogfQpAQCAtMjc0LDE4ICsyNzQsMTggQEAgdm9pZCByZWdpc3RlckdDVGhy
ZWFkKCkKICAgICAqKmlzR0NUaHJlYWQgPSB0cnVlOwogfQogCi1ib29sIGlzTWFpblRocmVhZE9y
R0NUaHJlYWQoKQorYm9vbCBpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHRPckdDVGhyZWFkKCkK
IHsKICAgICBpZiAoaXNHQ1RocmVhZC0+aXNTZXQoKSAmJiAqKmlzR0NUaHJlYWQpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGlzTWFpblRocmVhZCgpOworICAgIHJldHVybiBp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKTsKIH0KICNlbGlmIFBMQVRGT1JNKE1BQykKIC8v
IFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgSmF2YVNjcmlwdENvcmUuZXhwIGRvZXNuJ3Qgc3Vw
cG9ydCBwcmVwcm9jZXNzb3IgbWFjcm9zLgotYm9vbCBpc01haW5UaHJlYWRPckdDVGhyZWFkKCkK
K2Jvb2wgaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0T3JHQ1RocmVhZCgpCiB7Ci0gICAgcmV0
dXJuIGlzTWFpblRocmVhZCgpOworICAgIHJldHVybiBpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFk
LmggYi9Tb3VyY2UvV1RGL3d0Zi9NYWluVGhyZWFkLmgKaW5kZXggOWE0MGFkNC4uYjZlZDQxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL01haW5UaHJlYWQuaApAQCAtNDksMTcgKzQ5LDE3IEBAIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGNhbGxPbk1haW5UaHJlYWQoY29uc3QgRnVuY3Rpb248dm9pZCAoKT4mKTsKICAgICAKIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQoYm9vbCBw
YXVzZWQpOwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc01haW5UaHJlYWQoKTsKK1dURl9F
WFBPUlRfUFJJVkFURSBib29sIGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpOwogCiB2b2lk
IGluaXRpYWxpemVHQ1RocmVhZHMoKTsKIAogI2lmIEVOQUJMRShQQVJBTExFTF9HQykKIHZvaWQg
cmVnaXN0ZXJHQ1RocmVhZCgpOwotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNNYWluVGhyZWFk
T3JHQ1RocmVhZCgpOworV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNJbldlYkNvcmVFeGVjdXRp
b25Db250ZXh0T3JHQ1RocmVhZCgpOwogI2VsaWYgUExBVEZPUk0oTUFDKQotV1RGX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpOworV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0T3JHQ1RocmVhZCgpOwogI2Vsc2UKLWlu
bGluZSBib29sIGlzTWFpblRocmVhZE9yR0NUaHJlYWQoKSB7IHJldHVybiBpc01haW5UaHJlYWQo
KTsgfQoraW5saW5lIGJvb2wgaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0T3JHQ1RocmVhZCgp
IHsgcmV0dXJuIGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpOyB9CiAjZW5kaWYKIAogLy8g
Tk9URTogdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnRlcm5hbCB0byB0aGUgY2FsbE9uTWFpblRocmVh
ZCBpbXBsZW1lbnRhdGlvbi4KQEAgLTgxLDYgKzgxLDYgQEAgdXNpbmcgV1RGOjpjYWxsT25NYWlu
VGhyZWFkOwogdXNpbmcgV1RGOjpjYWxsT25NYWluVGhyZWFkQW5kV2FpdDsKIHVzaW5nIFdURjo6
Y2FuY2VsQ2FsbE9uTWFpblRocmVhZDsKIHVzaW5nIFdURjo6c2V0TWFpblRocmVhZENhbGxiYWNr
c1BhdXNlZDsKLXVzaW5nIFdURjo6aXNNYWluVGhyZWFkOwotdXNpbmcgV1RGOjppc01haW5UaHJl
YWRPckdDVGhyZWFkOwordXNpbmcgV1RGOjppc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQ7Cit1
c2luZyBXVEY6OmlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dE9yR0NUaHJlYWQ7CiAjZW5kaWYg
Ly8gTWFpblRocmVhZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jaHJvbWl1bS9NYWlu
VGhyZWFkQ2hyb21pdW0uY3BwIGIvU291cmNlL1dURi93dGYvY2hyb21pdW0vTWFpblRocmVhZENo
cm9taXVtLmNwcAppbmRleCA0MGIyZjA4Li5mZmU3MjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9jaHJvbWl1bS9NYWluVGhyZWFkQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L2Nocm9taXVtL01haW5UaHJlYWRDaHJvbWl1bS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBz
ZXRNYWluVGhyZWFkQ2FsbGJhY2tzUGF1c2VkKGJvb2wpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLWJvb2wgaXNNYWluVGhyZWFkKCkKK2Jvb2wgaXNJbldlYkNvcmVFeGVjdXRpb25D
b250ZXh0KCkKIHsKICAgICByZXR1cm4gY3VycmVudFRocmVhZCgpID09IG1haW5UaHJlYWRJZGVu
dGlmaWVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvbWFjL01haW5UaHJlYWRNYWMu
bW0gYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvTWFpblRocmVhZE1hYy5tbQppbmRleCA1YTgyZjQwLi41
YTU2ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9tYWMvTWFpblRocmVhZE1hYy5tbQor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvTWFpblRocmVhZE1hYy5tbQpAQCAtODUsNiArODUsMTcg
QEAgdm9pZCBpbml0aWFsaXplTWFpblRocmVhZFRvUHJvY2Vzc01haW5UaHJlYWRQbGF0Zm9ybSgp
CiAgICAgaW5pdGlhbGl6ZUdDVGhyZWFkcygpOwogfQogCitzdGF0aWMgYm9vbCBpc01haW5UaHJl
YWQoKQoreworICAgIGlmIChtYWluVGhyZWFkRXN0YWJsaXNoZWRBc1B0aHJlYWRNYWluKSB7Cisg
ICAgICAgIEFTU0VSVCghbWFpblRocmVhZFB0aHJlYWQpOworICAgICAgICByZXR1cm4gcHRocmVh
ZF9tYWluX25wKCk7CisgICAgfQorCisgICAgQVNTRVJUKG1haW5UaHJlYWRQdGhyZWFkKTsKKyAg
ICByZXR1cm4gcHRocmVhZF9lcXVhbChwdGhyZWFkX3NlbGYoKSwgbWFpblRocmVhZFB0aHJlYWQp
OworfQorCiBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyLCB2
b2lkKikKIHsKICAgICBDRlJlbGVhc2UodGltZXIpOwpAQCAtMTIyLDE1ICsxMzMsMTMgQEAgdm9p
ZCBzY2hlZHVsZURpc3BhdGNoRnVuY3Rpb25zT25NYWluVGhyZWFkKCkKICAgICBbc3RhdGljTWFp
blRocmVhZENhbGxlciBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKGNhbGwpIG9uVGhyZWFkOm1h
aW5UaHJlYWROU1RocmVhZCB3aXRoT2JqZWN0Om5pbCB3YWl0VW50aWxEb25lOk5PXTsKIH0KIAot
Ym9vbCBpc01haW5UaHJlYWQoKQorYm9vbCBpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKQog
ewotICAgIGlmIChtYWluVGhyZWFkRXN0YWJsaXNoZWRBc1B0aHJlYWRNYWluKSB7Ci0gICAgICAg
IEFTU0VSVCghbWFpblRocmVhZFB0aHJlYWQpOwotICAgICAgICByZXR1cm4gcHRocmVhZF9tYWlu
X25wKCk7Ci0gICAgfQotCi0gICAgQVNTRVJUKG1haW5UaHJlYWRQdGhyZWFkKTsKLSAgICByZXR1
cm4gcHRocmVhZF9lcXVhbChwdGhyZWFkX3NlbGYoKSwgbWFpblRocmVhZFB0aHJlYWQpOworI2lm
IFVTRShXRUJfVEhSRUFEKQorICAgIHJldHVybiBpc01haW5UaHJlYWQoKSB8fCBwdGhyZWFkX21h
aW5fbnAoKTsKKyNlbHNlCisgICAgcmV0dXJuIGlzTWFpblRocmVhZCgpOworI2VuZGlmCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdTdGF0aWNzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAKaW5k
ZXggMmUxYjk1NS4uZjJlMzY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdTdGF0aWNzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3Bw
CkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgQXRvbWljU3RyaW5nOjppbml0KCkKICAgICBzdGF0aWMg
Ym9vbCBpbml0aWFsaXplZDsKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CiAgICAgICAgIC8vIElu
aXRpYWxpemF0aW9uIGlzIG5vdCB0aHJlYWQgc2FmZSwgc28gdGhpcyBmdW5jdGlvbiBtdXN0IGJl
IGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZCBmaXJzdC4KLSAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgp
KTsKIAogICAgICAgICAvLyBVc2UgcGxhY2VtZW50IG5ldyB0byBpbml0aWFsaXplIHRoZSBnbG9i
YWxzLgogICAgICAgICBuZXcgKE5vdE51bGwsICh2b2lkKikmbnVsbEF0b20pIEF0b21pY1N0cmlu
ZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9Mb2NhbEZp
bGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0xvY2FsRmls
ZVN5c3RlbS5jcHAKaW5kZXggZDUzNGIyMC4uZjNkOTJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9maWxlc3lzdGVtL0xvY2FsRmlsZVN5c3RlbS5jcHAKQEAgLTU2LDcg
KzU2LDcgQEAgTG9jYWxGaWxlU3lzdGVtKiBMb2NhbEZpbGVTeXN0ZW06OnNfaW5zdGFuY2UgPSAw
Owogdm9pZCBMb2NhbEZpbGVTeXN0ZW06OmluaXRpYWxpemVMb2NhbEZpbGVTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBiYXNlUGF0aCkKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIGluaXRpYWxpemUgdGhl
IHF1b3RhIHNldHRpbmdzIGFzIHdlbGwuCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVCghc19p
bnN0YW5jZSk7CiAgICAgaWYgKHNfaW5zdGFuY2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9jaHJvbWl1bS9EcmFnZ2VkSXNv
bGF0ZWRGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmlsZXN5c3RlbS9j
aHJvbWl1bS9EcmFnZ2VkSXNvbGF0ZWRGaWxlU3lzdGVtLmNwcAppbmRleCA0MzcyNjE1Li41MjZk
ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZpbGVzeXN0ZW0vY2hyb21p
dW0vRHJhZ2dlZElzb2xhdGVkRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9maWxlc3lzdGVtL2Nocm9taXVtL0RyYWdnZWRJc29sYXRlZEZpbGVTeXN0ZW0uY3BwCkBA
IC01OCw3ICs1OCw3IEBAIERPTUZpbGVTeXN0ZW0qIERyYWdnZWRJc29sYXRlZEZpbGVTeXN0ZW06
OmdldERPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4CiAvLyBzdGF0aWMKIGNvbnN0
IGNoYXIqIERyYWdnZWRJc29sYXRlZEZpbGVTeXN0ZW06OnN1cHBsZW1lbnROYW1lKCkKIHsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlv
bkNvbnRleHQoKSk7CiAgICAgcmV0dXJuICJEcmFnZ2VkSXNvbGF0ZWRGaWxlU3lzdGVtIjsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVk
aWFTb3VyY2VSZWdpc3RyeS5jcHAKaW5kZXggMWM2MjY3NC4uYTNmOTQ3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVn
aXN0cnkuY3BwCkBAIC00MSwxNCArNDEsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBNZWRp
YVNvdXJjZVJlZ2lzdHJ5JiBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RyeSgpCiB7Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25D
b250ZXh0KCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoTWVkaWFTb3VyY2VSZWdpc3RyeSwg
aW5zdGFuY2UsICgpKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKIHZvaWQgTWVkaWFTb3Vy
Y2VSZWdpc3RyeTo6cmVnaXN0ZXJNZWRpYVNvdXJjZVVSTChjb25zdCBLVVJMJiB1cmwsIFBhc3NS
ZWZQdHI8TWVkaWFTb3VyY2U+IHNvdXJjZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBzb3Vy
Y2UtPnNldFBlbmRpbmdBY3Rpdml0eShzb3VyY2UuZ2V0KCkpOwogCkBAIC01Nyw3ICs1Nyw3IEBA
IHZvaWQgTWVkaWFTb3VyY2VSZWdpc3RyeTo6cmVnaXN0ZXJNZWRpYVNvdXJjZVVSTChjb25zdCBL
VVJMJiB1cmwsIFBhc3NSZWZQdHI8TWVkCiAKIHZvaWQgTWVkaWFTb3VyY2VSZWdpc3RyeTo6dW5y
ZWdpc3Rlck1lZGlhU291cmNlVVJMKGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNZWRpYVNvdXJjZT4gPjo6aXRlcmF0b3IgaXRl
ciA9IG1fbWVkaWFTb3VyY2VzLmZpbmQodXJsLnN0cmluZygpKTsKICAgICBpZiAoaXRlciA9PSBt
X21lZGlhU291cmNlcy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzEsNyArNzEsNyBAQCB2
b2lkIE1lZGlhU291cmNlUmVnaXN0cnk6OnVucmVnaXN0ZXJNZWRpYVNvdXJjZVVSTChjb25zdCBL
VVJMJiB1cmwpCiAKIE1lZGlhU291cmNlKiBNZWRpYVNvdXJjZVJlZ2lzdHJ5Ojpsb29rdXBNZWRp
YVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgcmV0dXJu
IG1fbWVkaWFTb3VyY2VzLmdldCh1cmwpLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcApp
bmRleCA4NDNlYWFiLi4zMzhkYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5jcHAKQEAgLTM2LDI2ICsz
NiwyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBNZWRpYVN0cmVhbVJlZ2lzdHJ5JiBNZWRpYVN0
cmVhbVJlZ2lzdHJ5OjpyZWdpc3RyeSgpCiB7CiAgICAgLy8gU2luY2UgV2ViV29ya2VycyBjYW5u
b3Qgb2J0YWluIE1lZGlhU291cmNlIG9iamVjdHMsIHdlIHNob3VsZCBiZSBvbiB0aGUgbWFpbiB0
aHJlYWQuCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNv
cmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoTWVkaWFTdHJl
YW1SZWdpc3RyeSwgaW5zdGFuY2UsICgpKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKIHZv
aWQgTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0ZXJNZWRpYVN0cmVhbVVSTChjb25zdCBLVVJM
JiB1cmwsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSkKIHsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgbV9zdHJlYW1EZXNjcmlwdG9ycy5zZXQodXJsLnN0cmluZygpLCBzdHJlYW0tPmRlc2Ny
aXB0b3IoKSk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1SZWdpc3RyeTo6dW5yZWdpc3Rlck1lZGlh
U3RyZWFtVVJMKGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgbV9zdHJl
YW1EZXNjcmlwdG9ycy5yZW1vdmUodXJsLnN0cmluZygpKTsKIH0KIAogTWVkaWFTdHJlYW1EZXNj
cmlwdG9yKiBNZWRpYVN0cmVhbVJlZ2lzdHJ5Ojpsb29rdXBNZWRpYVN0cmVhbURlc2NyaXB0b3Io
Y29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHJldHVybiBtX3N0cmVh
bURlc2NyaXB0b3JzLmdldCh1cmwpLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IGYwMGJkMWEu
LmQ3ZGFlNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fz
eW5jQXVkaW9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0FzeW5jQXVkaW9EZWNvZGVyLmNwcApAQCAtNTUsNyArNTUsNyBAQCBBc3luY0F1ZGlvRGVjb2Rl
cjo6fkFzeW5jQXVkaW9EZWNvZGVyKCkKIAogdm9pZCBBc3luY0F1ZGlvRGVjb2Rlcjo6ZGVjb2Rl
QXN5bmMoQXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0
cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9C
dWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNT
RVJUKGF1ZGlvRGF0YSk7CiAgICAgaWYgKCFhdWRpb0RhdGEpCiAgICAgICAgIHJldHVybjsKQEAg
LTc0LDcgKzc0LDcgQEAgdm9pZCBBc3luY0F1ZGlvRGVjb2Rlcjo6dGhyZWFkRW50cnkodm9pZCog
dGhyZWFkRGF0YSkKIAogdm9pZCBBc3luY0F1ZGlvRGVjb2Rlcjo6cnVuTG9vcCgpCiB7Ci0gICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFpc0luV2ViQ29yZUV4ZWN1dGlv
bkNvbnRleHQoKSk7CiAKICAgICB7CiAgICAgICAgIC8vIFdhaXQgZm9yIHVudGlsIHdlIGhhdmUg
bV90aHJlYWRJRCBlc3RhYmxpc2hlZCBiZWZvcmUgc3RhcnRpbmcgdGhlIHJ1biBsb29wLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVj
dG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJ
bnNwZWN0b3JOb2RlLmNwcAppbmRleCBkMDZjMTI1Li5lYjc3NGExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JO
b2RlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpw
dWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAKIHZvaWQgQXVkaW9CYXNpY0luc3Bl
Y3Rvck5vZGU6OmNvbm5lY3QoQXVkaW9Ob2RlKiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0
SW5kZXgsIHVuc2lnbmVkIGlucHV0SW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29u
dGV4dCgpKTsKIAogICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgp
KTsKIApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpjb25u
ZWN0KEF1ZGlvTm9kZSogZGVzdGluYXRpb24sIHVuc2lnbmVkIG91dHB1dEluZAogCiB2b2lkIEF1
ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjpkaXNjb25uZWN0KHVuc2lnbmVkIG91dHB1dEluZGV4LCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBBdWRpb0NvbnRleHQ6
OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAppbmRleCA0
NWIyNTdiLi4xNmU1NjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCkBAIC0zMzcsNyArMzM3LDcgQEAg
dm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnJlc2V0KCkKIAogYm9vbCBBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6OnNldEJ1ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVyKQogewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgp
KTsKICAgICAKICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJlIGxvY2tlZCBzaW5jZSBjaGFuZ2lu
ZyB0aGUgYnVmZmVyIGNhbiByZS1jb25maWd1cmUgdGhlIG51bWJlciBvZiBjaGFubmVscyB0aGF0
IGFyZSBvdXRwdXQuCiAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRleHRMb2NrZXIo
Y29udGV4dCgpKTsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEF1ZGlvQnVmZmVyU291cmNlTm9k
ZTo6c3RhcnRHcmFpbihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWluT2Zmc2V0KQogCiB2b2lkIEF1
ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRHcmFpbihkb3VibGUgd2hlbiwgZG91YmxlIGdyYWlu
T2Zmc2V0LCBkb3VibGUgZ3JhaW5EdXJhdGlvbikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBp
ZiAobV9wbGF5YmFja1N0YXRlICE9IFVOU0NIRURVTEVEX1NUQVRFKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAK
aW5kZXggNjQ4ODI3Zi4uMDIzYjEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIFBhc3NSZWZQdHI8
QXVkaW9Db250ZXh0PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIEV4
Y2VwdGlvbkNvZGUmCiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKIAogICAgIEFTU0VSVChkb2N1bWVu
dCk7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIGlmIChzX2hhcmR3YXJlQ29udGV4dENvdW50ID49IE1h
eEhhcmR3YXJlQ29udGV4dHMpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0yNDMsNyArMjQzLDcg
QEAgdm9pZCBBdWRpb0NvbnRleHQ6OmNsZWFyKCkKIAogdm9pZCBBdWRpb0NvbnRleHQ6OnVuaW5p
dGlhbGl6ZSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJ
bldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQp
CiAgICAgICAgIHJldHVybjsKQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6
ZGVjb2RlQXVkaW9EYXRhKEFycmF5QnVmZmVyKiBhdWRpb0RhdGEsIFBhc3NSZWZQdHI8QXVkaW9C
dWZmZQogCiBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gQXVkaW9Db250ZXh0Ojpj
cmVhdGVCdWZmZXJTb3VyY2UoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBsYXp5SW5pdGlhbGl6
ZSgpOwogICAgIFJlZlB0cjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IG5vZGUgPSBBdWRpb0J1ZmZl
clNvdXJjZU5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgp
KTsKIApAQCAtMzYzLDcgKzM2Myw3IEBAIFBhc3NSZWZQdHI8TWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhRWxlbWVudFNvdXJjZShICiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KICAgICAgICAgCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGxhenlJbml0
aWFsaXplKCk7CiAgICAgCiAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhpcyBtZWRpYSBlbGVtZW50
IGFscmVhZHkgaGFzIGEgc291cmNlIG5vZGUuCkBAIC0zOTAsNyArMzkwLDcgQEAgUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0
cmVhbVNvdXJjZShNZWQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkp
OwogICAgIGxhenlJbml0aWFsaXplKCk7CiAKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBwcm92
aWRlciA9IDA7CkBAIC00MzUsNyArNDM1LDcgQEAgUGFzc1JlZlB0cjxTY3JpcHRQcm9jZXNzb3JO
b2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZVNjcmlwdFByb2Nlc3NvcihzaXplX3QgYnVmZmUKIAog
UGFzc1JlZlB0cjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZVNjcmlw
dFByb2Nlc3NvcihzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90IG51bWJlck9mSW5wdXRDaGFubmVs
cywgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0
aW9uQ29udGV4dCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogICAgIFJlZlB0cjxTY3JpcHRQ
cm9jZXNzb3JOb2RlPiBub2RlID0gU2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKHRoaXMsIG1f
ZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCksIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRD
aGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CiAKQEAgLTQ1MCw0OSArNDUwLDQ5IEBA
IFBhc3NSZWZQdHI8U2NyaXB0UHJvY2Vzc29yTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVTY3Jp
cHRQcm9jZXNzb3Ioc2l6ZV90IGJ1ZmZlCiAKIFBhc3NSZWZQdHI8QmlxdWFkRmlsdGVyTm9kZT4g
QXVkaW9Db250ZXh0OjpjcmVhdGVCaXF1YWRGaWx0ZXIoKQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICBsYXp5SW5pdGlhbGl6ZSgpOwogICAgIHJldHVybiBCaXF1YWRGaWx0ZXJOb2RlOjpjcmVhdGUo
dGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CiB9CiAKIFBhc3NSZWZQdHI8
V2F2ZVNoYXBlck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVNoYXBlcigpCiB7Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25D
b250ZXh0KCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7CiAgICAgcmV0dXJuIFdhdmVTaGFwZXJO
b2RlOjpjcmVhdGUodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8UGFubmVyTm9kZT4gQXVkaW9Db250
ZXh0OjpjcmVhdGVQYW5uZXIoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBsYXp5SW5pdGlhbGl6
ZSgpOwogICAgIHJldHVybiBQYW5uZXJOb2RlOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5v
ZGUtPnNhbXBsZVJhdGUoKSk7CiB9CiAKIFBhc3NSZWZQdHI8Q29udm9sdmVyTm9kZT4gQXVkaW9D
b250ZXh0OjpjcmVhdGVDb252b2x2ZXIoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBsYXp5SW5p
dGlhbGl6ZSgpOwogICAgIHJldHVybiBDb252b2x2ZXJOb2RlOjpjcmVhdGUodGhpcywgbV9kZXN0
aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CiB9CiAKIFBhc3NSZWZQdHI8RHluYW1pY3NDb21w
cmVzc29yTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKQogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0
aW9uQ29udGV4dCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogICAgIHJldHVybiBEeW5hbWlj
c0NvbXByZXNzb3JOb2RlOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJh
dGUoKSk7CiB9CiAKIFBhc3NSZWZQdHI8QW5hbHlzZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0
ZUFuYWx5c2VyKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgbGF6eUluaXRpYWxpemUoKTsKICAg
ICByZXR1cm4gQW5hbHlzZXJOb2RlOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNh
bXBsZVJhdGUoKSk7CiB9CiAKIFBhc3NSZWZQdHI8R2Fpbk5vZGU+IEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlR2FpbigpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJ
bldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7CiAgICAg
cmV0dXJuIEdhaW5Ob2RlOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJh
dGUoKSk7CiB9CkBAIC01MDUsNyArNTA1LDcgQEAgUGFzc1JlZlB0cjxEZWxheU5vZGU+IEF1ZGlv
Q29udGV4dDo6Y3JlYXRlRGVsYXkoRXhjZXB0aW9uQ29kZSYgZWMpCiAKIFBhc3NSZWZQdHI8RGVs
YXlOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5KGRvdWJsZSBtYXhEZWxheVRpbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgp
OwogICAgIFJlZlB0cjxEZWxheU5vZGU+IG5vZGUgPSBEZWxheU5vZGU6OmNyZWF0ZSh0aGlzLCBt
X2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpLCBtYXhEZWxheVRpbWUsIGVjKTsKICAgICBp
ZiAoZWMpCkBAIC01MjEsNyArNTIxLDcgQEAgUGFzc1JlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2Rl
PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxTcGxpdHRlcihFeGNlcHRpb25Db2QKIAogUGFz
c1JlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxT
cGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlv
bkNvbnRleHQoKSk7CiAgICAgbGF6eUluaXRpYWxpemUoKTsKIAogICAgIFJlZlB0cjxDaGFubmVs
U3BsaXR0ZXJOb2RlPiBub2RlID0gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6Y3JlYXRlKHRoaXMsIG1f
ZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCksIG51bWJlck9mT3V0cHV0cyk7CkBAIC01NDIs
NyArNTQyLDcgQEAgUGFzc1JlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gQXVkaW9Db250ZXh0Ojpj
cmVhdGVDaGFubmVsTWVyZ2VyKEV4Y2VwdGlvbkNvZGUmIGUKIAogUGFzc1JlZlB0cjxDaGFubmVs
TWVyZ2VyTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVDaGFubmVsTWVyZ2VyKHNpemVfdCBudW1i
ZXJPZklucHV0cywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGxh
enlJbml0aWFsaXplKCk7CiAKICAgICBSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IG5vZGUgPSBD
aGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVS
YXRlKCksIG51bWJlck9mSW5wdXRzKTsKQEAgLTU1Nyw3ICs1NTcsNyBAQCBQYXNzUmVmUHRyPENo
YW5uZWxNZXJnZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90
IG51bWJlck9mSQogCiBQYXNzUmVmUHRyPE9zY2lsbGF0b3JOb2RlPiBBdWRpb0NvbnRleHQ6OmNy
ZWF0ZU9zY2lsbGF0b3IoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgp
OwogCiAgICAgUmVmUHRyPE9zY2lsbGF0b3JOb2RlPiBub2RlID0gT3NjaWxsYXRvck5vZGU6OmNy
ZWF0ZSh0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpKTsKQEAgLTU3MSw3ICs1
NzEsNyBAQCBQYXNzUmVmUHRyPE9zY2lsbGF0b3JOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU9z
Y2lsbGF0b3IoKQogCiBQYXNzUmVmUHRyPFdhdmVUYWJsZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVX
YXZlVGFibGUoRmxvYXQzMkFycmF5KiByZWFsLCBGbG9hdDMyQXJyYXkqIGltYWcsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAKICAgICBpZiAoIXJlYWwgfHwgIWlt
YWcgfHwgKHJlYWwtPmxlbmd0aCgpICE9IGltYWctPmxlbmd0aCgpKSkgewogICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CkBAIC02MDAsNyArNjAwLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmRlcmVm
RmluaXNoZWRTb3VyY2VOb2RlcygpCiAKIHZvaWQgQXVkaW9Db250ZXh0OjpyZWZOb2RlKEF1ZGlv
Tm9kZSogbm9kZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQXV0b0xvY2tlciBsb2NrZXIodGhp
cyk7CiAgICAgCiAgICAgbm9kZS0+cmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOwpA
QCAtNjIzLDcgKzYyMyw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpkZXJlZk5vZGUoQXVkaW9Ob2Rl
KiBub2RlKQogCiB2b2lkIEF1ZGlvQ29udGV4dDo6ZGVyZWZVbmZpbmlzaGVkU291cmNlTm9kZXMo
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSAmJiBpc0F1ZGlvVGhyZWFkRmluaXNoZWQo
KSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpICYmIGlzQXVkaW9U
aHJlYWRGaW5pc2hlZCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9yZWZlcmVu
Y2VkTm9kZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fcmVmZXJlbmNlZE5vZGVzW2ldLT5kZXJl
ZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKIApAQCAtNjMzLDcgKzYzMyw3IEBAIHZv
aWQgQXVkaW9Db250ZXh0OjpkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2RlcygpCiB2b2lkIEF1ZGlv
Q29udGV4dDo6bG9jayhib29sJiBtdXN0UmVsZWFzZUxvY2spCiB7CiAgICAgLy8gRG9uJ3QgYWxs
b3cgcmVndWxhciBsb2NrIGluIHJlYWwtdGltZSBhdWRpbyB0aHJlYWQuCi0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkp
OwogCiAgICAgVGhyZWFkSWRlbnRpZmllciB0aGlzVGhyZWFkID0gY3VycmVudFRocmVhZCgpOwog
CkBAIC04MTUsNyArODE1LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmRlbGV0ZU1hcmtlZE5vZGVz
RGlzcGF0Y2godm9pZCogdXNlckRhdGEpCiAKIHZvaWQgQXVkaW9Db250ZXh0OjpkZWxldGVNYXJr
ZWROb2RlcygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJ
bldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgLy8gUHJvdGVjdCB0aGlzIG9iamVj
dCBmcm9tIGJlaW5nIGRlbGV0ZWQgYmVmb3JlIHdlIHJlbGVhc2UgdGhlIG11dGV4IGxvY2tlZCBi
eSBBdXRvTG9ja2VyLgogICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHByb3RlY3QodGhpcyk7CkBA
IC04NTEsNyArODUxLDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6Om1hcmtTdW1taW5nSnVuY3Rpb25E
aXJ0eShBdWRpb1N1bW1pbmdKdW5jdGlvbiogc3VtbWluZ0p1bmN0aW8KIAogdm9pZCBBdWRpb0Nv
bnRleHQ6OnJlbW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbihBdWRpb1N1bW1pbmdKdW5jdGlvbiog
c3VtbWluZ0p1bmN0aW9uKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBdXRvTG9ja2VyIGxvY2tl
cih0aGlzKTsKICAgICBtX2RpcnR5U3VtbWluZ0p1bmN0aW9ucy5yZW1vdmUoc3VtbWluZ0p1bmN0
aW9uKTsKIH0KQEAgLTk0NSw4ICs5NDUsOCBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c3RhcnRSZW5k
ZXJpbmcoKQogCiB2b2lkIEF1ZGlvQ29udGV4dDo6ZmlyZUNvbXBsZXRpb25FdmVudCgpCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpKQorICAg
IEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKCFpc0luV2Vi
Q29yZUV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBB
dWRpb0J1ZmZlciogcmVuZGVyZWRCdWZmZXIgPSBtX3JlbmRlclRhcmdldC5nZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDhhMDY2
NjguLjRlZmVlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaApAQCAtMTY3LDcgKzE2Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBLZWVwcyB0cmFj
ayBvZiB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIG1hZGUuCiAgICAgdm9pZCBpbmNyZW1lbnRD
b25uZWN0aW9uQ291bnQoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICAgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAg
bV9jb25uZWN0aW9uQ291bnQrKzsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlLmNwcAppbmRleCA5YTQyMmZhLi45M2JjNTY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCkBAIC0xMjMsNyArMTIz
LDcgQEAgQXVkaW9Ob2RlT3V0cHV0KiBBdWRpb05vZGU6Om91dHB1dCh1bnNpZ25lZCBpKQogCiB2
b2lkIEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb05vZGUqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBv
dXRwdXRJbmRleCwgdW5zaWduZWQgaW5wdXRJbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsgCisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0
aW9uQ29udGV4dCgpKTsgCiAgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250
ZXh0KCkpOwogCiAgICAgaWYgKCFkZXN0aW5hdGlvbikgewpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZv
aWQgQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvTm9kZSogZGVzdGluYXRpb24sIHVuc2lnbmVkIG91
dHB1dEluZGV4LCB1bnNpZ25lZCBpCiAKIHZvaWQgQXVkaW9Ob2RlOjpjb25uZWN0KEF1ZGlvUGFy
YW0qIHBhcmFtLCB1bnNpZ25lZCBvdXRwdXRJbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRp
b25Db250ZXh0KCkpOwogICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4
dCgpKTsKIAogICAgIGlmICghcGFyYW0pIHsKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIEF1ZGlv
Tm9kZTo6Y29ubmVjdChBdWRpb1BhcmFtKiBwYXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgsIEV4
Y2VwdGlvbkNvZGUmCiAKIHZvaWQgQXVkaW9Ob2RlOjpkaXNjb25uZWN0KHVuc2lnbmVkIG91dHB1
dEluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQXVkaW9D
b250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgLy8gU2FuaXR5IGNo
ZWNrIGlucHV0IGFuZCBvdXRwdXQgaW5kaWNlcy4KQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIEF1
ZGlvTm9kZTo6dW5zaWxlbmNlT3V0cHV0cygpCiB2b2lkIEF1ZGlvTm9kZTo6ZW5hYmxlT3V0cHV0
c0lmTmVjZXNzYXJ5KCkKIHsKICAgICBpZiAobV9pc0Rpc2FibGVkICYmIG1fY29ubmVjdGlvblJl
ZkNvdW50ID4gMCkgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBB
U1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgICAgICBBdWRpb0NvbnRl
eHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICAgICAgbV9pc0Rpc2FibGVk
ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKaW5kZXggZjE1N2ZiNy4uMjY4MTc5OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgQXVkaW9T
Y2hlZHVsZWRTb3VyY2VOb2RlOjp1cGRhdGVTY2hlZHVsaW5nSW5mbyhzaXplX3QgcXVhbnR1bUZy
YW1lU2l6ZSwKIAogdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OnN0YXJ0KGRvdWJsZSB3
aGVuKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJD
b3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBpZiAobV9wbGF5YmFja1N0YXRlICE9IFVOU0NI
RURVTEVEX1NUQVRFKQogICAgICAgICByZXR1cm47CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lk
IEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6c3RhcnQoZG91YmxlIHdoZW4pCiAKIHZvaWQgQXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpzdG9wKGRvdWJsZSB3aGVuKQogewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgp
KTsKICAgICBpZiAoIShtX3BsYXliYWNrU3RhdGUgPT0gU0NIRURVTEVEX1NUQVRFIHx8IG1fcGxh
eWJhY2tTdGF0ZSA9PSBQTEFZSU5HX1NUQVRFKSkKICAgICAgICAgcmV0dXJuOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKaW5k
ZXggYzgwMTBkMC4uZGMwN2VjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBDb252b2x2
ZXJOb2RlOjp1bmluaXRpYWxpemUoKQogCiB2b2lkIENvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcihB
dWRpb0J1ZmZlciogYnVmZmVyKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAKICAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgQ29udm9sdmVy
Tm9kZTo6c2V0QnVmZmVyKEF1ZGlvQnVmZmVyKiBidWZmZXIpCiAKIEF1ZGlvQnVmZmVyKiBDb252
b2x2ZXJOb2RlOjpidWZmZXIoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICByZXR1cm4gbV9idWZm
ZXIuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCAwMDJjMjU0
Li5hZDY2MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC00OCw3ICs0OCw3
IEBAIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6fkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSgpCiAKIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjppbml0aWFsaXplKCkK
IHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOyAKICAgICBpZiAoaXNJbml0aWFsaXplZCgpKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGU6OmluaXRpYWxpemUoKQogCiB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6dW5p
bml0aWFsaXplKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAKKyAgICBBU1NFUlQo
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOyAKICAgICBpZiAoIWlzSW5pdGlhbGl6ZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpjcmVhdGVEZXN0aW5hdGlvbigpCiAKIHZvaWQgRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjplbmFibGVJbnB1dCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsgCisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsgCiAgICAg
aWYgKG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzICE9IEVuYWJsZWRJbnB1dENoYW5uZWxzKSB7CiAg
ICAgICAgIG1fbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gRW5hYmxlZElucHV0Q2hhbm5lbHM7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCAwODNkOWJiLi45ZDIyYzk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgT2ZmbGlu
ZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjp1bmluaXRpYWxpemUoKQogCiB2b2lkIE9mZmxpbmVBdWRp
b0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmcoKQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICBBU1NFUlQobV9yZW5kZXJUYXJnZXQuZ2V0KCkpOwogICAgIGlmICghbV9yZW5kZXJUYXJnZXQu
Z2V0KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBPZmZsaW5lQXVk
aW9EZXN0aW5hdGlvbk5vZGU6Om9mZmxpbmVSZW5kZXJFbnRyeSh2b2lkKiB0aHJlYWREYXRhKQog
CiB2b2lkIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6b2ZmbGluZVJlbmRlcigpCiB7Ci0g
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKG1fcmVuZGVyQnVzLmdldCgpKTsKICAgICBpZiAo
IW1fcmVuZGVyQnVzLmdldCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCmluZGV4IDkxYzI5MTcuLjFi
NjhlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxs
YXRvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxs
YXRvck5vZGUuY3BwCkBAIC0zMzksNyArMzM5LDcgQEAgdm9pZCBPc2NpbGxhdG9yTm9kZTo6cmVz
ZXQoKQogCiB2b2lkIE9zY2lsbGF0b3JOb2RlOjpzZXRXYXZlVGFibGUoV2F2ZVRhYmxlKiB3YXZl
VGFibGUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldl
YkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0
aCBwcm9jZXNzKCkuCiAgICAgTXV0ZXhMb2NrZXIgcHJvY2Vzc0xvY2tlcihtX3Byb2Nlc3NMb2Nr
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVB
bmFseXNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1JlYWx0aW1lQW5h
bHlzZXIuY3BwCmluZGV4IDdhOTA5Y2IuLjhmMmFhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vUmVhbHRpbWVBbmFseXNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9SZWFsdGltZUFuYWx5c2VyLmNwcApAQCAtODAsNyArODAs
NyBAQCB2b2lkIFJlYWx0aW1lQW5hbHlzZXI6OnJlc2V0KCkKIAogYm9vbCBSZWFsdGltZUFuYWx5
c2VyOjpzZXRGZnRTaXplKHNpemVfdCBzaXplKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIC8v
IE9ubHkgYWxsb3cgcG93ZXJzIG9mIHR3by4KICAgICB1bnNpZ25lZCBsb2cyc2l6ZSA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihsb2cyKHNpemUpKTsKQEAgLTEzOSw3ICsxMzksNyBAQCBuYW1lc3Bh
Y2UgewogCiB2b2lkIGFwcGx5V2luZG93KGZsb2F0KiBwLCBzaXplX3QgbikKIHsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHQoKSk7CiAgICAgCiAgICAgLy8gQmxhY2ttYW4gd2luZG93CiAgICAgZG91YmxlIGFscGhhID0g
MC4xNjsKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIGFwcGx5V2luZG93KGZsb2F0KiBwLCBzaXpl
X3QgbikKIAogdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpkb0ZGVEFuYWx5c2lzKCkKIHsgICAgCi0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRp
b25Db250ZXh0KCkpOwogCiAgICAgLy8gVW5yb2xsIHRoZSBpbnB1dCBidWZmZXIgaW50byBhIHRl
bXBvcmFyeSBidWZmZXIsIHdoZXJlIHdlJ2xsIGFwcGx5IGFuIGFuYWx5c2lzIHdpbmRvdyBmb2xs
b3dlZCBieSBhbiBGRlQuCiAgICAgc2l6ZV90IGZmdFNpemUgPSB0aGlzLT5mZnRTaXplKCk7CkBA
IC0yMDgsNyArMjA4LDcgQEAgdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpkb0ZGVEFuYWx5c2lzKCkK
IAogdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRGbG9hdEZyZXF1ZW5jeURhdGEoRmxvYXQzMkFy
cmF5KiBkZXN0aW5hdGlvbkFycmF5KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIGlmICghZGVz
dGluYXRpb25BcnJheSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQg
UmVhbHRpbWVBbmFseXNlcjo6Z2V0RmxvYXRGcmVxdWVuY3lEYXRhKEZsb2F0MzJBcnJheSogZGVz
dGluYXRpb25BcnJheSkKIAogdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRlRnJlcXVlbmN5
RGF0YShVaW50OEFycmF5KiBkZXN0aW5hdGlvbkFycmF5KQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAog
ICAgIGlmICghZGVzdGluYXRpb25BcnJheSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjcwLDcgKzI3
MCw3IEBAIHZvaWQgUmVhbHRpbWVBbmFseXNlcjo6Z2V0Qnl0ZUZyZXF1ZW5jeURhdGEoVWludDhB
cnJheSogZGVzdGluYXRpb25BcnJheSkKIAogdm9pZCBSZWFsdGltZUFuYWx5c2VyOjpnZXRCeXRl
VGltZURvbWFpbkRhdGEoVWludDhBcnJheSogZGVzdGluYXRpb25BcnJheSkKIHsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHQoKSk7CiAKICAgICBpZiAoIWRlc3RpbmF0aW9uQXJyYXkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nv
ck5vZGUuY3BwCmluZGV4IDM2MGFhMTcuLjkwZmMxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtMjI5
LDcgKzIyOSw3IEBAIHZvaWQgU2NyaXB0UHJvY2Vzc29yTm9kZTo6ZmlyZVByb2Nlc3NFdmVudERp
c3BhdGNoKHZvaWQqIHVzZXJEYXRhKQogCiB2b2lkIFNjcmlwdFByb2Nlc3Nvck5vZGU6OmZpcmVQ
cm9jZXNzRXZlbnQoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSAmJiBtX2lzUmVxdWVz
dE91dHN0YW5kaW5nKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkg
JiYgbV9pc1JlcXVlc3RPdXRzdGFuZGluZyk7CiAgICAgCiAgICAgYm9vbCBpc0luZGV4R29vZCA9
IG1fZG91YmxlQnVmZmVySW5kZXhGb3JFdmVudCA8IDI7CiAgICAgQVNTRVJUKGlzSW5kZXhHb29k
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBl
ck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9k
ZS5jcHAKaW5kZXggMDM1MDRlNy4uOThlOGI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgV2F2
ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCkKIAogdm9p
ZCBXYXZlU2hhcGVyTm9kZTo6c2V0Q3VydmUoRmxvYXQzMkFycmF5KiBjdXJ2ZSkKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOyAKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25D
b250ZXh0KCkpOyAKICAgICB3YXZlU2hhcGVyUHJvY2Vzc29yKCktPnNldEN1cnZlKGN1cnZlKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggMTQz
YzhmMi4uNTExNmI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
Y3BwCkBAIC0xNTAsMTkgKzE1MCwxOSBAQCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6UGVlcjo6UGVlcihQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubgogICAgICwg
bV9tYWluV2ViU29ja2V0Q2hhbm5lbChXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8RG9jdW1lbnQqPihjb250ZXh0KSwgdGhpcykpCiAgICAgLCBtX3Rhc2tNb2RlKHRhc2tNb2Rl
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KIAogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWw6OlBlZXI6On5QZWVyKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKG1fbWFpbldlYlNv
Y2tldENoYW5uZWwpCiAgICAgICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmRpc2Nvbm5lY3Qo
KTsKIH0KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6Y29u
bmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIGlmICghbV9tYWluV2ViU29ja2V0Q2hhbm5lbCkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmNvbm5lY3QodXJsLCBwcm90b2NvbCk7CkBA
IC0xNzYsNyArMTc2LDcgQEAgc3RhdGljIHZvaWQgd29ya2VyQ29udGV4dERpZFNlbmQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHIKIAogdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNv
cmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGlmICghbV9tYWluV2ViU29ja2V0Q2hhbm5lbCB8
fCAhbV93b3JrZXJDbGllbnRXcmFwcGVyKQogICAgICAgICByZXR1cm47CiAgICAgVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZFJlcXVlc3RSZXN1bHQgPSBtX21haW5X
ZWJTb2NrZXRDaGFubmVsLT5zZW5kKG1lc3NhZ2UpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnNlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVy
OjpzZW5kKGNvbnN0IEFycmF5QnVmZmVyJiBiaW5hcnlEYXRhKQogewotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsK
ICAgICBpZiAoIW1fbWFpbldlYlNvY2tldENoYW5uZWwgfHwgIW1fd29ya2VyQ2xpZW50V3JhcHBl
cikKICAgICAgICAgcmV0dXJuOwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5k
UmVzdWx0IHNlbmRSZXF1ZXN0UmVzdWx0ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+c2VuZChi
aW5hcnlEYXRhLCAwLCBiaW5hcnlEYXRhLmJ5dGVMZW5ndGgoKSk7CkBAIC0xOTQsNyArMTk0LDcg
QEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChjb25z
dCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSkKIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6UGVlcjo6c2VuZChjb25zdCBCbG9iJiBiaW5hcnlEYXRhKQogewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29u
dGV4dCgpKTsKICAgICBpZiAoIW1fbWFpbldlYlNvY2tldENoYW5uZWwgfHwgIW1fd29ya2VyQ2xp
ZW50V3JhcHBlcikKICAgICAgICAgcmV0dXJuOwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kUmVzdWx0IHNlbmRSZXF1ZXN0UmVzdWx0ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5l
bC0+c2VuZChiaW5hcnlEYXRhKTsKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgdm9pZCB3b3Jr
ZXJDb250ZXh0RGlkR2V0QnVmZmVyZWRBbW91bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUAogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpi
dWZmZXJlZEFtb3VudCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NF
UlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGlmICghbV9tYWluV2ViU29j
a2V0Q2hhbm5lbCB8fCAhbV93b3JrZXJDbGllbnRXcmFwcGVyKQogICAgICAgICByZXR1cm47CiAg
ICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwt
PmJ1ZmZlcmVkQW1vdW50KCk7CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6YnVmZmVyZWRBbW91bnQoKQogCiB2b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpjbG9zZShpbnQgY29kZSwgY29uc3Qg
U3RyaW5nJiByZWFzb24pCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NF
UlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGlmICghbV9tYWluV2ViU29j
a2V0Q2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwt
PmNsb3NlKGNvZGUsIHJlYXNvbik7CkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6Y2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0cmlu
ZyYgcmVhc28KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6
ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKCFt
X21haW5XZWJTb2NrZXRDaGFubmVsKQogICAgICAgICByZXR1cm47CiAgICAgbV9tYWluV2ViU29j
a2V0Q2hhbm5lbC0+ZmFpbChyZWFzb24pOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFz
b24pCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpc2Nv
bm5lY3QoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5X
ZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBpZiAoIW1fbWFpbldlYlNvY2tldENoYW5u
ZWwpCiAgICAgICAgIHJldHVybjsKICAgICBtX21haW5XZWJTb2NrZXRDaGFubmVsLT5kaXNjb25u
ZWN0KCk7CkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6UGVlcjo6ZGlzY29ubmVjdCgpCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OlBlZXI6OnN1c3BlbmQoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBpZiAo
IW1fbWFpbldlYlNvY2tldENoYW5uZWwpCiAgICAgICAgIHJldHVybjsKICAgICBtX21haW5XZWJT
b2NrZXRDaGFubmVsLT5zdXNwZW5kKCk7CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6c3VzcGVuZCgpCiAKIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OnJlc3VtZSgpCiB7Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0
KCkpOwogICAgIGlmICghbV9tYWluV2ViU29ja2V0Q2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnJlc3VtZSgpOwpAQCAtMjY3LDcgKzI2Nyw3IEBA
IHN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRDb25uZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlBlZXI6OmRpZENvbm5lY3QoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBtX2xv
YWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rh
c2soJndvcmtlckNvbnRleHREaWRDb25uZWN0LCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIG1fbWFp
bldlYlNvY2tldENoYW5uZWwtPnN1YnByb3RvY29sKCksIG1fbWFpbldlYlNvY2tldENoYW5uZWwt
PmV4dGVuc2lvbnMoKSksIG1fdGFza01vZGUpOwogfQogCkBAIC0yNzksNyArMjc5LDcgQEAgc3Rh
dGljIHZvaWQgd29ya2VyQ29udGV4dERpZFJlY2VpdmVNZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3MKIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0
aW9uQ29udGV4dCgpKTsKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2Vy
Q29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlTWVzc2Fn
ZSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBtZXNzYWdlKSwgbV90YXNrTW9kZSk7CiB9CiAKQEAg
LTI5MSw3ICsyOTEsNyBAQCBzdGF0aWMgdm9pZCB3b3JrZXJDb250ZXh0RGlkUmVjZWl2ZUJpbmFy
eURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUAogCiB2b2lkIFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShQYXNz
T3duUHRyPFZlY3RvcjxjaGFyPiA+IGJpbmFyeURhdGEpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxi
YWNrVGFzaygmd29ya2VyQ29udGV4dERpZFJlY2VpdmVCaW5hcnlEYXRhLCBtX3dvcmtlckNsaWVu
dFdyYXBwZXIsIGJpbmFyeURhdGEpLCBtX3Rhc2tNb2RlKTsKIH0KIApAQCAtMzAzLDcgKzMwMyw3
IEBAIHN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHREaWRVcGRhdGVCdWZmZXJlZEFtb3VudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OlBlZXI6OmRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50KHVuc2lnbmVkIGxvbmcg
YnVmZmVyZWRBbW91bnQpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NF
UlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIG1fbG9hZGVyUHJveHkucG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29u
dGV4dERpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50LCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIGJ1ZmZl
cmVkQW1vdW50KSwgbV90YXNrTW9kZSk7CiB9CiAKQEAgLTMxNSw3ICszMTUsNyBAQCBzdGF0aWMg
dm9pZCB3b3JrZXJDb250ZXh0RGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleAogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpQZWVyOjpkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxs
YmFja1Rhc2soJndvcmtlckNvbnRleHREaWRTdGFydENsb3NpbmdIYW5kc2hha2UsIG1fd29ya2Vy
Q2xpZW50V3JhcHBlciksIG1fdGFza01vZGUpOwogfQogCkBAIC0zMjcsNyArMzI3LDcgQEAgc3Rh
dGljIHZvaWQgd29ya2VyQ29udGV4dERpZENsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8VGgKIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6UGVlcjo6ZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3Vu
dCwgQ2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMgY2xvc2luZ0hhbmRzaGFrZUNvbXBs
ZXRpb24sIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKQogewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9u
Q29udGV4dCgpKTsKICAgICBtX21haW5XZWJTb2NrZXRDaGFubmVsID0gMDsKICAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2so
JndvcmtlckNvbnRleHREaWRDbG9zZSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCB1bmhhbmRsZWRC
dWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbiks
IG1fdGFza01vZGUpOwogfQpAQCAtMzQwLDggKzM0MCw4IEBAIHN0YXRpYyB2b2lkIHdvcmtlckNv
bnRleHREaWRSZWNlaXZlTWVzc2FnZUVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFJl
Y2VpdmVNZXNzYWdlRXJyb3IoKQogewotICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
ICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxs
YmFja1Rhc2soJndvcmtlckNvbnRleHREaWRSZWNlaXZlTWVzc2FnZUVycm9yLCBtX3dvcmtlckNs
aWVudFdyYXBwZXIpLCBtX3Rhc2tNb2RlKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRp
b25Db250ZXh0KCkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJD
b250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERpZFJlY2VpdmVNZXNzYWdl
RXJyb3IsIG1fd29ya2VyQ2xpZW50V3JhcHBlciksIG1fdGFza01vZGUpOwogfQogCiBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpCcmlkZ2UoUGFzc1JlZlB0cjxUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIs
IFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4gd29ya2VyQ29udGV4dCwgY29uc3QgU3RyaW5nJiB0
YXNrTW9kZSkKQEAgLTM5OSw3ICszOTksNyBAQCBwcml2YXRlOgogCiB2b2lkIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Om1haW5UaHJlYWRJbml0aWFsaXplKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdvcmtlckxvYWRlclByb3h5KiBsb2FkZXJQcm94
eSwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHBy
cENsaWVudFdyYXBwZXIsIGNvbnN0IFN0cmluZyYgdGFza01vZGUpCiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkp
OwogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVudCgpKTsKIAog
ICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IGNsaWVu
dFdyYXBwZXIgPSBwcnBDbGllbnRXcmFwcGVyOwpAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6aW5pdGlhbGl6ZSgpCiAKIHZv
aWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDb25uZWN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJU
X1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIEFTU0VSVChwZWVy
KTsKIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OkJyaWRnZTo6Y29ubmVjdChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0CiAKIHZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5kKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0
LT5pc0RvY3VtZW50KCkpOwogICAgIEFTU0VSVChwZWVyKTsKIApAQCAtNDU2LDcgKzQ1Niw3IEBA
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5kKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6Om1haW5UaHJlYWRTZW5kQXJyYXlCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgUGVlciogcGVlciwgUGFzc093blB0cjxWZWN0b3I8Y2hhcj4gPiBkYXRhKQog
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhl
Y3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlz
RG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKHBlZXIpOwogCkBAIC00NjYsNyArNDY2LDcgQEAgdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZFNlbmRBcnJheUJ1
ZmZlcihTY3JpcHRFeGVjdXRpb24KIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6bWFpblRocmVhZFNlbmRCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBlZXIqIHBlZXIsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0eXBlLCBsb25nIGxv
bmcgc2l6ZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0lu
V2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBj
b250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIEFTU0VSVChwZWVyKTsKIApAQCAtNTIyLDcgKzUy
Miw3IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRCdWZmZXJlZEFtb3VudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUKHBl
ZXIpOwogCkBAIC01NDUsNyArNTQ1LDcgQEAgdW5zaWduZWQgbG9uZyBXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpidWZmZXJlZEFtb3VudCgpCiAKIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRDbG9zZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQZWVyKiBwZWVyLCBpbnQgY29kZSwgY29uc3QgU3RyaW5nJiBy
ZWFzb24pCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldl
YkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29u
dGV4dC0+aXNEb2N1bWVudCgpKTsKICAgICBBU1NFUlQocGVlcik7CiAKQEAgLTU2MSw3ICs1NjEs
NyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNsb3Nl
KGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjptYWluVGhyZWFkRmFpbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQZWVyKiBwZWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAg
IEFTU0VSVChwZWVyKTsKIApAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKIAog
dm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRocmVhZERlc3Ryb3ko
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093blB0cjxQZWVyPiBwZWVyKQog
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhl
Y3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQtPmlz
RG9jdW1lbnQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChwZWVyLCBwZWVyKTsKIApAQCAtNTk4LDcg
KzU5OCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6
ZGlzY29ubmVjdCgpCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1h
aW5UaHJlYWRTdXNwZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBl
ZXIpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNv
cmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4
dC0+aXNEb2N1bWVudCgpKTsKICAgICBBU1NFUlQocGVlcik7CiAKQEAgLTYxNCw3ICs2MTQsNyBA
QCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnN1c3BlbmQo
KQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkUmVz
dW1lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIpCiB7Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25D
b250ZXh0KCkpOwogICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNEb2N1bWVu
dCgpKTsKICAgICBBU1NFUlQocGVlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9ET01XcmFwcGVyV29ybGQuY3BwCmluZGV4IGE0NzAyMzIuLjNlNDE2M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcApAQCAtNjksNyArNjks
NyBAQCBET01XcmFwcGVyV29ybGQqIG5vcm1hbFdvcmxkKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhKQogCiBET01XcmFwcGVyV29ybGQqIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRp
b25Db250ZXh0KCkpOwogICAgIHN0YXRpYyBET01XcmFwcGVyV29ybGQqIGNhY2hlZE5vcm1hbFdv
cmxkID0gbm9ybWFsV29ybGQoKkpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7CiAg
ICAgcmV0dXJuIGNhY2hlZE5vcm1hbFdvcmxkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggYTVmMDAzZS4uZTk3YmJmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0xNzks
NyArMTc5LDcgQEAgSlNET01XaW5kb3dTaGVsbCogSlNET01XaW5kb3dCYXNlOjpzaGVsbCgpIGNv
bnN0CiAKIEpTR2xvYmFsRGF0YSogSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEo
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIHN0YXRpYyBKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEgPSAwOwogICAgIGlmICghZ2xvYmFsRGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCmluZGV4IDlmOTEwOTgu
LmZmOGM5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgU2NyaXB0T2JqZWN0IElu
amVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBz
b3VyY2UsIFMKIAogICAgIEpTVmFsdWUgZXZhbHVhdGlvbkV4Y2VwdGlvbjsKICAgICBKU1ZhbHVl
IGV2YWx1YXRpb25SZXR1cm5WYWx1ZTsKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpCisgICAgaWYg
KGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICBldmFsdWF0aW9uUmV0dXJu
VmFsdWUgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmV2YWx1YXRlKHNjcmlwdFN0YXRlLCBzb3Vy
Y2VDb2RlLCBnbG9iYWxUaGlzVmFsdWUsICZldmFsdWF0aW9uRXhjZXB0aW9uKTsKICAgICBlbHNl
IHsKICAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRTdGF0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01haW5UaHJlYWRFeGVjU3RhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCmluZGV4
IDI5N2M5NTMuLmI1ZmE3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWFpblRocmVhZEV4ZWNTdGF0ZS5oCkBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIEpTTWFpblRo
cmVhZEV4ZWNTdGF0ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6RXhlY1N0YXRlKiBjdXJy
ZW50U3RhdGUoKQogICAgIHsgCi0gICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
ICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgICAgIHJldHVy
biBzX21haW5UaHJlYWRTdGF0ZTsKICAgICB9OwogICAgIApAQCAtODEsMTMgKzgxLDEzIEBAIHBy
b3RlY3RlZDoKICAgICBleHBsaWNpdCBKU01haW5UaHJlYWRFeGVjU3RhdGUoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgIDogbV9wcmV2aW91c1N0YXRlKHNfbWFpblRocmVhZFN0YXRlKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKGlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgc19tYWluVGhyZWFkU3RhdGUg
PSBleGVjOwogICAgIH07CiAKICAgICB+SlNNYWluVGhyZWFkRXhlY1N0YXRlKCkKICAgICB7Ci0g
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChpc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICAgICAgYm9vbCBkaWRFeGl0SmF2YVNjcmlwdCA9
IHNfbWFpblRocmVhZFN0YXRlICYmICFtX3ByZXZpb3VzU3RhdGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4IDQ5MzdiMzYu
LjJmMTZhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1
bmN0aW9uQ2FsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVu
Y3Rpb25DYWxsLmNwcApAQCAtMTM2LDcgKzEzNiw3IEBAIFNjcmlwdFZhbHVlIFNjcmlwdEZ1bmN0
aW9uQ2FsbDo6Y2FsbChib29sJiBoYWRFeGNlcHRpb24sIGJvb2wgcmVwb3J0RXhjZXB0aW9ucykK
ICAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdDsKLSAg
ICBpZiAoaXNNYWluVGhyZWFkKCkpCisgICAgaWYgKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4
dCgpKQogICAgICAgICByZXN1bHQgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwobV9leGVj
LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cyk7
CiAgICAgZWxzZQogICAgICAgICByZXN1bHQgPSBKU0M6OmNhbGwobV9leGVjLCBmdW5jdGlvbiwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzT2JqZWN0LCBtX2FyZ3VtZW50cyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCmluZGV4IDMyNTk4NGUu
LjY1MmQ3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2Ny
aXB0T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0
T2JqZWN0Lm1tCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBTcGluTG9jayBzcGluTG9jayA9IFNQ
SU5MT0NLX0lOSVRJQUxJWkVSOwogCiBOU09iamVjdCogZ2V0SlNXcmFwcGVyKEpTT2JqZWN0KiBp
bXBsKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJD
b3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBTcGluTG9ja0hvbGRlciBob2xkZXIoJnNwaW5M
b2NrKTsKIAogICAgIGlmICghSlNXcmFwcGVyQ2FjaGUpCkBAIC03NSw3ICs3NSw3IEBAIE5TT2Jq
ZWN0KiBnZXRKU1dyYXBwZXIoSlNPYmplY3QqIGltcGwpCiAKIHZvaWQgYWRkSlNXcmFwcGVyKE5T
T2JqZWN0KiB3cmFwcGVyLCBKU09iamVjdCogaW1wbCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
U3BpbkxvY2tIb2xkZXIgaG9sZGVyKCZzcGluTG9jayk7CiAKICAgICBpZiAoIUpTV3JhcHBlckNh
Y2hlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKaW5kZXgg
Y2NiOWI4YS4uMDJhZjNmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RE9NRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRh
U3RvcmUuY3BwCkBAIC01NSw3ICs1NSw3IEBAIERPTURhdGFTdG9yZTo6fkRPTURhdGFTdG9yZSgp
CiBET01EYXRhU3RvcmUqIERPTURhdGFTdG9yZTo6bWFpbldvcmxkU3RvcmUoKQogewogICAgIERF
RklORV9TVEFUSUNfTE9DQUwoRE9NRGF0YVN0b3JlLCBtYWluV29ybGRET01EYXRhU3RvcmUsIChN
YWluV29ybGQpKTsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0lu
V2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgcmV0dXJuICZtYWluV29ybGRET01EYXRh
U3RvcmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdy
YXBwZXJXb3JsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29y
bGQuY3BwCmluZGV4IGZlZTJmNzguLjA1NTM0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmNwcApAQCAtNjIsNyArNjIsNyBAQCBET01XcmFwcGVy
V29ybGQ6OkRPTVdyYXBwZXJXb3JsZChpbnQgd29ybGRJZCwgaW50IGV4dGVuc2lvbkdyb3VwKQog
CiBET01XcmFwcGVyV29ybGQqIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpCiB7Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0
KCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4sIGNh
Y2hlZE5vcm1hbFdvcmxkLCAoRE9NV3JhcHBlcldvcmxkOjpjcmVhdGVNYWluV29ybGQoKSkpOwog
ICAgIHJldHVybiBjYWNoZWROb3JtYWxXb3JsZC5nZXQoKTsKIH0KQEAgLTcwLDcgKzcwLDcgQEAg
RE9NV3JhcHBlcldvcmxkKiBtYWluVGhyZWFkTm9ybWFsV29ybGQoKQogI2lmbmRlZiBOREVCVUcK
IHZvaWQgRE9NV3JhcHBlcldvcmxkOjphc3NlcnRDb250ZXh0SGFzQ29ycmVjdFByb3RvdHlwZSh2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBB
U1NFUlQoVjhET01XcmFwcGVyOjppc1dyYXBwZXJPZlR5cGUodG9Jbm5lckdsb2JhbE9iamVjdChj
b250ZXh0KSwgJlY4RE9NV2luZG93OjppbmZvKSk7CiB9CiAjZW5kaWYKQEAgLTk5LDcgKzk5LDcg
QEAgdm9pZCBET01XcmFwcGVyV29ybGQ6OnNldElzb2xhdGVkV29ybGRGaWVsZCh2ODo6SGFuZGxl
PHY4OjpDb250ZXh0PiBjb250ZXh0KQogdHlwZWRlZiBIYXNoTWFwPGludCwgRE9NV3JhcHBlcldv
cmxkKj4gV29ybGRNYXA7CiBzdGF0aWMgV29ybGRNYXAmIGlzb2xhdGVkV29ybGRNYXAoKQogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0
aW9uQ29udGV4dCgpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFdvcmxkTWFwLCBtYXAsICgp
KTsKICAgICByZXR1cm4gbWFwOwogfQpAQCAtMTYyLDcgKzE2Miw3IEBAIFBhc3NSZWZQdHI8RE9N
V3JhcHBlcldvcmxkPiBET01XcmFwcGVyV29ybGQ6OmVuc3VyZUlzb2xhdGVkV29ybGQoaW50IHdv
cmxkSWQsIGluCiB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4g
SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luTWFwOwogc3RhdGljIElzb2xhdGVkV29ybGRTZWN1
cml0eU9yaWdpbk1hcCYgaXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2lucygpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoSXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3Jp
Z2luTWFwLCBtYXAsICgpKTsKICAgICByZXR1cm4gbWFwOwogfQpAQCAtMTkzLDcgKzE5Myw3IEBA
IHZvaWQgRE9NV3JhcHBlcldvcmxkOjpjbGVhcklzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbihp
bnQgd29ybGRJRCkKIHR5cGVkZWYgSGFzaE1hcDxpbnQsIGJvb2w+IElzb2xhdGVkV29ybGRDb250
ZW50U2VjdXJpdHlQb2xpY3lNYXA7CiBzdGF0aWMgSXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0
eVBvbGljeU1hcCYgaXNvbGF0ZWRXb3JsZENvbnRlbnRTZWN1cml0eVBvbGljaWVzKCkKIHsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlv
bkNvbnRleHQoKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChJc29sYXRlZFdvcmxkQ29udGVu
dFNlY3VyaXR5UG9saWN5TWFwLCBtYXAsICgpKTsKICAgICByZXR1cm4gbWFwOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xsZXIuY3BwCmluZGV4IDI4MmM0MTAu
LmVmZmFhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxl
ci5jcHAKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFY4R0NDb250cm9sbGVyOjpnY1Byb2xvZ3Vl
KHY4OjpHQ1R5cGUgdHlwZSwgdjg6OkdDQ2FsbGJhY2tGbGFncyBmbGFncykKICAgICBlbHNlIGlm
ICh0eXBlID09IHY4OjprR0NUeXBlTWFya1N3ZWVwQ29tcGFjdCkKICAgICAgICAgbWFqb3JHQ1By
b2xvZ3VlKCk7CiAKLSAgICBpZiAoaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpICYmIG1fZWRlbk5v
ZGVzKSB7CisgICAgaWYgKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dE9yR0NUaHJlYWQoKSAm
JiBtX2VkZW5Ob2RlcykgewogICAgICAgICAvLyBUaGUgRWRlbiBzcGFjZSBpcyBjbGVhcmVkIGF0
IGV2ZXJ5IG1pbm9yL21ham9yIEdDLgogICAgICAgICBtX2VkZW5Ob2Rlcy0+Y2xlYXIoKTsKICAg
ICB9CkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBWOEdDQ29udHJvbGxlcjo6bWlub3JHQ1Byb2xv
Z3VlKCkKIHsKICAgICBUUkFDRV9FVkVOVF9CRUdJTjAoInY4IiwgIkdDIik7CiAKLSAgICBpZiAo
aXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpICYmIG1fZWRlbk5vZGVzKSB7CisgICAgaWYgKGlzSW5X
ZWJDb3JlRXhlY3V0aW9uQ29udGV4dE9yR0NUaHJlYWQoKSAmJiBtX2VkZW5Ob2RlcykgewogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZWRlbk5vZGVzLT5zaXplKCk7IGkrKykgewog
ICAgICAgICAgICAgQVNTRVJUKCFtX2VkZW5Ob2Rlcy0+YXQoaSktPndyYXBwZXIoKS5Jc0VtcHR5
KCkpOwogICAgICAgICAgICAgaWYgKG1fZWRlbk5vZGVzLT5hdChpKS0+aXNWOENvbGxlY3RhYmxl
RHVyaW5nTWlub3JHQygpKSAvLyBUaGlzIGJyYW5jaCBpcyBqdXN0IGZvciBwZXJmb3JtYW5jZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SW5pdGlhbGl6ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbml0aWFsaXplci5jcHAKaW5kZXggY2Iz
YmM2ZC4uMGE4NmZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJ
bml0aWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJbml0aWFs
aXplci5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplVjhDb21t
b24oKQogCiB2b2lkIFY4SW5pdGlhbGl6ZXI6OmluaXRpYWxpemVNYWluVGhyZWFkSWZOZWVkZWQo
djg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgc3RhdGljIGJv
b2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgICBpZiAoaW5pdGlhbGl6ZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFN0cmluZ1Jlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4U3RyaW5nUmVzb3VyY2UuY3BwCmluZGV4IDhhYzZmMGMu
LjM2OWI0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4U3RyaW5n
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4U3RyaW5nUmVz
b3VyY2UuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgU3RyaW5nIGludDMyVG9XZWJDb3JlU3RyaW5n
RmFzdChpbnQgdmFsdWUpCiB7CiAgICAgLy8gQ2FjaGluZyBvZiBzbWFsbCBzdHJpbmdzIGJlbG93
IGlzIG5vdCB0aHJlYWQgc2FmZTogbmV3bHkgY29uc3RydWN0ZWQgQXRvbWljU3RyaW5nCiAgICAg
Ly8gYXJlIG5vdCBzYWZlbHkgcHVibGlzaGVkLgotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIC8vIE1v
c3QgbnVtYmVycyB1c2VkIGFyZSA8PSAxMDAuIEV2ZW4gaWYgdGhleSBhcmVuJ3QgdXNlZCB0aGVy
ZSdzIHZlcnkgbGl0dGxlIGNvc3QgaW4gdXNpbmcgdGhlIHNwYWNlLgogICAgIGNvbnN0IGludCBr
TG93TnVtYmVycyA9IDEwMDsKQEAgLTIwNyw3ICsyMDcsNyBAQCBTdHJpbmcgaW50MzJUb1dlYkNv
cmVTdHJpbmdGYXN0KGludCB2YWx1ZSkKIFN0cmluZyBpbnQzMlRvV2ViQ29yZVN0cmluZyhpbnQg
dmFsdWUpCiB7CiAgICAgLy8gSWYgd2UgYXJlIG9uIHRoZSBtYWluIHRocmVhZCAodGhpcyBzaG91
bGQgYWx3YXlzIHRydWUgZm9yIG5vbi13b3JrZXJzKSwgY2FsbCB0aGUgZmFzdGVyIG9uZS4KLSAg
ICBpZiAoaXNNYWluVGhyZWFkKCkpCisgICAgaWYgKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4
dCgpKQogICAgICAgICByZXR1cm4gaW50MzJUb1dlYkNvcmVTdHJpbmdGYXN0KHZhbHVlKTsKICAg
ICByZXR1cm4gU3RyaW5nOjpudW1iZXIodmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmgKaW5kZXggZmUyZWM4NS4uZTgzY2JmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRp
b24oKQogICAgIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgIGlmICghaXNNYWluVGhyZWFkKCkp
CisgICAgICAgIGlmICghaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIHNfY291bnQrKzsKICNlbmRpZgpAQCAtNTUsNyArNTUsNyBAQCBw
dWJsaWM6CiAgICAgfk5vRXZlbnREaXNwYXRjaEFzc2VydGlvbigpCiAgICAgewogI2lmbmRlZiBO
REVCVUcKLSAgICAgICAgaWYgKCFpc01haW5UaHJlYWQoKSkKKyAgICAgICAgaWYgKCFpc0luV2Vi
Q29yZUV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgQVNT
RVJUKHNfY291bnQpOwogICAgICAgICBzX2NvdW50LS07CkBAIC02NSw3ICs2NSw3IEBAIHB1Ymxp
YzoKICNpZm5kZWYgTkRFQlVHCiAgICAgc3RhdGljIGJvb2wgaXNFdmVudERpc3BhdGNoRm9yYmlk
ZGVuKCkKICAgICB7Ci0gICAgICAgIGlmICghaXNNYWluVGhyZWFkKCkpCisgICAgICAgIGlmICgh
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIHJldHVybiBzX2NvdW50OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDYyMTQ3NTYuLmZmZTBkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTg0NSw3
ICsxODQ1LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdl
KQogCiB2b2lkIERvY3VtZW50Ojp1cGRhdGVTdHlsZUlmTmVlZGVkKCkKIHsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAgICAgQVNTRVJUKCF2aWV3KCkgfHwgKCF2aWV3KCktPmlzSW5MYXlvdXQoKSAmJiAhdmll
dygpLT5pc1BhaW50aW5nKCkpKTsKICAgICAKICAgICBpZiAoKCFtX3BlbmRpbmdTdHlsZVJlY2Fs
Y1Nob3VsZEZvcmNlICYmICFjaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSkgfHwgaW5QYWdlQ2FjaGUo
KSkKQEAgLTE4NTcsNyArMTg1Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxlSWZOZWVk
ZWQoKQogCiB2b2lkIERvY3VtZW50Ojp1cGRhdGVTdHlsZUZvckFsbERvY3VtZW50cygpCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRp
b25Db250ZXh0KCkpOwogICAgIGlmICghZG9jdW1lbnRzVGhhdE5lZWRTdHlsZVJlY2FsYykKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0xODcxLDcgKzE4NzEsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRh
dGVTdHlsZUZvckFsbERvY3VtZW50cygpCiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUxheW91dCgp
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB2aWV3KCk7
CiAgICAgaWYgKGZyYW1lVmlldyAmJiBmcmFtZVZpZXctPmlzSW5MYXlvdXQoKSkgewpAQCAtNDYz
OSw3ICs0NjM5LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkVXBkYXRlU2VjdXJpdHlPcmlnaW4oKQog
CiBib29sIERvY3VtZW50Ojppc0NvbnRleHRUaHJlYWQoKSBjb25zdAogewotICAgIHJldHVybiBp
c01haW5UaHJlYWQoKTsKKyAgICByZXR1cm4gaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCk7
CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVVSTEZvclB1c2hPclJlcGxhY2VTdGF0ZShjb25z
dCBLVVJMJiB1cmwpCkBAIC00Nzk2LDcgKzQ3OTYsNyBAQCBwdWJsaWM6CiAKIHZvaWQgRG9jdW1l
bnQ6OmRpZFJlY2VpdmVUYXNrKHZvaWQqIHVudHlwZWRDb250ZXh0KQogewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgp
KTsKIAogICAgIE93blB0cjxQZXJmb3JtVGFza0NvbnRleHQ+IGNvbnRleHQgPSBhZG9wdFB0cihz
dGF0aWNfY2FzdDxQZXJmb3JtVGFza0NvbnRleHQqPih1bnR5cGVkQ29udGV4dCkpOwogICAgIEFT
U0VSVChjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRl
eCA1NGU3ODE1Li4zNmU0ZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRp
b25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIu
Y3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHN0cnVjdCBNdXRhdGlvbk9ic2VydmVyOjpPYnNlcnZlckxl
c3NUaGFuIHsKIAogUGFzc1JlZlB0cjxNdXRhdGlvbk9ic2VydmVyPiBNdXRhdGlvbk9ic2VydmVy
OjpjcmVhdGUoUGFzc1JlZlB0cjxNdXRhdGlvbkNhbGxiYWNrPiBjYWxsYmFjaykKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNdXRhdGlvbk9ic2VydmVyKGNhbGxi
YWNrKSk7CiB9CiAKQEAgLTE2MCwxNCArMTYwLDE0IEBAIHN0YXRpYyBNdXRhdGlvbk9ic2VydmVy
U2V0JiBzdXNwZW5kZWRNdXRhdGlvbk9ic2VydmVycygpCiAKIHZvaWQgTXV0YXRpb25PYnNlcnZl
cjo6ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IG11dGF0
aW9uKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJD
b3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBtX3JlY29yZHMuYXBwZW5kKG11dGF0aW9uKTsK
ICAgICBhY3RpdmVNdXRhdGlvbk9ic2VydmVycygpLmFkZCh0aGlzKTsKIH0KIAogdm9pZCBNdXRh
dGlvbk9ic2VydmVyOjpzZXRIYXNUcmFuc2llbnRSZWdpc3RyYXRpb24oKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICBhY3RpdmVNdXRhdGlvbk9ic2VydmVycygpLmFkZCh0aGlzKTsKIH0KIApAQCAt
MjA5LDcgKzIwOSw3IEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlcigpCiAKIHZvaWQg
TXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFsbE11dGF0aW9ucygpCiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkp
OwogICAgIHN0YXRpYyBib29sIGRlbGl2ZXJ5SW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgIGlmIChk
ZWxpdmVyeUluUHJvZ3Jlc3MpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDk5NjY0
MjIuLjgwNzhlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtODU0LDEzICs4NTQsMTMgQEAgaW5saW5lIHZv
aWQgYWRkU3VicmVzb3VyY2VVUkwoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IEtVUkwm
IHVybCkKIAogaW5saW5lIHZvaWQgTm9kZTo6c2V0UGFyZW50T3JTaGFkb3dIb3N0Tm9kZShDb250
YWluZXJOb2RlKiBwYXJlbnQpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIG1fcGFyZW50T3JTaGFk
b3dIb3N0Tm9kZSA9IHBhcmVudDsKIH0KIAogaW5saW5lIENvbnRhaW5lck5vZGUqIE5vZGU6OnBh
cmVudE9yU2hhZG93SG9zdE5vZGUoKSBjb25zdAogewotICAgIEFTU0VSVChpc01haW5UaHJlYWRP
ckdDVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHRPckdD
VGhyZWFkKCkpOwogICAgIHJldHVybiBtX3BhcmVudE9yU2hhZG93SG9zdE5vZGU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA4MDIy
MjQzLi5iMzg4ZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpjcmVhdGVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQqIHBvcnQpCiB7CiAgICAgQVNTRVJUKHBv
cnQpOwogI2lmIEVOQUJMRShXT1JLRVJTKQotICAgIEFTU0VSVCgoaXNEb2N1bWVudCgpICYmIGlz
TWFpblRocmVhZCgpKQorICAgIEFTU0VSVCgoaXNEb2N1bWVudCgpICYmIGlzSW5XZWJDb3JlRXhl
Y3V0aW9uQ29udGV4dCgpKQogICAgICAgICB8fCAoaXNXb3JrZXJDb250ZXh0KCkgJiYgY3VycmVu
dFRocmVhZCgpID09IHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPih0aGlzKS0+dGhyZWFkKCkt
PnRocmVhZElEKCkpKTsKICNlbmRpZgogCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCogcG9ydCkK
IHsKICAgICBBU1NFUlQocG9ydCk7CiAjaWYgRU5BQkxFKFdPUktFUlMpCi0gICAgQVNTRVJUKChp
c0RvY3VtZW50KCkgJiYgaXNNYWluVGhyZWFkKCkpCisgICAgQVNTRVJUKChpc0RvY3VtZW50KCkg
JiYgaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHx8IChpc1dvcmtlckNv
bnRleHQoKSAmJiBjdXJyZW50VGhyZWFkKCkgPT0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+
KHRoaXMpLT50aHJlYWQoKS0+dGhyZWFkSUQoKSkpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCmluZGV4IGFmZTViNjYu
LmJlMzljN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJs
b2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5LmNwcApAQCAtODksNyArODksNyBAQCBzdGF0aWMgdm9pZCByZWdpc3RlckJsb2JV
UkxUYXNrKHZvaWQqIGNvbnRleHQpCiAKIHZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4gYmxvYkRh
dGEpCiB7Ci0gICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgIGlmIChpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSkKICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVy
bCwgYmxvYkRhdGEpOwogICAgIGVsc2UgewogICAgICAgICBPd25QdHI8QmxvYlJlZ2lzdHJ5Q29u
dGV4dD4gY29udGV4dCA9IGFkb3B0UHRyKG5ldyBCbG9iUmVnaXN0cnlDb250ZXh0KHVybCwgYmxv
YkRhdGEpKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBLVVJMJgogICAg
IGlmIChvcmlnaW4gJiYgQmxvYlVSTDo6Z2V0T3JpZ2luKHVybCkgPT0gIm51bGwiKQogICAgICAg
ICBvcmlnaW5NYXAoKS0+YWRkKHVybC5zdHJpbmcoKSwgb3JpZ2luKTsKIAotICAgIGlmIChpc01h
aW5UaHJlYWQoKSkKKyAgICBpZiAoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpCiAgICAg
ICAgIGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHNyY1VSTCk7CiAgICAgZWxz
ZSB7CiAgICAgICAgIE93blB0cjxCbG9iUmVnaXN0cnlDb250ZXh0PiBjb250ZXh0ID0gYWRvcHRQ
dHIobmV3IEJsb2JSZWdpc3RyeUNvbnRleHQodXJsLCBzcmNVUkwpKTsKQEAgLTEyOCw3ICsxMjgs
NyBAQCB2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0
IEtVUkwmIHVybCkKICAgICBpZiAoQmxvYlVSTDo6Z2V0T3JpZ2luKHVybCkgPT0gIm51bGwiKQog
ICAgICAgICBvcmlnaW5NYXAoKS0+cmVtb3ZlKHVybC5zdHJpbmcoKSk7CiAKLSAgICBpZiAoaXNN
YWluVGhyZWFkKCkpCisgICAgaWYgKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKQogICAg
ICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxvYlVSTCh1cmwpOwogICAgIGVsc2Ugewog
ICAgICAgICBPd25QdHI8QmxvYlJlZ2lzdHJ5Q29udGV4dD4gY29udGV4dCA9IGFkb3B0UHRyKG5l
dyBCbG9iUmVnaXN0cnlDb250ZXh0KHVybCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9ET01VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCmluZGV4IGY2
NTg2MjYuLmZkZDI3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogU3RyaW5nIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1lZGlhU291cmNlKiBz
b3VyY2UpCiB7CiAgICAgLy8gU2luY2UgV2ViV29ya2VycyBjYW5ub3Qgb2J0YWluIE1lZGlhU291
cmNlIG9iamVjdHMsIHdlIHNob3VsZCBiZSBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0
KCkpOwogCiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8ICFzb3VyY2UpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTg1LDcgKzg1LDcgQEAgU3RyaW5nIERPTVVSTDo6Y3Jl
YXRlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIE0KICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgLy8gU2luY2UgV2ViV29ya2Vy
cyBjYW5ub3Qgb2J0YWluIFN0cmVhbSBvYmplY3RzLCB3ZSBzaG91bGQgYmUgb24gdGhlIG1haW4g
dGhyZWFkLgotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJD
b3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIE1lZGlhU3RyZWFtUmVnaXN0cnk6OnJlZ2lz
dHJ5KCkucmVnaXN0ZXJNZWRpYVN0cmVhbVVSTChwdWJsaWNVUkwsIHN0cmVhbSk7CiAgICAgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+cHVibGljVVJMTWFuYWdlcigpLnN0cmVhbVVSTHMoKS5hZGQo
cHVibGljVVJMLnN0cmluZygpKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIERPTVVSTDo6cmV2
b2tlT2JqZWN0VVJMKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIGNvbgogICAgIGlmIChzdHJlYW1VUkxzLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpIHsKICAg
ICAgICAgLy8gRklYTUU6IG1ha2Ugc3VyZSBvZiB0aGlzIGFzc2VydGlvbiBiZWxvdy4gUmFpc2Ug
YSBzcGVjIHF1ZXN0aW9uIGlmIHJlcXVpcmVkLgogICAgICAgICAvLyBTaW5jZSBXZWJXb3JrZXJz
IGNhbm5vdCBvYnRhaW4gU3RyZWFtIG9iamVjdHMsIHdlIHNob3VsZCBiZSBvbiB0aGUgbWFpbiB0
aHJlYWQuCi0gICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgICAgIE1lZGlhU3RyZWFtUmVnaXN0
cnk6OnJlZ2lzdHJ5KCkudW5yZWdpc3Rlck1lZGlhU3RyZWFtVVJMKHVybCk7CiAgICAgICAgIHN0
cmVhbVVSTHMucmVtb3ZlKHVybC5zdHJpbmcoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggZTc4ZTVjNy4uZGI2MWRhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBA
IC0xMzQsNyArMTM0LDcgQEAgc3RhdGljIGJvb2wgaXNGb3JtYXR0aW5nVGFnKGNvbnN0IEF0b21p
Y1N0cmluZyYgdGFnTmFtZSkKIAogc3RhdGljIEhUTUxGb3JtRWxlbWVudCogY2xvc2VzdEZvcm1B
bmNlc3RvcihFbGVtZW50KiBlbGVtZW50KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICB3aGlsZSAo
ZWxlbWVudCkgewogICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShmb3JtVGFnKSkKICAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihlbGVtZW50KTsK
QEAgLTI5Myw3ICsyOTMsNyBAQCBIVE1MVHJlZUJ1aWxkZXI6OkhUTUxUcmVlQnVpbGRlcihIVE1M
RG9jdW1lbnRQYXJzZXIqIHBhcnNlciwgRG9jdW1lbnRGcmFnbWVudCogZgogICAgICwgbV9zY3Jp
cHRUb1Byb2Nlc3NTdGFydFBvc2l0aW9uKHVuaW5pdGlhbGl6ZWRQb3NpdGlvblZhbHVlMSgpKQog
ICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIC8vIEZJWE1F
OiBUaGlzIGFzc2VydGlvbiB3aWxsIGJlY29tZSBpbnZhbGlkIGlmIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzYwMzE2PiBpcyBmaXhlZC4KICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwogICAgIGlm
IChjb250ZXh0RWxlbWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvWFNTQXVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
LmNwcAppbmRleCA2OWQwMzNjLi5kOTI5OWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgWFNTQXVkaXRvcjo6aW5p
dChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgY29uc3Qgc2l6ZV90IG1pbml1bUxlbmd0aEZvclN1
ZmZpeFRyZWUgPSA1MTI7IC8vIEZJWE1FOiBUdW5lIHRoaXMgcGFyYW1ldGVyLgogICAgIGNvbnN0
IGludCBzdWZmaXhUcmVlRGVwdGggPSA1OwogCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGlmIChtX3N0
YXRlID09IEluaXRpYWxpemVkKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKG1fc3RhdGUg
PT0gVW5pbml0aWFsaXplZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNT
QXVkaXRvckRlbGVnYXRlLmNwcAppbmRleCA1ZDRmYTU5Li40MGEwZWMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKQEAgLTUwLDEz
ICs1MCwxMyBAQCBYU1NBdWRpdG9yRGVsZWdhdGU6OlhTU0F1ZGl0b3JEZWxlZ2F0ZShEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9kaWROb3Rp
ZnlDbGllbnQoZmFsc2UpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NF
UlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChtX2RvY3VtZW50
KTsKIH0KIAogdm9pZCBYU1NBdWRpdG9yRGVsZWdhdGU6OmRpZEJsb2NrU2NyaXB0KGNvbnN0IFhT
U0luZm8mIHhzc0luZm8pCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NF
UlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgLy8gRklYTUU6IENvbnNp
ZGVyIHVzaW5nIGEgbW9yZSBoZWxwZnVsIGNvbnNvbGUgbWVzc2FnZS4KICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlJlZnVzZWQg
dG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91
bmQgd2l0aGluIHJlcXVlc3QuXG4iKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvdW50ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ291bnRlcnMuaAppbmRleCAxOGU5ZTgwLi5iNTBkNWYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ291bnRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ291bnRlcnMuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGlubGluZSB2b2lkIGluY3JlbWVudENvdW50ZXIoQ291bnRlclR5cGUg
dHlwZSkKICAgICB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgp
KTsKICAgICAgICAgKytzX2NvdW50ZXJzW3R5cGVdOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BB
UkFNKHR5cGUpOwpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGlubGluZSB2
b2lkIGRlY3JlbWVudENvdW50ZXIoQ291bnRlclR5cGUgdHlwZSkKICAgICB7CiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNT
RVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgLS1zX2NvdW50ZXJz
W3R5cGVdOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHR5cGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuY3BwCmluZGV4IGExYjdhMzQu
LjljZjZkMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50
aW5nQWdlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGlu
Z0FnZW50cy5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIEluc3RydW1lbnRpbmdBZ2VudHM6
OnJlc2V0KCkKIAogSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGF0aW9uRm9yUGFnZShQ
YWdlKiBwYWdlKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxl
ciogY29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSkKICAgICAgICAgcmV0
dXJuIGNvbnRyb2xsZXItPm1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKTsKICAgICByZXR1cm4g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlLmNwcAppbmRleCA5ZDUxYzg3Li5iNmNhMjVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2Fj
aGUuY3BwCkBAIC0xNTAsMTkgKzE1MCwxOSBAQCBib29sIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGVJdGVtOjphbGxvd3NSZXF1ZXN0KFN0b3JlZENyZWRlbnRpYWxzIGluY2x1ZAogQ3Jv
c3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZSYgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZTo6c2hhcmVkKCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENyb3NzT3JpZ2luUHJl
ZmxpZ2h0UmVzdWx0Q2FjaGUsIGNhY2hlLCAoKSk7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHJldHVy
biBjYWNoZTsKIH0KIAogdm9pZCBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlOjphcHBl
bmRFbnRyeShjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgS1VSTCYgdXJsLCBQYXNzT3duUHRy
PENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPiBwcmVmbGlnaHRSZXN1bHQpCiB7
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVj
dXRpb25Db250ZXh0KCkpOwogICAgIG1fcHJlZmxpZ2h0SGFzaE1hcC5zZXQobWFrZV9wYWlyKG9y
aWdpbiwgdXJsKSwgcHJlZmxpZ2h0UmVzdWx0KTsKIH0KIAogYm9vbCBDcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlOjpjYW5Ta2lwUHJlZmxpZ2h0KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBj
b25zdCBLVVJMJiB1cmwsIFN0b3JlZENyZWRlbnRpYWxzIGluY2x1ZGVDcmVkZW50aWFscywgY29u
c3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzKQog
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhl
Y3V0aW9uQ29udGV4dCgpKTsKICAgICBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdEhhc2hNYXA6
Oml0ZXJhdG9yIGNhY2hlSXQgPSBtX3ByZWZsaWdodEhhc2hNYXAuZmluZChtYWtlX3BhaXIob3Jp
Z2luLCB1cmwpKTsKICAgICBpZiAoY2FjaGVJdCA9PSBtX3ByZWZsaWdodEhhc2hNYXAuZW5kKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBib29sIENyb3NzT3Jp
Z2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmNhblNraXBQcmVmbGlnaHQoY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbgogCiB2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmVtcHR5
KCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgbV9wcmVmbGlnaHRIYXNoTWFwLmNsZWFyKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAK
aW5kZXggYjRjZGExYS4uYzU1NTg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOjpIb3N0SW5mb3JtYXRpb24qIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6aG9zdEZvclVS
TChjb25zdAogCiBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHJlc291cmNlTG9hZFNjaGVkdWxlcigp
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIHN0YXRpYyBSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIGds
b2JhbFNjaGVkdWxlciA9IDA7CiAgICAgCiAgICAgaWYgKCFnbG9iYWxTY2hlZHVsZXIpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRl
eCA0NDYxODg5Li4xMmIxMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgV29ya2VyVGhyZWFkYWJs
ZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6fk1haW5UaHJlYWRCcmlkZ2UoKQogCiB2b2lkIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVM
b2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWFpblRocmVhZEJyaWRnZSog
dGhpc1B0ciwgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IHJlcXVl
c3REYXRhLCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91
dGdvaW5nUmVmZXJyZXIpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NF
UlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KTsKIApAQCAtMTIxLDcgKzEy
MSw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFp
blRocmVhZENyZWF0ZUxvYWRlcihTY3JpcHRFeGVjCiAKIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZERlc3Ryb3koU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgTWFpblRocmVhZEJyaWRnZSogdGhpc1B0cikKIHsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHQoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkp
OwogICAgIGRlbGV0ZSB0aGlzUHRyOwogfQpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGVzdHJveSgpCiAKIHZvaWQgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENhbmNlbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBNYWluVGhyZWFkQnJpZGdlKiB0aGlzUHRy
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQt
PmlzRG9jdW1lbnQoKSk7CiAKICAgICBpZiAoIXRoaXNQdHItPm1fbWFpblRocmVhZExvYWRlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAKaW5kZXggMmVlOWRlOC4uZTA4OTRlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
QEAgLTExMTQsNyArMTExNCw3IEBAIHByaXZhdGU6CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdy
b3VwOjpzY2hlZHVsZVJlYWNoZWRNYXhBcHBDYWNoZVNpemVDYWxsYmFjaygpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIENocm9tZUNsaWVudENhbGxiYWNrVGltZXIqIHRpbWVyID0gbmV3IENocm9t
ZUNsaWVudENhbGxiYWNrVGltZXIodGhpcyk7CiAgICAgdGltZXItPnN0YXJ0T25lU2hvdCgwKTsK
ICAgICAvLyBUaGUgdGltZXIgd2lsbCBkZWxldGUgaXRzZWxmIG9uY2UgaXQgZmlyZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCAxZGYwZWRkLi4y
ODM4Yjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAK
QEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBjRGVmYXVsdERlY29kZWREYXRh
RGVsZXRpb25JbnRlcnZhbCA9IDA7CiBNZW1vcnlDYWNoZSogbWVtb3J5Q2FjaGUoKQogewogICAg
IHN0YXRpYyBNZW1vcnlDYWNoZSogc3RhdGljQ2FjaGUgPSBuZXcgTWVtb3J5Q2FjaGU7Ci0gICAg
QVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChXVEY6OmlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIHJldHVybiBzdGF0aWNDYWNoZTsKIH0KQEAgLTEw
MCw3ICsxMDAsNyBAQCBib29sIE1lbW9yeUNhY2hlOjphZGQoQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlKQogICAgIGlmIChkaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBB
U1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFdURjo6aXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgbV9yZXNvdXJjZXMuc2V0KHJlc291cmNlLT51cmwo
KSwgcmVzb3VyY2UpOwogICAgIHJlc291cmNlLT5zZXRJbkNhY2hlKHRydWUpOwpAQCAtMTQ1LDcg
KzE0NSw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJldmFsaWRhdGlvblN1Y2NlZWRlZChDYWNoZWRS
ZXNvdXJjZSogcmV2YWxpZGF0aW5nUmVzb3VyY2UsIGNvCiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnJl
dmFsaWRhdGlvbkZhaWxlZChDYWNoZWRSZXNvdXJjZSogcmV2YWxpZGF0aW5nUmVzb3VyY2UpCiB7
Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChXVEY6OmlzSW5X
ZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmV2
YWxpZGF0aW9uIGZhaWxlZCBmb3IgJXAiLCByZXZhbGlkYXRpbmdSZXNvdXJjZSk7CiAgICAgQVNT
RVJUKHJldmFsaWRhdGluZ1Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKTsKICAgICBy
ZXZhbGlkYXRpbmdSZXNvdXJjZS0+Y2xlYXJSZXNvdXJjZVRvUmV2YWxpZGF0ZSgpOwpAQCAtMTUz
LDcgKzE1Myw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJldmFsaWRhdGlvbkZhaWxlZChDYWNoZWRS
ZXNvdXJjZSogcmV2YWxpZGF0aW5nUmVzb3VyY2UpCiAKIENhY2hlZFJlc291cmNlKiBNZW1vcnlD
YWNoZTo6cmVzb3VyY2VGb3JVUkwoY29uc3QgS1VSTCYgcmVzb3VyY2VVUkwpCiB7Ci0gICAgQVNT
RVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChXVEY6OmlzSW5XZWJDb3JlRXhl
Y3V0aW9uQ29udGV4dCgpKTsKICAgICBLVVJMIHVybCA9IHJlbW92ZUZyYWdtZW50SWRlbnRpZmll
cklmTmVlZGVkKHJlc291cmNlVVJMKTsKICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBt
X3Jlc291cmNlcy5nZXQodXJsKTsKICAgICBib29sIHdhc1B1cmdlYWJsZSA9IE1lbW9yeUNhY2hl
OjpzaG91bGRNYWtlUmVzb3VyY2VQdXJnZWFibGVPbkV2aWN0aW9uKCkgJiYgcmVzb3VyY2UgJiYg
cmVzb3VyY2UtPmlzUHVyZ2VhYmxlKCk7CkBAIC0zODgsNyArMzg4LDcgQEAgYm9vbCBNZW1vcnlD
YWNoZTo6bWFrZVJlc291cmNlUHVyZ2VhYmxlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIAog
dm9pZCBNZW1vcnlDYWNoZTo6ZXZpY3QoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogewotICAg
IEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoV1RGOjppc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkV2aWN0aW5n
IHJlc291cmNlICVwIGZvciAnJXMnIGZyb20gY2FjaGUiLCByZXNvdXJjZSwgcmVzb3VyY2UtPnVy
bCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgLy8gVGhlIHJlc291cmNlIG1heSBo
YXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGJ5IHNvbWVvbmUgb3RoZXIgdGhhbiBvdXIgY2FsbGVy
LAogICAgIC8vIHdobyBuZWVkZWQgYSBmcmVzaCBjb3B5IGZvciBhIHJlbG9hZC4gU2VlIDxodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ3OSNjNj4uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCBiM2I2N2JmLi5iYzE0OTUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTgw
Niw3ICs4MDYsNyBAQCBJY29uRGF0YWJhc2U6Okljb25EYXRhYmFzZSgpCiAgICAgLCBtX2NsaWVu
dChkZWZhdWx0Q2xpZW50KCkpCiB7CiAgICAgTE9HKEljb25EYXRhYmFzZSwgIkNyZWF0aW5nIElj
b25EYXRhYmFzZSAlcCIsIHRoaXMpOwotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KIAogSWNvbkRhdGFiYXNl
Ojp+SWNvbkRhdGFiYXNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAxY2NiZjNj
Li45OWRmMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC05MjAsNyArOTIwLDcg
QEAgdm9pZCBET01XaW5kb3c6OmZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiAKICAgICBib29sIGFsbG93Rm9jdXMgPSBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3I6Ondp
bmRvd0ZvY3VzQWxsb3dlZCgpIHx8ICFtX2ZyYW1lLT5zZXR0aW5ncygpLT53aW5kb3dGb2N1c1Jl
c3RyaWN0ZWQoKTsKICAgICBpZiAoY29udGV4dCkgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgICAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgICAgICBEb2N1bWVudCogYWN0aXZlRG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KGNvbnRleHQpOwogICAgICAgICBpZiAob3BlbmVyKCkgJiYgYWN0aXZlRG9jdW1lbnQtPmRvbVdp
bmRvdygpID09IG9wZW5lcigpKQogICAgICAgICAgICAgYWxsb3dGb2N1cyA9IHRydWU7CkBAIC05
NjgsNyArOTY4LDcgQEAgdm9pZCBET01XaW5kb3c6OmNsb3NlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChjb250ZXh0KSB7Ci0gICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChpc0luV2ViQ29yZUV4
ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgICAgIERvY3VtZW50KiBhY3RpdmVEb2N1bWVudCA9IHN0
YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CiAgICAgICAgIGlmICghYWN0aXZlRG9jdW1l
bnQpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0hpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAppbmRleCA4N2Q4
NTA2Li4yZTYwNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKQEAgLTExNSw3ICsxMTUsNyBA
QCB2b2lkIEhpc3Rvcnk6OmdvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGludCBk
aXN0YW5jZSkKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICBEb2N1bWVudCogYWN0aXZlRG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KGNvbnRleHQpOwogICAgIGlmICghYWN0aXZlRG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5SW5mby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lbW9yeUluZm8uY3BwCmluZGV4IDgzNmVjMzMuLmFmOWMyNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5SW5mby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9NZW1vcnlJbmZvLmNwcApAQCAtOTIsNyArOTIsNyBAQCBzaXplX3QgcXVhbnRp
emVNZW1vcnlTaXplKHNpemVfdCBzaXplKQogICAgIGNvbnN0IGludCBudW1iZXJPZkJ1Y2tldHMg
PSAxMDA7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8c2l6ZV90PiwgYnVja2V0U2l6
ZUxpc3QsICgpKTsKIAotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBpZiAoYnVja2V0U2l6ZUxpc3QuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGJ1Y2tldFNpemVMaXN0LnJlc2l6ZShudW1iZXJPZkJ1Y2tldHMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDViMzZmNGYuLjg2
MmFiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0xMjUsNyAr
MTI1LDcgQEAgYm9vbCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NUb1VSTFdoaXRlTGlzdGVkKGNv
bnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVPcmlnaW4KIAogdm9pZCBTZWN1cml0eVBvbGljeTo6
YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJj
ZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0
aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoIXNvdXJjZU9yaWdpbi5pc1VuaXF1ZSgpKTsKICAg
ICBpZiAoc291cmNlT3JpZ2luLmlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE0MSw3
ICsxNDEsNyBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlTwogCiB2b2lkIFNlY3VyaXR5UG9saWN5
OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYg
c291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVCghc291cmNlT3JpZ2luLmlzVW5pcXVlKCkp
OwogICAgIGlmIChzb3VyY2VPcmlnaW4uaXNVbmlxdWUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTY1LDcgKzE2NSw3IEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyCiAKIHZvaWQgU2VjdXJpdHlQ
b2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpCiB7Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgIG9yaWdpbkFjY2Vzc01hcCgpLmNsZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA0NTE1MGU0Li5jY2VhNWY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC0zOTAsMTQgKzM5MCwxNCBA
QCBzdGF0aWMgdm9pZCBzZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwoTlNTY3Jv
bGxWaWV3ICosIFNFTCwgTlNFdmVudCAqKQogCiBzdGF0aWMgYm9vbCBuc1Njcm9sbFZpZXdTY3Jv
bGxXaGVlbFNob3VsZFJldGFpblNlbGYoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIHJldHVy
biBfbnNTY3JvbGxWaWV3U2Nyb2xsV2hlZWxTaG91bGRSZXRhaW5TZWxmOwogfQogCiBzdGF0aWMg
dm9pZCBzZXROU1Njcm9sbFZpZXdTY3JvbGxXaGVlbFNob3VsZFJldGFpblNlbGYoYm9vbCBzaG91
bGRSZXRhaW4pCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJ
bldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgaWYgKCFvcmlnaW5hbE5TU2Nyb2xs
Vmlld1Njcm9sbFdoZWVsKSB7CiAgICAgICAgIE1ldGhvZCBtZXRob2QgPSBjbGFzc19nZXRJbnN0
YW5jZU1ldGhvZChvYmpjX2dldFJlcXVpcmVkQ2xhc3MoIk5TU2Nyb2xsVmlldyIpLCBAc2VsZWN0
b3Ioc2Nyb2xsV2hlZWw6KSk7CkBAIC00MDksNyArNDA5LDcgQEAgc3RhdGljIHZvaWQgc2V0TlNT
Y3JvbGxWaWV3U2Nyb2xsV2hlZWxTaG91bGRSZXRhaW5TZWxmKGJvb2wgc2hvdWxkUmV0YWluKQog
CiBzdGF0aWMgdm9pZCBzZWxmUmV0YWluaW5nTlNTY3JvbGxWaWV3U2Nyb2xsV2hlZWwoTlNTY3Jv
bGxWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIE5TRXZlbnQgKmV2ZW50KQogewotICAgIGJvb2wg
c2hvdWxkUmV0YWluU2VsZiA9IGlzTWFpblRocmVhZCgpICYmIG5zU2Nyb2xsVmlld1Njcm9sbFdo
ZWVsU2hvdWxkUmV0YWluU2VsZigpOworICAgIGJvb2wgc2hvdWxkUmV0YWluU2VsZiA9IGlzSW5X
ZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpICYmIG5zU2Nyb2xsVmlld1Njcm9sbFdoZWVsU2hvdWxk
UmV0YWluU2VsZigpOwogCiAgICAgaWYgKHNob3VsZFJldGFpblNlbGYpCiAgICAgICAgIFtzZWxm
IHJldGFpbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggZjEyYzI4MC4uZDg4YWU3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnBhZ2VEZXN0
cm95ZWQoKQogCiBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb29yZGluYXRlc1Njcm9sbGlu
Z0ZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmlldykgY29uc3QKIHsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAKICAgICAvLyBXZSBjdXJyZW50bHkgb25seSBoYW5k
bGUgdGhlIG1haW4gZnJhbWUuCkBAIC0yNjUsNyArMjY1LDcgQEAgdW5zaWduZWQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OmNvbXB1dGVDdXJyZW50V2hlZWxFdmVudEhhbmRsZXJDb3VudCgpCiAKIHZv
aWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1doZWVsRXZlbnRIYW5kbGVyQ291bnRD
aGFuZ2VkKEZyYW1lVmlldyogZnJhbWVWaWV3KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NF
UlQobV9wYWdlKTsKIAogICAgIHJlY29tcHV0ZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRGb3JGcmFt
ZVZpZXcoZnJhbWVWaWV3KTsKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpmcmFtZVZpZXdXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZChGcmFtZVZpZXcq
IGZyYQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdIYXNTbG93UmVwYWlu
dE9iamVjdHNEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkp
OwogICAgIEFTU0VSVChtX3BhZ2UpOwogCiAgICAgaWYgKCFjb29yZGluYXRlc1Njcm9sbGluZ0Zv
ckZyYW1lVmlldyhmcmFtZVZpZXcpKQpAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OmZyYW1lVmlld0hhc1Nsb3dSZXBhaW50T2JqZWN0c0RpZENoYW5nZShGcmFt
ZVZpZXcqIGZyCiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0ZpeGVkT2Jq
ZWN0c0RpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmlldykKIHsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAg
ICAgQVNTRVJUKG1fcGFnZSk7CiAKICAgICBpZiAoIWNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJh
bWVWaWV3KGZyYW1lVmlldykpCkBAIC0zMjksNyArMzI5LDcgQEAgR3JhcGhpY3NMYXllciogU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OmNvdW50ZXJTY3JvbGxpbmdMYXllckZvckZyYW1lVmlldyhGcmFt
ZVZpZXcKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExheWVyRGlk
Q2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NF
UlQobV9wYWdlKTsKIAogICAgIGlmICghY29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXco
ZnJhbWVWaWV3KSkKQEAgLTM2OSw3ICszNjksNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
Ojp1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvblRpbWVyRmlyZWQoVGltZXI8U2Nyb2xsaQog
CiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxQb3NpdGlv
bihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgcHJvZ3JhbW1hdGljU2Nyb2xs
LCBTZXRPclN5bmNTY3JvbGxpbmdMYXllclBvc2l0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25B
Y3Rpb24pCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldl
YkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybjsKQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRh
dGVNYWluRnJhbWVTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUAogI2lmIFBM
QVRGT1JNKE1BQykgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJXSU4pKQogdm9pZCBT
Y3JvbGxpbmdDb29yZGluYXRvcjo6aGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxF
dmVudFBoYXNlIHBoYXNlKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIGlmICghbV9wYWdlKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWUuY3BwCmluZGV4IDcwZTY4OTkuLjA3MmMwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAg
dm9pZCBTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgd2hlZWxFdmVudCkKIAogc3RhdGljIHZvaWQgZGVyZWZTY3JvbGxpbmdDb29yZGluYXRv
cihTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogCiAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmRlcmVmKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWMubW0KaW5kZXggMzAwYTEyZC4uZmE3M2M0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRv
ck1hYy5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6
OmNvbW1pdFRyZWVTdGF0ZUlmTmVlZGVkKCkKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck1h
Yzo6ZnJhbWVWaWV3TGF5b3V0VXBkYXRlZChGcmFtZVZpZXcqIGZyYW1lVmlldykKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7CiAKICAgICAvLyBDb21wdXRlIHRoZSByZWdp
b24gb2YgdGhlIHBhZ2UgdGhhdCB3ZSBjYW4ndCBkbyBmYXN0IHNjcm9sbGluZyBmb3IuIFRoaXMg
Y3VycmVudGx5IGluY2x1ZGVzCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBTY3JvbGxpbmdDb29y
ZGluYXRvck1hYzo6cmVjb21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZyYW1lVmlldyhG
cmFtZVYKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6ZnJhbWVWaWV3Um9vdExheWVy
RGlkQ2hhbmdlKEZyYW1lVmlldyogZnJhbWVWaWV3KQogewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBB
U1NFUlQobV9wYWdlKTsKIAogICAgIGlmICghY29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZp
ZXcoZnJhbWVWaWV3KSkKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yTWFjOjpmcmFtZVZpZXdSb290TGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcp
CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmZyYW1lVmlld0hvcml6b250YWxTY3Jv
bGxiYXJMYXllckRpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmlldywgR3JhcGhpY3NMYXllciop
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwogCiAgICAgaWYgKGZyYW1l
Vmlldy0+ZnJhbWUoKSAhPSBtX3BhZ2UtPm1haW5GcmFtZSgpKQpAQCAtMTc5LDcgKzE3OSw3IEBA
IHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmZyYW1lVmlld0hvcml6b250YWxTY3JvbGxi
YXJMYXllckRpZENoYW5nZShGcmFtZVZpCiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6
OmZyYW1lVmlld1ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFt
ZVZpZXcsIEdyYXBoaWNzTGF5ZXIqKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQobV9w
YWdlKTsKICAgICAKICAgICBpZiAoZnJhbWVWaWV3LT5mcmFtZSgpICE9IG1fcGFnZS0+bWFpbkZy
YW1lKCkpCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6
ZnJhbWVWaWV3VmVydGljYWxTY3JvbGxiYXJMYXllckRpZENoYW5nZShGcmFtZVZpZXcKIAogYm9v
bCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6cmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKEZy
YW1lVmlldyogZnJhbWVWaWV3LCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRp
b25Db250ZXh0KCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwogCiAgICAgaWYgKCFjb29yZGluYXRl
c1Njcm9sbGluZ0ZvckZyYW1lVmlldyhmcmFtZVZpZXcpKQpAQCAtMjE1LDcgKzIxNSw3IEBAIGJv
b2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OnJlcXVlc3RTY3JvbGxQb3NpdGlvblVwZGF0ZShG
cmFtZVZpZXcqIGZyYW1lVmlldywKIAogYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFu
ZGxlV2hlZWxFdmVudChGcmFtZVZpZXcqLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVs
RXZlbnQpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldl
YkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChtX3BhZ2UpOwogCiAgICAgaWYg
KG1fc2Nyb2xsaW5nVHJlZS0+d2lsbFdoZWVsRXZlbnRTdGFydFN3aXBlR2VzdHVyZSh3aGVlbEV2
ZW50KSkKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpz
ZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKE1haQogCiB2b2lk
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjp1cGRhdGVNYWluRnJhbWVTY3JvbGxMYXllclBvc2l0
aW9uKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2Vi
Q29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAppbmRl
eCA4NjkxYWM4Li4xMzY0NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6
aXNTdXBwb3J0ZWRJbWFnZVJlc291cmNlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
IAogYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGVGb3JFbmNv
ZGluZyhjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIGlm
IChtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKaW5kZXggYmMxZDY1ZS4uMWU3MzFl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkR2xvYmFsRGF0YS5jcHAKQEAg
LTY1LDcgKzY1LDcgQEAgVGhyZWFkR2xvYmFsRGF0YTo6VGhyZWFkR2xvYmFsRGF0YSgpCiAgICAg
LCBtX3RocmVhZFRpbWVycyhhZG9wdFB0cihuZXcgVGhyZWFkVGltZXJzKSkKICAgICAsIG1feG1s
VHlwZVJlZ0V4cChhZG9wdFB0cihuZXcgWE1MTUlNRVR5cGVSZWdFeHApKQogI2lmbmRlZiBOREVC
VUcKLSAgICAsIG1faXNNYWluVGhyZWFkKGlzTWFpblRocmVhZCgpKQorICAgICwgbV9pc01haW5U
aHJlYWQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpCiAjZW5kaWYKICNpZiBVU0UoSUNV
X1VOSUNPREUpCiAgICAgLCBtX2NhY2hlZENvbnZlcnRlcklDVShhZG9wdFB0cihuZXcgSUNVQ29u
dmVydGVyV3JhcHBlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaHJl
YWRUaW1lcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGhyZWFkVGltZXJzLmNwcApp
bmRleCA0ZDg2NjA1Li4xNmZlYzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9UaHJlYWRUaW1lcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RocmVhZFRp
bWVycy5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgVGhyZWFkVGltZXJzOjpUaHJlYWRUaW1lcnMoKQog
ICAgIDogbV9zaGFyZWRUaW1lcigwKQogICAgICwgbV9maXJpbmdUaW1lcnMoZmFsc2UpCiB7Ci0g
ICAgaWYgKGlzTWFpblRocmVhZCgpKQorICAgIGlmIChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHQoKSkKICAgICAgICAgc2V0U2hhcmVkVGltZXIobWFpblRocmVhZFNoYXJlZFRpbWVyKCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKaW5kZXggOGEwMTk4Ni4uYmNkOTA4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaApAQCAtNDEsNyArNDEsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgICwgbV9hZG9wdGlvbklzUmVxdWlyZWQodHJ1ZSkKICNlbmRpZgog
ICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKGlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1f
ZGVsZXRpb25IYXNCZWd1biA9IGZhbHNlOwogICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5j
dGlvbiA9IGZhbHNlOwpAQCAtNTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB+VHJlZVNo
YXJlZCgpCiAgICAgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBB
U1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgICAgICBBU1NFUlQoIW1f
cmVmQ291bnQpOwogICAgICAgICBBU1NFUlQobV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAg
QVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7CkBAIC01OSw3ICs1OSw3IEBAIHByb3RlY3Rl
ZDoKIHB1YmxpYzoKICAgICB2b2lkIHJlZigpCiAgICAgewotICAgICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgICAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkp
OwogICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VSVCgh
bV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwogICAgICAgICBBU1NFUlQoIW1fYWRvcHRpb25J
c1JlcXVpcmVkKTsKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkZXJlZigp
CiAgICAgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQo
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgICAgICBBU1NFUlQobV9yZWZDb3Vu
dCA+PSAwKTsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICBB
U1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCmluZGV4IDQyZTAzNDEu
LmNmMTI1OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZE
YXRhYmFzZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkRhdGFiYXNlTG9hZGVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBIUlRGRGF0YWJhc2VMb2FkZXIq
IEhSVEZEYXRhYmFzZUxvYWRlcjo6c19sb2FkZXIgPSAwOwogCiBQYXNzUmVmUHRyPEhSVEZEYXRh
YmFzZUxvYWRlcj4gSFJURkRhdGFiYXNlTG9hZGVyOjpjcmVhdGVBbmRMb2FkQXN5bmNocm9ub3Vz
bHlJZk5lY2Vzc2FyeShmbG9hdCBzYW1wbGVSYXRlKQogewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAg
IFJlZlB0cjxIUlRGRGF0YWJhc2VMb2FkZXI+IGxvYWRlcjsKICAgICAKQEAgLTY0LDEyICs2NCwx
MiBAQCBIUlRGRGF0YWJhc2VMb2FkZXI6OkhSVEZEYXRhYmFzZUxvYWRlcihmbG9hdCBzYW1wbGVS
YXRlKQogICAgIDogbV9kYXRhYmFzZUxvYWRlclRocmVhZCgwKQogICAgICwgbV9kYXRhYmFzZVNh
bXBsZVJhdGUoc2FtcGxlUmF0ZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiB9CiAKIEhSVEZEYXRhYmFz
ZUxvYWRlcjo6fkhSVEZEYXRhYmFzZUxvYWRlcigpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAg
d2FpdEZvckxvYWRlclRocmVhZENvbXBsZXRpb24oKTsKICAgICBtX2hydGZEYXRhYmFzZS5jbGVh
cigpOwpAQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgdm9pZCBkYXRhYmFzZUxvYWRlckVudHJ5KHZv
aWQqIHRocmVhZERhdGEpCiAKIHZvaWQgSFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkKCkKIHsKLSAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIWlzSW5XZWJDb3JlRXhlY3V0
aW9uQ29udGV4dCgpKTsKICAgICBpZiAoIW1faHJ0ZkRhdGFiYXNlLmdldCgpKSB7CiAgICAgICAg
IC8vIExvYWQgdGhlIGRlZmF1bHQgSFJURiBkYXRhYmFzZS4KICAgICAgICAgbV9ocnRmRGF0YWJh
c2UgPSBIUlRGRGF0YWJhc2U6OmNyZWF0ZShtX2RhdGFiYXNlU2FtcGxlUmF0ZSk7CkBAIC05OSw3
ICs5OSw3IEBAIHZvaWQgSFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkKCkKIAogdm9pZCBIUlRGRGF0
YWJhc2VMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdGhyZWFkTG9jayk7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVk
aWFTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IDE1YTczYjkuLjcyNzBiNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
TWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBDb25zdW1lcldy
YXBwZXI6OmNvbnN1bWVBdWRpbyhBdWRpb0J1cyogYnVzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMp
CiAKIHZvaWQgV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OmFkZEF1ZGlvQ29uc3VtZXIoV2ViQXVkaW9E
ZXN0aW5hdGlvbkNvbnN1bWVyKiBjb25zdW1lcikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNT
RVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkgJiYgY29uc3VtZXIpOwogCiAgICAgbV9wcml2YXRlLT5h
ZGRBdWRpb0NvbnN1bWVyKENvbnN1bWVyV3JhcHBlcjo6Y3JlYXRlKGNvbnN1bWVyKSk7CkBAIC0x
OTUsNyArMTk1LDcgQEAgdm9pZCBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6YWRkQXVkaW9Db25zdW1l
cihXZWJBdWRpb0Rlc3RpbmF0aW9uQ29uc3VtZXIqIGNvbnN1bWUKIAogYm9vbCBXZWJNZWRpYVN0
cmVhbVNvdXJjZTo6cmVtb3ZlQXVkaW9Db25zdW1lcihXZWJBdWRpb0Rlc3RpbmF0aW9uQ29uc3Vt
ZXIqIGNvbnN1bWVyKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoIW1fcHJpdmF0ZS5p
c051bGwoKSAmJiBjb25zdW1lcik7CiAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEF1ZGlvRGVz
dGluYXRpb25Db25zdW1lcj4gPiYgY29uc3VtZXJzID0gbV9wcml2YXRlLT5hdWRpb0NvbnN1bWVy
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL01JTUVUeXBlUmVn
aXN0cnlFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL01JTUVUeXBlUmVnaXN0
cnlFZmwuY3BwCmluZGV4IDU0MGJiMmQuLjk0OTQwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9NSU1FVHlwZVJlZ2lzdHJ5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvTUlNRVR5cGVSZWdpc3RyeUVmbC5jcHAKQEAgLTc3LDcgKzc3LDcg
QEAgc3RhdGljIGNvbnN0IEV4dGVuc2lvbk1hcCBleHRlbnNpb25NYXBbXSA9IHsKIAogU3RyaW5n
IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyAm
ZXh0KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJD
b3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIFN0cmluZyBzID0gZXh0Lmxvd2VyKCk7CiAg
ICAgY29uc3QgRXh0ZW5zaW9uTWFwICplID0gZXh0ZW5zaW9uTWFwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAppbmRleCA3YjczZTJjLi43MzA4OGI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcApAQCAtMzA2LDcgKzMwNiw3IEBA
IHN0YXRpYyBib29sIHNob3VsZFVzZUZvbnRTbW9vdGhpbmcgPSB0cnVlOwogCiB2b2lkIEZvbnQ6
OnNldFNob3VsZFVzZVNtb290aGluZyhib29sIHNob3VsZFVzZVNtb290aGluZykKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAgICAgc2hvdWxkVXNlRm9udFNtb290aGluZyA9IHNob3VsZFVzZVNtb290aGlu
ZzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dEZhbGxiYWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZh
bGxiYWNrTGlzdC5oCmluZGV4IDAwNGE1M2EuLjA5MzcxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYWxsYmFja0xpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFsbGJhY2tMaXN0LmgKQEAgLTg3LDcgKzg3
LDcgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBwcmltYXJ5U2ltcGxl
Rm9udERhdGEoY29uc3QgRm9udCogZikKICAgICB7IAotICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgICAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgICAgICBpZiAoIW1fY2FjaGVkUHJpbWFyeVNpbXBsZUZvbnREYXRhKQogICAgICAgICAgICAg
bV9jYWNoZWRQcmltYXJ5U2ltcGxlRm9udERhdGEgPSBwcmltYXJ5Rm9udERhdGEoZiktPmZvbnRE
YXRhRm9yQ2hhcmFjdGVyKCcgJyk7CiAgICAgICAgIHJldHVybiBtX2NhY2hlZFByaW1hcnlTaW1w
bGVGb250RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRGYXN0UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
RmFzdFBhdGguY3BwCmluZGV4IDlhOTQ1Y2EuLjVhNTAwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcApAQCAtMTIwLDcgKzEyMCw3
IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpwYWlyPEdseXBoRGF0YSwgR2x5cGhQYWdlKj4gZ2x5cGhE
YXRhQW5kUGFnZUZvck5vbkNKS0NoYXJhY3RlCiAKIHN0ZDo6cGFpcjxHbHlwaERhdGEsIEdseXBo
UGFnZSo+IEZvbnQ6OmdseXBoRGF0YUFuZFBhZ2VGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjLCBib29s
IG1pcnJvciwgRm9udERhdGFWYXJpYW50IHZhcmlhbnQpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkp
OwogCiAgICAgaWYgKHZhcmlhbnQgPT0gQXV0b1ZhcmlhbnQpIHsKICAgICAgICAgaWYgKG1fZm9u
dERlc2NyaXB0aW9uLnNtYWxsQ2FwcygpICYmICFwcmltYXJ5Rm9udCgpLT5pc1NWR0ZvbnQoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDE3MTg4
ODQuLmM0ZjVlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHAKQEAgLTU4LDcgKzU4LDcgQEAgSW1hZ2U6On5JbWFnZSgpCiAKIEltYWdlKiBJbWFnZTo6bnVs
bEltYWdlKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0lu
V2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQ
dHI8SW1hZ2U+LCBudWxsSW1hZ2UsIChCaXRtYXBJbWFnZTo6Y3JlYXRlKCkpKTs7CiAgICAgcmV0
dXJuIG51bGxJbWFnZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggNGQ2NGJhMS4uNTU2MTFhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5jcHAKQEAgLTcwNCw3ICs3MDQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbgogICAgIC8v
IHNvIGFsd2F5cyBnbyB0aHJvdWdoIHRoZSBxdWV1ZSBiZWNhdXNlIG5vdGlmaWNhdGlvbnMgaGFw
cGVuIG9uIGRpZmZlcmVudCB0aHJlYWRzLgogICAgIG1fcXVldWVkTm90aWZpY2F0aW9ucy5hcHBl
bmQobm90aWZpY2F0aW9uKTsKIAotICAgIGJvb2wgZGVsYXlEaXNwYXRjaCA9IG1fZGVsYXlDYWxs
YmFja3MgfHwgIWlzTWFpblRocmVhZCgpOworICAgIGJvb2wgZGVsYXlEaXNwYXRjaCA9IG1fZGVs
YXlDYWxsYmFja3MgfHwgIWlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChk
ZWxheURpc3BhdGNoICYmICFtX21haW5UaHJlYWRDYWxsUGVuZGluZykgewogICAgICAgICBtX21h
aW5UaHJlYWRDYWxsUGVuZGluZyA9IHRydWU7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQobWFp
blRocmVhZENhbGxiYWNrLCB0aGlzKTsKQEAgLTcyMiw3ICs3MjIsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5v
dGlmaWNhdGlvbgogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZGlzcGF0
Y2hOb3RpZmljYXRpb24oKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIE5vdGlmaWNhdGlvbiBu
b3RpZmljYXRpb24gPSBOb3RpZmljYXRpb24oKTsKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNhY2hlLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1RpbGVDYWNoZS5tbQppbmRleCBmYzQwNTNj
Li5lY2VhMzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvVGlsZUNhY2hlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL21hYy9UaWxlQ2FjaGUubW0KQEAgLTEyNCw3ICsxMjQsNyBAQCBUaWxlQ2FjaGU6OlRpbGVD
YWNoZShXZWJUaWxlQ2FjaGVMYXllciogdGlsZUNhY2hlTGF5ZXIpCiAKIFRpbGVDYWNoZTo6flRp
bGVDYWNoZSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJ
bldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgZm9yIChUaWxlTWFwOjppdGVyYXRv
ciBpdCA9IG1fdGlsZXMuYmVnaW4oKSwgZW5kID0gbV90aWxlcy5lbmQoKTsgaXQgIT0gZW5kOyAr
K2l0KSB7CiAgICAgICAgIGNvbnN0IFRpbGVJbmZvJiB0aWxlSW5mbyA9IGl0LT52YWx1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9XZWJUaWxl
Q2FjaGVMYXllci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9X
ZWJUaWxlQ2FjaGVMYXllci5tbQppbmRleCBkMTE5ZjViLi45ZmE1MWQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZUNhY2hlTGF5ZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVD
YWNoZUxheWVyLm1tCkBAIC0xMjQsNyArMTI0LDcgQEAgLSAoV2ViQ29yZTo6VGlsZWRCYWNraW5n
Kil0aWxlZEJhY2tpbmcKIAogLSAodm9pZClpbnZhbGlkYXRlCiB7Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgIEFTU0VSVChfdGlsZUNhY2hlKTsKICAgICBfdGlsZUNhY2hlID0gbnVsbHB0cjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCmluZGV4IDE1Mjc1YjMuLjgy
MmNhNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcApAQCAt
NjMsNyArNjMsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6flBsYXRmb3JtQ0FMYXll
cldpbkludGVybmFsKCkKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6ZGlzcGxh
eUNhbGxiYWNrKENBQ0ZMYXllclJlZiBjYUxheWVyLCBDR0NvbnRleHRSZWYgY29udGV4dCkKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAgICAgCiAgICAgaWYgKCFvd25lcigpIHx8ICFvd25lcigpLT5vd25l
cigpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1dLQ0FDRlZpZXdMYXllclRyZWVIb3N0LmNw
cAppbmRleCBkOTQ1YzNlLi40ZmY1ZDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmlld0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVl
SG9zdC5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFdLQ0FDRlZpZXdMYXllclRyZWVIb3N0
Ojpjb250ZXh0RGlkQ2hhbmdlKCkKICAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBv
biBhIGJhY2tncm91bmQgdGhyZWFkIHdoZW4gbm8gY2hhbmdlcyBoYXZlIGFjdHVhbGx5IAogICAg
IC8vIGJlZW4gY29tbWl0dGVkIHRvIHRoZSBjb250ZXh0LCBlZy4gd2hlbiBhIHZpZGVvIGZyYW1l
IGhhcyBiZWVuIGFkZGVkIHRvIGFuIGltYWdlCiAgICAgLy8gcXVldWUsIHNvIHJldHVybiB3aXRo
b3V0IHRyaWdnZXJpbmcgYW5pbWF0aW9ucyBldGMuCi0gICAgaWYgKCFpc01haW5UaHJlYWQoKSkK
KyAgICBpZiAoIWlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBUZWxsIHRoZSBXS0NBQ0ZWaWV3IHRvIHN0YXJ0IHJlbmRlcmluZyBub3cgdGhh
dCB3ZSBoYXZlIHNvbWUgY29udGVudHMgdG8gcmVuZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dMQ29udGV4dC5jcHAKaW5kZXggMmNiMGFiMy4u
NTE2MDkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR0xDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HTENvbnRleHQuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogR0xDb250ZXh0KiBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCkKIHsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChPd25QdHI8R0xDb250ZXh0Piwgc2hhcmluZywg
KGNyZWF0ZU9mZnNjcmVlbkNvbnRleHQoKSkpOwogICAgIHJldHVybiBzaGFyaW5nLmdldCgpOwog
fQpAQCAtMTU1LDE0ICsxNTUsMTQgQEAgR0xDb250ZXh0Ojp+R0xDb250ZXh0KCkKIAogYm9vbCBH
TENvbnRleHQ6Om1ha2VDb250ZXh0Q3VycmVudCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGdD
dXJyZW50Q29udGV4dCA9IHRoaXM7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIEdMQ29udGV4dCog
R0xDb250ZXh0OjpnZXRDdXJyZW50KCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgcmV0dXJuIGdD
dXJyZW50Q29udGV4dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCA3ZTA0MzRjLi5jYTI1MmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcApAQCAtMzgzLDcgKzM4Myw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHV0aUZyb21NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogI2lmIFBMQVRGT1JNKE1B
QykKICAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9y
VGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IDApKTsKICNlbHNlCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsgLy8gSXQgaXMgdW5jbGVh
ciBpZiBDRlNUUiBpcyB0aHJlYWRzYWZlLgorICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlv
bkNvbnRleHQoKSk7IC8vIEl0IGlzIHVuY2xlYXIgaWYgQ0ZTVFIgaXMgdGhyZWFkc2FmZS4KIAog
ICAgIC8vIEZJWE1FOiBBZGQgV2luZG93cyBzdXBwb3J0IGZvciBhbGwgdGhlIHN1cHBvcnRlZCBV
VElzIHdoZW4gYSB3YXkgdG8gY29udmVydCBmcm9tIE1JTUVUeXBlIHRvIFVUSSByZWxpYWJseSBp
cyBmb3VuZC4KICAgICAvLyBGb3Igbm93LCBvbmx5IHN1cHBvcnQgUE5HLCBKUEVHLCBhbmQgR0lG
LiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzYwOTUyODY+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQz
RC5jcHAKaW5kZXggYTcwNzRiNy4uNjVmM2VkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0
M0QuY3BwCkBAIC0xMDAsMTMgKzEwMCwxMyBAQCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0Rm9ySW1wbFRocmVhZCgpCiAKIGJvb2wgU2hh
cmVkR3JhcGhpY3NDb250ZXh0M0Q6OmhhdmVGb3JJbXBsVGhyZWFkKCkKIHsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAgICAgcmV0dXJuIGdldE9yQ3JlYXRlQ29udGV4dEZvckltcGxUaHJlYWQoR2V0KTsKIH0K
IAogYm9vbCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9ySW1wbFRocmVhZCgpCiB7
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVj
dXRpb25Db250ZXh0KCkpOwogICAgIHJldHVybiBnZXRPckNyZWF0ZUNvbnRleHRGb3JJbXBsVGhy
ZWFkKENyZWF0ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRm9udENhY2hlTWFjLm1tCmluZGV4IDUxNzE4MWEuLjdhNzJmYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q2FjaGVNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDYWNoZU1hYy5t
bQpAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBUaGUgInZvaWQqIiBw
YXJhbWV0ZXIgbWFrZXMgdGhlIGZ1bmN0aW9uIG1hdGNoIHRoZSBwcm90b3R5cGUgZm9yIGNhbGxi
YWNrcyBmcm9tIGNhbGxPbk1haW5UaHJlYWQuCiBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9udENh
Y2hlKHZvaWQqKQogewotICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICBpZiAoIWlzSW5X
ZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoJmlu
dmFsaWRhdGVGb250Q2FjaGUsIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRh
TWFjLm1tCmluZGV4IDgxNjM2OTMuLjNhN2NmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFNYWMubW0KQEAgLTQz
Miw3ICs0MzIsNyBAQCBzdGF0aWMgY29uc3QgVW5pQ2hhciogcHJvdmlkZVN0cmluZ0FuZEF0dHJp
YnV0ZXMoQ0ZJbmRleCBzdHJpbmdJbmRleCwgQ0ZJbmRleCogYwogCiBib29sIFNpbXBsZUZvbnRE
YXRhOjpjYW5SZW5kZXJDb21iaW5pbmdDaGFyYWN0ZXJTZXF1ZW5jZShjb25zdCBVQ2hhciogY2hh
cmFjdGVycywgc2l6ZV90IGxlbmd0aCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBp
ZiAoIW1fY29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2VTdXBwb3J0KQogICAgICAgICBtX2NvbWJp
bmluZ0NoYXJhY3RlclNlcXVlbmNlU3VwcG9ydCA9IGFkb3B0UHRyKG5ldyBIYXNoTWFwPFN0cmlu
ZywgYm9vbD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNwcAppbmRleCA5
OGY4MGI0Li40MDQzYTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNw
cApAQCAtODAsNyArODAsNyBAQCBFeHRlbnNpb25zM0RPcGVuR0xDb21tb246OkV4dGVuc2lvbnMz
RE9wZW5HTENvbW1vbihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIAogICAgIGJvb2wgc3lz
dGVtU3VwcG9ydHNNdWx0aXNhbXBsaW5nID0gdHJ1ZTsKICNpZiAhUExBVEZPUk0oSU9TKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTA4MAotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICBzdGF0aWMgU0ludDMyIHZlcnNpb247CiAgICAgaWYgKCF2ZXJzaW9uKSB7CiAgICAgICAgIGlm
IChHZXN0YWx0KGdlc3RhbHRTeXN0ZW1WZXJzaW9uLCAmdmVyc2lvbikgIT0gbm9FcnIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3Bw
CmluZGV4IGQyMTVmYjMuLjYyZDkxNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRpc3BhdGNo
T25NYWluVGhyZWFkKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQogewotICAgIGlm
IChpc01haW5UaHJlYWQoKSkKKyAgICBpZiAoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkp
CiAgICAgICAgIGZ1bmN0aW9uKCk7CiAgICAgZWxzZQogICAgICAgICBjYWxsT25NYWluVGhyZWFk
KGZ1bmN0aW9uKTsKQEAgLTc3LDcgKzc3LDcgQEAgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUoQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW4KICAg
ICAsIG1fYmFja2dyb3VuZENvbG9yKENvbG9yOjp3aGl0ZSkKICAgICAsIG1fc2V0RHJhd3NCYWNr
Z3JvdW5kKGZhbHNlKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KIAogQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjp+Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCkKQEAgLTE0MSw3ICsxNDEsNyBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaQogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFN
RSkKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjphbmltYXRpb25GcmFtZVJlYWR5KCkK
IHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4
ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+
YW5pbWF0aW9uRnJhbWVSZWFkeSgpOwogfQpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZVZpZXdwb3J0
KCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVu
dC0+dXBkYXRlVmlld3BvcnQoKTsKIH0KQEAgLTU5OCw3ICs1OTgsNyBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZTo6c3luY1JlbW90ZUNvbnRlbnQoKQogICAgIGVuc3VyZVJvb3RMYXll
cigpOwogCiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4gPiByZW5kZXJRdWV1ZTsKLSAgICBi
b29sIGNhbGxlZE9uTWFpblRocmVhZCA9IFdURjo6aXNNYWluVGhyZWFkKCk7CisgICAgYm9vbCBj
YWxsZWRPbk1haW5UaHJlYWQgPSBXVEY6OmlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgIGlmICghY2FsbGVkT25NYWluVGhyZWFkKQogICAgICAgICBtX3JlbmRlclF1ZXVlTXV0ZXgu
bG9jaygpOwogICAgIHJlbmRlclF1ZXVlLnN3YXAobV9yZW5kZXJRdWV1ZSk7CkBAIC02NjAsNyAr
NjYwLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldEFuaW1hdGlvbnNMb2Nr
ZWQoYm9vbCBsb2NrZWQpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpkZXRhY2go
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBtX2NsaWVudCA9IDA7CiB9CiAKQEAgLTY2OSw3ICs2
NjksNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YXBwZW5kVXBkYXRlKGNvbnN0
IEZ1bmN0aW9uPHZvaWQoKT4mIGZ1bmN0aW9uKQogICAgIGlmICghbV9pc0FjdGl2ZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJ
bldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3Jl
bmRlclF1ZXVlTXV0ZXgpOwogICAgIG1fcmVuZGVyUXVldWUuYXBwZW5kKGZ1bmN0aW9uKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9NSU1FVHlwZVJlZ2lzdHJ5
R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9NSU1FVHlwZVJlZ2lzdHJ5R3Rr
LmNwcAppbmRleCA5ZjdmMTRjLi5lODJjMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvTUlNRVR5cGVSZWdpc3RyeUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL01JTUVUeXBlUmVnaXN0cnlHdGsuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0
YXRpYyBjb25zdCBFeHRlbnNpb25NYXAgZXh0ZW5zaW9uTWFwIFtdID0gewogCiBTdHJpbmcgTUlN
RVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nICZleHQp
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgU3RyaW5nIHMgPSBleHQubG93ZXIoKTsKICAgICBj
b25zdCBFeHRlbnNpb25NYXAgKmUgPSBleHRlbnNpb25NYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvTGFuZ3VhZ2UubW0KaW5kZXggYzE1ZmY1YS4uMTU1ZjE3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9MYW5ndWFnZS5tbQpAQCAtNDUsNyArNDUsNyBAQCBAaW1wbGVtZW50YXRp
b24gV2ViTGFuZ3VhZ2VDaGFuZ2VPYnNlcnZlcgogCiArICh2b2lkKV93ZWJraXRfbGFuZ3VhZ2VQ
cmVmZXJlbmNlc0RpZENoYW5nZQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIHVzZUNhY2hlZFBy
ZWZlcnJlZExhbmd1YWdlcyA9IE5POwogCkBAIC01OCw3ICs1OCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIFN0cmluZyBodHRwU3R5bGVMYW5ndWFnZUNvZGUoTlNTdHJpbmcgKmxh
bmd1YWdlQ29kZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICAvLyBMb29rIHVwIHRoZSBsYW5n
dWFnZSBjb2RlIHVzaW5nIENGQnVuZGxlLgogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJl
ZmVycmVkTGFuZ3VhZ2VDb2RlKEFkb3B0Q0YsIHdrQ29weUNGTG9jYWxpemF0aW9uUHJlZmVycmVk
TmFtZSgoQ0ZTdHJpbmdSZWYpbGFuZ3VhZ2VDb2RlKSk7CkBAIC04Myw3ICs4Myw3IEBAIFZlY3Rv
cjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJlZExhbmd1YWdlcygpCiB7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChWZWN0b3I8U3RyaW5nPiwgdXNlclByZWZlcnJlZExhbmd1YWdlcywgKCkp
OwogCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxpemVkU3RyaW5n
c01hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTG9jYWxpemVkU3RyaW5nc01h
Yy5jcHAKaW5kZXggOGNhYmU4Ni4uYTZkNmJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0xvY2FsaXplZFN0cmluZ3NNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9Mb2NhbGl6ZWRTdHJpbmdzTWFjLmNwcApAQCAtNDEsNyArNDEsNyBAQCBT
dHJpbmcgbG9jYWxpemVkU3RyaW5nKGNvbnN0IGNoYXIqIGtleSkKICNpZiAhUExBVEZPUk0oSU9T
KQogICAgIC8vIENhbiBiZSBjYWxsZWQgb24gYSBkaXNwYXRjaCBxdWV1ZSB3aGVuIGluaXRpYWxp
emluZyBzdHJpbmdzIG9uIGlPUy4KICAgICAvLyBTZWUgTG9hZFdlYkxvY2FsaXplZFN0cmluZ3Mg
YW5kIDxyZGFyOi8vcHJvYmxlbS83OTAyNDczPi4KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAjZW5kaWYKIAog
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5U3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3Jl
YXRlV2l0aENTdHJpbmdOb0NvcHkoMCwga2V5LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGtDRkFs
bG9jYXRvck51bGwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9N
SU1FVHlwZVJlZ2lzdHJ5TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01JTUVU
eXBlUmVnaXN0cnlNYWMubW0KaW5kZXggMzc5MmI1YS4uOTMwZWIyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01JTUVUeXBlUmVnaXN0cnlNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL01JTUVUeXBlUmVnaXN0cnlNYWMubW0KQEAgLTM2LDcg
KzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Omdl
dE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyAmZXh0KQogewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgp
KTsKICAgICByZXR1cm4gd2tHZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHQpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU9iakNFeHRyYXMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViQ29yZU9iakNFeHRyYXMubW0KaW5kZXgg
ZjQxM2I0MC4uZDkxY2VlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1dlYkNvcmVPYmpDRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
ZWJDb3JlT2JqQ0V4dHJhcy5tbQpAQCAtNzIsNyArNzIsNyBAQCBib29sIFdlYkNvcmVPYmpDU2No
ZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKENsYXNzIGNscywgaWQgb2JqZWN0KQogewogICAg
IEFTU0VSVChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6Y2xzXSk7CiAKLSAgICBpZiAoaXNNYWluVGhy
ZWFkKCkpCisgICAgaWYgKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgQ2xhc3NBbmRJZFBhaXIqIHBhaXIgPSBuZXcgQ2xhc3NB
bmRJZFBhaXIoY2xzLCBvYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vYmxhY2tiZXJyeS9NZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vYmxhY2tiZXJyeS9NZWRpYVN0
cmVhbUNlbnRlckJsYWNrQmVycnkuY3BwCmluZGV4IGQ5MWVmMTEuLjAzNTUwMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2JsYWNrYmVycnkvTWVkaWFT
dHJlYW1DZW50ZXJCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9ibGFja2JlcnJ5L01lZGlhU3RyZWFtQ2VudGVyQmxhY2tCZXJyeS5jcHAKQEAg
LTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBNZWRpYVN0cmVhbUNlbnRlciYg
TWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChNZWRpYVN0cmVhbUNlbnRlckJsYWNrQmVycnksIGNlbnRlciwgKCkp
OwogICAgIHJldHVybiBjZW50ZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9NZWRpYVN0cmVhbUNlbnRlckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL01lZGlhU3RyZWFt
Q2VudGVyQ2hyb21pdW0uY3BwCmluZGV4IGI2NjU1N2QuLmQzMzdiMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL01lZGlhU3RyZWFtQ2Vu
dGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2Nocm9taXVtL01lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW0uY3BwCkBAIC00OCw3ICs0OCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTWVkaWFTdHJlYW1DZW50ZXImIE1lZGlhU3RyZWFtQ2Vu
dGVyOjppbnN0YW5jZSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NF
UlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bSwgY2VudGVyLCAoKSk7CiAgICAgcmV0dXJuIGNl
bnRlcjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFt
ZXIuY3BwCmluZGV4IGYxODQyY2IuLjM1ODYzOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9NZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1lci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBNZWRpYVN0cmVhbUNlbnRlciYgTWVkaWFTdHJlYW1DZW50ZXI6Omlu
c3RhbmNlKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0lu
V2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChNZWRp
YVN0cmVhbUNlbnRlckdTdHJlYW1lciwgY2VudGVyLCAoKSk7CiAgICAgcmV0dXJuIGNlbnRlcjsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuY3BwCmluZGV4IGMyNTkwMTQuLmIxYTFmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtNDgsNyArNDgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQogQmxvYlJl
Z2lzdHJ5JiBibG9iUmVnaXN0cnkoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEJsb2JSZWdpc3RyeUltcGwsIGluc3RhbmNlLCAoKSk7CiAgICAgcmV0dXJuIGlu
c3RhbmNlOwogfQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6YXBw
ZW5kU3RvcmFnZUl0ZW1zKEJsb2JTdG9yYWdlRGF0YSogYmxvYlN0b3JhZ2VEYXRhLCBjb25zCiAK
IHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCwg
UGFzc093blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHJl
Z2lzdGVyQmxvYlJlc291cmNlSGFuZGxlQ29uc3RydWN0b3IoKTsKIAogICAgIFJlZlB0cjxCbG9i
U3RvcmFnZURhdGE+IGJsb2JTdG9yYWdlRGF0YSA9IEJsb2JTdG9yYWdlRGF0YTo6Y3JlYXRlKGJs
b2JEYXRhLT5jb250ZW50VHlwZSgpLCBibG9iRGF0YS0+Y29udGVudERpc3Bvc2l0aW9uKCkpOwpA
QCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJM
KGNvbnN0IEtVUkwmIHVybCwgUGFzc093blB0cjxCbG9iRGF0YT4gYmxvCiAKIHZvaWQgQmxvYlJl
Z2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgS1VSTCYg
c3JjVVJMKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5X
ZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICByZWdpc3RlckJsb2JSZXNvdXJjZUhhbmRs
ZUNvbnN0cnVjdG9yKCk7CiAKICAgICBSZWZQdHI8QmxvYlN0b3JhZ2VEYXRhPiBzcmMgPSBtX2Js
b2JzLmdldChzcmNVUkwuc3RyaW5nKCkpOwpAQCAtMjAxLDEzICsyMDEsMTMgQEAgdm9pZCBCbG9i
UmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBLVVJM
JiBzcmNVUkwpCiAKIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6dW5yZWdpc3RlckJsb2JVUkwoY29u
c3QgS1VSTCYgdXJsKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBtX2Jsb2JzLnJlbW92ZSh1cmwu
c3RyaW5nKCkpOwogfQogCiBQYXNzUmVmUHRyPEJsb2JTdG9yYWdlRGF0YT4gQmxvYlJlZ2lzdHJ5
SW1wbDo6Z2V0QmxvYkRhdGFGcm9tVVJMKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAgICAgcmV0dXJuIG1fYmxvYnMuZ2V0KHVybC5zdHJpbmcoKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAK
aW5kZXggMTNlMGZjMy4uZmJkY2MyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIGJv
b2wgc2hvdWxkRm9yY2VDb250ZW50U25pZmZpbmc7CiB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBSZXNvdXJjZUhhbmRsZTo6QnVpbHRpbkNvbnN0cnVjdG9yPiBCdWlsdGluUmVzb3VyY2VI
YW5kbGVDb25zdHJ1Y3Rvck1hcDsKIHN0YXRpYyBCdWlsdGluUmVzb3VyY2VIYW5kbGVDb25zdHJ1
Y3Rvck1hcCYgYnVpbHRpblJlc291cmNlSGFuZGxlQ29uc3RydWN0b3JNYXAoKQogewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29u
dGV4dCgpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEJ1aWx0aW5SZXNvdXJjZUhhbmRsZUNv
bnN0cnVjdG9yTWFwLCBtYXAsICgpKTsKICAgICByZXR1cm4gbWFwOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQu
Y3BwCmluZGV4IGUzMDNlZDguLjJhYWI0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKQEAgLTQ1LDcg
KzQ1LDcgQEAgc3RhdGljIENvb2tpZUNoYW5nZUNhbGxiYWNrUHRyIGNvb2tpZUNoYW5nZUNhbGxi
YWNrOwogCiBzdGF0aWMgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZE9uTWFpblRocmVhZCh2b2lk
KikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgY29va2llQ2hhbmdlQ2FsbGJhY2soKTsKIH0KIApA
QCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgaW5saW5lIENGUnVuTG9vcFJlZiBjb29raWVTdG9yYWdl
T2JzZXJ2ZXJSdW5Mb29wKCkKIAogdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoQ29v
a2llQ2hhbmdlQ2FsbGJhY2tQdHIgY2FsbGJhY2spCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAg
QVNTRVJUKCFjb29raWVDaGFuZ2VDYWxsYmFjayk7CiAgICAgY29va2llQ2hhbmdlQ2FsbGJhY2sg
PSBjYWxsYmFjazsKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNo
YW5nZXMoQ29va2llQ2hhbmdlQ2FsbGJhY2tQdHIgY2FsbGJhY2spCiAKIHZvaWQgc3RvcE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIGNvb2tpZUNoYW5n
ZUNhbGxiYWNrID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9ETlNDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0ROU0NGTmV0LmNwcAppbmRleCBjZTE0NTE5Li4yNTBlNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcApAQCAtODgsNyArODgsNyBAQCBz
dGF0aWMgdm9pZCBjbGllbnRDYWxsYmFjayhDRkhvc3RSZWYgdGhlSG9zdCwgQ0ZIb3N0SW5mb1R5
cGUsIGNvbnN0IENGU3RyZWFtRXJybwogCiB2b2lkIEROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1S
ZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAg
UmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUo
MCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogICAgIGlmICghaG9zdCkgewpA
QCAtMTExLDcgKzExMSw3IEBAIHZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIAogdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBpZiAoaG9zdG5hbWUuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAgICAgRE5TUmVzb2x2ZVF1ZXVlOjpzaGFyZWQoKS5hZGQoaG9z
dG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9M
b2FkZXJSdW5Mb29wQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9M
b2FkZXJSdW5Mb29wQ0YuY3BwCmluZGV4IGVmMjIwODguLmZkOGI0ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAK
QEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIHZvaWQgcnVuTG9hZGVyVGhyZWFkKHZvaWQqKQogCiBD
RlJ1bkxvb3BSZWYgbG9hZGVyUnVuTG9vcCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgTXV0
ZXhMb2NrZXIgbG9jayhsb2FkZXJSdW5Mb29wTXV0ZXgoKSk7CiAgICAgaWYgKCFsb2FkZXJSdW5M
b29wT2JqZWN0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmluZGV4IGJkMDQ3
ODkuLmQ5ZDIzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBAIC00NSw3
ICs0NSw3IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKENG
VVJMU3RvcmFnZVNlc3Npb25SZWYgcGxhdGZvcm1TZXNzCiAKIHN0YXRpYyBPd25QdHI8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPiYgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpCiB7Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25D
b250ZXh0KCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4sIHNlc3Npb24sICgpKTsKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0KQEAgLTcwLDcg
KzcwLDcgQEAgc3RhdGljIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYgY29va2ll
U3RvcmFnZU92ZXJyaWRlKCkKIAogdm9pZCBvdmVycmlkZUNvb2tpZVN0b3JhZ2UoQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAvLyBG
SVhNRTogV2h5IGRvbid0IHdlIHJldGFpbiBpdD8gVGhlIG9ubHkgY2FsbGVyIGlzIGFuIEFQSSBt
ZXRob2QgdGhhdCB0YWtlcyBjb29raWUgc3RvcmFnZSBhcyBhIHJhdyBhcmd1bWVudC4KICAgICBj
b29raWVTdG9yYWdlT3ZlcnJpZGUoKS5hZG9wdENGKGNvb2tpZVN0b3JhZ2UpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0
cmVhbUhhbmRsZUNGTmV0LmNwcAppbmRleCA0YjQ3Y2MxLi5jZGM0N2NhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUNGTmV0LmNwcApAQCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFu
ZGxlOjpyZWFkU3RyZWFtQ2FsbGJhY2soQ0ZSZWFkU3RyZWFtUmVmIHN0cmVhbSwgQ0ZTdHJlYW1F
dmVuCiAgICAgTWFpblRocmVhZEV2ZW50Q2FsbGJhY2tJbmZvIGluZm8odHlwZSwgaGFuZGxlKTsK
ICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChyZWFkU3RyZWFtQ2FsbGJhY2tNYWluVGhyZWFk
LCAmaW5mbyk7CiAjZWxzZQotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBoYW5kbGUtPnJlYWRTdHJlYW1D
YWxsYmFjayh0eXBlKTsKICNlbmRpZgogfQpAQCAtNDI0LDcgKzQyNCw3IEBAIHZvaWQgU29ja2V0
U3RyZWFtSGFuZGxlOjp3cml0ZVN0cmVhbUNhbGxiYWNrKENGV3JpdGVTdHJlYW1SZWYgc3RyZWFt
LCBDRlN0cmVhbUV2CiAgICAgTWFpblRocmVhZEV2ZW50Q2FsbGJhY2tJbmZvIGluZm8odHlwZSwg
aGFuZGxlKTsKICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdCh3cml0ZVN0cmVhbUNhbGxiYWNr
TWFpblRocmVhZCwgJmluZm8pOwogI2Vsc2UKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaGFuZGxlLT53
cml0ZVN0cmVhbUNhbGxiYWNrKHR5cGUpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Jsb2JSZWdpc3RyeVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQmxvYlJlZ2lzdHJ5UHJv
eHkuY3BwCmluZGV4IDEwMjQ3NTcuLjZkNWRkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQmxvYlJlZ2lzdHJ5UHJveHku
Y3BwCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQmxvYlJlZ2lzdHJ5
JiBibG9iUmVnaXN0cnkoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEJsb2JSZWdpc3RyeVByb3h5LCBpbnN0YW5jZSwgKCkpOwogICAgIHJldHVybiBpbnN0YW5j
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3Vw
LmNwcAppbmRleCBiYWJhMjA0Li42ODM4ZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCkBAIC01MSwxNCArNTEsMTQgQEAgc3RhdGlj
IHZvaWQgcmVzb2x2ZWRDYWxsYmFjayhTb3VwQWRkcmVzcyosIGd1aW50LCB2b2lkKikKIAogdm9p
ZCBETlNSZXNvbHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIHNvdXBfc2Vzc2lvbl9wcmVmZXRjaF9kbnMoUmVz
b3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCksIGhvc3RuYW1lLnV0ZjgoKS5kYXRhKCksIDAs
IHJlc29sdmVkQ2FsbGJhY2ssIDApOwogfQogCiB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQo
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGlmIChob3N0bmFtZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
CmluZGV4IGRkNTZlMmIuLjRhNzFhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291
cC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24oU291cFNlc3Npb24qIHNlc3Npb24pCiAKIHN0YXRpYyBPd25QdHI8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPiYgZGVmYXVsdFNlc3Npb24oKQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+LCBzZXNz
aW9uLCAoKSk7CiAgICAgcmV0dXJuIHNlc3Npb247CiB9CkBAIC01NCw3ICs1NCw3IEBAIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKQogCiBQYXNzT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjcmVhdGVEZWZhdWx0U2Vzc2lvbihjb25zdCBTdHJpbmcmKQogewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29u
dGV4dCgpKTsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihS
ZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lzdHJ5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCmluZGV4IDFk
MTIyMDIuLjliOTliZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
VGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgc3RhdGljIHZv
aWQgcHJ1bmVCbGFja2xpc3RlZENvZGVjcygpCiAKIHN0YXRpYyB2b2lkIGJ1aWxkQmFzZVRleHRD
b2RlY01hcHMoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoIXRleHRDb2RlY01hcCk7
CiAgICAgQVNTRVJUKCF0ZXh0RW5jb2RpbmdOYW1lTWFwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCmluZGV4IDAwODQ5M2IuLmI2YTg5
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nSW1w
bENGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxD
Ri5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgbmFtZXNwYWNlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRv
ciB7CiAgICAgc3RhdGljIHZvaWQqIGFsbG9jYXRlKENGSW5kZXggc2l6ZSwgQ0ZPcHRpb25GbGFn
cywgdm9pZCopCiAgICAgewogICAgICAgICBTdHJpbmdJbXBsKiB1bmRlcmx5aW5nU3RyaW5nID0g
MDsKLSAgICAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7CisgICAgICAgIGlmIChpc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSkgewogICAgICAgICAgICAgdW5kZXJseWluZ1N0cmluZyA9IGN1
cnJlbnRTdHJpbmc7CiAgICAgICAgICAgICBpZiAodW5kZXJseWluZ1N0cmluZykgewogICAgICAg
ICAgICAgICAgIGN1cnJlbnRTdHJpbmcgPSAwOwpAQCAtOTUsNyArOTUsNyBAQCBuYW1lc3BhY2Ug
U3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yIHsKICAgICAgICAgaWYgKCF1bmRlcmx5aW5nU3RyaW5n
KQogICAgICAgICAgICAgZmFzdEZyZWUoaGVhZGVyKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBpZiAoIWlzTWFpblRocmVhZCgpKQorICAgICAgICAgICAgaWYgKCFpc0luV2ViQ29yZUV4
ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKGRlYWxs
b2NhdGVPbk1haW5UaHJlYWQsIGhlYWRlcik7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICB1bmRlcmx5aW5nU3RyaW5nLT5kZXJlZigpOyAvLyBCYWxhbmNlZCBieSBjYWxsIHRv
IHJlZiBpbiBhbGxvY2F0ZSBhYm92ZS4KQEAgLTEzNSw3ICsxMzUsNyBAQCBuYW1lc3BhY2UgU3Ry
aW5nV3JhcHBlckNGQWxsb2NhdG9yIHsKIAogUmV0YWluUHRyPENGU3RyaW5nUmVmPiBTdHJpbmdJ
bXBsOjpjcmVhdGVDRlN0cmluZygpCiB7Ci0gICAgaWYgKCFtX2xlbmd0aCB8fCAhaXNNYWluVGhy
ZWFkKCkpIHsKKyAgICBpZiAoIW1fbGVuZ3RoIHx8ICFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHQoKSkgewogICAgICAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgICAgICByZXR1cm4gYWRvcHRD
RihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4
Kj4oY2hhcmFjdGVyczgoKSksIG1fbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwg
ZmFsc2UpKTsKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVycygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihjaGFyYWN0ZXJzMTYoKSks
IG1fbGVuZ3RoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9j
YWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxp
emVkU3RyaW5nc1dpbi5jcHAKaW5kZXggY2MyZjVjMi4uNWUzYjc0MzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKQEAgLTcz
LDcgKzczLDcgQEAgc3RhdGljIENGQnVuZGxlUmVmIHdlYktpdEJ1bmRsZSgpCiAKIFN0cmluZyBs
b2NhbGl6ZWRTdHJpbmcoY29uc3QgY2hhcioga2V5KQogewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogI2lm
IFVTRShDRikKICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgbm90Rm91bmQgPSBDRlNUUigibG9jYWxp
emVkIHN0cmluZyBub3QgZm91bmQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAppbmRleCBlZDdiNDI1Li4wOGU1ZDZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCkBAIC02NSw3ICs2NSw3IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJy
ZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIFN0cmluZyBNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcgJmV4dCkK
IHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4
ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBpZiAoZXh0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvTWlt
ZVR5cGVSZWdpc3RyeVd4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L01pbWVUeXBl
UmVnaXN0cnlXeC5jcHAKaW5kZXggOTRhODE1ZS4uNjY2ZTQwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd3gvTWltZVR5cGVSZWdpc3RyeVd4LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93eC9NaW1lVHlwZVJlZ2lzdHJ5V3guY3BwCkBAIC02Miw3ICs2Miw3
IEBAIHN0YXRpYyBjb25zdCBFeHRlbnNpb25NYXAgZXh0ZW5zaW9uTWFwIFtdID0gewogICAgIAog
U3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyAmZXh0KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIFN0cmluZyBzID0gZXh0Lmxvd2Vy
KCk7CiAgICAgY29uc3QgRXh0ZW5zaW9uTWFwICplID0gZXh0ZW5zaW9uTWFwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuY3BwCmluZGV4IDhkODVjYzUuLjQ5ZmIxY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5jcHAKQEAgLTQ0LDcg
KzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdG9yYWdlQXJlYUltcGw6On5TdG9yYWdl
QXJlYUltcGwoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIH0KIAogaW5saW5lIFN0b3JhZ2VBcmVhSW1w
bDo6U3RvcmFnZUFyZWFJbXBsKFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBvcmlnaW4sIFBhc3NSZWZQdHI8U3RvcmFnZVN5bmNNYW5hZ2VyPiBzeW5j
TWFuYWdlciwgdW5zaWduZWQgcXVvdGEpCkBAIC01OCw3ICs1OCw3IEBAIGlubGluZSBTdG9yYWdl
QXJlYUltcGw6OlN0b3JhZ2VBcmVhSW1wbChTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgUGFzc1Jl
ZlB0cjxTZWN1CiAgICAgLCBtX2FjY2Vzc0NvdW50KDApCiAgICAgLCBtX2Nsb3NlRGF0YWJhc2VU
aW1lcih0aGlzLCAmU3RvcmFnZUFyZWFJbXBsOjpjbG9zZURhdGFiYXNlVGltZXJGaXJlZCkKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKG1fc2VjdXJpdHlPcmlnaW4pOwogICAgIEFTU0VS
VChtX3N0b3JhZ2VNYXApOwogICAgIApAQCAtOTgsNyArOTgsNyBAQCBTdG9yYWdlQXJlYUltcGw6
OlN0b3JhZ2VBcmVhSW1wbChTdG9yYWdlQXJlYUltcGwqIGFyZWEpCiAgICAgLCBtX2FjY2Vzc0Nv
dW50KDApCiAgICAgLCBtX2Nsb3NlRGF0YWJhc2VUaW1lcih0aGlzLCAmU3RvcmFnZUFyZWFJbXBs
OjpjbG9zZURhdGFiYXNlVGltZXJGaXJlZCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJU
KG1fc2VjdXJpdHlPcmlnaW4pOwogICAgIEFTU0VSVChtX3N0b3JhZ2VNYXApOwogICAgIEFTU0VS
VCghbV9pc1NodXRkb3duKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZUFyZWFTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5j
LmNwcAppbmRleCBmY2IxMjZhLi5iODM5NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
dG9yYWdlQXJlYVN5bmMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGlubGluZSBTdG9yYWdlQXJlYVN5
bmM6OlN0b3JhZ2VBcmVhU3luYyhQYXNzUmVmUHRyPFN0b3JhZ2VTeW5jTWFuYWdlcj4gc3RvcmFn
ZVN5CiAgICAgLCBtX3N5bmNDbG9zZURhdGFiYXNlKGZhbHNlKQogICAgICwgbV9pbXBvcnRDb21w
bGV0ZShmYWxzZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKG1fc3RvcmFnZUFyZWEp
OwogICAgIEFTU0VSVChtX3N5bmNNYW5hZ2VyKTsKIH0KQEAgLTgzLDE0ICs4MywxNCBAQCBQYXNz
UmVmUHRyPFN0b3JhZ2VBcmVhU3luYz4gU3RvcmFnZUFyZWFTeW5jOjpjcmVhdGUoUGFzc1JlZlB0
cjxTdG9yYWdlU3luY01hbmFnZQogCiBTdG9yYWdlQXJlYVN5bmM6On5TdG9yYWdlQXJlYVN5bmMo
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoIW1fc3luY1RpbWVyLmlzQWN0aXZlKCkp
OwogICAgIEFTU0VSVChtX2ZpbmFsU3luY1NjaGVkdWxlZCk7CiB9CiAKIHZvaWQgU3RvcmFnZUFy
ZWFTeW5jOjpzY2hlZHVsZUZpbmFsU3luYygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIC8vIEZJ
WE1FOiBXZSBkbyB0aGlzIHRvIGF2b2lkIHJhY2VzLCBidXQgaXQnZCBiZSBiZXR0ZXIgdG8gbWFr
ZSB0aGluZ3Mgc2FmZSB3aXRob3V0IGJsb2NraW5nLgogICAgIGJsb2NrVW50aWxJbXBvcnRDb21w
bGV0ZSgpOwogICAgIG1fc3RvcmFnZUFyZWEgPSAwOyAgLy8gVGhpcyBpcyBkb25lIGluIGJsb2Nr
VW50aWxJbXBvcnRDb21wbGV0ZSgpIGJ1dCB0aGlzIGlzIGhlcmUgYXMgYSBmb3JtIG9mIGRvY3Vt
ZW50YXRpb24gdGhhdCB3ZSBtdXN0IGJlIGFic29sdXRlbHkgc3VyZSB0aGUgcmVmIGNvdW50IGN5
Y2xlIGlzIGJyb2tlbi4KQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6
c2NoZWR1bGVGaW5hbFN5bmMoKQogCiB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6c2NoZWR1bGVJdGVt
Rm9yU3luYyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNv
bnRleHQoKSk7CiAgICAgQVNTRVJUKCFtX2ZpbmFsU3luY1NjaGVkdWxlZCk7CiAKICAgICBtX2No
YW5nZWRJdGVtcy5zZXQoa2V5LCB2YWx1ZSk7CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBTdG9y
YWdlQXJlYVN5bmM6OnNjaGVkdWxlSXRlbUZvclN5bmMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgdmFsdWUKIAogdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnNjaGVkdWxlQ2xlYXIoKQog
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhl
Y3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoIW1fZmluYWxTeW5jU2NoZWR1bGVkKTsKIAog
ICAgIG1fY2hhbmdlZEl0ZW1zLmNsZWFyKCk7CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBTdG9y
YWdlQXJlYVN5bmM6OnNjaGVkdWxlQ2xlYXIoKQogCiB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6c2No
ZWR1bGVDbG9zZURhdGFiYXNlKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKCFtX2Zp
bmFsU3luY1NjaGVkdWxlZCk7CiAKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVuKCkpCkBAIC0x
NjEsNyArMTYxLDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnNjaGVkdWxlQ2xvc2VEYXRhYmFz
ZSgpCiAKIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpzeW5jVGltZXJGaXJlZChUaW1lcjxTdG9yYWdl
QXJlYVN5bmM+KikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBib29sIHBhcnRpYWxTeW5jID0g
ZmFsc2U7CiAgICAgewpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpz
eW5jVGltZXJGaXJlZChUaW1lcjxTdG9yYWdlQXJlYVN5bmM+KikKIAogdm9pZCBTdG9yYWdlQXJl
YVN5bmM6Om9wZW5EYXRhYmFzZShPcGVuRGF0YWJhc2VQYXJhbVR5cGUgb3BlbmluZ1N0cmF0ZWd5
KQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghaXNJbldlYkNv
cmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVCghbV9kYXRhYmFzZS5pc09wZW4oKSk7
CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlT3BlbkZhaWxlZCk7CiAKQEAgLTMxMSw3ICszMTEsNyBA
QCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6bWlncmF0ZUl0ZW1UYWJsZUlmTmVlZGVkKCkKIAogdm9p
ZCBTdG9yYWdlQXJlYVN5bmM6OnBlcmZvcm1JbXBvcnQoKQogewotICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOworICAgIEFTU0VSVCghaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwog
ICAgIEFTU0VSVCghbV9kYXRhYmFzZS5pc09wZW4oKSk7CiAKICAgICBvcGVuRGF0YWJhc2UoU2tp
cElmTm9uRXhpc3RlbnQpOwpAQCAtMzY2LDcgKzM2Niw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5j
OjptYXJrSW1wb3J0ZWQoKQogLy8gam9iIGZpcnN0Lgogdm9pZCBTdG9yYWdlQXJlYVN5bmM6OmJs
b2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgLy8gRmFz
dCBwYXRoLiAgV2Ugc2V0IG1fc3RvcmFnZUFyZWEgdG8gMCBvbmx5IGFmdGVyIG1faW1wb3J0Q29t
cGxldGUgYmVpbmcgdHJ1ZS4KICAgICBpZiAoIW1fc3RvcmFnZUFyZWEpCkBAIC0zODAsNyArMzgw
LDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OmJsb2NrVW50aWxJbXBvcnRDb21wbGV0ZSgpCiAK
IHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpzeW5jKGJvb2wgY2xlYXJJdGVtcywgY29uc3QgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4mIGl0ZW1zKQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVCghaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgaWYg
KGl0ZW1zLmlzRW1wdHkoKSAmJiAhY2xlYXJJdGVtcyAmJiAhbV9zeW5jQ2xvc2VEYXRhYmFzZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDYwLDcgKzQ2MCw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5j
OjpzeW5jKGJvb2wgY2xlYXJJdGVtcywgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGl0
ZW1zCiAKIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpwZXJmb3JtU3luYygpCiB7Ci0gICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHQoKSk7CiAKICAgICBib29sIGNsZWFySXRlbXM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gaXRlbXM7CkBAIC00OTEsNyArNDkxLDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OnBlcmZv
cm1TeW5jKCkKIAogdm9pZCBTdG9yYWdlQXJlYVN5bmM6OmRlbGV0ZUVtcHR5RGF0YWJhc2UoKQog
ewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwCmluZGV4IDZiZDlmNDAuLjJkYzFjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC03Niw3ICs3Niw3IEBAIFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZSBzdG9yYWdl
VHlwZSwgY29uc3QgU3RyaW5nCiAKIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjp+U3RvcmFnZU5hbWVz
cGFjZUltcGwoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIGlmIChtX3N0b3JhZ2VUeXBlID09
IExvY2FsU3RvcmFnZSkgewogICAgICAgICBBU1NFUlQobG9jYWxTdG9yYWdlTmFtZXNwYWNlTWFw
KCkuZ2V0KG1fcGF0aCkgPT0gdGhpcyk7CkBAIC04OSw3ICs4OSw3IEBAIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjp+U3RvcmFnZU5hbWVzcGFjZUltcGwoKQogCiBQYXNzUmVmUHRyPFN0b3JhZ2VOYW1l
c3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KCkKIHsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAg
ICAgQVNTRVJUKCFtX2lzU2h1dGRvd24pOwogICAgIEFTU0VSVChtX3N0b3JhZ2VUeXBlID09IFNl
c3Npb25TdG9yYWdlKTsKIApAQCAtMTAzLDcgKzEwMyw3IEBAIFBhc3NSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoKQogCiBQYXNzUmVmUHRyPFN0b3Jh
Z2VBcmVhPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gcHJwT3JpZ2luKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NFUlQoIW1f
aXNTaHV0ZG93bik7CiAKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IHBycE9y
aWdpbjsKQEAgLTExOCw3ICsxMTgsNyBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6c3RvcmFnZUFyZWEoUGFzc1JlZlB0cjxTZWN1cml0eU9yaQogCiB2b2lk
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbG9zZSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAg
aWYgKG1faXNTaHV0ZG93bikKICAgICAgICAgcmV0dXJuOwpAQCAtMTQxLDcgKzE0MSw3IEBAIHZv
aWQgU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsb3NlKCkKIAogdm9pZCBTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6Y2xlYXJPcmlnaW5Gb3JEZWxldGlvbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0
aW9uQ29udGV4dCgpKTsKIAogICAgIFJlZlB0cjxTdG9yYWdlQXJlYUltcGw+IHN0b3JhZ2VBcmVh
ID0gbV9zdG9yYWdlQXJlYU1hcC5nZXQob3JpZ2luKTsKICAgICBpZiAoc3RvcmFnZUFyZWEpCkBA
IC0xNTAsNyArMTUwLDcgQEAgdm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y2xlYXJPcmlnaW5G
b3JEZWxldGlvbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogCiB2b2lkIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjbGVhckFsbE9yaWdpbnNGb3JEZWxldGlvbigpCiB7Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwog
CiAgICAgU3RvcmFnZUFyZWFNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fc3RvcmFnZUFyZWFNYXAuZW5k
KCk7CiAgICAgZm9yIChTdG9yYWdlQXJlYU1hcDo6aXRlcmF0b3IgaXQgPSBtX3N0b3JhZ2VBcmVh
TWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjbGVhckFsbE9yaWdpbnNGb3JEZWxldGlvbigpCiAgICAgCiB2
b2lkIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpzeW5jKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
U3RvcmFnZUFyZWFNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fc3RvcmFnZUFyZWFNYXAuZW5kKCk7CiAg
ICAgZm9yIChTdG9yYWdlQXJlYU1hcDo6aXRlcmF0b3IgaXQgPSBtX3N0b3JhZ2VBcmVhTWFwLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgaXQtPnZhbHVlLT5zeW5jKCk7CkBAIC0x
NjcsNyArMTY3LDcgQEAgdm9pZCBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3luYygpCiAKIHZvaWQg
U3RvcmFnZU5hbWVzcGFjZUltcGw6OmNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcygpCiB7
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVj
dXRpb25Db250ZXh0KCkpOwogICAgIFN0b3JhZ2VBcmVhTWFwOjppdGVyYXRvciBlbmQgPSBtX3N0
b3JhZ2VBcmVhTWFwLmVuZCgpOwogICAgIGZvciAoU3RvcmFnZUFyZWFNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9zdG9yYWdlQXJlYU1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIGl0
LT52YWx1ZS0+Y2xvc2VEYXRhYmFzZUlmSWRsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCmluZGV4IGMzOWZlMGQuLmRmNmZlMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKQEAgLTUwLDE0ICs1
MCwxNCBAQCBTdG9yYWdlU3luY01hbmFnZXI6OlN0b3JhZ2VTeW5jTWFuYWdlcihjb25zdCBTdHJp
bmcmIHBhdGgpCiAgICAgOiBtX3RocmVhZChTdG9yYWdlVGhyZWFkOjpjcmVhdGUoKSkKICAgICAs
IG1fcGF0aChwYXRoLmlzb2xhdGVkQ29weSgpKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBU1NF
UlQoIW1fcGF0aC5pc0VtcHR5KCkpOwogICAgIG1fdGhyZWFkLT5zdGFydCgpOwogfQogCiBTdG9y
YWdlU3luY01hbmFnZXI6On5TdG9yYWdlU3luY01hbmFnZXIoKQogewotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsK
ICAgICBBU1NFUlQoIW1fdGhyZWFkKTsKIH0KIApAQCAtNzQsNyArNzQsNyBAQCBTdHJpbmcgU3Rv
cmFnZVN5bmNNYW5hZ2VyOjpmdWxsRGF0YWJhc2VGaWxlbmFtZShjb25zdCBTdHJpbmcmIGRhdGFi
YXNlSWRlbnRpZmllcgogCiB2b2lkIFN0b3JhZ2VTeW5jTWFuYWdlcjo6Y2xvc2UoKQogewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9u
Q29udGV4dCgpKTsKIAogICAgIGlmIChtX3RocmVhZCkgewogICAgICAgICBtX3RocmVhZC0+dGVy
bWluYXRlKCk7CkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgU3RvcmFnZVN5bmNNYW5hZ2VyOjpjbG9z
ZSgpCiAKIGJvb2wgU3RvcmFnZVN5bmNNYW5hZ2VyOjpzY2hlZHVsZUltcG9ydChQYXNzUmVmUHRy
PFN0b3JhZ2VBcmVhU3luYz4gYXJlYSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKG1f
dGhyZWFkKTsKICAgICBpZiAobV90aHJlYWQpCiAgICAgICAgIG1fdGhyZWFkLT5zY2hlZHVsZVRh
c2soU3RvcmFnZVRhc2s6OmNyZWF0ZUltcG9ydChhcmVhLmdldCgpKSk7CkBAIC05Myw3ICs5Myw3
IEBAIGJvb2wgU3RvcmFnZVN5bmNNYW5hZ2VyOjpzY2hlZHVsZUltcG9ydChQYXNzUmVmUHRyPFN0
b3JhZ2VBcmVhU3luYz4gYXJlYSkKIAogdm9pZCBTdG9yYWdlU3luY01hbmFnZXI6OnNjaGVkdWxl
U3luYyhQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhU3luYz4gYXJlYSkKIHsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgQVNTRVJUKG1fdGhyZWFkKTsKICAgICBpZiAobV90aHJlYWQpCiAgICAgICAgIG1fdGhy
ZWFkLT5zY2hlZHVsZVRhc2soU3RvcmFnZVRhc2s6OmNyZWF0ZVN5bmMoYXJlYS5nZXQoKSkpOwpA
QCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgU3RvcmFnZVN5bmNNYW5hZ2VyOjpzY2hlZHVsZVN5bmMo
UGFzc1JlZlB0cjxTdG9yYWdlQXJlYVN5bmM+IGFyZWEpCiAKIHZvaWQgU3RvcmFnZVN5bmNNYW5h
Z2VyOjpzY2hlZHVsZURlbGV0ZUVtcHR5RGF0YWJhc2UoUGFzc1JlZlB0cjxTdG9yYWdlQXJlYVN5
bmM+IGFyZWEpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJ
bldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChtX3RocmVhZCk7CiAgICAg
aWYgKG1fdGhyZWFkKQogICAgICAgICBtX3RocmVhZC0+c2NoZWR1bGVUYXNrKFN0b3JhZ2VUYXNr
OjpjcmVhdGVEZWxldGVFbXB0eURhdGFiYXNlKGFyZWEuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCmluZGV4IDk2ZTY0NzguLjFjMmFmYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBIYXNoU2V0PFN0b3JhZ2VUaHJlYWQqPiYgYWN0aXZl
U3RvcmFnZVRocmVhZHMoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEhhc2hTZXQ8U3RvcmFnZVRocmVhZCo+LCB0aHJlYWRzLCAoKSk7CiAgICAgcmV0dXJuIHRo
cmVhZHM7CiB9CkBAIC00OSwxOCArNDksMTggQEAgUGFzc093blB0cjxTdG9yYWdlVGhyZWFkPiBT
dG9yYWdlVGhyZWFkOjpjcmVhdGUoKQogU3RvcmFnZVRocmVhZDo6U3RvcmFnZVRocmVhZCgpCiAg
ICAgOiBtX3RocmVhZElEKDApCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogfQogCiBTdG9yYWdlVGhyZWFk
Ojp+U3RvcmFnZVRocmVhZCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVCghbV90aHJl
YWRJRCk7CiB9CiAKIGJvb2wgU3RvcmFnZVRocmVhZDo6c3RhcnQoKQogewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgp
KTsKICAgICBpZiAoIW1fdGhyZWFkSUQpCiAgICAgICAgIG1fdGhyZWFkSUQgPSBjcmVhdGVUaHJl
YWQoU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludENhbGxiYWNrLCB0aGlzLCAiV2ViQ29y
ZTogTG9jYWxTdG9yYWdlIik7CiAgICAgYWN0aXZlU3RvcmFnZVRocmVhZHMoKS5hZGQodGhpcyk7
CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludENh
bGxiYWNrKHZvaWQqIHRocmVhZCkKIAogdm9pZCBTdG9yYWdlVGhyZWFkOjp0aHJlYWRFbnRyeVBv
aW50KCkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIWlzSW5X
ZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKICAg
ICAKICAgICB3aGlsZSAoT3duUHRyPFN0b3JhZ2VUYXNrPiB0YXNrID0gbV9xdWV1ZS53YWl0Rm9y
TWVzc2FnZSgpKSB7CkBAIC04NSwxNCArODUsMTQgQEAgdm9pZCBTdG9yYWdlVGhyZWFkOjp0aHJl
YWRFbnRyeVBvaW50KCkKIAogdm9pZCBTdG9yYWdlVGhyZWFkOjpzY2hlZHVsZVRhc2soUGFzc093
blB0cjxTdG9yYWdlVGFzaz4gdGFzaykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKCFt
X3F1ZXVlLmtpbGxlZCgpICYmIG1fdGhyZWFkSUQpOwogICAgIG1fcXVldWUuYXBwZW5kKHRhc2sp
OwogfQogCiB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRlcm1pbmF0ZSgpCiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkp
OwogICAgIEFTU0VSVCghbV9xdWV1ZS5raWxsZWQoKSAmJiBtX3RocmVhZElEKTsKICAgICBhY3Rp
dmVTdG9yYWdlVGhyZWFkcygpLnJlbW92ZSh0aGlzKTsKICAgICAvLyBFdmVuIGluIHdlaXJkLCBl
eGNlcHRpb25hbCBjYXNlcywgZG9uJ3Qgd2FpdCBvbiBhIG5vbmV4aXN0ZW50IHRocmVhZCB0byB0
ZXJtaW5hdGUuCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBTdG9yYWdlVGhyZWFkOjp0ZXJtaW5h
dGUoKQogCiB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnBlcmZvcm1UZXJtaW5hdGUoKQogewotICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghaXNJbldlYkNvcmVFeGVjdXRpb25D
b250ZXh0KCkpOwogICAgIG1fcXVldWUua2lsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IDQyYTUzNmYuLmI5ZTA5NzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHN0YXRp
YyBjb25zdCBkb3VibGUgRGVmYXVsdFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbCA9IDMwMDsK
ICAgICAKIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmluaXRpYWxpemVUcmFja2VyKGNvbnN0IFN0cmlu
ZyYgc3RvcmFnZVBhdGgsIFN0b3JhZ2VUcmFja2VyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIEFTU0VSVCghc3RvcmFnZVRyYWNrZXIgfHwgIXN0b3JhZ2VUcmFja2VyLT5t
X2NsaWVudCk7CiAgICAgCiAgICAgaWYgKCFzdG9yYWdlVHJhY2tlcikKQEAgLTY2LDcgKzY2LDcg
QEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6aW50ZXJuYWxJbml0aWFsaXplKCkKIHsKICAgICBtX25l
ZWRzSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsKIAotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIC8vIE1h
a2Ugc3VyZSB0ZXh0IGVuY29kaW5nIG1hcHMgaGF2ZSBiZWVuIGJ1aWx0IG9uIHRoZSBtYWluIHRo
cmVhZCwgYXMgdGhlIFN0b3JhZ2VUcmFja2VyIHRocmVhZCBtaWdodCB0cnkgdG8gZG8gaXQgdGhl
cmUgaW5zdGVhZC4KICAgICAvLyBGSVhNRSAoPHJkYXI6Ly9wcm9ibGVtLzkxMjc4MTk+KTogSXMg
dGhlcmUgYSBtb3JlIGV4cGxpY2l0IHdheSBvZiBkb2luZyB0aGlzIGJlc2lkZXMgYWNjZXNzaW5n
IHRoZSBVVEY4RW5jb2Rpbmc/CkBAIC0xMzMsNyArMTMzLDcgQEAgU3RyaW5nIFN0b3JhZ2VUcmFj
a2VyOjp0cmFja2VyRGF0YWJhc2VQYXRoKCkKIHZvaWQgU3RvcmFnZVRyYWNrZXI6Om9wZW5UcmFj
a2VyRGF0YWJhc2UoYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKIHsKICAgICBBU1NFUlQobV9p
c0FjdGl2ZSk7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFpc0lu
V2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlR3VhcmQu
dHJ5TG9jaygpKTsKIAogICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQpAQCAtMTY1LDcgKzE2
NSw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmltcG9ydE9yaWdpbklkZW50aWZpZXJzKCkKICAg
ICBpZiAoIW1faXNBY3RpdmUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgQVNTRVJUKG1fdGhyZWFkKTsKIAogICAgIG1fdGhyZWFkLT5zY2hlZHVsZVRhc2soU3Rv
cmFnZVRhc2s6OmNyZWF0ZU9yaWdpbklkZW50aWZpZXJzSW1wb3J0KCkpOwpAQCAtMTg4LDcgKzE4
OCw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNJbXBvcnRPcmlnaW5JZGVudGlmaWVycygp
CiB7CiAgICAgQVNTRVJUKG1faXNBY3RpdmUpOwogICAgIAotICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVCghaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAg
ICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrRGF0YWJhc2UobV9kYXRhYmFzZUd1YXJkKTsK
QEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jSW1wb3J0T3JpZ2lu
SWRlbnRpZmllcnMoKQogICAgIAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1B
bmRUcmFja2VyRGF0YWJhc2UoKQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVCghaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChtX2lz
QWN0aXZlKTsKIAogICAgIG1fZGF0YWJhc2VHdWFyZC5sb2NrKCk7CkBAIC0zMDQsNyArMzA0LDcg
QEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c2V0T3JpZ2luRGV0YWlscyhjb25zdCBTdHJpbmcmIG9y
aWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmkKIAogICAgIE93blB0cjxTdG9yYWdlVGFzaz4gdGFz
ayA9IFN0b3JhZ2VUYXNrOjpjcmVhdGVTZXRPcmlnaW5EZXRhaWxzKG9yaWdpbklkZW50aWZpZXIu
aXNvbGF0ZWRDb3B5KCksIGRhdGFiYXNlRmlsZSk7CiAKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkp
IHsKKyAgICBpZiAoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpIHsKICAgICAgICAgQVNT
RVJUKG1fdGhyZWFkKTsKICAgICAgICAgbV90aHJlYWQtPnNjaGVkdWxlVGFzayh0YXNrLnJlbGVh
c2UoKSk7CiAgICAgfSBlbHNlIApAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgU3RvcmFnZVRyYWNr
ZXI6OnNldE9yaWdpbkRldGFpbHMoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25z
dCBTdHJpCiAKIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnNjaGVkdWxlVGFzayh2b2lkKiB0YXNrSW4p
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChTdG9yYWdlVHJhY2tlcjo6dHJhY2tlcigp
Lm1fdGhyZWFkKTsKICAgICAKICAgICBPd25QdHI8U3RvcmFnZVRhc2s+IHRhc2sgPSBhZG9wdFB0
cihyZWludGVycHJldF9jYXN0PFN0b3JhZ2VUYXNrKj4odGFza0luKSk7CkBAIC0zMjMsNyArMzIz
LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c2NoZWR1bGVUYXNrKHZvaWQqIHRhc2tJbikKIAog
dm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY1NldE9yaWdpbkRldGFpbHMoY29uc3QgU3RyaW5nJiBv
cmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRmlsZSkKIHsKLSAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIWlzSW5XZWJDb3JlRXhlY3V0aW9uQ29u
dGV4dCgpKTsKIAogICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQp
OwogCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6b3JpZ2lucyhWZWN0
b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+JiByZXN1bHQpCiB2b2lkIFN0b3JhZ2VUcmFja2Vy
OjpkZWxldGVBbGxPcmlnaW5zKCkKIHsKICAgICBBU1NFUlQobV9pc0FjdGl2ZSk7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIEFTU0VSVChtX3RocmVhZCk7CiAgICAgCiAgICAgaWYgKCFtX2lzQWN0aXZl
KQpAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmRlbGV0ZUFsbE9yaWdp
bnMoKQogICAgIAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMoKQog
ewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIAogICAgIE11dGV4TG9ja2VyIGxvY2tEYXRhYmFzZSht
X2RhdGFiYXNlR3VhcmQpOwogICAgIApAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQgU3RvcmFnZVRy
YWNrZXI6OnN5bmNEZWxldGVBbGxPcmlnaW5zKCkKIAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6ZGVs
ZXRlT3JpZ2luT25NYWluVGhyZWFkKHZvaWQqIG9yaWdpbklkZW50aWZpZXIpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogCiAgICAgU3RyaW5nIGlkZW50aWZpZXIgPSBhZG9wdFJlZihyZWludGVycHJldF9j
YXN0PFN0cmluZ0ltcGwqPihvcmlnaW5JZGVudGlmaWVyKSk7CiAgICAgdHJhY2tlcigpLmRlbGV0
ZU9yaWdpbihpZGVudGlmaWVyKTsKQEAgLTQ2Miw3ICs0NjIsNyBAQCB2b2lkIFN0b3JhZ2VUcmFj
a2VyOjpkZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogdm9pZCBT
dG9yYWdlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiB7ICAg
IAogICAgIEFTU0VSVChtX2lzQWN0aXZlKTsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKG1f
dGhyZWFkKTsKICAgICAKICAgICBpZiAoIW1faXNBY3RpdmUpCkBAIC00ODksNyArNDg5LDcgQEAg
dm9pZCBTdG9yYWdlVHJhY2tlcjo6ZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4p
CiAKIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBv
cmlnaW5JZGVudGlmaWVyKQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVCghaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgTXV0ZXhMb2NrZXIg
bG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgCkBAIC01NTMsNyArNTUzLDcgQEAg
dm9pZCBTdG9yYWdlVHJhY2tlcjo6d2lsbERlbGV0ZUFsbE9yaWdpbnMoKQogCiB2b2lkIFN0b3Jh
Z2VUcmFja2VyOjp3aWxsRGVsZXRlT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmll
cikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKCFtX29yaWdpblNldEd1YXJkLnRyeUxv
Y2soKSk7CiAKICAgICBtX29yaWdpbnNCZWluZ0RlbGV0ZWQuYWRkKG9yaWdpbklkZW50aWZpZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IDljMWJjN2YuLmNk
NzcwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKQEAgLTUzLDcg
KzUzLDcgQEAgaW5saW5lIFNoYXJlZFdvcmtlcjo6U2hhcmVkV29ya2VyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCiAKIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiBTaGFyZWRXb3Jr
ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHQoKSk7CiAgICAgRmVhdHVyZU9ic2VydmVyOjpvYnNlcnZlKHN0YXRpY19jYXN0PERvY3VtZW50
Kj4oY29udGV4dCktPmRvbVdpbmRvdygpLCBGZWF0dXJlT2JzZXJ2ZXI6OlNoYXJlZFdvcmtlclN0
YXJ0KTsKIAogICAgIFJlZlB0cjxTaGFyZWRXb3JrZXI+IHdvcmtlciA9IGFkb3B0UmVmKG5ldyBT
aGFyZWRXb3JrZXIoY29udGV4dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4IGY3
OWE4YjAuLjFjMWVmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTU5LDcgKzU5
LDcgQEAgaW5saW5lIFdvcmtlcjo6V29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAKIFBhc3NSZWZQdHI8V29ya2VyPiBXb3JrZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVj
dXRpb25Db250ZXh0KCkpOwogICAgIEZlYXR1cmVPYnNlcnZlcjo6b2JzZXJ2ZShzdGF0aWNfY2Fz
dDxEb2N1bWVudCo+KGNvbnRleHQpLT5kb21XaW5kb3coKSwgRmVhdHVyZU9ic2VydmVyOjpXb3Jr
ZXJTdGFydCk7CiAKICAgICBSZWZQdHI8V29ya2VyPiB3b3JrZXIgPSBhZG9wdFJlZihuZXcgV29y
a2VyKGNvbnRleHQpKTsKQEAgLTg0LDcgKzg0LDcgQEAgUGFzc1JlZlB0cjxXb3JrZXI+IFdvcmtl
cjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYK
IAogV29ya2VyOjp+V29ya2VyKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7IC8vIFRoZSBjb250ZXh0IGlzIHByb3RlY3RlZCBieSB3b3Jr
ZXIgY29udGV4dCBwcm94eSwgc28gaXQgY2Fubm90IGJlIGRlc3Ryb3llZCB3aGlsZSBhIFdvcmtl
ciBleGlzdHMuCiAgICAgbV9jb250ZXh0UHJveHktPndvcmtlck9iamVjdERlc3Ryb3llZCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApp
bmRleCAxNWFjYTZkLi5jMWRiY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMjYwLDE0ICsyNjAsMTQgQEAgV29ya2VyTWVzc2Fn
aW5nUHJveHk6Oldvcmtlck1lc3NhZ2luZ1Byb3h5KFdvcmtlciogd29ya2VyT2JqZWN0KQogI2Vu
ZGlmCiB7CiAgICAgQVNTRVJUKG1fd29ya2VyT2JqZWN0KTsKLSAgICBBU1NFUlQoKG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpICYmIGlzTWFpblRocmVhZCgpKQorICAgIEFT
U0VSVCgobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkgJiYgaXNJbldlYkNv
cmVFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgICAgIHx8IChtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmlzV29ya2VyQ29udGV4dCgpICYmIGN1cnJlbnRUaHJlYWQoKSA9PSBzdGF0aWNfY2Fz
dDxXb3JrZXJDb250ZXh0Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmdldCgpKS0+dGhyZWFk
KCktPnRocmVhZElEKCkpKTsKIH0KIAogV29ya2VyTWVzc2FnaW5nUHJveHk6On5Xb3JrZXJNZXNz
YWdpbmdQcm94eSgpCiB7CiAgICAgQVNTRVJUKCFtX3dvcmtlck9iamVjdCk7Ci0gICAgQVNTRVJU
KChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiBpc01haW5UaHJlYWQo
KSkKKyAgICBBU1NFUlQoKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpICYm
IGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKQogICAgICAgICAgICB8fCAobV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5pc1dvcmtlckNvbnRleHQoKSAmJiBjdXJyZW50VGhyZWFkKCkgPT0g
c3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC5nZXQo
KSktPnRocmVhZCgpLT50aHJlYWRJRCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVm
LmluIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3Iv
V2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5kZXggMWY4NjU5OC4uMzM5YWRiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0
RXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRF
eHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTEzMiw3ICsxMzIsNyBAQCBF
WFBPUlRTCiAgICAgICAgID9pbml0aWFsaXplTWFpblRocmVhZEBXVEZAQFlBWFhaCiAgICAgICAg
ID9pbml0aWFsaXplVGhyZWFkaW5nQFdURkBAWUFYWFoKICAgICAgICAgP2luc3RydW1lbnRhdGlv
bkZvclBhZ2VAV2ViQ29yZUBAWUFQQVZJbnN0cnVtZW50aW5nQWdlbnRzQDFAUEFWUGFnZUAxQEBa
Ci0gICAgICAgID9pc01haW5UaHJlYWRAV1RGQEBZQV9OWFoKKyAgICAgICAgP2lzSW5XZWJDb3Jl
RXhlY3V0aW9uQ29udGV4dEBXVEZAQFlBX05YWgogICAgICAgICA/bG9ja0BNdXRleEBXVEZAQFFB
RVhYWgogICAgICAgICA/bG9ja0F0b21pY2FsbHlJbml0aWFsaXplZFN0YXRpY011dGV4QFdURkBA
WUFYWFoKICAgICAgICAgP3NpZ25hbEBUaHJlYWRDb25kaXRpb25AV1RGQEBRQUVYWFoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJLaXQuY3BwCmluZGV4IDVkMjQwZmUuLjVhM2UyYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYktpdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViS2l0LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRp
YyBib29sIGdlbmVyYXRlRW50cm9weSh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5n
dGgpCiAjaWZuZGVmIE5ERUJVRwogc3RhdGljIHZvaWQgYXNzZXJ0VjhSZWN1cnNpb25TY29wZSgp
CiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSB8fCBXZWJDb3JlOjpWOFJlY3Vyc2lvblNj
b3BlOjpwcm9wZXJseVVzZWQoKSk7CisgICAgQVNTRVJUKCFpc0luV2ViQ29yZUV4ZWN1dGlvbkNv
bnRleHQoKSB8fCBXZWJDb3JlOjpWOFJlY3Vyc2lvblNjb3BlOjpwcm9wZXJseVVzZWQoKSk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcAppbmRleCAwNmUzYjkyLi5kYTA2
NTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3JrZXJGaWxlU3lz
dGVtQ2FsbGJhY2tzQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
b3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmNwcApAQCAtNDMyLDcgKzQzMiw3IEBAIHZv
aWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6ZGlkUmVhZERpcmVjdG9yeU9uV29y
a2VyVGhyZWFkKFNjcmlwdEV4ZWN1CiAKIHZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0Jy
aWRnZTo6cnVuVGFza09uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBQYXNzUmVmUHRyPFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2U+IGJyaWRnZSwgUGFzc093blB0cjxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrPiB0YXNrVG9SdW4pCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIHRhc2tUb1J1
bi0+cGVyZm9ybVRhc2soc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiB9CiAKQEAgLTQ1OSw3ICs0
NTksNyBAQCB2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OmRpc3BhdGNoVGFz
a1RvTWFpblRocmVhZChQYXNzT3duUHRyPFdlYkNvcgogdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2Fs
bGJhY2tzQnJpZGdlOjptYXlQb3N0VGFza1RvV29ya2VyKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIC8vIFJl
bGllcyBvbiBpdHMgY2FsbGVyIChNYWluVGhyZWFkRmlsZVN5c3RlbUNhbGxiYWNrczpkaWQqKSB0
byBrZWVwIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UgYWxpdmUuCi0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0
KCkpOwogCiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9hZGVyUHJveHlNdXRleCk7CiAgICAg
aWYgKG1fd29ya2VyTG9hZGVyUHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Xb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UuY3BwCmluZGV4
IGRkOTFjNTIuLjMyNWNiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2UuY3BwCkBAIC0xODMs
NyArMTgzLDcgQEAgdm9pZCBXb3JrZXJGaWxlV3JpdGVyQ2FsbGJhY2tzQnJpZGdlOjpkaWRUcnVu
Y2F0ZU9uV29ya2VyVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkMKIAogdm9pZCBXb3JrZXJGaWxlV3Jp
dGVyQ2FsbGJhY2tzQnJpZGdlOjpydW5UYXNrT25NYWluVGhyZWFkKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFBhc3NSZWZQdHI8V29ya2VyRmlsZVdyaXRl
ckNhbGxiYWNrc0JyaWRnZT4gYnJpZGdlLCBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+IHRhc2tUb1J1bikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKCFicmlkZ2Ut
Pm1fd3JpdGVyRGVsZXRlZCkKICAgICAgICAgdGFza1RvUnVuLT5wZXJmb3JtVGFzayhzY3JpcHRF
eGVjdXRpb25Db250ZXh0KTsKIH0KQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIFdvcmtlckZpbGVX
cml0ZXJDYWxsYmFja3NCcmlkZ2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZChQYXNzT3duUHRy
PFNjcmlwdAogCiB2b2lkIFdvcmtlckZpbGVXcml0ZXJDYWxsYmFja3NCcmlkZ2U6OmRpc3BhdGNo
VGFza1RvV29ya2VyVGhyZWFkKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4gdGFzaykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0lu
V2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgbV9wcm94eS0+cG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJDb250ZXh0KAogICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnJ1blRhc2tPbldv
cmtlclRocmVhZCwgdGhpcywgdGFzayksIG1fbW9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZmF2aWNvbmRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29uZGF0YWJhc2UuY3BwCmluZGV4IGI0MzlhNTUuLmRj
YmEzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29u
ZGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRmYXZpY29u
ZGF0YWJhc2UuY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgZ2NoYXIqIHdlYmtpdF9mYXZpY29uX2Rh
dGFiYXNlX2dldF9mYXZpY29uX3VyaShXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLAog
ewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19GQVZJQ09OX0RBVEFCQVNFKGRh
dGFiYXNlKSwgMCk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocGFnZVVSSSwgMCk7Ci0gICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25D
b250ZXh0KCkpOwogCiAgICAgU3RyaW5nIGljb25VUkkgPSBpY29uRGF0YWJhc2UoKS5zeW5jaHJv
bm91c0ljb25VUkxGb3JQYWdlVVJMKFN0cmluZzo6ZnJvbVVURjgocGFnZVVSSSkpOwogICAgIGlm
IChpY29uVVJJLmlzRW1wdHkoKSkKQEAgLTM4OCw3ICszODgsNyBAQCBnY2hhciogd2Via2l0X2Zh
dmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb25fdXJpKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0
YWJhc2UsCiAKIHN0YXRpYyBHZGtQaXhidWYqIGdldEljb25QaXhidWZTeW5jaHJvbm91c2x5KFdl
YktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgY29u
c3QgSW50U2l6ZSYgaWNvblNpemUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgLy8gVGhlIGV4
YWN0IHNpemUgd2UgcGFzcyBpcyBpcnJlbGV2YW50IHRvIHRoZSBpY29uRGF0YWJhc2UgY29kZS4K
ICAgICAvLyBXZSBtdXN0IHBhc3Mgc29tZXRoaW5nIGdyZWF0ZXIgdGhhbiAweDAgdG8gZ2V0IGEg
cGl4YnVmLgpAQCAtNjAzLDcgKzYwMyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEZhdmljb25EYXRh
YmFzZVByb2Nlc3NQZW5kaW5nSWNvbnNGb3JVUkkoV2ViS2l0RmF2aWNvbkRhdGFiYXNlCiAKIHN0
YXRpYyB2b2lkIHdlYmtpdEZhdmljb25EYXRhYmFzZUltcG9ydEZpbmlzaGVkKFdlYktpdEZhdmlj
b25EYXRhYmFzZSogZGF0YWJhc2UpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGRhdGFiYXNlLT5w
cml2LT5pbXBvcnRGaW5pc2hlZCA9IHRydWU7CiAKICAgICAvLyBJbXBvcnQgaXMgY29tcGxldGUs
IHByb2Nlc3MgcGVuZGluZyByZXF1ZXN0cyBmb3IgcGFnZXMgdGhhdCBhcmUgbm90IGluIHRoZSBk
YXRhYmFzZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViTG9jYWxpemFi
bGVTdHJpbmdzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmlu
Z3MubW0KaW5kZXggNTA2Y2I1Yy4uZWIxNDI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
TWlzYy9XZWJMb2NhbGl6YWJsZVN0cmluZ3MubW0KQEAgLTM5LDcgKzM5LDcgQEAgTlNTdHJpbmcg
KldlYkxvY2FsaXplZFN0cmluZyhXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUgKnN0cmluZ3NC
dW5kbGUsIGNvbnN0IGMKICAgICAvLyBhbmQgaXRzIHVzZSBvZiBbTlNCdW5kbGUgbG9jYWxpemVk
U3RyaW5nRm9yS2V5Ojo6XSwgd2hpY2ggaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgdGhyZWFkLXNh
ZmUuIElmCiAgICAgLy8gd2UgZGVjaWRlIHdlIG5lZWQgdG8gdXNlIHRoaXMgb24gYmFja2dyb3Vu
ZCB0aHJlYWRzLCB3ZSdsbCBuZWVkIHRvIGFkZCBsb2NraW5nIGhlcmUgYW5kIG1ha2Ugc3VyZQog
ICAgIC8vIGl0IGRvZXNuJ3QgYWZmZWN0IHBlcmZvcm1hbmNlLgotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAog
ICAgIE5TQnVuZGxlICpidW5kbGU7CiAgICAgaWYgKHN0cmluZ3NCdW5kbGUgPT0gTlVMTCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJD
bGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNs
aWVudC5tbQppbmRleCAwMjc1OTQ0Li4yMTYxYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNsaWVudC5tbQpAQCAtNjcsNyArNjcs
NyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW5P
bk1haW5UaHJlYWQodm9pZCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGEqIGluZm8gPSBzdGF0aWNfY2FzdDxEaWRNb2Rp
ZnlPcmlnaW5EYXRhKj4oY29udGV4dCk7CiAgICAgICAgIGluZm8tPmNsaWVudC0+ZGlzcGF0Y2hE
aWRNb2RpZnlPcmlnaW4oaW5mby0+b3JpZ2luLmdldCgpKTsKICAgICAgICAgZGVsZXRlIGluZm87
CkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAKIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xp
ZW50OjpkaXNwYXRjaERpZE1vZGlmeU9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogewot
ICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKKyAgICBpZiAoIWlzSW5XZWJDb3JlRXhlY3V0aW9u
Q29udGV4dCgpKSB7CiAgICAgICAgIERpZE1vZGlmeU9yaWdpbkRhdGE6OmRpc3BhdGNoVG9NYWlu
VGhyZWFkKHRoaXMsIG9yaWdpbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05Miw3ICs5
Miw3IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50OjpkaXNwYXRjaERpZE1vZGlmeU9y
aWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogCiB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlckNs
aWVudDo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoIWlzTWFpblRocmVh
ZCgpKSB7CisgICAgaWYgKCFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSkgewogICAgICAg
ICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRvTWFpblRocmVhZCh0aGlzLCBvcmlnaW4p
OwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
U3RvcmFnZS9XZWJTdG9yYWdlVHJhY2tlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1N0
b3JhZ2UvV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQubW0KaW5kZXggM2JjOWYxMC4uYTJlYzllMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlVHJhY2tlckNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VUcmFja2Vy
Q2xpZW50Lm1tCkBAIC01MCw3ICs1MCw3IEBAIFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50Ojp+V2Vi
U3RvcmFnZVRyYWNrZXJDbGllbnQoKQogCiB2b2lkIFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50Ojpk
aXNwYXRjaERpZE1vZGlmeU9yaWdpbk9uTWFpblRocmVhZCh2b2lkKiBjb250ZXh0KQogewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9u
Q29udGV4dCgpKTsKICAgICAvLyBhZG9wdFJlZiBpcyBiYWxhbmNlZCBieSBsZWFrUmVmIGluIGRp
c3BhdGNoRGlkTW9kaWZ5T3JpZ2luLgogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
ID0gYWRvcHRSZWYoc3RhdGljX2Nhc3Q8U2VjdXJpdHlPcmlnaW4qPihjb250ZXh0KSk7CiAgICAg
V2ViU3RvcmFnZVRyYWNrZXJDbGllbnQ6OnNoYXJlZFdlYlN0b3JhZ2VUcmFja2VyQ2xpZW50KCkt
PmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKG9yaWdpbi5nZXQoKSk7CkBAIC02OCw3ICs2OCw3IEBA
IHZvaWQgV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQ6OmRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKGNv
bnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpCiB7CiAgICAgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdp
bj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIo
b3JpZ2luSWRlbnRpZmllcik7CiAKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgaWYg
KCFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSkgewogICAgICAgICAvLyBsZWFrUmVmIGlz
IGJhbGFuY2VkIGJ5IGFkb3B0UmVmIGluIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25NYWluVGhy
ZWFkLgogICAgICAgICBjYWxsT25NYWluVGhyZWFkKGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luT25N
YWluVGhyZWFkLCBvcmlnaW4ubGVha1JlZigpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQubW0KaW5kZXggMzA1NWY5ZS4uZDQyNzUzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCkBAIC01Nyw3ICs1Nyw3IEBAIFJlc291cmNlRXJyb3IgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxCiAKIHZv
aWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNv
cmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbigpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5k
ZXggNGQ1YTZkMS4uNDIyMWFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKQEAgLTYx
LDcgKzYxLDcgQEAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmUKIAogc3RhdGljIFN0cmluZyYgcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpCiB7Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0
KCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBiYXNlLCAoKSk7CiAgICAgcmV0
dXJuIGJhc2U7CiB9CkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjCiAK
IHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldl
YkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgaWYgKHBy
aXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IGNmZDEyNGMuLmQ3YTQxNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMzQ3LDcgKzM0Nyw3
IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaERpZE1vZGlmeU9yaWdpbk9u
TWFpblRocmVhZCh2b2lkKiBjb250ZXh0KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsK
ICAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YSogaW5mbyA9IHN0YXRpY19jYXN0PERpZE1vZGlm
eU9yaWdpbkRhdGEqPihjb250ZXh0KTsKICAgICAgICAgaW5mby0+ZGF0YWJhc2VNYW5hZ2VyLT5k
aXNwYXRjaERpZE1vZGlmeU9yaWdpbihpbmZvLT5vcmlnaW4uZ2V0KCkpOwogICAgICAgICBkZWxl
dGUgaW5mbzsKQEAgLTM1OSw3ICszNTksNyBAQCBwcml2YXRlOgogCiB2b2lkIFdlYkRhdGFiYXNl
TWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikK
IHsKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgaWYgKCFpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSkgewogICAgICAgICBEaWRNb2RpZnlPcmlnaW5EYXRhOjpkaXNwYXRjaFRv
TWFpblRocmVhZCh0aGlzLCBvcmlnaW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzg4
LDcgKzM4OCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRGF0YWJhc2VNYW5hZ2Vy
OjpzZXRRdW90YSgKIAogdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5
RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5h
bWUpCiB7Ci0gICAgaWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgIGlmICghaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpIHsKICAgICAgICAgRGlkTW9kaWZ5T3JpZ2luRGF0YTo6ZGlzcGF0
Y2hUb01haW5UaHJlYWQodGhpcywgb3JpZ2luKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5k
ZWYuaW4gYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVm
LmluCmluZGV4IDhhMDk5MzQuLmE5MWJmZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC93
aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgpAQCAtMTMyLDcgKzEzMiw3IEBA
IEVYUE9SVFMKICAgICAgICAgP2luaXRpYWxpemVNYWluVGhyZWFkQFdURkBAWUFYWFoKICAgICAg
ICAgP2luaXRpYWxpemVUaHJlYWRpbmdAV1RGQEBZQVhYWgogICAgICAgICA/aW5zdHJ1bWVudGF0
aW9uRm9yUGFnZUBXZWJDb3JlQEBZQVBBVkluc3RydW1lbnRpbmdBZ2VudHNAMUBQQVZQYWdlQDFA
QFoKLSAgICAgICAgP2lzTWFpblRocmVhZEBXVEZAQFlBX05YWgorICAgICAgICA/aXNJbldlYkNv
cmVFeGVjdXRpb25Db250ZXh0QFdURkBAWUFfTlhaCiAgICAgICAgID9sb2NrQE11dGV4QFdURkBA
UUFFWFhaCiAgICAgICAgID9sb2NrQXRvbWljYWxseUluaXRpYWxpemVkU3RhdGljTXV0ZXhAV1RG
QEBZQVhYWgogICAgICAgICA/c2lnbmFsQFRocmVhZENvbmRpdGlvbkBXVEZAQFFBRVhYWgpAQCAt
NTIwLDcgKzUyMCw3IEBAIEVYUE9SVFMKICAgICAgICAgP2luaXRpYWxpemVNYWluVGhyZWFkQFdU
RkBAWUFYWFoKICAgICAgICAgP2luaXRpYWxpemVUaHJlYWRpbmdAV1RGQEBZQVhYWgogICAgICAg
ICA/aW5zdHJ1bWVudGF0aW9uRm9yUGFnZUBXZWJDb3JlQEBZQVBBVkluc3RydW1lbnRpbmdBZ2Vu
dHNAMUBQQVZQYWdlQDFAQFoKLSAgICAgICAgP2lzTWFpblRocmVhZEBXVEZAQFlBX05YWgorICAg
ICAgICA/aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0QFdURkBAWUFfTlhaCiAgICAgICAgID9s
b2NrQE11dGV4QFdURkBAUUFFWFhaCiAgICAgICAgID9sb2NrQXRvbWljYWxseUluaXRpYWxpemVk
U3RhdGljTXV0ZXhAV1RGQEBZQVhYWgogICAgICAgICA/c2lnbmFsQFRocmVhZENvbmRpdGlvbkBX
VEZAQFFBRVhYWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9X
ZWJLaXRfQ2Fpcm8uZGVmIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRf
Q2Fpcm8uZGVmCmluZGV4IGU0Y2QyNjYuLjdjYjgyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0X0NhaXJvLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdF9DYWlyby5kZWYKQEAgLTEyNyw3ICsxMjcsNyBAQCBF
WFBPUlRTCiAgICAgICAgID9kZXRhY2hUaHJlYWRAV1RGQEBZQVhJQFoKICAgICAgICAgP2luaXRp
YWxpemVNYWluVGhyZWFkQFdURkBAWUFYWFoKICAgICAgICAgP2luaXRpYWxpemVUaHJlYWRpbmdA
V1RGQEBZQVhYWgotICAgICAgICA/aXNNYWluVGhyZWFkQFdURkBAWUFfTlhaCisgICAgICAgID9p
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHRAV1RGQEBZQV9OWFoKICAgICAgICAgP2xvY2tATXV0
ZXhAV1RGQEBRQUVYWFoKICAgICAgICAgP2xvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRTdGF0aWNN
dXRleEBXVEZAQFlBWFhaCiAgICAgICAgID9zaWduYWxAVGhyZWFkQ29uZGl0aW9uQFdURkBAUUFF
WFhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdF9D
YWlyb19kZWJ1Zy5kZWYgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdF9D
YWlyb19kZWJ1Zy5kZWYKaW5kZXggZTRhYzExOS4uN2QwMTA5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRfQ2Fpcm9fZGVidWcuZGVmCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0X0NhaXJvX2RlYnVnLmRlZgpAQCAt
MTI3LDcgKzEyNyw3IEBAIEVYUE9SVFMKICAgICAgICAgP2RldGFjaFRocmVhZEBXVEZAQFlBWElA
WgogICAgICAgICA/aW5pdGlhbGl6ZU1haW5UaHJlYWRAV1RGQEBZQVhYWgogICAgICAgICA/aW5p
dGlhbGl6ZVRocmVhZGluZ0BXVEZAQFlBWFhaCi0gICAgICAgID9pc01haW5UaHJlYWRAV1RGQEBZ
QV9OWFoKKyAgICAgICAgP2lzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dEBXVEZAQFlBX05YWgog
ICAgICAgICA/bG9ja0BNdXRleEBXVEZAQFFBRVhYWgogICAgICAgICA/bG9ja0F0b21pY2FsbHlJ
bml0aWFsaXplZFN0YXRpY011dGV4QFdURkBAWUFYWFoKICAgICAgICAgP3NpZ25hbEBUaHJlYWRD
b25kaXRpb25AV1RGQEBRQUVYWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0hvc3RSZWNvcmQuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvSG9z
dFJlY29yZC5jcHAKaW5kZXggMDc3NWQyNC4uNWVmNjBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvSG9zdFJlY29yZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvSG9zdFJlY29yZC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgSG9zdFJlY29y
ZDo6fkhvc3RSZWNvcmQoKQogCiB2b2lkIEhvc3RSZWNvcmQ6OnNjaGVkdWxlUmVzb3VyY2VMb2Fk
ZXIoUGFzc1JlZlB0cjxTY2hlZHVsYWJsZUxvYWRlcj4gbG9hZGVyKQogewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgp
KTsKIAogICAgIGxvYWRlci0+c2V0SG9zdFJlY29yZCh0aGlzKTsKICAgICAKQEAgLTcwLDcgKzcw
LDcgQEAgdm9pZCBIb3N0UmVjb3JkOjpzY2hlZHVsZVJlc291cmNlTG9hZGVyKFBhc3NSZWZQdHI8
U2NoZWR1bGFibGVMb2FkZXI+IGxvYWRlcikKIAogdm9pZCBIb3N0UmVjb3JkOjphZGRMb2FkZXJJ
blByb2dyZXNzKFNjaGVkdWxhYmxlTG9hZGVyKiBsb2FkZXIpCiB7Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwog
CiAgICAgbV9sb2FkZXJzSW5Qcm9ncmVzcy5hZGQobG9hZGVyKTsKICAgICBsb2FkZXItPnNldEhv
c3RSZWNvcmQodGhpcyk7CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgSG9zdFJlY29yZDo6YWRkTG9h
ZGVySW5Qcm9ncmVzcyhTY2hlZHVsYWJsZUxvYWRlciogbG9hZGVyKQogCiB2b2lkIEhvc3RSZWNv
cmQ6OnJlbW92ZUxvYWRlcihTY2hlZHVsYWJsZUxvYWRlciogbG9hZGVyKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4
dCgpKTsKIAogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IER1ZSB0byBJUEMgcmFjZSBj
b25kaXRpb25zLCBpdCdzIHBvc3NpYmxlIHRoaXMgSG9zdFJlY29yZCB3aWxsIGJlIGFza2VkIHRv
IHJlbW92ZSB0aGUgc2FtZSBsb2FkZXIgdHdpY2UuCiAgICAgLy8gSXQgd291bGQgYmUgbmljZSB0
byBrbm93IHRoZSBsb2FkZXIgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIGFuZCB0cmVhdCBpdCBh
cyBhIG5vLW9wLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCA4YzMzMzJiLi5jZjRi
MTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApAQCAtNzksNyArNzksNyBAQCBIb3N0
UmVjb3JkKiBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpob3N0Rm9yVVJMKGNvbnN0IFdl
YkNvcmU6OktVUkwmIHVybCwgQwogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6
OnJlbW92ZUxvYWRlcihTY2hlZHVsYWJsZUxvYWRlciogbG9hZGVyKQogewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgp
KTsKICAgICBBU1NFUlQobG9hZGVyKTsKIAogICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihO
ZXR3b3JrUHJvY2VzcykgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6cmVtb3ZlTG9hZElk
ZW50aWZpZXIgcmVtb3ZpbmcgbG9hZGVyICVzIiwgbG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZFNjaGVkdWxlcjo6cmVtb3ZlTG9hZGVyKFNjaGVkdWxhYmxlTG9hZGVyKiBsb2FkZXIp
CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6cmVjZWl2ZWRSZWRpcmVjdChT
Y2hlZHVsYWJsZUxvYWRlciogbG9hZGVyLCBjb25zdCBXZWJDb3JlOjpLVVJMJiByZWRpcmVjdFVS
TCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29y
ZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKE5ldHdv
cmtQcm9jZXNzKSBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZWNlaXZlZFJlZGlyZWN0
IGxvYWRlciBvcmlnaW5hbGx5IGZvciAnJXMnIHJlZGlyZWN0ZWQgdG8gJyVzJyIsIGxvYWRlci0+
cmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlZGlyZWN0VVJMLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgSG9zdFJlY29yZCogb2xkSG9zdCA9IGxvYWRlci0+
aG9zdFJlY29yZCgpOwpAQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRpYyBib29sIHJlbW92ZVNjaGVk
dWxlZExvYWRlcnNDYWxsZWQgPSBmYWxzZTsKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOjpyZW1vdmVTY2hlZHVsZWRMb2FkZXJzKHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIEFTU0VSVChyZW1vdmVTY2hlZHVsZWRMb2FkZXJzQ2FsbGVkKTsKIAogICAg
IE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIqIHNjaGVkdWxlciA9IHN0YXRpY19jYXN0PE5l
dHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIqPihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IDdmNGJiZGQuLjVkY2MzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTEsMTIgKzUxLDEyIEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogTmV0d29ya1Jlc291cmNlTG9hZGVyOjpOZXR3b3JrUmVzb3VyY2VM
b2FkZXIoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0ZXJz
LCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbikKICAgICA6IFNjaGVk
dWxhYmxlTG9hZGVyKGxvYWRQYXJhbWV0ZXJzLCBjb25uZWN0aW9uKQogewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgp
KTsKIH0KIAogTmV0d29ya1Jlc291cmNlTG9hZGVyOjp+TmV0d29ya1Jlc291cmNlTG9hZGVyKCkK
IHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4
ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKCFtX2hhbmRsZSk7CiB9CiAKQEAgLTcyLDcg
KzcyLDcgQEAgdWludDY0X3QgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkZXN0aW5hdGlvbklEKCkg
Y29uc3QKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKIHsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHQoKSk7CiAKICAgICAvLyBFeHBsaWNpdCByZWYoKSBiYWxhbmNlZCBieSBhIGRlcmVmKCkgaW4g
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXNvdXJjZUhhbmRsZVN0b3BwZWQoKQogICAgIHJlZigp
OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpwZXJmb3Jt
U3RvcHModm9pZCopCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXNvdXJjZUhhbmRs
ZVN0b3BwZWQoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlz
SW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKIAogICAgIGlmIChGb3JtRGF0YSogZm9ybURh
dGEgPSByZXF1ZXN0KCkuaHR0cEJvZHkoKSkKICAgICAgICAgZm9ybURhdGEtPnJlbW92ZUdlbmVy
YXRlZEZpbGVzSWZOZWVkZWQoKTsKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1
ZXN0JiByZQogewogICAgIC8vIFdlIG9ubHkgZXhwZWN0IHRvIGdldCB0aGUgd2lsbFNlbmRSZXF1
ZXN0IGNhbGxiYWNrIGZyb20gUmVzb3VyY2VIYW5kbGUgYXMgdGhlIHJlc3VsdCBvZiBhIHJlZGly
ZWN0LgogICAgIEFTU0VSVCghcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSk7Ci0gICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRl
eHQoKSk7CiAKICAgICAvLyBJTVBPUlRBTlQ6IFRoZSBmYWN0IHRoYXQgdGhpcyBtZXNzYWdlIHRv
IHRoZSBXZWJQcm9jZXNzIGlzIHN5bmMgaXMgd2hhdCBtYWtlcyBvdXIgY3VycmVudCBhcHByb2Fj
aCB0byBzeW5jaHJvbm91cyBYTUxIdHRwUmVxdWVzdHMgc2FmZS4KICAgICAvLyBJZiB0aGlzIG1l
c3NhZ2UgY2hhbmdlcyB0byBiZSBhc3luY2hyb25vdXMgd2UgbWlnaHQgaW50cm9kdWNlIGEgc2l0
dWF0aW9uIHdoZXJlIHRoZSBOZXR3b3JrUHJvY2VzcyBpcyBkZWFkbG9ja2VkIHdhaXRpbmcgZm9y
IDYgY29ubmVjdGlvbnMKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBj
bwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiBib29sIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewot
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghaXNJbldlYkNvcmVFeGVj
dXRpb25Db250ZXh0KCkpOwogCiAgICAgLy8gSU1QT1JUQU5UOiBUaGUgZmFjdCB0aGF0IHRoaXMg
bWVzc2FnZSB0byB0aGUgV2ViUHJvY2VzcyBpcyBzeW5jIGlzIHdoYXQgbWFrZXMgb3VyIGN1cnJl
bnQgYXBwcm9hY2ggdG8gc3luY2hyb25vdXMgWE1MSHR0cFJlcXVlc3RzIHNhZmUuCiAgICAgLy8g
SWYgdGhpcyBtZXNzYWdlIGNoYW5nZXMgdG8gYmUgYXN5bmNocm9ub3VzIHdlIG1pZ2h0IGludHJv
ZHVjZSBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgTmV0d29ya1Byb2Nlc3MgaXMgZGVhZGxvY2tlZCB3
YWl0aW5nIGZvciA2IGNvbm5lY3Rpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvU2NoZWR1bGFibGVMb2FkZXIuaAppbmRleCBhNjFhNmZmLi4xOTE0Njk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9TY2hlZHVsYWJsZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1NjaGVkdWxhYmxlTG9hZGVyLmgKQEAg
LTU2LDggKzU2LDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc1N5bmNocm9u
b3VzKCkgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgc2V0SG9zdFJlY29yZChIb3N0UmVj
b3JkKiBob3N0UmVjb3JkKSB7IEFTU0VSVChpc01haW5UaHJlYWQoKSk7IG1faG9zdFJlY29yZCA9
IGhvc3RSZWNvcmQ7IH0KLSAgICBIb3N0UmVjb3JkKiBob3N0UmVjb3JkKCkgY29uc3QgeyBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOyByZXR1cm4gbV9ob3N0UmVjb3JkLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRIb3N0UmVjb3JkKEhvc3RSZWNvcmQqIGhvc3RSZWNvcmQpIHsgQVNTRVJUKGlzSW5XZWJD
b3JlRXhlY3V0aW9uQ29udGV4dCgpKTsgbV9ob3N0UmVjb3JkID0gaG9zdFJlY29yZDsgfQorICAg
IEhvc3RSZWNvcmQqIGhvc3RSZWNvcmQoKSBjb25zdCB7IEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSk7IHJldHVybiBtX2hvc3RSZWNvcmQuZ2V0KCk7IH0KIAogcHJvdGVjdGVk
OgogICAgIFNjaGVkdWxhYmxlTG9hZGVyKGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1N5bmNOZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvU3luY05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggMWY4MmQxNC4uZTk3ZTNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvU3luY05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvU3luY05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTUy
LDcgKzUyLDcgQEAgdm9pZCBTeW5jTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAg
Ly8gICBBIC0gUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkgaXMgc2Fm
ZSB0byBydW4gb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KICAgICAvLyAgIEIgLSBXcml0ZSBjdXN0
b20gbG9hZGluZyBsb2dpYyB0aGF0IGlzIGtub3duIHRvIGJlIHNhZmUgb24gYSBiYWNrZ3JvdW5k
IHRocmVhZC4KICAgICAKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBSZXNvdXJjZUVycm9yIGVycm9y
OwogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0K
aW5kZXggNzgxOTUzMy4uZDQxMTM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtMzcs
NyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RhdGljIE93blB0cjxOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+JiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4sIHNlc3Npb24sICgpKTsKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0KQEAgLTEwOCw3ICsx
MDgsNyBAQCBSZXNvdXJjZUVycm9yIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpibG9ja2VkRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogCiBzdGF0aWMgU3RyaW5nJiBwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkKIHsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGJhc2UsICgpKTsKICAgICByZXR1cm4g
YmFzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNj
YXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQppbmRleCAx
NzQ1ZmUyLi5kY2E1NGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFj
Lm1tCkBAIC0yOTgsNyArMjk4LDcgQEAgc3RhdGljIGNvbnN0IFJlc0lEIE1JTUVMaXN0U3RyaW5n
U3RyaW5nTnVtYmVyID0gMTI4OwogCiBzdGF0aWMgYm9vbCBnZXRQbHVnaW5JbmZvRnJvbUNhcmJv
blJlc291cmNlc09uTWFpblRocmVhZChDRkJ1bmRsZVJlZiBidW5kbGUsIFBsdWdpbk1vZHVsZUlu
Zm8mIHBsdWdpbikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBSZXNvdXJjZU1hcCByZXNvdXJj
ZU1hcChidW5kbGUpOwogICAgIGlmICghcmVzb3VyY2VNYXAuaXNWYWxpZCgpKQpAQCAtMzU0LDcg
KzM1NCw3IEBAIHN0YXRpYyBib29sIGdldFBsdWdpbkluZm9Gcm9tQ2FyYm9uUmVzb3VyY2VzT25N
YWluVGhyZWFkKENGQnVuZGxlUmVmIGJ1bmRsZSwgUGx1CiAKIHN0YXRpYyBib29sIGdldFBsdWdp
bkluZm9Gcm9tQ2FyYm9uUmVzb3VyY2VzKENGQnVuZGxlUmVmIGJ1bmRsZSwgUGx1Z2luTW9kdWxl
SW5mbyYgcGx1Z2luKQogewotICAgIGlmIChpc01haW5UaHJlYWQoKSkKKyAgICBpZiAoaXNJbldl
YkNvcmVFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybiBnZXRQbHVnaW5JbmZvRnJv
bUNhcmJvblJlc291cmNlc09uTWFpblRocmVhZChidW5kbGUsIGNvbnN0X2Nhc3Q8UGx1Z2luTW9k
dWxlSW5mbyY+KHBsdWdpbikpOwogCiAgICAgX19ibG9jayBib29sIGdvdFBsdWdpbkluZm8gPSBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEZhdmljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCmluZGV4IDliYmFjMDAuLmQ2NDgxOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZhdmljb25EYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2aWNv
bkRhdGFiYXNlLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIFdFQktJVF9ERUZJTkVfQVNZTkNfREFU
QV9TVFJVQ1QoR2V0RmF2aWNvblN1cmZhY2VBc3luY0RhdGEpCiAKIHN0YXRpYyBjYWlyb19zdXJm
YWNlX3QqIGdldEljb25TdXJmYWNlU3luY2hyb25vdXNseShXZWJLaXRGYXZpY29uRGF0YWJhc2Uq
IGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIEdFcnJvcioqIGVycm9yKQogewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9u
Q29udGV4dCgpKTsKIAogICAgIC8vIFRoZSBleGFjdCBzaXplIHdlIHBhc3MgaXMgaXJyZWxldmFu
dCB0byB0aGUgaWNvbkRhdGFiYXNlIGNvZGUuCiAgICAgLy8gV2UgbXVzdCBwYXNzIHNvbWV0aGlu
ZyBncmVhdGVyIHRoYW4gMHgwIHRvIGdldCBhbiBpY29uLgpAQCAtMjA3LDcgKzIwNyw3IEBAIHN0
YXRpYyB2b2lkIGRpZENoYW5nZUljb25Gb3JQYWdlVVJMQ2FsbGJhY2soV0tJY29uRGF0YWJhc2VS
ZWYgd2tJY29uRGF0YWJhc2UsIFdLCiAKIHN0YXRpYyB2b2lkIGljb25EYXRhUmVhZHlGb3JQYWdl
VVJMQ2FsbGJhY2soV0tJY29uRGF0YWJhc2VSZWYgd2tJY29uRGF0YWJhc2UsIFdLVVJMUmVmIHdr
UGFnZVVSTCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAg
cHJvY2Vzc1BlbmRpbmdJY29uc0ZvclBhZ2VVUkwoV0VCS0lUX0ZBVklDT05fREFUQUJBU0UoY2xp
ZW50SW5mbyksIHRvSW1wbCh3a1BhZ2VVUkwpLT5zdHJpbmcoKSk7CiB9CiAKQEAgLTM4NSw3ICsz
ODUsNyBAQCBnY2hhciogd2Via2l0X2Zhdmljb25fZGF0YWJhc2VfZ2V0X2Zhdmljb25fdXJpKFdl
YktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX0ZBVklDT05fREFUQUJBU0UoZGF0YWJhc2UpLCAwKTsKICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChwYWdlVVJMLCAwKTsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBTdHJpbmcg
aWNvblVSTEZvclBhZ2VVUkw7CiAgICAgZGF0YWJhc2UtPnByaXYtPmljb25EYXRhYmFzZS0+c3lu
Y2hyb25vdXNJY29uVVJMRm9yUGFnZVVSTChTdHJpbmc6OmZyb21VVEY4KHBhZ2VVUkwpLCBpY29u
VVJMRm9yUGFnZVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ByaW50aW5nVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLUHJpbnRpbmdWaWV3Lm1tCmluZGV4IDQwNWU4MzkuLmQ3NWFlZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCkBAIC0xMDAs
NyArMTAwLDcgQEAgLSAodm9pZClfc3VzcGVuZEF1dG9kaXNwbGF5CiAKIC0gKHZvaWQpX2RlbGF5
ZWRSZXN1bWVBdXRvZGlzcGxheVRpbWVyRmlyZWQKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgCiAg
ICAgX2F1dG9kaXNwbGF5UmVzdW1lVGltZXIgPSBuaWw7CiAgICAgW3NlbGYgX3NldEF1dG9kaXNw
bGF5OllFU107CkBAIC0xMjMsNyArMTIzLDcgQEAgLSAodm9pZClfZGVsYXllZFJlc3VtZUF1dG9k
aXNwbGF5CiAKIC0gKHZvaWQpX2FkanVzdFByaW50aW5nTWFyZ2luc0ZvckhlYWRlckFuZEZvb3Rl
cgogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7IC8vIFRoaXMgZnVuY2l0b24gY2FsbHMg
dGhlIGNsaWVudCwgd2hpY2ggc2hvdWxkIG9ubHkgYmUgZG9uZSBvbiBtYWluIHRocmVhZC4KKyAg
ICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOyAvLyBUaGlzIGZ1bmNpdG9u
IGNhbGxzIHRoZSBjbGllbnQsIHdoaWNoIHNob3VsZCBvbmx5IGJlIGRvbmUgb24gbWFpbiB0aHJl
YWQuCiAKICAgICBOU1ByaW50SW5mbyAqaW5mbyA9IFtfcHJpbnRPcGVyYXRpb24gcHJpbnRJbmZv
XTsKICAgICBOU011dGFibGVEaWN0aW9uYXJ5ICppbmZvRGljdGlvbmFyeSA9IFtpbmZvIGRpY3Rp
b25hcnldOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHN0cnVjdCBJUENDYWxsYmFja0NvbnRleHQgewog
CiBzdGF0aWMgdm9pZCBwYWdlRGlkRHJhd1RvSW1hZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUmIGltYWdlSGFuZGxlLCBXS0Vycm9yUmVmLCB2b2lkKiB1bnR5cGVkQ29udGV4dCkKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAKICAgICBPd25QdHI8SVBDQ2FsbGJhY2tDb250ZXh0PiBjb250ZXh0
ID0gYWRvcHRQdHIoc3RhdGljX2Nhc3Q8SVBDQ2FsbGJhY2tDb250ZXh0Kj4odW50eXBlZENvbnRl
eHQpKTsKICAgICBXS1ByaW50aW5nVmlldyAqdmlldyA9IGNvbnRleHQtPnZpZXcuZ2V0KCk7CkBA
IC0yMzgsNyArMjM4LDcgQEAgc3RhdGljIHZvaWQgcGFnZURpZERyYXdUb0ltYWdlKGNvbnN0IFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBpbWFnZUhhbmRsZSwgV0tFcnIKIAogc3RhdGljIHZvaWQg
cGFnZURpZERyYXdUb1BERihXS0RhdGFSZWYgZGF0YVJlZiwgV0tFcnJvclJlZiwgdm9pZCogdW50
eXBlZENvbnRleHQpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQo
aXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgT3duUHRyPElQQ0NhbGxiYWNr
Q29udGV4dD4gY29udGV4dCA9IGFkb3B0UHRyKHN0YXRpY19jYXN0PElQQ0NhbGxiYWNrQ29udGV4
dCo+KHVudHlwZWRDb250ZXh0KSk7CiAgICAgV0tQcmludGluZ1ZpZXcgKnZpZXcgPSBjb250ZXh0
LT52aWV3LmdldCgpOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWREcmF3
VG9QREYoV0tEYXRhUmVmIGRhdGFSZWYsIFdLRXJyb3JSZWYsIHZvaWQqIHVudHlwZWRDb250ZXh0
CiAKIC0gKHZvaWQpX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNlY29uZGFyeVRocmVhZAog
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhl
Y3V0aW9uQ29udGV4dCgpKTsKIAogICAgIGlmICghX3dlYkZyYW1lLT5wYWdlKCkpIHsKICAgICAg
ICAgX3ByaW50aW5nQ2FsbGJhY2tDb25kaXRpb24uc2lnbmFsKCk7CkBAIC0yOTQsMTQgKzI5NCwx
NCBAQCAtICh2b2lkKV9wcmVwYXJlUERGRGF0YUZvclByaW50aW5nT25TZWNvbmRhcnlUaHJlYWQK
IAogc3RhdGljIHZvaWQgcGFnZURpZENvbXB1dGVQYWdlUmVjdHMoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRp
bmcsIFdLRXJyb3JSZWYsIHZvaWQqIHVudHlwZWRDb250ZXh0KQogewotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsK
IAogICAgIE93blB0cjxJUENDYWxsYmFja0NvbnRleHQ+IGNvbnRleHQgPSBhZG9wdFB0cihzdGF0
aWNfY2FzdDxJUENDYWxsYmFja0NvbnRleHQqPih1bnR5cGVkQ29udGV4dCkpOwogICAgIFdLUHJp
bnRpbmdWaWV3ICp2aWV3ID0gY29udGV4dC0+dmlldy5nZXQoKTsKIAogICAgIC8vIElmIHRoZSB1
c2VyIGhhcyBhbHJlYWR5IGNoYW5nZWQgcHJpbnQgc2V0dXAsIHRoZW4gdGhpcyByZXNwb25zZSBp
cyBvYnNvbGV0ZS4KICAgICBpZiAoY29udGV4dC0+Y2FsbGJhY2tJRCA9PSB2aWV3LT5fZXhwZWN0
ZWRDb21wdXRlZFBhZ2VzQ2FsbGJhY2spIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICAgICAgQVNTRVJUKGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAg
ICAgQVNTRVJUKHZpZXctPl9leHBlY3RlZFByZXZpZXdDYWxsYmFja3MuaXNFbXB0eSgpKTsKICAg
ICAgICAgQVNTRVJUKCF2aWV3LT5fbGF0ZXN0RXhwZWN0ZWRQcmV2aWV3Q2FsbGJhY2spOwogICAg
ICAgICBBU1NFUlQoIXZpZXctPl9leHBlY3RlZFByaW50Q2FsbGJhY2spOwpAQCAtMzM2LDcgKzMz
Niw3IEBAIHN0YXRpYyB2b2lkIHBhZ2VEaWRDb21wdXRlUGFnZVJlY3RzKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkCiAKIC0gKEJPT0wpX2Fza1BhZ2VUb0NvbXB1
dGVQYWdlUmVjdHMKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChp
c0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBpZiAoIV93ZWJGcmFtZS0+cGFn
ZSgpKQogICAgICAgICByZXR1cm4gTk87CkBAIC0zNTUsNyArMzU1LDcgQEAgLSAoQk9PTClfYXNr
UGFnZVRvQ29tcHV0ZVBhZ2VSZWN0cwogCiBzdGF0aWMgdm9pZCBwcmVwYXJlRGF0YUZvclByaW50
aW5nT25TZWNvbmRhcnlUaHJlYWQodm9pZCogdW50eXBlZENvbnRleHQpCiB7Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0
KCkpOwogCiAgICAgV0tQcmludGluZ1ZpZXcgKnZpZXcgPSBzdGF0aWNfY2FzdDxXS1ByaW50aW5n
VmlldyAqPih1bnR5cGVkQ29udGV4dCk7CiAgICAgTXV0ZXhMb2NrZXIgbG9jayh2aWV3LT5fcHJp
bnRpbmdDYWxsYmFja011dGV4KTsKQEAgLTM3NSwxMiArMzc1LDEyIEBAIHN0YXRpYyB2b2lkIHBy
ZXBhcmVEYXRhRm9yUHJpbnRpbmdPblNlY29uZGFyeVRocmVhZCh2b2lkKiB1bnR5cGVkQ29udGV4
dCkKIAogLSAoQk9PTClrbm93c1BhZ2VSYW5nZTooTlNSYW5nZVBvaW50ZXIpcmFuZ2UKIHsKLSAg
ICBMT0coVmlldywgIi1bV0tQcmludGluZ1ZpZXcgJXAga25vd3NQYWdlUmFuZ2U6XSwgJXMsICVz
Iiwgc2VsZiwgW3NlbGYgX2hhc1BhZ2VSZWN0c10gPyAicHJpbnQgZGF0YSBpcyBhdmFpbGFibGUi
IDogInByaW50IGRhdGEgaXMgbm90IGF2YWlsYWJsZSB5ZXQiLCBpc01haW5UaHJlYWQoKSA/ICJv
biBtYWluIHRocmVhZCIgOiAib24gc2Vjb25kYXJ5IHRocmVhZCIpOworICAgIExPRyhWaWV3LCAi
LVtXS1ByaW50aW5nVmlldyAlcCBrbm93c1BhZ2VSYW5nZTpdLCAlcywgJXMiLCBzZWxmLCBbc2Vs
ZiBfaGFzUGFnZVJlY3RzXSA/ICJwcmludCBkYXRhIGlzIGF2YWlsYWJsZSIgOiAicHJpbnQgZGF0
YSBpcyBub3QgYXZhaWxhYmxlIHlldCIsIGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpID8g
Im9uIG1haW4gdGhyZWFkIiA6ICJvbiBzZWNvbmRhcnkgdGhyZWFkIik7CiAgICAgQVNTRVJUKF9w
cmludE9wZXJhdGlvbiA9PSBbTlNQcmludE9wZXJhdGlvbiBjdXJyZW50T3BlcmF0aW9uXSk7CiAK
ICAgICAvLyBBc3N1bWluZyB0aGF0IG9uY2Ugd2Ugc3dpdGNoIHRvIHByaW50aW5nIGZyb20gYSBz
ZWNvbmRhcnkgdGhyZWFkLCB3ZSBkb24ndCBnbyBiYWNrLgotICAgIEFTU0VSVCghX2lzUHJpbnRp
bmdGcm9tU2Vjb25kYXJ5VGhyZWFkIHx8ICFpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKCFpc01h
aW5UaHJlYWQoKSkKKyAgICBBU1NFUlQoIV9pc1ByaW50aW5nRnJvbVNlY29uZGFyeVRocmVhZCB8
fCAhaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmICghaXNJbldlYkNvcmVF
eGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIF9pc1ByaW50aW5nRnJvbVNlY29uZGFyeVRocmVh
ZCA9IFlFUzsKIAogICAgIGlmICghX3dlYkZyYW1lLT5wYWdlKCkpIHsKQEAgLTM5NCw3ICszOTQs
NyBAQCAtIChCT09MKWtub3dzUGFnZVJhbmdlOihOU1JhbmdlUG9pbnRlcilyYW5nZQogCiAgICAg
aWYgKFtzZWxmIF9oYXNQYWdlUmVjdHNdKQogICAgICAgICAqcmFuZ2UgPSBOU01ha2VSYW5nZSgx
LCBfcHJpbnRpbmdQYWdlUmVjdHMuc2l6ZSgpKTsKLSAgICBlbHNlIGlmICghaXNNYWluVGhyZWFk
KCkpIHsKKyAgICBlbHNlIGlmICghaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpIHsKICAg
ICAgICAgQVNTRVJUKCFbc2VsZiBfaXNQcmludGluZ1ByZXZpZXddKTsKICAgICAgICAgTXV0ZXhM
b2NrZXIgbG9jayhfcHJpbnRpbmdDYWxsYmFja011dGV4KTsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChwcmVwYXJlRGF0YUZvclByaW50aW5nT25TZWNvbmRhcnlUaHJlYWQsIHNlbGYpOwpAQCAt
NDcwLDcgKzQ3MCw3IEBAIC0gKHZvaWQpX2RyYXdQREZEb2N1bWVudDooUERGRG9jdW1lbnQgKilw
ZGZEb2N1bWVudCBwYWdlOih1bnNpZ25lZClwYWdlIGF0UG9pbnQ6CiAKIC0gKHZvaWQpX2RyYXdQ
cmV2aWV3OihOU1JlY3QpbnNSZWN0CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgSW50UmVjdCBz
Y2FsZWRQcmludGluZ1JlY3QobnNSZWN0KTsKICAgICBzY2FsZWRQcmludGluZ1JlY3Quc2NhbGUo
MSAvIF90b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcpOwpAQCAtNTMyLDcgKzUzMiw3IEBAIC0g
KHZvaWQpZHJhd1JlY3Q6KE5TUmVjdCluc1JlY3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghaXNJbldlYkNvcmVFeGVj
dXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVCghX3ByaW50ZWRQYWdlc0RhdGEuaXNFbXB0eSgp
KTsgLy8gUHJlcGFyZWQgYnkga25vd3NQYWdlUmFuZ2U6CiAKICAgICBpZiAoIV9wcmludGVkUGFn
ZXNQREZEb2N1bWVudCkgewpAQCAtNTQ2LDcgKzU0Niw3IEBAIC0gKHZvaWQpZHJhd1JlY3Q6KE5T
UmVjdCluc1JlY3QKIAogLSAodm9pZClfZHJhd1BhZ2VCb3JkZXJXaXRoU2l6ZU9uTWFpblRocmVh
ZDooTlNTaXplKWJvcmRlclNpemUKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICAvLyBXaGVuIHBy
aW50aW5nIGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCB0aGUgbWFpbiB0aHJlYWQgZG9lc24ndCBo
YXZlIGdyYXBoaWNzIGNvbnRleHQgYW5kIHByaW50aW5nIG9wZXJhdGlvbiBzZXQgdXAuCiAgICAg
TlNHcmFwaGljc0NvbnRleHQgKmN1cnJlbnRDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGN1
cnJlbnRDb250ZXh0XTsKQEAgLTU2Niw3ICs1NjYsNyBAQCAtICh2b2lkKWRyYXdQYWdlQm9yZGVy
V2l0aFNpemU6KE5TU2l6ZSlib3JkZXJTaXplCiAgICAgQVNTRVJUKE5TRXF1YWxTaXplcyhib3Jk
ZXJTaXplLCBbW19wcmludE9wZXJhdGlvbiBwcmludEluZm9dIHBhcGVyU2l6ZV0pKTsgICAgCiAg
ICAgQVNTRVJUKF9wcmludE9wZXJhdGlvbiA9PSBbTlNQcmludE9wZXJhdGlvbiBjdXJyZW50T3Bl
cmF0aW9uXSk7CiAKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgaWYgKCFpc0luV2Vi
Q29yZUV4ZWN1dGlvbkNvbnRleHQoKSkgewogICAgICAgICAvLyBEb24ndCBjYWxsIHRoZSBjbGll
bnQgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQuCiAgICAgICAgIE5TSW52b2NhdGlvbiAqaW52b2Nh
dGlvbiA9IFtOU0ludm9jYXRpb24gaW52b2NhdGlvbldpdGhNZXRob2RTaWduYXR1cmU6W1dLUHJp
bnRpbmdWaWV3IGluc3RhbmNlTWV0aG9kU2lnbmF0dXJlRm9yU2VsZWN0b3I6QHNlbGVjdG9yKF9k
cmF3UGFnZUJvcmRlcldpdGhTaXplT25NYWluVGhyZWFkOildXTsKICAgICAgICAgW2ludm9jYXRp
b24gc2V0U2VsZWN0b3I6QHNlbGVjdG9yKF9kcmF3UGFnZUJvcmRlcldpdGhTaXplT25NYWluVGhy
ZWFkOildOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCA5NmU2NDIxLi4wY2Y2MTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcApAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJh
dGVQYWdlSUQoKQogCiBzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXAmIGds
b2JhbFBhZ2VNYXAoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KGlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFdlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFwLCBwYWdlTWFwLCAoKSk7CiAgICAgcmV0
dXJuIHBhZ2VNYXA7CiB9CkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmFkZEJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
YWwKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjpzZW5kRGlkR2V0UGx1Z2lucyh1aW50NjRfdCByZXF1ZXN0SUQsIFBhc3NPd25QdHI8VmVjdG9y
PFBsdWdpbkluZm8+ID4gcGx1Z2luSW5mb3MpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogCiAgICAgT3du
UHRyPFZlY3RvcjxQbHVnaW5JbmZvPiA+IHBsdWdpbnMocGx1Z2luSW5mb3MpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5j
cHAKaW5kZXggNmQzMWViZi4uZjUzOTlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcApAQCAtOTUsNyArOTUsNyBA
QCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmNvb2tpZXNEaWRDaGFuZ2UoKQogCiB2b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmRpc3BhdGNoQ29va2llc0RpZENoYW5nZSgpCiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkp
OwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlclByb3h5OjpD
b29raWVzRGlkQ2hhbmdlKCksIDApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5tbQppbmRleCA0OGVmOTM3Li44MzFjZDQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTU5LDcgKzU5LDcgQEAg
UmVzb3VyY2VFcnJvciBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpibG9ja2VkRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEKIAogc3RhdGljIFN0cmluZyYgcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIERF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBiYXNlLCAoKSk7CiAgICAgcmV0dXJuIGJhc2U7CiB9
CkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNz
KTogRG9uJ3QgY3JlYXRlIGFuIHVubmVjZXNzYXJ5IHNlc3Npb24gd2hlbiB1c2luZyBuZXR3b3Jr
IHByb2Nlc3MuCiAKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0lu
V2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCA0MzI5MjZjLi5j
OTQ5MzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZl
bnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RXZlbnREaXNwYXRjaGVyLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjpnZXN0dXJlRXZlbnQoQ29yZUlQQzo6Q29ubmVjdGlvbiosIHVpbnQ2NF90IHBhZ2VJRCwg
Y29uc3QKIAogdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbldlYkNvcmVFeGVjdXRpb25Db250ZXh0
KCkpOwogCiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYlBh
Z2UocGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBF
dmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0
IFdlYldoZWVsRXZlbnQmIHcKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiB2b2lkIEV2ZW50
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChpc0luV2ViQ29yZUV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKICAgICBX
ZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViUGFnZShwYWdlSUQpOwog
ICAgIGlmICghd2ViUGFnZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1y
ZW5hbWUgYi9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCmluZGV4IGNkM2NkZWUuLmNm
YzA5N2QgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1yZW5hbWUKKysrIGIv
VG9vbHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZQpAQCAtOTYsMTMgKzk2LDcgQEAgc3ViIHdh
bnRlZAogbXkgJGlzRE9NVHlwZVJlbmFtZSA9IDE7CiBteSAlcmVuYW1lcyA9ICgKICAgICAjIFJl
bmFtZXMgZ28gaGVyZSBpbiB0aGUgZm9ybSBvZjoKLSAgICAiSmF2YVNjcmlwdEF1ZGlvTm9kZSIg
PT4gIlNjcmlwdFByb2Nlc3Nvck5vZGUiLAotICAgICJSZWFsdGltZUFuYWx5c2VyTm9kZSIgPT4g
IkFuYWx5c2VyTm9kZSIsCi0gICAgIkF1ZGlvR2Fpbk5vZGUiID0+ICJHYWluTm9kZSIsCi0gICAg
IkF1ZGlvUGFubmVyTm9kZSIgPT4gIlBhbm5lck5vZGUiLAotICAgICJBdWRpb0NoYW5uZWxTcGxp
dHRlciIgPT4gIkNoYW5uZWxTcGxpdHRlck5vZGUiLAotICAgICJBdWRpb0NoYW5uZWxNZXJnZXIi
ID0+ICJDaGFubmVsTWVyZ2VyTm9kZSIsCi0gICAgIk9zY2lsbGF0b3IiID0+ICJPc2NpbGxhdG9y
Tm9kZSIsCisgICAgImlzTWFpblRocmVhZCIgPT4gImlzSW5XZWJDb3JlRXhlY3V0aW9uQ29udGV4
dCIsCiApOwogCiBteSAlcmVuYW1lc0NvbnRlbXBsYXRlZEZvclRoZUZ1dHVyZSA9ICgK
</data>
<flag name="review"
          id="206510"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>