<?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>123040</bug_id>
          
          <creation_ts>2013-10-18 14:56:39 -0700</creation_ts>
          <short_desc>Remove spaces between template angle brackets</short_desc>
          <delta_ts>2013-10-19 01:10:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>941342</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-18 14:56:39 -0700</bug_when>
    <thetext>Remove spaces between template angle brackets</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941343</commentid>
    <comment_count>1</comment_count>
      <attachid>214604</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-18 14:59:36 -0700</bug_when>
    <thetext>Created attachment 214604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941346</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-18 15:03:00 -0700</bug_when>
    <thetext>Attachment 214604 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSCallbackObject.cpp&apos;, u&apos;Source/JavaScriptCore/API/JSObjectRef.cpp&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeBlock.h&apos;, u&apos;Source/JavaScriptCore/bytecode/DFGExitProfile.h&apos;, u&apos;Source/JavaScriptCore/bytecode/EvalCodeCache.h&apos;, u&apos;Source/JavaScriptCore/bytecode/Operands.h&apos;, u&apos;Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h&apos;, u&apos;Source/JavaScriptCore/bytecode/Watchpoint.h&apos;, u&apos;Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h&apos;, u&apos;Source/JavaScriptCore/bytecompiler/StaticPropertyAnalysis.h&apos;, u&apos;Source/JavaScriptCore/bytecompiler/StaticPropertyAnalyzer.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGArgumentsSimplificationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGBlockInsertionSet.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCSEPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCommonData.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGDesiredStructureChains.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGDesiredWatchpoints.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGJITCompiler.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler32_64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGOSRExitCompiler64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGWorklist.h&apos;, u&apos;Source/JavaScriptCore/heap/BlockAllocator.h&apos;, u&apos;Source/JavaScriptCore/heap/Heap.h&apos;, u&apos;Source/JavaScriptCore/heap/Local.h&apos;, u&apos;Source/JavaScriptCore/heap/MarkedBlock.h&apos;, u&apos;Source/JavaScriptCore/heap/Strong.h&apos;, u&apos;Source/JavaScriptCore/jit/AssemblyHelpers.cpp&apos;, u&apos;Source/JavaScriptCore/jit/AssemblyHelpers.h&apos;, u&apos;Source/JavaScriptCore/jit/SpecializedThunkJIT.h&apos;, u&apos;Source/JavaScriptCore/parser/Nodes.h&apos;, u&apos;Source/JavaScriptCore/parser/Parser.cpp&apos;, u&apos;Source/JavaScriptCore/parser/Parser.h&apos;, u&apos;Source/JavaScriptCore/parser/ParserArena.h&apos;, u&apos;Source/JavaScriptCore/parser/SourceProviderCacheItem.h&apos;, u&apos;Source/JavaScriptCore/profiler/LegacyProfiler.cpp&apos;, u&apos;Source/JavaScriptCore/profiler/LegacyProfiler.h&apos;, u&apos;Source/JavaScriptCore/profiler/ProfileNode.h&apos;, u&apos;Source/JavaScriptCore/profiler/ProfilerDatabase.h&apos;, u&apos;Source/JavaScriptCore/runtime/Butterfly.h&apos;, u&apos;Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h&apos;, u&apos;Source/JavaScriptCore/runtime/Identifier.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSPromise.h&apos;, u&apos;Source/JavaScriptCore/runtime/PropertyMapHashTable.h&apos;, u&apos;Source/JavaScriptCore/runtime/PropertyNameArray.h&apos;, u&apos;Source/JavaScriptCore/runtime/RegExpCache.h&apos;, u&apos;Source/JavaScriptCore/runtime/SparseArrayValueMap.h&apos;, u&apos;Source/JavaScriptCore/runtime/SymbolTable.h&apos;, u&apos;Source/JavaScriptCore/runtime/VM.h&apos;, u&apos;Source/JavaScriptCore/tools/CodeProfile.cpp&apos;, u&apos;Source/JavaScriptCore/tools/CodeProfile.h&apos;, u&apos;Source/JavaScriptCore/yarr/YarrInterpreter.cpp&apos;, u&apos;Source/JavaScriptCore/yarr/YarrInterpreter.h&apos;, u&apos;Source/JavaScriptCore/yarr/YarrJIT.cpp&apos;, u&apos;Source/JavaScriptCore/yarr/YarrPattern.cpp&apos;, u&apos;Source/JavaScriptCore/yarr/YarrPattern.h&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/AVLTree.h&apos;, u&apos;Source/WTF/wtf/CheckedArithmetic.h&apos;, u&apos;Source/WTF/wtf/Compression.h&apos;, u&apos;Source/WTF/wtf/Functional.h&apos;, u&apos;Source/WTF/wtf/HashFunctions.h&apos;, u&apos;Source/WTF/wtf/HashIterators.h&apos;, u&apos;Source/WTF/wtf/HashSet.h&apos;, u&apos;Source/WTF/wtf/ListHashSet.h&apos;, u&apos;Source/WTF/wtf/RefCountedLeakCounter.cpp&apos;, u&apos;Source/WTF/wtf/RetainPtr.h&apos;, u&apos;Source/WTF/wtf/SentinelLinkedList.h&apos;, u&apos;Source/WTF/wtf/SizeLimits.cpp&apos;, u&apos;Source/WTF/wtf/StreamBuffer.h&apos;, u&apos;Source/WTF/wtf/Vector.h&apos;, u&apos;Source/WTF/wtf/VectorTraits.h&apos;, u&apos;Source/WTF/wtf/WeakPtr.h&apos;, u&apos;Source/WTF/wtf/text/AtomicString.cpp&apos;, u&apos;Source/WTF/wtf/text/StringConcatenate.h&apos;, u&apos;Source/WTF/wtf/text/StringImpl.h&apos;, u&apos;Source/WTF/wtf/text/StringOperators.h&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/encryptedmedia/MediaKeySession.h&apos;, u&apos;Source/WebCore/Modules/encryptedmedia/MediaKeys.h&apos;, u&apos;Source/WebCore/Modules/geolocation/Geolocation.h&apos;, u&apos;Source/WebCore/Modules/geolocation/GeolocationController.cpp&apos;, u&apos;Source/WebCore/Modules/geolocation/GeolocationController.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCallbacks.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBDatabase.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBDatabaseBackendInterface.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBEventDispatcher.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBEventDispatcher.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKey.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBPendingTransactionMonitor.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBTransaction.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBTransaction.h&apos;, u&apos;Source/WebCore/Modules/mediacontrols/MediaControlsHost.cpp&apos;, u&apos;Source/WebCore/Modules/mediacontrols/MediaControlsHost.h&apos;, u&apos;Source/WebCore/Modules/mediasource/MediaSource.cpp&apos;, u&apos;Source/WebCore/Modules/mediasource/MediaSource.h&apos;, u&apos;Source/WebCore/Modules/mediasource/MediaSourceBase.cpp&apos;, u&apos;Source/WebCore/Modules/mediasource/MediaSourceBase.h&apos;, u&apos;Source/WebCore/Modules/mediasource/MediaSourceRegistry.cpp&apos;, u&apos;Source/WebCore/Modules/mediasource/MediaSourceRegistry.h&apos;, u&apos;Source/WebCore/Modules/mediasource/SourceBufferList.h&apos;, u&apos;Source/WebCore/Modules/mediasource/WebKitMediaSource.cpp&apos;, u&apos;Source/WebCore/Modules/mediasource/WebKitMediaSource.h&apos;, u&apos;Source/WebCore/Modules/mediasource/WebKitSourceBufferList.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStream.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStream.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamRegistry.h&apos;, u&apos;Source/WebCore/Modules/mediastream/MediaStreamTrack.h&apos;, u&apos;Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/RTCDTMFSender.h&apos;, u&apos;Source/WebCore/Modules/mediastream/RTCDataChannel.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/RTCDataChannel.h&apos;, u&apos;Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp&apos;, u&apos;Source/WebCore/Modules/mediastream/RTCPeerConnection.h&apos;, u&apos;Source/WebCore/Modules/mediastream/RTCStatsResponse.h&apos;, u&apos;Source/WebCore/Modules/notifications/Notification.h&apos;, u&apos;Source/WebCore/Modules/notifications/NotificationCenter.h&apos;, u&apos;Source/WebCore/Modules/speech/SpeechSynthesis.cpp&apos;, u&apos;Source/WebCore/Modules/speech/SpeechSynthesis.h&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioBuffer.h&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioNode.h&apos;, u&apos;Source/WebCore/Modules/webaudio/AudioNodeOutput.h&apos;, u&apos;Source/WebCore/Modules/webaudio/MediaStreamAudioSource.cpp&apos;, u&apos;Source/WebCore/Modules/webaudio/PeriodicWave.h&apos;, u&apos;Source/WebCore/Modules/webaudio/ScriptProcessorNode.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/AbstractDatabaseServer.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseBackend.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseManager.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseManager.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseServer.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseServer.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseThread.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTracker.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseTracker.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/SQLStatementBackend.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/SQLTransactionBackend.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/SQLTransactionBackend.h&apos;, u&apos;Source/WebCore/Modules/webdatabase/SQLTransactionCoordinator.cpp&apos;, u&apos;Source/WebCore/Modules/webdatabase/SQLTransactionCoordinator.h&apos;, u&apos;Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.h&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocket.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocket.h&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocketChannel.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocketChannel.h&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocketChannelClient.h&apos;, u&apos;Source/WebCore/Modules/websockets/WebSocketExtensionDispatcher.h&apos;, u&apos;Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp&apos;, u&apos;Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h&apos;, u&apos;Source/WebCore/accessibility/AXObjectCache.cpp&apos;, u&apos;Source/WebCore/accessibility/AXObjectCache.h&apos;, u&apos;Source/WebCore/accessibility/AccessibilityNodeObject.cpp&apos;, u&apos;Source/WebCore/accessibility/AccessibilityObject.h&apos;, u&apos;Source/WebCore/bindings/js/DOMWrapperWorld.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMBinding.h&apos;, u&apos;Source/WebCore/bindings/js/JSDOMGlobalObject.h&apos;, u&apos;Source/WebCore/bindings/js/JSMutationCallback.cpp&apos;, u&apos;Source/WebCore/bindings/js/JSMutationCallback.h&apos;, u&apos;Source/WebCore/bindings/js/JSWebGLRenderingContextCustom.cpp&apos;, u&apos;Source/WebCore/bindings/js/PageScriptDebugServer.h&apos;, u&apos;Source/WebCore/bindings/js/ScheduledAction.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.cpp&apos;, u&apos;Source/WebCore/bindings/js/ScriptController.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptDebugServer.h&apos;, u&apos;Source/WebCore/bindings/js/ScriptProfile.cpp&apos;, u&apos;Source/WebCore/bindings/objc/ObjCNodeFilterCondition.h&apos;, u&apos;Source/WebCore/bridge/objc/objc_class.h&apos;, u&apos;Source/WebCore/bridge/runtime_root.cpp&apos;, u&apos;Source/WebCore/bridge/runtime_root.h&apos;, u&apos;Source/WebCore/css/BasicShapeFunctions.cpp&apos;, u&apos;Source/WebCore/css/CSSBasicShapes.h&apos;, u&apos;Source/WebCore/css/CSSComputedStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/CSSFontFace.h&apos;, u&apos;Source/WebCore/css/CSSFontFaceSource.h&apos;, u&apos;Source/WebCore/css/CSSFontSelector.cpp&apos;, u&apos;Source/WebCore/css/CSSFontSelector.h&apos;, u&apos;Source/WebCore/css/CSSGroupingRule.h&apos;, u&apos;Source/WebCore/css/CSSImageGeneratorValue.h&apos;, u&apos;Source/WebCore/css/CSSParserValues.cpp&apos;, u&apos;Source/WebCore/css/CSSParserValues.h&apos;, u&apos;Source/WebCore/css/CSSPropertySourceData.h&apos;, u&apos;Source/WebCore/css/CSSRuleList.h&apos;, u&apos;Source/WebCore/css/CSSSegmentedFontFace.cpp&apos;, u&apos;Source/WebCore/css/CSSSegmentedFontFace.h&apos;, u&apos;Source/WebCore/css/CSSSelectorList.cpp&apos;, u&apos;Source/WebCore/css/CSSSelectorList.h&apos;, u&apos;Source/WebCore/css/CSSStyleSheet.h&apos;, u&apos;Source/WebCore/css/CSSValue.h&apos;, u&apos;Source/WebCore/css/CSSValuePool.h&apos;, u&apos;Source/WebCore/css/DocumentRuleSets.cpp&apos;, u&apos;Source/WebCore/css/DocumentRuleSets.h&apos;, u&apos;Source/WebCore/css/ElementRuleCollector.cpp&apos;, u&apos;Source/WebCore/css/ElementRuleCollector.h&apos;, u&apos;Source/WebCore/css/FontLoader.h&apos;, u&apos;Source/WebCore/css/InspectorCSSOMWrappers.cpp&apos;, u&apos;Source/WebCore/css/InspectorCSSOMWrappers.h&apos;, u&apos;Source/WebCore/css/MediaList.cpp&apos;, u&apos;Source/WebCore/css/MediaList.h&apos;, u&apos;Source/WebCore/css/MediaQueryEvaluator.cpp&apos;, u&apos;Source/WebCore/css/MediaQueryMatcher.h&apos;, u&apos;Source/WebCore/css/PropertySetCSSStyleDeclaration.cpp&apos;, u&apos;Source/WebCore/css/PropertySetCSSStyleDeclaration.h&apos;, u&apos;Source/WebCore/css/RuleSet.cpp&apos;, u&apos;Source/WebCore/css/RuleSet.h&apos;, u&apos;Source/WebCore/css/SelectorFilter.h&apos;, u&apos;Source/WebCore/css/StyleInvalidationAnalysis.cpp&apos;, u&apos;Source/WebCore/css/StylePropertySet.cpp&apos;, u&apos;Source/WebCore/css/StyleResolver.cpp&apos;, u&apos;Source/WebCore/css/StyleResolver.h&apos;, u&apos;Source/WebCore/css/StyleRule.cpp&apos;, u&apos;Source/WebCore/css/StyleRule.h&apos;, u&apos;Source/WebCore/css/StyleScopeResolver.h&apos;, u&apos;Source/WebCore/css/StyleSheetContents.cpp&apos;, u&apos;Source/WebCore/css/StyleSheetContents.h&apos;, u&apos;Source/WebCore/css/StyleSheetList.cpp&apos;, u&apos;Source/WebCore/css/StyleSheetList.h&apos;, u&apos;Source/WebCore/css/WebKitCSSKeyframesRule.h&apos;, u&apos;Source/WebCore/dom/CheckedRadioButtons.h&apos;, u&apos;Source/WebCore/dom/ClientRectList.h&apos;, u&apos;Source/WebCore/dom/ContainerNode.h&apos;, u&apos;Source/WebCore/dom/CrossThreadTask.h&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Document.h&apos;, u&apos;Source/WebCore/dom/DocumentMarkerController.cpp&apos;, u&apos;Source/WebCore/dom/DocumentMarkerController.h&apos;, u&apos;Source/WebCore/dom/DocumentStyleSheetCollection.cpp&apos;, u&apos;Source/WebCore/dom/DocumentStyleSheetCollection.h&apos;, u&apos;Source/WebCore/dom/Element.cpp&apos;, u&apos;Source/WebCore/dom/Element.h&apos;, u&apos;Source/WebCore/dom/EventListenerMap.h&apos;, u&apos;Source/WebCore/dom/EventSender.h&apos;, u&apos;Source/WebCore/dom/IdTargetObserverRegistry.h&apos;, u&apos;Source/WebCore/dom/MutationCallback.h&apos;, u&apos;Source/WebCore/dom/MutationObserver.cpp&apos;, u&apos;Source/WebCore/dom/MutationObserver.h&apos;, u&apos;Source/WebCore/dom/MutationObserverRegistration.h&apos;, u&apos;Source/WebCore/dom/NamedFlowCollection.cpp&apos;, u&apos;Source/WebCore/dom/NamedFlowCollection.h&apos;, u&apos;Source/WebCore/dom/Node.cpp&apos;, u&apos;Source/WebCore/dom/Node.h&apos;, u&apos;Source/WebCore/dom/NodeRareData.h&apos;, u&apos;Source/WebCore/dom/Range.cpp&apos;, u&apos;Source/WebCore/dom/Range.h&apos;, u&apos;Source/WebCore/dom/ScopedEventQueue.h&apos;, u&apos;Source/WebCore/dom/ScriptExecutionContext.cpp&apos;, u&apos;Source/WebCore/dom/ScriptExecutionContext.h&apos;, u&apos;Source/WebCore/dom/ScriptedAnimationController.h&apos;, u&apos;Source/WebCore/editing/ApplyStyleCommand.cpp&apos;, u&apos;Source/WebCore/editing/BreakBlockquoteCommand.cpp&apos;, u&apos;Source/WebCore/editing/CompositeEditCommand.cpp&apos;, u&apos;Source/WebCore/editing/CompositeEditCommand.h&apos;, u&apos;Source/WebCore/editing/EditingStyle.cpp&apos;, u&apos;Source/WebCore/editing/Editor.cpp&apos;, u&apos;Source/WebCore/editing/Editor.h&apos;, u&apos;Source/WebCore/editing/InsertParagraphSeparatorCommand.cpp&apos;, u&apos;Source/WebCore/editing/InsertParagraphSeparatorCommand.h&apos;, u&apos;Source/WebCore/editing/MergeIdenticalElementsCommand.cpp&apos;, u&apos;Source/WebCore/editing/RemoveNodePreservingChildrenCommand.cpp&apos;, u&apos;Source/WebCore/editing/ReplaceSelectionCommand.cpp&apos;, u&apos;Source/WebCore/editing/SimplifyMarkupCommand.cpp&apos;, u&apos;Source/WebCore/editing/SimplifyMarkupCommand.h&apos;, u&apos;Source/WebCore/editing/SpellChecker.h&apos;, u&apos;Source/WebCore/editing/SplitElementCommand.cpp&apos;, u&apos;Source/WebCore/editing/WrapContentsInDummySpanCommand.cpp&apos;, u&apos;Source/WebCore/editing/mac/AlternativeTextUIController.h&apos;, u&apos;Source/WebCore/fileapi/FileList.h&apos;, u&apos;Source/WebCore/history/BackForwardList.h&apos;, u&apos;Source/WebCore/history/HistoryItem.cpp&apos;, u&apos;Source/WebCore/history/HistoryItem.h&apos;, u&apos;Source/WebCore/history/mac/HistoryItemMac.mm&apos;, u&apos;Source/WebCore/html/FormController.h&apos;, u&apos;Source/WebCore/html/HTMLAnchorElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLCollection.cpp&apos;, u&apos;Source/WebCore/html/HTMLCollection.h&apos;, u&apos;Source/WebCore/html/HTMLFormControlElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormControlElement.h&apos;, u&apos;Source/WebCore/html/HTMLFormElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormElement.h&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.h&apos;, u&apos;Source/WebCore/html/HTMLPlugInImageElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLSelectElement.cpp&apos;, u&apos;Source/WebCore/html/MediaController.cpp&apos;, u&apos;Source/WebCore/html/MediaController.h&apos;, u&apos;Source/WebCore/html/MediaFragmentURIParser.h&apos;, u&apos;Source/WebCore/html/ValidationMessage.h&apos;, u&apos;Source/WebCore/html/canvas/WebGLFramebuffer.h&apos;, u&apos;Source/WebCore/html/canvas/WebGLRenderingContext.cpp&apos;, u&apos;Source/WebCore/html/canvas/WebGLRenderingContext.h&apos;, u&apos;Source/WebCore/html/canvas/WebGLTexture.h&apos;, u&apos;Source/WebCore/html/parser/BackgroundHTMLParser.cpp&apos;, u&apos;Source/WebCore/html/parser/BackgroundHTMLParser.h&apos;, u&apos;Source/WebCore/html/parser/HTMLDocumentParser.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLDocumentParser.h&apos;, u&apos;Source/WebCore/html/parser/HTMLMetaCharsetParser.h&apos;, u&apos;Source/WebCore/html/parser/HTMLPreloadScanner.cpp&apos;, u&apos;Source/WebCore/html/parser/HTMLResourcePreloader.h&apos;, u&apos;Source/WebCore/html/parser/XSSAuditor.h&apos;, u&apos;Source/WebCore/html/shadow/ContentDistributor.cpp&apos;, u&apos;Source/WebCore/html/shadow/ContentDistributor.h&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.h&apos;, u&apos;Source/WebCore/html/track/InbandGenericTextTrack.h&apos;, u&apos;Source/WebCore/html/track/InbandWebVTTTextTrack.cpp&apos;, u&apos;Source/WebCore/html/track/LoadableTextTrack.cpp&apos;, u&apos;Source/WebCore/html/track/TextTrackCueList.h&apos;, u&apos;Source/WebCore/html/track/TextTrackList.cpp&apos;, u&apos;Source/WebCore/html/track/TextTrackList.h&apos;, u&apos;Source/WebCore/html/track/TrackListBase.cpp&apos;, u&apos;Source/WebCore/html/track/TrackListBase.h&apos;, u&apos;Source/WebCore/html/track/WebVTTParser.cpp&apos;, u&apos;Source/WebCore/html/track/WebVTTParser.h&apos;, u&apos;Source/WebCore/inspector/ConsoleMessage.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.cpp&apos;, u&apos;Source/WebCore/inspector/ContentSearchUtils.h&apos;, u&apos;Source/WebCore/inspector/DOMPatchSupport.cpp&apos;, u&apos;Source/WebCore/inspector/DOMPatchSupport.h&apos;, u&apos;Source/WebCore/inspector/InjectedScript.cpp&apos;, u&apos;Source/WebCore/inspector/InjectedScript.h&apos;, u&apos;Source/WebCore/inspector/InjectedScriptHost.h&apos;, u&apos;Source/WebCore/inspector/InspectorAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorApplicationCacheAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorBaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorCSSAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorConsoleAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDOMStorageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDatabaseAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorDebuggerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorHeapProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorHistory.h&apos;, u&apos;Source/WebCore/inspector/InspectorIndexedDBAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorLayerTreeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorMemoryAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorPageAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorProfilerAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorResourceAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorRuntimeAgent.h&apos;, u&apos;Source/WebCore/inspector/InspectorState.h&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorStyleSheet.h&apos;, u&apos;Source/WebCore/inspector/InspectorValues.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorValues.h&apos;, u&apos;Source/WebCore/inspector/PageRuntimeAgent.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.cpp&apos;, u&apos;Source/WebCore/inspector/ScriptCallStack.h&apos;, u&apos;Source/WebCore/loader/CrossOriginPreflightResultCache.h&apos;, u&apos;Source/WebCore/loader/DocumentLoader.cpp&apos;, u&apos;Source/WebCore/loader/DocumentLoader.h&apos;, u&apos;Source/WebCore/loader/FormState.h&apos;, u&apos;Source/WebCore/loader/FormSubmission.cpp&apos;, u&apos;Source/WebCore/loader/ProgressTracker.h&apos;, u&apos;Source/WebCore/loader/ResourceLoadScheduler.h&apos;, u&apos;Source/WebCore/loader/TextTrackLoader.cpp&apos;, u&apos;Source/WebCore/loader/TextTrackLoader.h&apos;, u&apos;Source/WebCore/loader/WorkerThreadableLoader.cpp&apos;, u&apos;Source/WebCore/loader/appcache/ApplicationCache.cpp&apos;, u&apos;Source/WebCore/loader/appcache/ApplicationCache.h&apos;, u&apos;Source/WebCore/loader/appcache/ApplicationCacheStorage.cpp&apos;, u&apos;Source/WebCore/loader/archive/Archive.cpp&apos;, u&apos;Source/WebCore/loader/archive/Archive.h&apos;, u&apos;Source/WebCore/loader/archive/ArchiveResourceCollection.cpp&apos;, u&apos;Source/WebCore/loader/archive/ArchiveResourceCollection.h&apos;, u&apos;Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp&apos;, u&apos;Source/WebCore/loader/archive/cf/LegacyWebArchive.h&apos;, u&apos;Source/WebCore/loader/archive/mhtml/MHTMLParser.h&apos;, u&apos;Source/WebCore/loader/cache/CachedResource.h&apos;, u&apos;Source/WebCore/loader/cache/CachedResourceLoader.h&apos;, u&apos;Source/WebCore/loader/cache/MemoryCache.h&apos;, u&apos;Source/WebCore/loader/icon/IconDatabase.cpp&apos;, u&apos;Source/WebCore/loader/icon/IconDatabase.h&apos;, u&apos;Source/WebCore/page/CaptionUserPreferencesMediaAF.cpp&apos;, u&apos;Source/WebCore/page/CaptionUserPreferencesMediaAF.h&apos;, u&apos;Source/WebCore/page/ChromeClient.h&apos;, u&apos;Source/WebCore/page/Console.h&apos;, u&apos;Source/WebCore/page/ContentSecurityPolicy.h&apos;, u&apos;Source/WebCore/page/DOMWindow.cpp&apos;, u&apos;Source/WebCore/page/DeviceController.cpp&apos;, u&apos;Source/WebCore/page/DeviceController.h&apos;, u&apos;Source/WebCore/page/EditorClient.h&apos;, u&apos;Source/WebCore/page/EventHandler.cpp&apos;, u&apos;Source/WebCore/page/EventHandler.h&apos;, u&apos;Source/WebCore/page/FrameView.cpp&apos;, u&apos;Source/WebCore/page/Page.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/page/PageGroup.h&apos;, u&apos;Source/WebCore/page/Performance.cpp&apos;, u&apos;Source/WebCore/page/Performance.h&apos;, u&apos;Source/WebCore/page/PerformanceEntryList.cpp&apos;, u&apos;Source/WebCore/page/PerformanceEntryList.h&apos;, u&apos;Source/WebCore/page/SecurityOriginHash.h&apos;, u&apos;Source/WebCore/page/SecurityPolicy.cpp&apos;, u&apos;Source/WebCore/page/SpeechInputResult.h&apos;, u&apos;Source/WebCore/page/animation/AnimationController.cpp&apos;, u&apos;Source/WebCore/page/animation/AnimationControllerPrivate.h&apos;, u&apos;Source/WebCore/page/animation/CSSPropertyAnimation.cpp&apos;, u&apos;Source/WebCore/page/animation/CompositeAnimation.h&apos;, u&apos;Source/WebCore/page/scrolling/ScrollingStateNode.cpp&apos;, u&apos;Source/WebCore/page/scrolling/ScrollingStateNode.h&apos;, u&apos;Source/WebCore/page/scrolling/ScrollingThread.cpp&apos;, u&apos;Source/WebCore/page/scrolling/ScrollingThread.h&apos;, u&apos;Source/WebCore/page/scrolling/ScrollingTree.cpp&apos;, u&apos;Source/WebCore/page/scrolling/ScrollingTreeNode.cpp&apos;, u&apos;Source/WebCore/page/scrolling/ScrollingTreeNode.h&apos;, u&apos;Source/WebCore/page/scrolling/mac/ScrollingCoordinatorMac.mm&apos;, u&apos;Source/WebCore/platform/CrossThreadCopier.cpp&apos;, u&apos;Source/WebCore/platform/CrossThreadCopier.h&apos;, u&apos;Source/WebCore/platform/DragData.h&apos;, u&apos;Source/WebCore/platform/MainThreadTask.h&apos;, u&apos;Source/WebCore/platform/PODFreeListArena.h&apos;, u&apos;Source/WebCore/platform/PODIntervalTree.h&apos;, u&apos;Source/WebCore/platform/PODRedBlackTree.h&apos;, u&apos;Source/WebCore/platform/PlatformSpeechSynthesizer.cpp&apos;, u&apos;Source/WebCore/platform/PlatformSpeechSynthesizer.h&apos;, u&apos;Source/WebCore/platform/RunLoop.h&apos;, u&apos;Source/WebCore/platform/ScrollView.cpp&apos;, u&apos;Source/WebCore/platform/ScrollView.h&apos;, u&apos;Source/WebCore/platform/SharedBuffer.h&apos;, u&apos;Source/WebCore/platform/Supplementable.h&apos;, u&apos;Source/WebCore/platform/URL.cpp&apos;, u&apos;Source/WebCore/platform/audio/AudioBus.h&apos;, u&apos;Source/WebCore/platform/audio/AudioDSPKernelProcessor.h&apos;, u&apos;Source/WebCore/platform/audio/AudioResampler.h&apos;, u&apos;Source/WebCore/platform/audio/DynamicsCompressor.h&apos;, u&apos;Source/WebCore/platform/audio/DynamicsCompressorKernel.h&apos;, u&apos;Source/WebCore/platform/audio/HRTFDatabase.h&apos;, u&apos;Source/WebCore/platform/audio/HRTFKernel.h&apos;, u&apos;Source/WebCore/platform/audio/MultiChannelResampler.h&apos;, u&apos;Source/WebCore/platform/audio/Reverb.h&apos;, u&apos;Source/WebCore/platform/audio/ReverbConvolver.h&apos;, u&apos;Source/WebCore/platform/cf/SharedBufferCF.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FloatPolygon.cpp&apos;, u&apos;Source/WebCore/platform/graphics/FloatPolygon.h&apos;, u&apos;Source/WebCore/platform/graphics/FontCache.cpp&apos;, u&apos;Source/WebCore/platform/graphics/GlyphMetricsMap.h&apos;, u&apos;Source/WebCore/platform/graphics/GlyphPageTreeNode.h&apos;, u&apos;Source/WebCore/platform/graphics/GraphicsContext3D.h&apos;, u&apos;Source/WebCore/platform/graphics/GraphicsLayer.cpp&apos;, u&apos;Source/WebCore/platform/graphics/GraphicsLayer.h&apos;, u&apos;Source/WebCore/platform/graphics/PlatformTextTrackMenu.h&apos;, u&apos;Source/WebCore/platform/graphics/SimpleFontData.h&apos;, u&apos;Source/WebCore/platform/graphics/WidthCache.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm&apos;, u&apos;Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp&apos;, u&apos;Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h&apos;, u&apos;Source/WebCore/platform/graphics/ca/PlatformCAAnimation.h&apos;, u&apos;Source/WebCore/platform/graphics/ca/PlatformCALayer.h&apos;, u&apos;Source/WebCore/platform/graphics/ca/mac/LayerPool.h&apos;, u&apos;Source/WebCore/platform/graphics/ca/mac/PlatformCAAnimationMac.mm&apos;, u&apos;Source/WebCore/platform/graphics/ca/mac/TileController.h&apos;, u&apos;Source/WebCore/platform/graphics/cg/SubimageCacheWithTimer.h&apos;, u&apos;Source/WebCore/platform/graphics/filters/CustomFilterParameterList.h&apos;, u&apos;Source/WebCore/platform/graphics/filters/FilterEffect.h&apos;, u&apos;Source/WebCore/platform/graphics/filters/FilterOperations.h&apos;, u&apos;Source/WebCore/platform/graphics/gpu/Texture.cpp&apos;, u&apos;Source/WebCore/platform/graphics/gpu/Texture.h&apos;, u&apos;Source/WebCore/platform/graphics/mac/ComplexTextController.h&apos;, u&apos;Source/WebCore/platform/graphics/mac/SimpleFontDataCoreText.cpp&apos;, u&apos;Source/WebCore/platform/graphics/transforms/TransformOperations.h&apos;, u&apos;Source/WebCore/platform/ios/PasteboardIOS.mm&apos;, u&apos;Source/WebCore/platform/mac/PlatformSpeechSynthesizerMac.mm&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamDescriptor.h&apos;, u&apos;Source/WebCore/platform/mediastream/MediaStreamSource.h&apos;, u&apos;Source/WebCore/platform/mediastream/RTCConfiguration.h&apos;, u&apos;Source/WebCore/platform/network/BlobRegistryImpl.h&apos;, u&apos;Source/WebCore/platform/network/HTTPHeaderMap.h&apos;, u&apos;Source/WebCore/platform/network/ResourceResponseBase.cpp&apos;, u&apos;Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp&apos;, u&apos;Source/WebCore/platform/text/cf/HyphenationCF.cpp&apos;, u&apos;Source/WebCore/plugins/PluginMainThreadScheduler.h&apos;, u&apos;Source/WebCore/rendering/HitTestResult.h&apos;, u&apos;Source/WebCore/rendering/InlineFlowBox.h&apos;, u&apos;Source/WebCore/rendering/RenderBlock.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlock.h&apos;, u&apos;Source/WebCore/rendering/RenderButton.h&apos;, u&apos;Source/WebCore/rendering/RenderCounter.cpp&apos;, u&apos;Source/WebCore/rendering/RenderGrid.cpp&apos;, u&apos;Source/WebCore/rendering/RenderGrid.h&apos;, u&apos;Source/WebCore/rendering/RenderLayer.cpp&apos;, u&apos;Source/WebCore/rendering/RenderLayer.h&apos;, u&apos;Source/WebCore/rendering/RenderNamedFlowThread.cpp&apos;, u&apos;Source/WebCore/rendering/RenderNamedFlowThread.h&apos;, u&apos;Source/WebCore/rendering/RenderRegion.cpp&apos;, u&apos;Source/WebCore/rendering/RenderRegion.h&apos;, u&apos;Source/WebCore/rendering/RenderView.cpp&apos;, u&apos;Source/WebCore/rendering/RootInlineBox.h&apos;, u&apos;Source/WebCore/rendering/shapes/PolygonShape.cpp&apos;, u&apos;Source/WebCore/rendering/shapes/PolygonShape.h&apos;, u&apos;Source/WebCore/rendering/shapes/Shape.cpp&apos;, u&apos;Source/WebCore/rendering/shapes/ShapeInfo.h&apos;, u&apos;Source/WebCore/rendering/shapes/ShapeInterval.h&apos;, u&apos;Source/WebCore/rendering/style/QuotesData.cpp&apos;, u&apos;Source/WebCore/rendering/style/QuotesData.h&apos;, u&apos;Source/WebCore/rendering/style/RenderStyle.cpp&apos;, u&apos;Source/WebCore/rendering/style/StyleGridData.h&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGResourceGradient.h&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGResourcePattern.h&apos;, u&apos;Source/WebCore/rendering/svg/SVGResourcesCache.h&apos;, u&apos;Source/WebCore/storage/StorageEventDispatcher.cpp&apos;, u&apos;Source/WebCore/storage/StorageEventDispatcher.h&apos;, u&apos;Source/WebCore/storage/StorageNamespaceImpl.h&apos;, u&apos;Source/WebCore/storage/StorageThread.h&apos;, u&apos;Source/WebCore/storage/StorageTracker.cpp&apos;, u&apos;Source/WebCore/storage/StorageTracker.h&apos;, u&apos;Source/WebCore/svg/SVGAnimatedPath.cpp&apos;, u&apos;Source/WebCore/svg/SVGAnimatedTypeAnimator.cpp&apos;, u&apos;Source/WebCore/svg/SVGAnimatedTypeAnimator.h&apos;, u&apos;Source/WebCore/svg/SVGDocumentExtensions.cpp&apos;, u&apos;Source/WebCore/svg/SVGDocumentExtensions.h&apos;, u&apos;Source/WebCore/svg/SVGFontElement.h&apos;, u&apos;Source/WebCore/svg/SVGGlyphMap.h&apos;, u&apos;Source/WebCore/svg/SVGMarkerElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGMarkerElement.h&apos;, u&apos;Source/WebCore/svg/SVGPathSegList.h&apos;, u&apos;Source/WebCore/svg/animation/SMILTimeContainer.h&apos;, u&apos;Source/WebCore/svg/graphics/SVGImageCache.h&apos;, u&apos;Source/WebCore/svg/graphics/filters/SVGFilterBuilder.h&apos;, u&apos;Source/WebCore/svg/properties/SVGAnimatedEnumerationPropertyTearOff.h&apos;, u&apos;Source/WebCore/svg/properties/SVGAnimatedListPropertyTearOff.h&apos;, u&apos;Source/WebCore/svg/properties/SVGAnimatedPropertyTearOff.h&apos;, u&apos;Source/WebCore/svg/properties/SVGAnimatedStaticPropertyTearOff.h&apos;, u&apos;Source/WebCore/svg/properties/SVGAttributeToPropertyMap.cpp&apos;, u&apos;Source/WebCore/svg/properties/SVGAttributeToPropertyMap.h&apos;, u&apos;Source/WebCore/svg/properties/SVGStaticListPropertyTearOff.h&apos;, u&apos;Source/WebCore/svg/properties/SVGTransformListPropertyTearOff.h&apos;, u&apos;Source/WebCore/workers/DefaultSharedWorkerRepository.h&apos;, u&apos;Source/WebCore/workers/WorkerMessagingProxy.h&apos;, u&apos;Source/WebCore/xml/XMLHttpRequestProgressEventThrottle.cpp&apos;, u&apos;Source/WebCore/xml/XMLHttpRequestProgressEventThrottle.h&apos;, u&apos;Source/WebCore/xml/XPathNodeSet.cpp&apos;, u&apos;Source/WebCore/xml/XSLStyleSheet.h&apos;, u&apos;Source/WebCore/xml/parser/XMLDocumentParserLibxml2.cpp&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/History/WebHistory.mm&apos;, u&apos;Source/WebKit/mac/History/WebHistoryItem.mm&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/NetscapePluginHostProxy.h&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.h&apos;, u&apos;Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm&apos;, u&apos;Source/WebKit/mac/Plugins/WebNetscapePluginView.h&apos;, u&apos;Source/WebKit/mac/Plugins/WebNetscapePluginView.mm&apos;, u&apos;Source/WebKit/mac/Storage/WebDatabaseManager.mm&apos;, u&apos;Source/WebKit/mac/Storage/WebStorageManager.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebApplicationCache.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebEditorClient.h&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebNotificationClient.h&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebNotificationClient.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebArchive.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebDataSource.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebViewData.h&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/UIProcess/mac/WebColorPickerMac.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/mac/WKWebProcessPlugIn.mm&apos;, u&apos;Source/WebKit2/WebProcess/WebProcess.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/graphics/gpu/Texture.h:57:  The parameter name &quot;format&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/gpu/Texture.h:57:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WebCore/platform/graphics/gpu/Texture.h:61:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WebCore/loader/WorkerThreadableLoader.cpp:193:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
Source/WebCore/platform/graphics/gpu/Texture.cpp:49:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WebCore/platform/graphics/gpu/Texture.cpp:100:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:622:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WebCore/inspector/InspectorProfilerAgent.h:110:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WebCore/inspector/InspectorProfilerAgent.h:111:  Omit int when using unsigned  [runtime/unsigned] [1]
Source/WTF/wtf/Functional.h:695:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WTF/wtf/Functional.h:713:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/CrossThreadCopier.cpp:78:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/CrossThreadCopier.cpp:83:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/CrossThreadCopier.cpp:104:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/CrossThreadCopier.cpp:110:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/CrossThreadCopier.cpp:123:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/CrossThreadCopier.cpp:130:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/network/HTTPHeaderMap.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/storage/StorageThread.h:65:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/inspector/InspectorCSSAgent.h:116:  The parameter name &quot;pseudoIdMatches&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WTF/wtf/HashFunctions.h:190:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:194:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:195:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:196:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:197:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:198:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:199:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:200:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:201:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:202:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:203:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:204:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:205:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:206:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:207:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:208:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:209:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/HashFunctions.h:213:  More than one command on the same line  [whitespace/newline] [4]
Source/WTF/wtf/RetainPtr.h:307:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 39 in 573 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>941390</commentid>
    <comment_count>3</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-18 16:40:45 -0700</bug_when>
    <thetext>Committed r157653: &lt;http://trac.webkit.org/changeset/157653&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941476</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-19 01:10:01 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Committed r157653: &lt;http://trac.webkit.org/changeset/157653&gt;

FYI: It broke the build on the Lion bots.

/Volumes/Data/slave/lion-release/build/Source/WebCore/bindings/objc/ObjCNodeFilterCondition.h:55:36: error: expected &apos;&gt;&apos;
        RetainPtr&lt;id &lt;DOMNodeFilter&gt;&gt; m_filter;
                                   ^
/Volumes/Data/slave/lion-release/build/Source/WebCore/bindings/objc/ObjCNodeFilterCondition.h:55:37: error: expected member name or &apos;;&apos; after declaration specifiers
        RetainPtr&lt;id &lt;DOMNodeFilter&gt;&gt; m_filter;
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
/Volumes/Data/slave/lion-release/build/Source/WebCore/bindings/objc/ObjCNodeFilterCondition.h:51:15: error: member initializer &apos;m_filter&apos; does not name a non-static data member or base class
            : m_filter(filter)
              ^~~~~~~~~~~~~~~~
3 errors generated.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214604</attachid>
            <date>2013-10-18 14:59:36 -0700</date>
            <delta_ts>2013-10-18 15:56:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123040-20131018145935.patch</filename>
            <type>text/plain</type>
            <size>706020</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
Y2YyOTE1ZjA5NGU5NWM2M2EyODI5YTgzMzJiZmIxMzU1MjcxYmVhLi43NDAwNWJmMmY5YzUxZWEy
ZGNiNDljMWZmM2U2ZWNiYjdlNDFmNzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAxMy0xMC0xOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSBzcGFjZXMgYmV0d2VlbiB0ZW1wbGF0ZSBhbmdsZSBicmFj
a2V0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIz
MDQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja09iamVjdC5jcHA6CisgICAgICAgIChKU0M6Ojo6Y3JlYXRlKToKKyAgICAg
ICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNvbnN0YW50cyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMpOgorICAgICAgICAqIGJ5dGVjb2RlL0RGR0V4
aXRQcm9maWxlLmg6CisgICAgICAgICogYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oOgorICAgICAg
ICAqIGJ5dGVjb2RlL09wZXJhbmRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmNvbnN0YW50UmVnaXN0
ZXJzKToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50Lmg6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL1N0YXRp
Y1Byb3BlcnR5QW5hbHlzaXMuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvU3RhdGljUHJvcGVy
dHlBbmFseXplci5oOgorICAgICAgICAqIGRmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBo
YXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQmxvY2tJbnNlcnRpb25TZXQuaDoKKyAgICAgICAg
KiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1DU0UpOgor
ICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1TdG9yZUVsaW1pbmF0aW9uKToKKyAgICAgICAgKiBk
ZmcvREZHQ29tbW9uRGF0YS5oOgorICAgICAgICAqIGRmZy9ERkdEZXNpcmVkU3RydWN0dXJlQ2hh
aW5zLmg6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5oOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIz
Ml82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhp
dCk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZH
V29ya2xpc3QuaDoKKyAgICAgICAgKiBoZWFwL0Jsb2NrQWxsb2NhdG9yLmg6CisgICAgICAgIChK
U0M6OkNvcGllZEJsb2NrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2spOgorICAgICAgICAo
SlNDOjpXZWFrQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrU3RhY2tTZWdtZW50KToKKyAgICAg
ICAgKEpTQzo6Q29weVdvcmtMaXN0U2VnbWVudCk6CisgICAgICAgIChKU0M6OkhhbmRsZUJsb2Nr
KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL0xvY2FsLmg6CisgICAg
ICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAqIGhlYXAvU3Ryb25nLmg6CisgICAg
ICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVs
cGVyczo6ZGVjb2RlZENvZGVNYXBGb3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMu
aDoKKyAgICAgICAgKiBqaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oOgorICAgICAgICAqIHBhcnNl
ci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6
OnBhcnNlSWZTdGF0ZW1lbnQpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAg
KEpTQzo6U2NvcGU6OmNvcHlDYXB0dXJlZFZhcmlhYmxlc1RvVmVjdG9yKToKKyAgICAgICAgKEpT
Qzo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJBcmVuYS5oOgorICAgICAgICAqIHBh
cnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOgorICAgICAgICAqIHByb2ZpbGVyL0xlZ2Fj
eVByb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZGlzcGF0Y2hGdW5jdGlvblRvUHJvZmlsZXMp
OgorICAgICAgICAqIHByb2ZpbGVyL0xlZ2FjeVByb2ZpbGVyLmg6CisgICAgICAgIChKU0M6Okxl
Z2FjeVByb2ZpbGVyOjpjdXJyZW50UHJvZmlsZXMpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2Zp
bGVOb2RlLmg6CisgICAgICAgIChKU0M6OlByb2ZpbGVOb2RlOjpjaGlsZHJlbik6CisgICAgICAg
ICogcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQnV0dGVy
Zmx5Lmg6CisgICAgICAgIChKU0M6OkJ1dHRlcmZseTo6Y29udGlndW91c0ludDMyKToKKyAgICAg
ICAgKEpTQzo6QnV0dGVyZmx5Ojpjb250aWd1b3VzKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6OjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjph
ZGQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlLmg6CisgICAgICAgICogcnVudGltZS9Q
cm9wZXJ0eU1hcEhhc2hUYWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJy
YXkuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENhY2hlLmg6CisgICAgICAgICogcnVudGlt
ZS9TcGFyc2VBcnJheVZhbHVlTWFwLmg6CisgICAgICAgICogcnVudGltZS9TeW1ib2xUYWJsZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0b29scy9Db2RlUHJvZmlsZS5j
cHA6CisgICAgICAgIChKU0M6OnRydW5jYXRlVHJhY2UpOgorICAgICAgICAqIHRvb2xzL0NvZGVQ
cm9maWxlLmg6CisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAq
IHlhcnIvWWFyckludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVjb2RlUGF0
dGVybjo6Qnl0ZWNvZGVQYXR0ZXJuKToKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuY3BwOgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpvcENvbXBpbGVQYXJlbnRoZXNlc1N1YnBh
dHRlcm4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpvcENvbXBpbGVQYXJl
bnRoZXRpY2FsQXNzZXJ0aW9uKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6
b3BDb21waWxlQm9keSk6CisgICAgICAgICogeWFyci9ZYXJyUGF0dGVybi5jcHA6CisgICAgICAg
IChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OmNoZWNrRm9yVGVybWluYWxQYXJl
bnRoZXNlcyk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6Om9w
dGltaXplRG90U3RhcldyYXBwZWRFeHByZXNzaW9ucyk6CisgICAgICAgICogeWFyci9ZYXJyUGF0
dGVybi5oOgorCiAyMDEzLTEwLTE4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgU1BJIHRvIGRpc2FibGUgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHRpbWVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CmluZGV4IGI5ZmE5NzdkMTlkODc4NDc0OTVhYzdiOTg0MmRlYzExYzY1OTYzN2YuLjQ5OWZhMTAx
N2QxYmE3NjY4ZDI2MGI2NzI1ZmUwNDczNDU2YjZjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIw
MTMtMTAtMTggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZW1vdmUgc3BhY2VzIGJldHdlZW4gdGVtcGxhdGUgYW5nbGUgYnJhY2tldHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzA0MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0FWTFRyZWUuaDoK
KyAgICAgICAgKiB3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaDoKKyAgICAgICAgKiB3dGYvQ29tcHJl
c3Npb24uaDoKKyAgICAgICAgKiB3dGYvRnVuY3Rpb25hbC5oOgorICAgICAgICAoV1RGOjpSKToK
KyAgICAgICAgKiB3dGYvSGFzaEZ1bmN0aW9ucy5oOgorICAgICAgICAqIHd0Zi9IYXNoSXRlcmF0
b3JzLmg6CisgICAgICAgICogd3RmL0hhc2hTZXQuaDoKKyAgICAgICAgKFdURjo6Ojpjb250YWlu
cyk6CisgICAgICAgICogd3RmL0xpc3RIYXNoU2V0Lmg6CisgICAgICAgIChXVEY6Ojo6Y29udGFp
bnMpOgorICAgICAgICAqIHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwOgorICAgICAgICAq
IHd0Zi9SZXRhaW5QdHIuaDoKKyAgICAgICAgKiB3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg6Cisg
ICAgICAgIChXVEY6Ojo6cmVtb3ZlKToKKyAgICAgICAgKiB3dGYvU2l6ZUxpbWl0cy5jcHA6Cisg
ICAgICAgICogd3RmL1N0cmVhbUJ1ZmZlci5oOgorICAgICAgICAqIHd0Zi9WZWN0b3IuaDoKKyAg
ICAgICAgKiB3dGYvVmVjdG9yVHJhaXRzLmg6CisgICAgICAgICogd3RmL1dlYWtQdHIuaDoKKyAg
ICAgICAgKFdURjo6V2Vha1JlZmVyZW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6V2Vha1Jl
ZmVyZW5jZTo6Y3JlYXRlVW5ib3VuZCk6CisgICAgICAgIChXVEY6OldlYWtQdHI6OldlYWtQdHIp
OgorICAgICAgICAoV1RGOjpXZWFrUHRyRmFjdG9yeTo6V2Vha1B0ckZhY3RvcnkpOgorICAgICAg
ICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHA6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmlu
Zzo6YWRkKToKKyAgICAgICAgKFdURjo6ZmluZFN0cmluZyk6CisgICAgICAgICogd3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6Cisg
ICAgICAgICogd3RmL3RleHQvU3RyaW5nT3BlcmF0b3JzLmg6CisgICAgICAgIChXVEY6Om9wZXJh
dG9yKyk6CisKIDIwMTMtMTAtMTggIEJyZW5kYW4gTG9uZyAgPGIubG9uZ0BjYWJsZWxhYnMuY29t
PgogCiAgICAgICAgIFtHU3RyZWFtZXJdW0dUS10gQWRkIEdSZWZQdHI6Om91dFB0cigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNTQzZGM2Y2M1ZDkyMTNjOWZjYmFlMGEwOTRjYWVlNjY0YTJjMDBkYi4uMTdhYzRi
NDI4NDdhYTdjM2YwMmJlY2I2ZmJiMjNlNmFiMjRlNDZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDg2NyBAQAorMjAxMy0xMC0xOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBzcGFjZXMgYmV0d2VlbiB0ZW1wbGF0ZSBhbmdsZSBicmFja2V0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMDQw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRp
b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJvbGxl
cjo6cG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6ZXJyb3JPY2N1cnJlZCk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxs
YmFja3MuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkV2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJREJFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJFdmVudERpc3BhdGNoZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXkuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlBlbmRpbmdUcmFuc2Fj
dGlvbk1vbml0b3IuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6b25TdWNjZXNzV2l0aFByZWZldGNoKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9s
c0hvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0hvc3Q6OnNvcnRlZFRy
YWNrTGlzdEZvck1lbnUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNv
bnRyb2xzSG9zdC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OmFjdGl2ZVJhbmdlcyk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlQmFzZTo6YnVmZmVyZWQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2Uv
TWVkaWFTb3VyY2VCYXNlLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUmVnaXN0cnk6
OnVucmVnaXN0ZXJVUkwpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2VSZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
TGlzdC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0TWVkaWFTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFTb3VyY2U6OmFjdGl2ZVJhbmdlcyk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRNZWRpYVNvdXJjZS5oOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0U291cmNlQnVmZmVyTGlzdC5oOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW06OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRFRNRlNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjpzY2hl
ZHVsZWRFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RFRNRlNlbmRlci5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OnNjaGVkdWxlZEV2ZW50
VGltZXJGaXJlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnN0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXNwb25zZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDU3RhdHNSZXNwb25zZTo6cmVzdWx0KToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNlbnRlci5oOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5
bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVzaXM6OmdldFZvaWNl
cyk6CisgICAgICAgICogTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmg6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Ob2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVP
dXRwdXQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6c2V0QXVk
aW9Gb3JtYXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y29u
c3VtZUF1ZGlvKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5oOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmg6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VNYW5hZ2VyOjpvcmlnaW5zKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlTWFuYWdlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTZXJ2ZXI6Om9yaWdpbnMp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmg6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6b3JpZ2lucyk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6OmdldE9wZW5EYXRhYmFzZXMpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjpkZWxldGVBbGxEYXRhYmFzZXMpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxTdGF0ZW1lbnRCYWNrZW5kLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FM
VHJhbnNhY3Rpb25Db29yZGluYXRvcjo6c2h1dGRvd24pOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oOgorICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
OjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OnByb2Nlc3NQZW5kaW5nVGFza3MpOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRS
ZWNlaXZlQmluYXJ5RGF0YUNhbGxiYWNrKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmg6CisgICAgICAgICogTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXQ6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1l
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oOgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsQ2xpZW50OjpkaWRSZWNlaXZlQmluYXJ5RGF0
YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3Bh
dGNoZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d29ya2VyR2xvYmFsU2NvcGVE
aWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZUJpbmFyeURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5UaHJlYWRTZW5k
QXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OkJyaWRnZTo6c2VuZCk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6On5B
WE9iamVjdENhY2hlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphcmlhTGFiZWxlZEJ5VGV4
dCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGV4dDo6QWNjZXNzaWJpbGl0eVRleHQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6dG9SZWZQdHJOYXRpdmVBcnJh
eSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNNdXRhdGlvbkNhbGxiYWNrOjpjYWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU011dGF0
aW9uQ2FsbGJhY2suaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0QXR0YWNoZWRTaGFkZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9QYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmNvbGxlY3RJc29sYXRlZENvbnRleHRzKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRQcm9m
aWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9vYmpjL09iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmg6CisgICAgICAg
ICogYnJpZGdlL29iamMvb2JqY19jbGFzcy5oOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX3Jv
b3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdDo6aW52YWxpZGF0ZSk6
CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfcm9vdC5oOgorICAgICAgICAqIGNzcy9CYXNpY1No
YXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJhc2ljU2hhcGVGb3JWYWx1ZSk6
CisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NC
YXNpY1NoYXBlUG9seWdvbjo6dmFsdWVzKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OnZhbHVlRm9yRmlsdGVyKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTRm9udEZhY2VTb3VyY2UuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZhY2VS
dWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rvcjo6Z2V0Rm9udEZhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9yOjpiZWdpbkxvYWRUaW1lckZpcmVkKToK
KyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmg6CisgICAgICAgICogY3NzL0NTU0dyb3Vw
aW5nUnVsZS5oOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmg6CisgICAg
ICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXJTZWxlY3Rvcjo6YWRvcHRTZWxlY3RvclZlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1BhcnNl
clZhbHVlcy5oOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTUnVsZUxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY0NTU1J1bGVM
aXN0OjpydWxlcyk6CisgICAgICAgICogY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlZ21lbnRlZEZvbnRGYWNlOjpmb250TG9hZGVkKToKKyAgICAg
ICAgKiBjc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaDoKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0
b3JMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yTGlzdDo6YWRvcHRTZWxl
Y3RvclZlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yTGlzdC5oOgorICAgICAgICAq
IGNzcy9DU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAg
IChXZWJDb3JlOjpjb21wYXJlQ1NTVmFsdWVWZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NWYWx1
ZVBvb2wuaDoKKyAgICAgICAgKiBjc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFJ1bGVTZXRzOjpjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50UnVsZVNldHM6OmFwcGVuZEF1dGhvclN0eWxl
U2hlZXRzKToKKyAgICAgICAgKiBjc3MvRG9jdW1lbnRSdWxlU2V0cy5oOgorICAgICAgICAqIGNz
cy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UnVs
ZUNvbGxlY3Rvcjo6bWF0Y2hlZFJ1bGVMaXN0KToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVD
b2xsZWN0b3IuaDoKKyAgICAgICAgKiBjc3MvRm9udExvYWRlci5oOgorICAgICAgICAqIGNzcy9J
bnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5bGVTaGVldHMpOgor
ICAgICAgICAqIGNzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmg6CisgICAgICAgICogY3NzL01l
ZGlhTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5U2V0OjpwYXJzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUxpc3Q6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6cmVw
b3J0TWVkaWFRdWVyeVdhcm5pbmdJZk5lZWRlZCk6CisgICAgICAgICogY3NzL01lZGlhTGlzdC5o
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVNldDo6cXVlcnlWZWN0b3IpOgorICAgICAg
ICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UXVlcnlFdmFsdWF0b3I6OmV2YWwpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5TWF0Y2hlci5o
OgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpjbG9uZUFuZENh
Y2hlRm9yQ1NTT00pOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b24uaDoKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSdWxl
U2V0OjphZGRUb1J1bGVTZXQpOgorICAgICAgICAoV2ViQ29yZTo6UnVsZVNldDo6YWRkUmVnaW9u
UnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KToKKyAgICAgICAgKiBjc3Mv
UnVsZVNldC5oOgorICAgICAgICAqIGNzcy9TZWxlY3RvckZpbHRlci5oOgorICAgICAgICAqIGNz
cy9TdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
SW52YWxpZGF0aW9uQW5hbHlzaXM6OmFuYWx5emVTdHlsZVNoZWV0KToKKyAgICAgICAgKiBjc3Mv
U3R5bGVQcm9wZXJ0eVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0
OjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxl
U2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmtleWZyYW1lU3R5bGVz
Rm9yQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnN0eWxlUnVs
ZXNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0
eWxlUnVsZXNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJl
c29sdmVWYXJpYWJsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwbHlQ
cm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGluZ1NW
R0RvY3VtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGlu
Z1NoYWRlcnMpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgICogY3Nz
L1N0eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OnNwbGl0SW50b011
bHRpcGxlUnVsZXNXaXRoTWF4aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSdWxlR3JvdXA6OlN0eWxlUnVsZUdyb3VwKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUnVsZU1lZGlhOjpTdHlsZVJ1bGVNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJ1bGVTdXBwb3J0czo6U3R5bGVSdWxlU3VwcG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSdWxlUmVnaW9uOjpTdHlsZVJ1bGVSZWdpb24pOgorICAgICAgICAqIGNzcy9TdHlsZVJ1
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZTo6cGFyc2VyQWRvcHRTZWxlY3RvclZl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVQYWdlOjpwYXJzZXJBZG9wdFNlbGVj
dG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZUdyb3VwOjpjaGlsZFJ1bGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVsZU1lZGlhOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSdWxlU3VwcG9ydHM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJ1bGVSZWdpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVIb3N0
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlSG9zdDo6U3R5bGVSdWxlSG9z
dCk6CisgICAgICAgICogY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oOgorICAgICAgICAqIGNzcy9T
dHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENvbnRl
bnRzOjpwYXJzZXJBcHBlbmRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmNoaWxkUnVsZXNIYXZl
RmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyk6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENvbnRlbnRzOjpjaGlsZFJ1
bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6aW1wb3J0UnVsZXMp
OgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVNoZWV0TGlzdDo6c3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVl
dExpc3Q6Oml0ZW0pOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0TGlzdC5oOgorICAgICAgICAq
IGNzcy9XZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1
bGVLZXlmcmFtZXM6OmtleWZyYW1lcyk6CisgICAgICAgICogZG9tL0NoZWNrZWRSYWRpb0J1dHRv
bnMuaDoKKyAgICAgICAgKiBkb20vQ2xpZW50UmVjdExpc3QuaDoKKyAgICAgICAgKiBkb20vQ29u
dGFpbmVyTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2Rlc0xhenlTbmFwc2hvdDo6
bmV4dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2Rlc0xhenlTbmFwc2hvdDo6dGFr
ZVNuYXBzaG90KToKKyAgICAgICAgKiBkb20vQ3Jvc3NUaHJlYWRUYXNrLmg6CisgICAgICAgICog
ZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRDYW5j
ZWxGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRFeGl0RnVs
bHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZnVsbFNjcmVlbkNoYW5nZURl
bGF5VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlkQXNzb2NpYXRl
Rm9ybUNvbnRyb2xzVGltZXJGaXJlZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlbW92ZU1hcmtlcnMpOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRTdHls
ZVNoZWV0Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uOjppbmplY3RlZFVzZXJTdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjppbmplY3RlZEF1dGhvclN0eWxlU2hlZXRz
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxl
Y3RBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uOjphbmFseXplU3R5bGVTaGVldENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpzdHlsZVNoZWV0c1VzZVJlbVVuaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbHRlckVuYWJs
ZWROb25lbXB0eUNTU1N0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RBY3Rp
dmVDU1NTdHlsZVNoZWV0c0Zyb21TZWFtbGVzc1BhcmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmg6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0ck5vZGVMaXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMp
OgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXJN
YXAuaDoKKyAgICAgICAgKiBkb20vRXZlbnRTZW5kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50U2VuZGVyOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBkb20vSWRUYXJnZXRPYnNlcnZlclJl
Z2lzdHJ5Lmg6CisgICAgICAgICogZG9tL011dGF0aW9uQ2FsbGJhY2suaDoKKyAgICAgICAgKiBk
b20vTXV0YXRpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2Vy
dmVyOjp0YWtlUmVjb3Jkcyk6CisgICAgICAgIChXZWJDb3JlOjpNdXRhdGlvbk9ic2VydmVyOjpk
ZWxpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxN
dXRhdGlvbnMpOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmg6CisgICAgICAgICog
ZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaDoKKyAgICAgICAgKiBkb20vTmFtZWRG
bG93Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEZsb3dDb2xsZWN0aW9u
OjpuYW1lZEZsb3dzKToKKyAgICAgICAgKiBkb20vTmFtZWRGbG93Q29sbGVjdGlvbi5oOgorICAg
ICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmRpZE1vdmVUb05l
d0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om11dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyeSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6dW5yZWdpc3Rlck11dGF0aW9uT2JzZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bm90aWZ5TXV0YXRpb25PYnNlcnZlcnNOb2RlV2lsbERl
dGFjaCk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRh
Lmg6CisgICAgICAgICogZG9tL1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpw
cm9jZXNzQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnByb2Nlc3NOb2Rlcyk6
CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6cHJvY2Vzc0FuY2VzdG9yc0FuZFRoZWlyU2libGlu
Z3MpOgorICAgICAgICAqIGRvbS9SYW5nZS5oOgorICAgICAgICAqIGRvbS9TY29wZWRFdmVudFF1
ZXVlLmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVwb3J0RXhjZXB0aW9uKToKKyAg
ICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGRvbS9TY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseVJl
bGF0aXZlRm9udFN0eWxlQ2hhbmdlKToKKyAgICAgICAgKiBlZGl0aW5nL0JyZWFrQmxvY2txdW90
ZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QnJlYWtCbG9ja3F1b3RlQ29tbWFuZDo6
ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlQ2hpbGRyZW5JblJh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjpkZWxldGVJbnNp
Z25pZmljYW50VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6
Y2xvbmVQYXJhZ3JhcGhVbmRlck5ld0VsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpodG1sRWxlbWVudEVxdWl2YWxlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6aHRtbEF0dHJpYnV0ZUVxdWl2YWxlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkF0dHJpYnV0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpleHRyYWN0Q29uZmxpY3RpbmdJ
bXBsaWNpdFN0eWxlT2ZBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHls
ZTo6ZWxlbWVudElzU3R5bGVkU3Bhbk9ySFRNTEVxdWl2YWxlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdGluZ1N0eWxlOjptZXJnZUlubGluZUFuZEltcGxpY2l0U3R5bGVPZkVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6c3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudCk6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjb3Vu
dE1hdGNoZXNGb3JUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOgorICAgICAgICAq
IGVkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpnZXRBbmNlc3RvcnNJbnNp
ZGVCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21t
YW5kOjpjbG9uZUhpZXJhcmNoeVVuZGVyTmV3QmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6SW5z
ZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGlu
Zy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9N
ZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXJn
ZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZDo6ZG9VbmFwcGx5KToKKyAgICAgICAgKiBlZGl0
aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kOjpkb0FwcGx5KToKKyAg
ICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlcGxhY2VtZW50RnJhZ21lbnQ6OnJlbW92ZVVucmVuZGVyZWROb2Rlcyk6CisgICAg
ICAgICogZWRpdGluZy9TaW1wbGlmeU1hcmt1cENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2ltcGxpZnlNYXJrdXBDb21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsaWZ5TWFya3VwQ29tbWFuZDo6cHJ1bmVTdWJzZXF1ZW50QW5jZXN0b3JzVG9SZW1vdmUpOgor
ICAgICAgICAqIGVkaXRpbmcvU2ltcGxpZnlNYXJrdXBDb21tYW5kLmg6CisgICAgICAgICogZWRp
dGluZy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwbGl0RWxlbWVudENvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BsaXRFbGVtZW50Q29tbWFuZDo6ZXhlY3V0ZUFw
cGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNwbGl0RWxlbWVudENvbW1hbmQ6OmRvVW5hcHBseSk6
CisgICAgICAgICogZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kOjpleGVjdXRl
QXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6V3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5k
Ojpkb1VuYXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0FsdGVybmF0aXZlVGV4dFVJQ29u
dHJvbGxlci5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZUxpc3QuaDoKKyAgICAgICAgKiBoaXN0
b3J5L0JhY2tGb3J3YXJkTGlzdC5oOgorICAgICAgICAqIGhpc3RvcnkvSGlzdG9yeUl0ZW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06OnNldFJlZGlyZWN0VVJMcyk6CisgICAg
ICAgICogaGlzdG9yeS9IaXN0b3J5SXRlbS5oOgorICAgICAgICAqIGhpc3RvcnkvbWFjL0hpc3Rv
cnlJdGVtTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06OnNldFRyYW5zaWVu
dFByb3BlcnR5KToKKyAgICAgICAgKiBodG1sL0Zvcm1Db250cm9sbGVyLmg6CisgICAgICAgICog
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6YXBwZW5kKToKKyAgICAg
ICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OmNoZWNrVmFsaWRpdHkpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtRWxlbWVudDo6dmFsaWRhdGVJbnRlcmFjdGl2ZWx5KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxGb3JtRWxlbWVudDo6Y2hlY2tWYWxpZGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRm9ybUVsZW1lbnQ6OmNoZWNrSW52YWxpZENvbnRyb2xzQW5kQ29sbGVjdFVuaGFuZGxlZCk6
CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpwbGF0Zm9ybVRleHRUcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6Y29uZmlndXJlVGV4dFRyYWNrR3JvdXApOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6Cisg
ICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MU2VsZWN0RWxlbWVudDo6c2V0TGVuZ3RoKToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJv
bGxlci5jcHA6CisgICAgICAgIChNZWRpYUNvbnRyb2xsZXI6OmFzeW5jRXZlbnRUaW1lckZpcmVk
KToKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOgorICAgICAgICAqIGh0bWwvTWVk
aWFGcmFnbWVudFVSSVBhcnNlci5oOgorICAgICAgICAqIGh0bWwvVmFsaWRhdGlvbk1lc3NhZ2Uu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmg6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QXR0YWNoZWRTaGFkZXJzKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFRleHR1cmUuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6QmFja2dy
b3VuZEhUTUxQYXJzZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFy
c2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpCYWNrZ3JvdW5kSFRNTFBhcnNlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpzdGFydEJhY2tncm91bmRQYXJzZXIpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb2tlblByZWxvYWRTY2Fu
bmVyOjpzY2FuKToKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OnNjYW5D
b21tb24pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5oOgor
ICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaDoKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9Db250ZW50RGlzdHJpYnV0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3Ry
aWJ1dG9yOjplbnN1cmVJbnNlcnRpb25Qb2ludExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRE
aXN0cmlidXRvcjo6aW52YWxpZGF0ZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERp
c3RyaWJ1dG9yLmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xp
c3RFbGVtZW50OjpyZWJ1aWxkVHJhY2tMaXN0TWVudSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oOgorICAgICAgICAqIGh0bWwv
dHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5i
YW5kV2ViVlRUVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFdlYlZUVFRl
eHRUcmFjazo6bmV3Q3Vlc1BhcnNlZCk6CisgICAgICAgICogaHRtbC90cmFjay9Mb2FkYWJsZVRl
eHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bmV3Q3Vl
c0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bmV3UmVn
aW9uc0F2YWlsYWJsZSk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0Lmg6
CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcDoKKyAgICAgICAgKFRleHRU
cmFja0xpc3Q6OmludmFsaWRhdGVUcmFja0luZGV4ZXNBZnRlclRyYWNrKToKKyAgICAgICAgKFRl
eHRUcmFja0xpc3Q6OnJlbW92ZSk6CisgICAgICAgIChUZXh0VHJhY2tMaXN0Ojpjb250YWlucyk6
CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmg6CisgICAgICAgICogaHRtbC90
cmFjay9UcmFja0xpc3RCYXNlLmNwcDoKKyAgICAgICAgKFRyYWNrTGlzdEJhc2U6OmFzeW5jRXZl
bnRUaW1lckZpcmVkKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaDoKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJWVFRQYXJzZXI6OmdldE5ld0N1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2Vy
OjpnZXROZXdSZWdpb25zKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0Nv
bnRlbnRTZWFyY2hVdGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VhcmNoVXRp
bHM6OmdldFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlc0J5TGluZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlYXJjaFV0aWxzOjpsaW5lRW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VhcmNoVXRpbHM6OnNlYXJjaEluVGV4dEJ5TGluZXMpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9Db250ZW50U2VhcmNoVXRpbHMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NUGF0Y2hT
dXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNoU3VwcG9ydDo6cGF0Y2hOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBhdGNoU3VwcG9ydDo6ZGlmZik6CisgICAgICAgIChX
ZWJDb3JlOjpET01QYXRjaFN1cHBvcnQ6OmlubmVyUGF0Y2hDaGlsZHJlbik6CisgICAgICAgICog
aW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVy
dGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1l
cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6ZW5hYmxlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJh
bWVzV2l0aE1hbmlmZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQ6OmJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclByb2Zp
bGU6OnRvSW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVwZGF0ZVJlZ2lvbkxh
eW91dFRhc2s6Om9uVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjpnZXRDb21wdXRlZFN0eWxlRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvck1hdGNoZWRS
dWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJh
eUZvclJlZ2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yTmFtZWRGbG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s6Om9uVGltZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNo
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRz
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRBdHRyaWJ1dGVzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVt
ZW50QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVp
bGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpzdHlsZUF0dHJpYnV0ZUludmFsaWRhdGVkKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
U3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudDo6Z2V0RE9NU3RvcmFnZUl0ZW1zKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNl
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0
RGF0YWJhc2VUYWJsZU5hbWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9p
bnRCeVVybCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFy
Y2hJbkNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2V0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmN1cnJlbnRDYWxsRnJhbWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJB
Z2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6
Z2V0UHJvZmlsZUhlYWRlcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJv
ZmlsZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zvck5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2Jq
ZWN0SGllcmFyY2h5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkQXJyYXlGb3JDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29va2llcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNlYXJjaEluUmVzb3VyY2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6Z2V0UHJvZmlsZUhlYWRlcnMpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0
UHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFzQ1NTUnVs
ZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OmJ1aWxkQXJyYXlGb3JD
b21wdXRlZFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpzdHlsZVdp
dGhQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdG9yc0Zyb21Tb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTZWxl
Y3Rvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRP
YmplY3RGb3JSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6Omxp
bmVFbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxk
QXJyYXlGb3JSdWxlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9ySW5saW5lU3R5bGU6OmxpbmVFbmRpbmdzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQXJyYXlCYXNlOjp3cml0ZUpTT04pOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
UGFnZVJ1bnRpbWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50
OjpyZXBvcnRFeGVjdXRpb25Db250ZXh0Q3JlYXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q2FsbFN0YWNrOjpi
dWlsZEluc3BlY3RvckFycmF5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNr
Lmg6CisgICAgICAgICogbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaDoK
KyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FuY2VsQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEFsbERlZmVyc0xvYWRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmdldFN1YnJlc291cmNlcyk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Zvcm1TdGF0ZS5o
OgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jlc3NUcmFj
a2VyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oOgorICAgICAg
ICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrTG9hZGVyOjpnZXROZXdDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xvYWRl
cjo6Z2V0TmV3UmVnaW9ucyk6CisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ondvcmtlckdsb2JhbFNjb3BlRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGU6OnJlbW92ZVJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGU6OmR1bXApOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmg6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlOjpnZXRPcmlnaW5zV2l0aENhY2hlKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFyY2hpdmU6OmNsZWFyQWxsU3Vi
ZnJhbWVBcmNoaXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZlOjpjbGVhckFsbFN1YmZy
YW1lQXJjaGl2ZXNJbXBsKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpBcmNoaXZlOjpzdWJyZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6QXJjaGl2ZTo6c3ViZnJhbWVBcmNoaXZlcyk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUv
QXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZl
UmVzb3VyY2VDb2xsZWN0aW9uOjphZGRBbGxSZXNvdXJjZXMpOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaDoKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lXZWJBcmNoaXZlOjpjcmVhdGVGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBsb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvbWh0
bWwvTUhUTUxQYXJzZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
aDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaDoKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9J
Y29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpub3RpZnlQ
ZW5kaW5nTG9hZERlY2lzaW9ucyk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
Lmg6CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6c29ydGVkVHJh
Y2tMaXN0Rm9yTWVudSk6CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRi5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnQ6OmRpZEFzc29jaWF0ZUZvcm1Db250cm9scyk6CisgICAgICAgICogcGFn
ZS9Db25zb2xlLmg6CisgICAgICAgICogcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaDoKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6
OmdldE1hdGNoZWRDU1NSdWxlcyk6CisgICAgICAgICogcGFnZS9EZXZpY2VDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRldmljZUNvbnRyb2xsZXI6OmRpc3BhdGNoRGV2aWNlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RGV2aWNlQ29udHJvbGxlcjo6ZmlyZURldmljZUV2ZW50
KToKKyAgICAgICAgKiBwYWdlL0RldmljZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL0Vk
aXRvckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudCk6CisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMpOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmaW5kU3RyaW5nTWF0
Y2hpbmdSYW5nZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvUGFn
ZUdyb3VwLmg6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQZXJmb3JtYW5jZTo6d2Via2l0R2V0RW50cmllc0J5VHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpQZXJmb3JtYW5jZTo6d2Via2l0R2V0RW50cmllc0J5TmFtZSk6CisgICAgICAgICogcGFn
ZS9QZXJmb3JtYW5jZS5oOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VFbnRyeUxpc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VFbnRyeUxpc3Q6OmFwcGVuZEFsbCk6Cisg
ICAgICAgICogcGFnZS9QZXJmb3JtYW5jZUVudHJ5TGlzdC5oOgorICAgICAgICAqIHBhZ2UvU2Vj
dXJpdHlPcmlnaW5IYXNoLmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6Cisg
ICAgICAgICogcGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5oOgorICAgICAgICAqIHBhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9u
Q29udHJvbGxlclByaXZhdGU6OmZpcmVFdmVudHNBbmRVcGRhdGVTdHlsZSk6CisgICAgICAgICog
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUuaDoKKyAgICAgICAgKiBw
YWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXA6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3Jh
cHBlck1hcCk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmg6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nU3RhdGVOb2RlOjpjaGlsZHJlbik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RocmVhZDo6
ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tU2Nyb2xsaW5nVGhyZWFkKToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OnVwZGF0ZVRy
ZWVGcm9tU3RhdGVOb2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZTo6YXBwZW5kQ2hp
bGQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmg6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OnN5bmNDaGlsZFBvc2l0aW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0Rh
dGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NYWluVGhyZWFkVGFzay5oOgorICAgICAgICAqIHBs
YXRmb3JtL1BPREZyZWVMaXN0QXJlbmEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBPREZyZWVMaXN0
QXJlbmE6OmZyZWVPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UE9ERnJlZUxpc3RBcmVuYTo6
YWxsb2NhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL1BPREludGVydmFsVHJlZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5oOgorICAgICAgICAoV2ViQ29yZTo6UE9EUmVk
QmxhY2tUcmVlOjpQT0RSZWRCbGFja1RyZWUpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hT
eW50aGVzaXplcjo6dm9pY2VMaXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUnVuTG9vcC5oOgorICAgICAgICAq
IHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6
ZnJhbWVSZWN0c0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y2xpcFJl
Y3RDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldFBhcmVudFZpc2li
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2hvdyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpoaWRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
U3VwcGxlbWVudGFibGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1cHBsZW1lbnQ6OnByb3ZpZGVU
byk6CisgICAgICAgIChXZWJDb3JlOjpTdXBwbGVtZW50YWJsZTo6cHJvdmlkZVN1cHBsZW1lbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kSG9z
dG5hbWVzSW5NYWlsVG9VUkwpOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlSG9zdG5hbWVzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9SZXNhbXBsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0Nv
bXByZXNzb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXByZXNzb3JL
ZXJuZWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjb3B5QnVmZmVyQW5kQ2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjb3B5U29tZURhdGFGcm9tRGF0YUFycmF5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFBvbHlnb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2x5
Z29uOjpGbG9hdFBvbHlnb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9s
eWdvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldENhY2hlZEZvbnREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6bG9j
YXRlUGFnZVNsb3dDYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VU
cmVlTm9kZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtVGV4dFRyYWNrTWVudS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1NpbXBsZUZvbnREYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
V2lkdGhDYWNoZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnByb2Nlc3NOZXdBbmRS
ZW1vdmVkVGV4dFRyYWNrcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cHJvY2Vzc0xlZ2FjeUNsb3NlZENh
cHRpb25zVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnByb2Nlc3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbktleWZyYW1lcyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9tYWMvTGF5ZXJQb29sLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
bWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW06CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpzZXRWYWx1ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxl
Q29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2Fj
aGVXaXRoVGltZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclBhcmFtZXRlckxpc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6
b3BlcmF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0
dXJlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVGb250RGF0YUNv
cmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUZvbnREYXRhOjpnZXRDRlN0cmlu
Z0F0dHJpYnV0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtT3BlcmF0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9u
czo6b3BlcmF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06
CisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVudEZyYWdtZW50V2l0aFJURik6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJNYWMubW06CisgICAgICAgICgt
W1dlYlNwZWVjaFN5bnRoZXNpc1dyYXBwZXIgc3BlYWtVdHRlcmFuY2U6V2ViQ29yZTo6XSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9IVFRQSGVhZGVyTWFwLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6cGFyc2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlQ2FjaGVIZWFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbGllbnRDZXJ0cyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6OjpjcmVhdGVWYWx1ZUZvck51bGxLZXkpOgorICAgICAgICAoV2ViQ29yZTo6OjpjcmVhdGVW
YWx1ZUZvcktleSk6CisgICAgICAgIChXZWJDb3JlOjpjZkxvY2FsZUNhY2hlKToKKyAgICAgICAg
KiBwbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpwYWludENvbnRpbnVhdGlvbk91dGxpbmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpyZW1vdmVGcm9tVHJhY2tlZFJlbmRlcmVyTWFwcyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1
dHRvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlk
OjpHcmlkSXRlcmF0b3I6OkdyaWRJdGVyYXRvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckdyaWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3Rh
Y2tpbmdPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRl
ckxpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVk
Rmxvd1RocmVhZDo6Z2V0UmFuZ2VzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OmdldFJhbmdlcyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclJlZ2lvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNlbGVjdGlvbkJvdW5kcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9Sb290SW5saW5lQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hh
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVNoYXBlUGFkZGluZ0JvdW5kcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21wdXRlU2hhcGVNYXJnaW5Cb3VuZHMpOgorICAgICAgICAqIHJl
bmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpQb2x5Z29u
U2hhcGU6OlBvbHlnb25TaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQb2x5Z29uU2hhcGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcGU6OmNyZWF0ZVNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1No
YXBlSW5mby5oOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9RdW90ZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlF1b3Rlc0RhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpRdW90ZXNEYXRhOjpR
dW90ZXNEYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUXVvdGVzRGF0YS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZXF1aXJlVHJhbnNmb3JtT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
OjphcHBseVRyYW5zZm9ybSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERh
dGEuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuaDoKKyAgICAgICAgKiBz
dG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFn
ZUV2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyk6
CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmg6CisgICAgICAgICog
c3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFn
ZVRocmVhZC5oOgorICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXI6Om9yaWdpbnMpOgorICAgICAgICAqIHN0b3JhZ2Uv
U3RvcmFnZVRyYWNrZXIuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUGF0aEFuaW1hdG9yOjpzdGFydEFuaW1WYWxBbmlt
YXRpb24pOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0aWVzOjpTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZUFuaW1h
dG9yOjpmaW5kQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yQXR0cmlidXRlTmFtZSk6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmg6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50
RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6
OnN0YXJ0QW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lv
bnM6OmRpc3BhdGNoU1ZHTG9hZEV2ZW50VG9PdXRlcm1vc3RTVkdFbGVtZW50cyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZFBlbmRpbmdSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmlzRWxlbWVudFBlbmRpbmdS
ZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZW1v
dmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjpzZXRPZkVsZW1lbnRzUmVmZXJlbmNpbmdUYXJnZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRFbGVtZW50UmVmZXJlbmNpbmdU
YXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRlbnNpb25zOjpyZWJ1aWxk
QWxsRWxlbWVudFJlZmVyZW5jZXNGb3JUYXJnZXQpOgorICAgICAgICAqIHN2Zy9TVkdEb2N1bWVu
dEV4dGVuc2lvbnMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRm9udEVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHR2x5cGhNYXAuaDoKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpvcmllbnRUeXBlQW5pbWF0ZWQp
OgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1Bh
dGhTZWdMaXN0Lmg6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5o
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmg6CisgICAgICAgICogc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRmlsdGVyQnVpbGRlcjo6YWRkQnVpbHRpbkVmZmVjdHMpOgorICAgICAgICAqIHN2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSk6
CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2Zm
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY6OmNy
ZWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJP
ZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmOjpjcmVh
dGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlU
ZWFyT2ZmLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVh
ck9mZjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1By
b3BlcnR5TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXA6OmFuaW1hdGVkUHJvcGVydGllc0ZvckF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL3Byb3Bl
cnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0
aWVzL1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3Bl
cnRpZXMvU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmY6OmNyZWF0ZVNWR1RyYW5zZm9y
bUZyb21NYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5
VGVhck9mZjo6Y29uc29saWRhdGUpOgorICAgICAgICAqIHdvcmtlcnMvRGVmYXVsdFNoYXJlZFdv
cmtlclJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
Lmg6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxl
OjpkaXNwYXRjaERlZmVycmVkRXZlbnRzKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3RQ
cm9ncmVzc0V2ZW50VGhyb3R0bGUuaDoKKyAgICAgICAgKiB4bWwvWFBhdGhOb2RlU2V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpOb2RlU2V0Ojpzb3J0KToKKyAgICAgICAgKFdlYkNv
cmU6OlhQYXRoOjpOb2RlU2V0Ojp0cmF2ZXJzYWxTb3J0KToKKyAgICAgICAgKiB4bWwvWFNMU3R5
bGVTaGVldC5oOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcDoKKwogMjAxMy0xMC0xOCAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgUnViYmVyLWJhbmRpbmcgaXMgb2Z0ZW4gbm90IHNtb290aCBvbiBpbmZpbml0ZWx5IHNj
cm9sbGluZyB3ZWJzaXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDBlZTNiZWQ1MWYxZjczZWE3ZDE2
ZGVjNWQyYWYxOTk5NDk4YjA4ODkuLjhmYTM2NWM4N2Q0YTZlYzg5NzhjMTkxMmE0YWZmYzcyZmI0
MWM4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMy0xMC0xOCAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBzcGFj
ZXMgYmV0d2VlbiB0ZW1wbGF0ZSBhbmdsZSBicmFja2V0cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMDQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnkubW06CisgICAg
ICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIHJlYnVpbGRIaXN0b3J5QnlEYXlJZk5lZWRlZDpdKToK
KyAgICAgICAgKiBIaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tOgorICAgICAgICAoLVtXZWJIaXN0
b3J5SXRlbSBpbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbjpdKToKKyAgICAgICAgKiBQ
bHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkhvc3RQcm94eS5oOgorICAgICAgICAqIFBsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oOgorICAgICAgICAqIFBsdWdp
bnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6aWRGb3JPYmpl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkxvY2Fs
T2JqZWN0TWFwOjpyZXRhaW4pOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6OkxvY2FsT2JqZWN0TWFwOjpyZWxlYXNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6Zm9yZ2V0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpzdG9wQWxsU3RyZWFtcyk6
CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcuaDoKKyAgICAgICAgKiBQ
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3IGRlc3Ryb3lQbHVnaW5dKToKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNl
TWFuYWdlci5tbToKKyAgICAgICAgKC1bV2ViRGF0YWJhc2VNYW5hZ2VyIG9yaWdpbnNdKToKKyAg
ICAgICAgKiBTdG9yYWdlL1dlYlN0b3JhZ2VNYW5hZ2VyLm1tOgorICAgICAgICAoLVtXZWJTdG9y
YWdlTWFuYWdlciBvcmlnaW5zXSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGlj
YXRpb25DYWNoZS5tbToKKyAgICAgICAgKCtbV2ViQXBwbGljYXRpb25DYWNoZSBvcmlnaW5zV2l0
aENhY2hlXSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
RWRpdG9yQ2xpZW50OjpnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKToKKyAgICAgICAg
KFdlYkVkaXRvckNsaWVudDo6ZG9jdW1lbnRGcmFnbWVudEZyb21BdHRyaWJ1dGVkU3RyaW5nKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbToKKyAgICAgICAgKFdlYk5vdGlm
aWNhdGlvbkNsaWVudDo6c2hvdyk6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNs
ZWFyTm90aWZpY2F0aW9ucyk6CisgICAgICAgICogV2ViVmlldy9XZWJBcmNoaXZlLm1tOgorICAg
ICAgICAoLVtXZWJBcmNoaXZlIGluaXRXaXRoTWFpblJlc291cmNlOnN1YnJlc291cmNlczpzdWJm
cmFtZUFyY2hpdmVzOl0pOgorICAgICAgICAoLVtXZWJBcmNoaXZlIHN1YnJlc291cmNlc10pOgor
ICAgICAgICAoLVtXZWJBcmNoaXZlIHN1YmZyYW1lQXJjaGl2ZXNdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2Ugc3VicmVzb3Vy
Y2VzXSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5oOgorCiAyMDEzLTEwLTE2ICBK
b2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEEgcGFnZSBz
aG91bGQgZXhpdCBmdWxsc2NyZWVuIG1vZGUgaWYgaXQgb3BlbnMgYSBuZXcgcG9wdXAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCBjMmYwZjYyZDRjYThlMzhiNTc0NzhkYWFmOWE2YjQ0YWRiNzY2ZTA5Li44YWUwZGIx
MzM2ZjQyZDhhZTZmMzYwM2ZkMjY5YjIwMDk5NjdkYmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
MTcgQEAKIDIwMTMtMTAtMTggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
IAorICAgICAgICBSZW1vdmUgc3BhY2VzIGJldHdlZW4gdGVtcGxhdGUgYW5nbGUgYnJhY2tldHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzA0MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW4ubW06CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0UHJv
Y2Vzc1N1cHByZXNzaW9uRW5hYmxlZCk6CisKKzIwMTMtMTAtMTggIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KKwogICAgICAgICBSZW1vdmUgc29tZSBXaW5kb3dzIHNwZWNp
ZmljIGNvZGUgZnJvbSBXZWJLaXQyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjMwMzQKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
YWxsYmFja09iamVjdC5jcHAKaW5kZXggZDBhZjkyNWQ5NDY4MjIxMDFkNWI2NjU2YTkwZjlmMDk1
NjhjY2I2Ni4uOTQ3MTNkYTM2NmM4MWFkZjZiNDI5YjNhYTk0YjE1OWEyNzgzMjJhZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCkBAIC00Myw3
ICs0Myw3IEBAIHRlbXBsYXRlPD4gY29uc3QgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFs
T2JqZWN0Pjo6bmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlCiB0ZW1wbGF0ZTw+CiBKU0NhbGxiYWNr
T2JqZWN0PEpTR2xvYmFsT2JqZWN0PiogSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46
OmNyZWF0ZShWTSYgdm0sIEpTQ2xhc3NSZWYgY2xhc3NSZWYsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogewotICAgIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+KiBjYWxsYmFja09iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxP
YmplY3Q+ID4odm0uaGVhcCkpIEpTQ2FsbGJhY2tPYmplY3Qodm0sIGNsYXNzUmVmLCBzdHJ1Y3R1
cmUpOworICAgIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+KiBjYWxsYmFja09iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxP
YmplY3Q+Pih2bS5oZWFwKSkgSlNDYWxsYmFja09iamVjdCh2bSwgY2xhc3NSZWYsIHN0cnVjdHVy
ZSk7CiAgICAgY2FsbGJhY2tPYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICB2bS5oZWFw
LmFkZEZpbmFsaXplcihjYWxsYmFja09iamVjdCwgZGVzdHJveSk7CiAgICAgcmV0dXJuIGNhbGxi
YWNrT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVj
dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRl
eCA0YzFiNTE4NWY5N2I5Mjg5ODcyM2JlYzgyMjYxNTc2YjM5Mjk3ZWQxLi41MmUzYTMwNjlmMjk0
NzM4MTA5ZjA4NDNhMDNmNWQ1ZmJlNjMxN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTT2JqZWN0UmVmLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHB1YmxpYzoKICAgICAKICAgICB1
bnNpZ25lZCByZWZDb3VudDsKICAgICBWTSogdm07Ci0gICAgVmVjdG9yPEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiA+IGFycmF5OworICAgIFZlY3RvcjxKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4+
IGFycmF5OwogfTsKIAogSlNQcm9wZXJ0eU5hbWVBcnJheVJlZiBKU09iamVjdENvcHlQcm9wZXJ0
eU5hbWVzKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA4NmFiYzU0YjllYzgzNDhiNjQw
NTE2OTAzNmEzYTQyOWFjODkwNjZiLi5kMmZhYWUzNGQzOTg4ODYxOWQwYzUzNzViMjcxYTEyMjY2
NTY3MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBA
IC02MTcsNyArNjE3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+aWRlbnRpZmllcihp
bmRleCk7IH0KICNlbmRpZgogCi0gICAgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPiA+JiBj
b25zdGFudHMoKSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzOyB9CisgICAgVmVjdG9yPFdy
aXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50cygpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdp
c3RlcnM7IH0KICAgICBzaXplX3QgbnVtYmVyT2ZDb25zdGFudFJlZ2lzdGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpOyB9CiAgICAgdW5zaWduZWQgYWRkQ29u
c3RhbnQoSlNWYWx1ZSB2KQogICAgIHsKQEAgLTkyNyw3ICs5MjcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgdXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVkJiBudW1i
ZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMsIHVuc2lnbmVkJiBudW1iZXJPZlNhbXBs
ZXNJblByb2ZpbGVzKTsKICNlbmRpZgogCi0gICAgdm9pZCBzZXRDb25zdGFudFJlZ2lzdGVycyhj
b25zdCBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+ID4mIGNvbnN0YW50cykKKyAgICB2b2lk
IHNldENvbnN0YW50UmVnaXN0ZXJzKGNvbnN0IFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+
JiBjb25zdGFudHMpCiAgICAgewogICAgICAgICBzaXplX3QgY291bnQgPSBjb25zdGFudHMuc2l6
ZSgpOwogICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzLnJlc2l6ZShjb3VudCk7CkBAIC0xMDI2
LDcgKzEwMjYsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKExMSU5UKQogICAgIFZlY3RvcjxM
TEludENhbGxMaW5rSW5mbz4gbV9sbGludENhbGxMaW5rSW5mb3M7Ci0gICAgU2VudGluZWxMaW5r
ZWRMaXN0PExMSW50Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxM
aW5rSW5mbz4gPiBtX2luY29taW5nTExJbnRDYWxsczsKKyAgICBTZW50aW5lbExpbmtlZExpc3Q8
TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZv
Pj4gbV9pbmNvbWluZ0xMSW50Q2FsbHM7CiAjZW5kaWYKICAgICBSZWZQdHI8SklUQ29kZT4gbV9q
aXRDb2RlOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2ppdENvZGVXaXRoQXJpdHlDaGVj
azsKQEAgLTEwMzQsNyArMTAzNCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFN0cnVjdHVyZVN0
dWJJbmZvPiBtX3N0cnVjdHVyZVN0dWJJbmZvczsKICAgICBWZWN0b3I8QnlWYWxJbmZvPiBtX2J5
VmFsSW5mb3M7CiAgICAgVmVjdG9yPENhbGxMaW5rSW5mbz4gbV9jYWxsTGlua0luZm9zOwotICAg
IFNlbnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPENh
bGxMaW5rSW5mbz4gPiBtX2luY29taW5nQ2FsbHM7CisgICAgU2VudGluZWxMaW5rZWRMaXN0PENh
bGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPj4gbV9pbmNvbWlu
Z0NhbGxzOwogI2VuZGlmCiAgICAgT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVN
YXA7CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0xMDU4LDkgKzEwNTgsOSBAQCBwcml2YXRlOgog
ICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZWdpc3RlcikgPT0gc2l6ZW9mKFdyaXRlQmFycmll
cjxVbmtub3duPiksIFJlZ2lzdGVyX211c3RfYmVfc2FtZV9zaXplX2FzX1dyaXRlQmFycmllcl9V
bmtub3duKTsKICAgICAvLyBUT0RPOiBUaGlzIGNvdWxkIGp1c3QgYmUgYSBwb2ludGVyIHRvIG1f
dW5saW5rZWRDb2RlQmxvY2sncyBkYXRhLCBidXQgdGhlIERGRyBtdXRhdGVzCiAgICAgLy8gaXQs
IHNvIHdlJ3JlIHN0dWNrIHdpdGggaXQgZm9yIG5vdy4KLSAgICBWZWN0b3I8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4gbV9jb25zdGFudFJlZ2lzdGVyczsKLSAgICBWZWN0b3I8V3JpdGVCYXJyaWVy
PEZ1bmN0aW9uRXhlY3V0YWJsZT4gPiBtX2Z1bmN0aW9uRGVjbHM7Ci0gICAgVmVjdG9yPFdyaXRl
QmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+ID4gbV9mdW5jdGlvbkV4cHJzOworICAgIFZlY3Rv
cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+IG1fY29uc3RhbnRSZWdpc3RlcnM7CisgICAgVmVjdG9y
PFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+PiBtX2Z1bmN0aW9uRGVjbHM7CisgICAg
VmVjdG9yPFdyaXRlQmFycmllcjxGdW5jdGlvbkV4ZWN1dGFibGU+PiBtX2Z1bmN0aW9uRXhwcnM7
CiAKICAgICBSZWZQdHI8Q29kZUJsb2NrPiBtX2FsdGVybmF0aXZlOwogICAgIApAQCAtMTA4MCw3
ICsxMDgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgVmVjdG9yPEhhbmRsZXJJbmZvPiBtX2V4Y2Vw
dGlvbkhhbmRsZXJzOwogCiAgICAgICAgIC8vIEJ1ZmZlcnMgdXNlZCBmb3IgbGFyZ2UgYXJyYXkg
bGl0ZXJhbHMKLSAgICAgICAgVmVjdG9yPFZlY3RvcjxKU1ZhbHVlPiA+IG1fY29uc3RhbnRCdWZm
ZXJzOworICAgICAgICBWZWN0b3I8VmVjdG9yPEpTVmFsdWU+PiBtX2NvbnN0YW50QnVmZmVyczsK
IAogICAgICAgICAvLyBKdW1wIFRhYmxlcwogICAgICAgICBWZWN0b3I8U2ltcGxlSnVtcFRhYmxl
PiBtX3N3aXRjaEp1bXBUYWJsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9ERkdFeGl0UHJvZmlsZS5oCmluZGV4IGY1ZWI4M2RkMzY4ZDBmMDNjYmZmYzQzOWU2YzZjYmNm
YTgyODFlYjcuLmFiMWE2MGQ1OGQxZWI2YzZhNjVmMjRlMDg1ODNlNTk1YjY1YzQ5OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCkBAIC0x
NTQsNyArMTU0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUXVlcnlh
YmxlRXhpdFByb2ZpbGU7CiAgICAgCi0gICAgT3duUHRyPFZlY3RvcjxGcmVxdWVudEV4aXRTaXRl
PiA+IG1fZnJlcXVlbnRFeGl0U2l0ZXM7CisgICAgT3duUHRyPFZlY3RvcjxGcmVxdWVudEV4aXRT
aXRlPj4gbV9mcmVxdWVudEV4aXRTaXRlczsKIH07CiAKIGNsYXNzIFF1ZXJ5YWJsZUV4aXRQcm9m
aWxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29k
ZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5o
CmluZGV4IGQ5OGZhZTYyNDFkZDQ5OTI3ODE4M2I0ZjQzODMzMDA5NzBkNTNmZjUuLmZmNTkxMTI0
MGVkZDYxZDRmZWIzMTIxNzU3MzNkYzI1MmE4MGZlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V2YWxDb2RlQ2FjaGUuaApAQCAtNzQsNyArNzQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heENhY2hlYWJsZVNvdXJj
ZUxlbmd0aCA9IDI1NjsKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBtYXhDYWNoZUVudHJpZXMg
PSA2NDsKIAotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBXcml0
ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+ID4gRXZhbENhY2hlTWFwOworICAgICAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBXcml0ZUJhcnJpZXI8RXZhbEV4ZWN1dGFibGU+
PiBFdmFsQ2FjaGVNYXA7CiAgICAgICAgIEV2YWxDYWNoZU1hcCBtX2NhY2hlTWFwOwogICAgIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzLmgKaW5kZXggYmJhNTA0
YTA2ZjMzY2EzMTEzMDAwMjExYjE4MGFmNDlmZGE4ZWU0OC4uZjIxZTA1ZjVmZDI5MmM2MjQ4ZmI0
OGNkZGFiMDhjYmEzNGNhNTljMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wZXJhbmRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
ZXJhbmRzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgZW51bSBPcGVyYW5kS2luZCB7IEFyZ3VtZW50T3Bl
cmFuZCwgTG9jYWxPcGVyYW5kIH07CiAKIGVudW0gT3BlcmFuZHNMaWtlVGFnIHsgT3BlcmFuZHNM
aWtlIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cyA9IE9wZXJhbmRW
YWx1ZVRyYWl0czxUPiA+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHMgPSBP
cGVyYW5kVmFsdWVUcmFpdHM8VD4+CiBjbGFzcyBPcGVyYW5kcyB7CiBwdWJsaWM6CiAgICAgT3Bl
cmFuZHMoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgKaW5kZXggNDMzZWYxZGJjMTVkNDhhZDM0YmViYmY3OWQ3YmUwMDA4MmZj
MWM0Yi4uNDhhOWJhMWMyMGZjYjhjZjJkNThiZWRhMTQ1Nzk4ZWVhODk3Y2RkYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAg
LTMwMiw3ICszMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
ICAgIHVuc2lnbmVkIGFkZE9yRmluZENvbnN0YW50KEpTVmFsdWUpOwotICAgIGNvbnN0IFZlY3Rv
cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiYgY29uc3RhbnRSZWdpc3RlcnMoKSB7IHJldHVybiBt
X2NvbnN0YW50UmVnaXN0ZXJzOyB9CisgICAgY29uc3QgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtu
b3duPj4mIGNvbnN0YW50UmVnaXN0ZXJzKCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyczsg
fQogICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3RhbnRSZWdpc3RlcihpbnQg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleF07IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDb25zdGFu
dFJlZ2lzdGVySW5kZXgoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRleCA+PSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleDsgfQogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRDb25z
dGFudChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXgg
LSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF0uZ2V0KCk7IH0KQEAgLTUwMCw4ICs1MDAsOCBA
QCBwcml2YXRlOgogCiAgICAgLy8gQ29uc3RhbnQgUG9vbHMKICAgICBWZWN0b3I8SWRlbnRpZmll
cj4gbV9pZGVudGlmaWVyczsKLSAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gbV9j
b25zdGFudFJlZ2lzdGVyczsKLSAgICB0eXBlZGVmIFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU+ID4gRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yOworICAgIFZl
Y3RvcjxXcml0ZUJhcnJpZXI8VW5rbm93bj4+IG1fY29uc3RhbnRSZWdpc3RlcnM7CisgICAgdHlw
ZWRlZiBWZWN0b3I8V3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPj4gRnVu
Y3Rpb25FeHByZXNzaW9uVmVjdG9yOwogICAgIEZ1bmN0aW9uRXhwcmVzc2lvblZlY3RvciBtX2Z1
bmN0aW9uRGVjbHM7CiAgICAgRnVuY3Rpb25FeHByZXNzaW9uVmVjdG9yIG1fZnVuY3Rpb25FeHBy
czsKIApAQCAtNTI3LDcgKzUyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPFVubGlua2Vk
SGFuZGxlckluZm8+IG1fZXhjZXB0aW9uSGFuZGxlcnM7CiAKICAgICAgICAgLy8gUmFyZSBDb25z
dGFudHMKLSAgICAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxSZWdFeHA+ID4gbV9yZWdleHBzOwor
ICAgICAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPFJlZ0V4cD4+IG1fcmVnZXhwczsKIAogICAgICAg
ICAvLyBCdWZmZXJzIHVzZWQgZm9yIGxhcmdlIGFycmF5IGxpdGVyYWxzCiAgICAgICAgIFZlY3Rv
cjxDb25zdGFudEJ1ZmZlcj4gbV9jb25zdGFudEJ1ZmZlcnM7CkBAIC01OTEsOCArNTkxLDggQEAg
cHVibGljOgogICAgICAgICBtX3ZhckRlY2xhcmF0aW9ucy5hcHBlbmQoc3RkOjptYWtlX3BhaXIo
bmFtZSwgaXNDb25zdGFudCkpOwogICAgIH0KIAotICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFp
cjxJZGVudGlmaWVyLCBib29sPiA+IFZhcmlhYmxlRGVjbGF0aW9uczsKLSAgICB0eXBlZGVmIFZl
Y3RvcjxzdGQ6OnBhaXI8SWRlbnRpZmllciwgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlPiA+ID4gRnVuY3Rpb25EZWNsYXRpb25zOworICAgIHR5cGVkZWYgVmVjdG9yPHN0
ZDo6cGFpcjxJZGVudGlmaWVyLCBib29sPj4gVmFyaWFibGVEZWNsYXRpb25zOworICAgIHR5cGVk
ZWYgVmVjdG9yPHN0ZDo6cGFpcjxJZGVudGlmaWVyLCBXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU+PiA+IEZ1bmN0aW9uRGVjbGF0aW9uczsKIAogICAgIGNvbnN0IFZhcmlh
YmxlRGVjbGF0aW9ucyYgdmFyaWFibGVEZWNsYXJhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3Zh
ckRlY2xhcmF0aW9uczsgfQogICAgIGNvbnN0IEZ1bmN0aW9uRGVjbGF0aW9ucyYgZnVuY3Rpb25E
ZWNsYXJhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uRGVjbGFyYXRpb25zOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAppbmRleCA5NTU3Zjcy
ODZlZGE4NTViZWRlNmZjY2E2ZDk3NTU2ZjRiODYwZGMyLi42OTIwNWE0YzI2ZjFhODVhYmM1Mzg1
ZmJlOTFmZWMwNWQwN2QwOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvV2F0Y2hwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9X
YXRjaHBvaW50LmgKQEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBmcmllbmQg
Y2xhc3MgSW5saW5lV2F0Y2hwb2ludFNldDsKICAgICAKLSAgICBTZW50aW5lbExpbmtlZExpc3Q8
V2F0Y2hwb2ludCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2F0Y2hwb2ludD4gPiBtX3NldDsKKyAg
ICBTZW50aW5lbExpbmtlZExpc3Q8V2F0Y2hwb2ludCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8V2F0
Y2hwb2ludD4+IG1fc2V0OwogICAgIGJvb2wgbV9pc1dhdGNoZWQ7CiAgICAgYm9vbCBtX2lzSW52
YWxpZGF0ZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGIwZTliZDRmMzU5NzBkZTY0YTYxMzFhOWUy
MWJjODkxYmEzMjA4ZjYuLjRjNDJkZjExNTgwZTFiNWZlZjUzYjVmMDYxMmNjYmU1N2MwYmM4Y2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKQEAgLTYxOSw3ICs2MTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgYm9vbCBtX2hhc0NyZWF0ZWRBY3RpdmF0aW9uOwogICAgICAgICBpbnQgbV9maXJzdExhenlG
dW5jdGlvbjsKICAgICAgICAgaW50IG1fbGFzdExhenlGdW5jdGlvbjsKLSAgICAgICAgSGFzaE1h
cDx1bnNpZ25lZCBpbnQsIEZ1bmN0aW9uQm9keU5vZGUqLCBXVEY6OkludEhhc2g8dW5zaWduZWQg
aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZCBpbnQ+ID4g
bV9sYXp5RnVuY3Rpb25zOworICAgICAgICBIYXNoTWFwPHVuc2lnbmVkIGludCwgRnVuY3Rpb25C
b2R5Tm9kZSosIFdURjo6SW50SGFzaDx1bnNpZ25lZCBpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkIGludD4+IG1fbGF6eUZ1bmN0aW9uczsKICAgICAgICAg
dHlwZWRlZiBIYXNoTWFwPEZ1bmN0aW9uQm9keU5vZGUqLCB1bnNpZ25lZD4gRnVuY3Rpb25PZmZz
ZXRNYXA7CiAgICAgICAgIEZ1bmN0aW9uT2Zmc2V0TWFwIG1fZnVuY3Rpb25PZmZzZXRzOwogICAg
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3Rh
dGljUHJvcGVydHlBbmFseXNpcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmgKaW5kZXggNzhlZTE3YWRmZTI1M2MwM2I5MzI4YTkz
NzhjMTllNzUwNmU0YzhkYS4uMjkzYzIyNDE0YTYyMTBiZTFmZjdlN2IxZTI4ZmE0ZjM1MjI0MDAw
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQ
cm9wZXJ0eUFuYWx5c2lzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9TdGF0aWNQcm9wZXJ0eUFuYWx5c2lzLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4q
IG1faW5zdHJ1Y3Rpb25zOwogICAgIHVuc2lnbmVkIG1fdGFyZ2V0OwotICAgIHR5cGVkZWYgSGFz
aFNldDx1bnNpZ25lZCwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4gPiBQcm9wZXJ0eUluZGV4U2V0OworICAgIHR5cGVk
ZWYgSGFzaFNldDx1bnNpZ25lZCwgV1RGOjpJbnRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZD4+IFByb3BlcnR5SW5kZXhTZXQ7CiAgICAg
UHJvcGVydHlJbmRleFNldCBtX3Byb3BlcnR5SW5kZXhlczsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU3RhdGljUHJvcGVydHlBbmFseXplci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5
emVyLmgKaW5kZXggZGQ3ZjBhYjM4YTljOWYwMmIzZDZlZjRhMjAxYjc5YmExYTRjMGQyNC4uZTYz
ZmVmODZhMTA3YzhlNDgwOGZiYjAwMDBmZDNlZDU3YTgzOGE4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5emVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TdGF0aWNQcm9wZXJ0eUFuYWx5
emVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGtpbGwoU3RhdGljUHJv
cGVydHlBbmFseXNpcyopOwogCiAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVu
c2FmZVZlY3Rvck92ZXJmbG93PiogbV9pbnN0cnVjdGlvbnM7Ci0gICAgdHlwZWRlZiBIYXNoTWFw
PGludCwgUmVmUHRyPFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM+LCBXVEY6OkludEhhc2g8aW50Piwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+ID4gQW5hbHlzaXNNYXA7Cisg
ICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPFN0YXRpY1Byb3BlcnR5QW5hbHlzaXM+LCBX
VEY6OkludEhhc2g8aW50PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxpbnQ+
PiBBbmFseXNpc01hcDsKICAgICBBbmFseXNpc01hcCBtX2FuYWx5c2VzOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzU2ltcGxp
ZmljYXRpb25QaGFzZS5jcHAKaW5kZXggYTJlZGNhYWE2YTQ5MTlkNWZhM2RhYTIxMGMyN2JiZmQ1
NDEyZTlhMS4uMDZjZDkwZTYwYWIxMDNiN2EzYTU3YmM5ODVlZjRhMzQ4NjJkNDgyMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1Np
bXBsaWZpY2F0aW9uUGhhc2UuY3BwCkBAIC02ODUsMTAgKzY4NSwxMCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIEhhc2hTZXQ8SW5saW5lQ2FsbEZyYW1lKiwKICAgICAgICAgICAgIERlZmF1bHRI
YXNoPElubGluZUNhbGxGcmFtZSo+OjpIYXNoLAotICAgICAgICAgICAgTnVsbGFibGVIYXNoVHJh
aXRzPElubGluZUNhbGxGcmFtZSo+ID4gbV9jcmVhdGVzQXJndW1lbnRzOworICAgICAgICAgICAg
TnVsbGFibGVIYXNoVHJhaXRzPElubGluZUNhbGxGcmFtZSo+PiBtX2NyZWF0ZXNBcmd1bWVudHM7
CiAgICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBBcmd1bWVudHNBbGlhc2luZ0RhdGEs
CiAgICAgICAgICAgICBEZWZhdWx0SGFzaDxWYXJpYWJsZUFjY2Vzc0RhdGEqPjo6SGFzaCwKLSAg
ICAgICAgICAgIE51bGxhYmxlSGFzaFRyYWl0czxWYXJpYWJsZUFjY2Vzc0RhdGEqPiA+IG1fYXJn
dW1lbnRzQWxpYXNpbmc7CisgICAgICAgICAgICBOdWxsYWJsZUhhc2hUcmFpdHM8VmFyaWFibGVB
Y2Nlc3NEYXRhKj4+IG1fYXJndW1lbnRzQWxpYXNpbmc7CiAgICAgSGFzaFNldDxWYXJpYWJsZUFj
Y2Vzc0RhdGEqPiBtX2lzTGl2ZTsKIAogICAgIHZvaWQgcHJ1bmVPYnZpb3VzQXJndW1lbnRDcmVh
dGlvbnMoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrSW5zZXJ0aW9uU2V0LmgKaW5kZXggMTMzMTcwYzEyM2Q4
YWEyMzU1MzJhMDVmZjkxMTg3OWQ0NTE4ZjNkZS4uYWEyY2RjNTdiNTZlMjRhMzA1MGZhNmVmNWJm
MjlhMDVmMmQwMjg4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
bG9ja0luc2VydGlvblNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxv
Y2tJbnNlcnRpb25TZXQuaApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CiAKLXR5cGVkZWYgV1RGOjpJbnNlcnRpb248UmVmUHRyPEJhc2ljQmxvY2s+
ID4gQmxvY2tJbnNlcnRpb247Cit0eXBlZGVmIFdURjo6SW5zZXJ0aW9uPFJlZlB0cjxCYXNpY0Js
b2NrPj4gQmxvY2tJbnNlcnRpb247CiAKIGNsYXNzIEJsb2NrSW5zZXJ0aW9uU2V0IHsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKaW5kZXggYmY3YTJj
ODBiMDRhOWJkZGFiOGVkMGEyNzUyOGRkMGY2MzFiZDk3My4uMzEyM2RjNDQyNTEzN2FkODVlZGVm
ZjNmYWVlODc4NjQ3YjcxZWJlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQ
aGFzZS5jcHAKQEAgLTE0MTIsMTMgKzE0MTIsMTMgQEAgcHJpdmF0ZToKIGJvb2wgcGVyZm9ybUNT
RShHcmFwaCYgZ3JhcGgpCiB7CiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRG
RyBDU0UgUGhhc2UiKTsKLSAgICByZXR1cm4gcnVuUGhhc2U8Q1NFUGhhc2U8Tm9ybWFsQ1NFPiA+
KGdyYXBoKTsKKyAgICByZXR1cm4gcnVuUGhhc2U8Q1NFUGhhc2U8Tm9ybWFsQ1NFPj4oZ3JhcGgp
OwogfQogCiBib29sIHBlcmZvcm1TdG9yZUVsaW1pbmF0aW9uKEdyYXBoJiBncmFwaCkKIHsKICAg
ICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFN0b3JlIEVsaW1pbmF0aW9uIFBo
YXNlIik7Ci0gICAgcmV0dXJuIHJ1blBoYXNlPENTRVBoYXNlPFN0b3JlRWxpbWluYXRpb24+ID4o
Z3JhcGgpOworICAgIHJldHVybiBydW5QaGFzZTxDU0VQaGFzZTxTdG9yZUVsaW1pbmF0aW9uPj4o
Z3JhcGgpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCmluZGV4IGVlNjQ0MDI1YThkY2UxY2Y1OWMwM2I1OWQy
ZWNjYjRmY2Y5N2RiZGUuLmUwMzk0MjA5MDk5Nzk1ZjE5NmRiMmVhMjVhNTk0NTQzMjY5NzI0YzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCkBAIC04Miw3ICs4
Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICBWZWN0b3I8SWRlbnRpZmllcj4gZGZnSWRlbnRpZmll
cnM7CiAgICAgVmVjdG9yPFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uPiB0cmFuc2l0aW9uczsKLSAg
ICBWZWN0b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4gPiB3ZWFrUmVmZXJlbmNlczsKKyAgICBWZWN0
b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+IHdlYWtSZWZlcmVuY2VzOwogICAgIAogICAgIFJlZlB0
cjxQcm9maWxlcjo6Q29tcGlsYXRpb24+IGNvbXBpbGF0aW9uOwogICAgIGJvb2wgbGl2ZW5lc3NI
YXNCZWVuUHJvdmVkOyAvLyBJbml0aWFsaXplZCBhbmQgdXNlZCBvbiBldmVyeSBHQy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFN0cnVjdHVyZUNoYWlu
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5z
LmgKaW5kZXggNTUzZTk2MmJjNmMxYmEyMzhjZjU2ZmQ1NWEyNjBmOGM2MGRiNzBmMi4uM2MyMDE5
NGQ3ZjE4ZmQ1MzBmM2JkNTRiMDU2MmEwNmI0ZjY0MGQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkU3RydWN0dXJlQ2hhaW5zLmgKQEAgLTQ3LDcg
KzQ3LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgYXJlU3RpbGxWYWxpZCgpIGNvbnN0Owog
cHJpdmF0ZToKLSAgICBWZWN0b3I8UmVmUHRyPEludGVuZGVkU3RydWN0dXJlQ2hhaW4+ID4gbV92
ZWN0b3I7CisgICAgVmVjdG9yPFJlZlB0cjxJbnRlbmRlZFN0cnVjdHVyZUNoYWluPj4gbV92ZWN0
b3I7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuaAppbmRleCBjNjE0YjNhNzIzMjFk
N2NiN2E3OTllNmUxYzc2YjUzN2JmZGNiYTg4Li4yOWYwNTdkMTViYzJlM2RmYWMyOWI1ZWUxYjc0
Y2E5Y2Q1YjViNDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rl
c2lyZWRXYXRjaHBvaW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVz
aXJlZFdhdGNocG9pbnRzLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIFZlY3RvcjxXYXRjaHBvaW50Rm9yR2VuZXJpY1dhdGNocG9pbnRTZXQ8V2F0
Y2hwb2ludFNldFR5cGU+ID4gbV93YXRjaHBvaW50czsKKyAgICBWZWN0b3I8V2F0Y2hwb2ludEZv
ckdlbmVyaWNXYXRjaHBvaW50U2V0PFdhdGNocG9pbnRTZXRUeXBlPj4gbV93YXRjaHBvaW50czsK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgU3RhdGVNYXAgbV9maXJzdEtub3duU3RhdGU7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAppbmRleCAz
NGViOTgxYThjYjkwYzQ5YjJmOTllNzJhMmY5ZWI5ZTE0ZTFkODkyLi5jNGJhZTQ4MDYxMzQyMjMw
ZDUwYjg0ZThhOWIxODMyYjNhNTQ1NzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCkBAIC00MjgsNyArNDI4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
SW5SZWNvcmQsIDQ+IG1faW5zOwogICAgIFZlY3RvcjxKU0NhbGxSZWNvcmQsIDQ+IG1fanNDYWxs
czsKICAgICBWZWN0b3I8T1NSRXhpdENvbXBpbGF0aW9uSW5mbz4gbV9leGl0Q29tcGlsYXRpb25J
bmZvOwotICAgIFZlY3RvcjxWZWN0b3I8TGFiZWw+ID4gbV9leGl0U2l0ZUxhYmVsczsKKyAgICBW
ZWN0b3I8VmVjdG9yPExhYmVsPj4gbV9leGl0U2l0ZUxhYmVsczsKICAgICAKICAgICBDYWxsIG1f
Y2FsbEFyaXR5Rml4dXA7CiAgICAgTGFiZWwgbV9hcml0eUNoZWNrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAppbmRleCA1
OGY0NDJlOWFhNDFiNTRhNDczZmIwZDYwN2FmY2ZiY2FkZGVkZmYwLi5mMWJiZTdkODNmNjM0NDE2
YWEyYzJmM2Y3Y2E1NWJhNDUxZmE5NjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcApAQCAtNDMxLDcgKzQzMSw3IEBA
IHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCBPU1JFeGl0JiBleGl0LCBj
b25zdCBPcGVyYW5kczxWYWx1ZVJlY292CiAgICAgCiAgICAgaWYgKGhhdmVBcmd1bWVudHMpIHsK
ICAgICAgICAgSGFzaFNldDxJbmxpbmVDYWxsRnJhbWUqLCBEZWZhdWx0SGFzaDxJbmxpbmVDYWxs
RnJhbWUqPjo6SGFzaCwKLSAgICAgICAgICAgIE51bGxhYmxlSGFzaFRyYWl0czxJbmxpbmVDYWxs
RnJhbWUqPiA+IGRpZENyZWF0ZUFyZ3VtZW50c09iamVjdDsKKyAgICAgICAgICAgIE51bGxhYmxl
SGFzaFRyYWl0czxJbmxpbmVDYWxsRnJhbWUqPj4gZGlkQ3JlYXRlQXJndW1lbnRzT2JqZWN0Owog
CiAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7
ICsraW5kZXgpIHsKICAgICAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0g
b3BlcmFuZHNbaW5kZXhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXI2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlcjY0LmNwcAppbmRleCBmOWM4Yjk2NmIzMmM3ODU0ZTEzNTQ4YzhmZDQ0OTIz
OTQ1NzdlMDhiLi40YmE5OWIxNGUzMGQ0ZmZiMTkwMDliNjJlODVjNmNiMTRhMzNkMjNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNw
cApAQCAtMzg2LDcgKzM4Niw3IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChj
b25zdCBPU1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292CiAgICAgCiAgICAg
aWYgKGhhdmVBcmd1bWVudHMpIHsKICAgICAgICAgSGFzaFNldDxJbmxpbmVDYWxsRnJhbWUqLCBE
ZWZhdWx0SGFzaDxJbmxpbmVDYWxsRnJhbWUqPjo6SGFzaCwKLSAgICAgICAgICAgIE51bGxhYmxl
SGFzaFRyYWl0czxJbmxpbmVDYWxsRnJhbWUqPiA+IGRpZENyZWF0ZUFyZ3VtZW50c09iamVjdDsK
KyAgICAgICAgICAgIE51bGxhYmxlSGFzaFRyYWl0czxJbmxpbmVDYWxsRnJhbWUqPj4gZGlkQ3Jl
YXRlQXJndW1lbnRzT2JqZWN0OwogCiAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKICAgICAgICAgICAgIGNvbnN0IFZhbHVl
UmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdXb3JrbGlzdC5oCmluZGV4IDIwOGYyNDY2MWExNmQ4Njc3ODRiYTE0NTk4ZmRjN2Vj
NjA3NTc5OTkuLmQzNDE5ZjBhOTFhZjk3MWExZTIyMWQ5Y2E5YjQ3OWM4ZDNjZDE3NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmgKQEAgLTgxLDcgKzgxLDcgQEAgcHJp
dmF0ZToKICAgICAvLyBpcyBwYXJ0aWN1bGFybHkgZ3JlYXQgZm9yIHRoZSBjdGlfb3B0aW1pemUg
T1NSIHNsb3cgcGF0aCwgd2hpY2ggd2FudHMKICAgICAvLyB0byBrbm93OiBkaWQgSSBnZXQgaGVy
ZSBiZWNhdXNlIGEgYmV0dGVyIHZlcnNpb24gb2YgbWUganVzdCBnb3QKICAgICAvLyBjb21waWxl
ZD8KLSAgICB0eXBlZGVmIEhhc2hNYXA8Q29tcGlsYXRpb25LZXksIFJlZlB0cjxQbGFuPiA+IFBs
YW5NYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPENvbXBpbGF0aW9uS2V5LCBSZWZQdHI8UGxhbj4+
IFBsYW5NYXA7CiAgICAgUGxhbk1hcCBtX3BsYW5zOwogICAgIAogICAgIC8vIFVzZWQgdG8gcXVp
Y2tseSBmaW5kIHdoaWNoIHBsYW5zIGhhdmUgYmVlbiBjb21waWxlZCBhbmQgYXJlIHJlYWR5IHRv
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0FsbG9jYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuaAppbmRleCA2ZGFh
MGZhYzIxN2IzNGJjOGE4ZmVlMjU4MGYwY2FmNjc4MTQxZDE2Li5lZmFlYzY2NTJhMjFmZDMyZjNh
ODFjMTQyYjNjZTNkMGJkMGY1NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9CbG9ja0FsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Js
b2NrQWxsb2NhdG9yLmgKQEAgLTI1MywzNyArMjUzLDM3IEBAIGlubGluZSBCbG9ja0FsbG9jYXRv
cjo6UmVnaW9uU2V0JiBCbG9ja0FsbG9jYXRvcjo6cmVnaW9uU2V0Rm9yPEhhbmRsZUJsb2NrPigp
CiB9CiAKIHRlbXBsYXRlIDw+Ci1pbmxpbmUgQmxvY2tBbGxvY2F0b3I6OlJlZ2lvblNldCYgQmxv
Y2tBbGxvY2F0b3I6OnJlZ2lvblNldEZvcjxIZWFwQmxvY2s8Q29waWVkQmxvY2s+ID4oKQoraW5s
aW5lIEJsb2NrQWxsb2NhdG9yOjpSZWdpb25TZXQmIEJsb2NrQWxsb2NhdG9yOjpyZWdpb25TZXRG
b3I8SGVhcEJsb2NrPENvcGllZEJsb2NrPj4oKQogewogICAgIHJldHVybiBtX2NvcGllZFJlZ2lv
blNldDsKIH0KIAogdGVtcGxhdGUgPD4KLWlubGluZSBCbG9ja0FsbG9jYXRvcjo6UmVnaW9uU2V0
JiBCbG9ja0FsbG9jYXRvcjo6cmVnaW9uU2V0Rm9yPEhlYXBCbG9jazxNYXJrZWRCbG9jaz4gPigp
CitpbmxpbmUgQmxvY2tBbGxvY2F0b3I6OlJlZ2lvblNldCYgQmxvY2tBbGxvY2F0b3I6OnJlZ2lv
blNldEZvcjxIZWFwQmxvY2s8TWFya2VkQmxvY2s+PigpCiB7CiAgICAgcmV0dXJuIG1fbWFya2Vk
UmVnaW9uU2V0OwogfQogCiB0ZW1wbGF0ZSA8PgotaW5saW5lIEJsb2NrQWxsb2NhdG9yOjpSZWdp
b25TZXQmIEJsb2NrQWxsb2NhdG9yOjpyZWdpb25TZXRGb3I8SGVhcEJsb2NrPFdlYWtCbG9jaz4g
PigpCitpbmxpbmUgQmxvY2tBbGxvY2F0b3I6OlJlZ2lvblNldCYgQmxvY2tBbGxvY2F0b3I6OnJl
Z2lvblNldEZvcjxIZWFwQmxvY2s8V2Vha0Jsb2NrPj4oKQogewogICAgIHJldHVybiBtX2ZvdXJL
QkJsb2NrUmVnaW9uU2V0OwogfQogCiB0ZW1wbGF0ZSA8PgotaW5saW5lIEJsb2NrQWxsb2NhdG9y
OjpSZWdpb25TZXQmIEJsb2NrQWxsb2NhdG9yOjpyZWdpb25TZXRGb3I8SGVhcEJsb2NrPE1hcmtT
dGFja1NlZ21lbnQ+ID4oKQoraW5saW5lIEJsb2NrQWxsb2NhdG9yOjpSZWdpb25TZXQmIEJsb2Nr
QWxsb2NhdG9yOjpyZWdpb25TZXRGb3I8SGVhcEJsb2NrPE1hcmtTdGFja1NlZ21lbnQ+PigpCiB7
CiAgICAgcmV0dXJuIG1fZm91cktCQmxvY2tSZWdpb25TZXQ7CiB9CiAKIHRlbXBsYXRlIDw+Ci1p
bmxpbmUgQmxvY2tBbGxvY2F0b3I6OlJlZ2lvblNldCYgQmxvY2tBbGxvY2F0b3I6OnJlZ2lvblNl
dEZvcjxIZWFwQmxvY2s8Q29weVdvcmtMaXN0U2VnbWVudD4gPigpCitpbmxpbmUgQmxvY2tBbGxv
Y2F0b3I6OlJlZ2lvblNldCYgQmxvY2tBbGxvY2F0b3I6OnJlZ2lvblNldEZvcjxIZWFwQmxvY2s8
Q29weVdvcmtMaXN0U2VnbWVudD4+KCkKIHsKICAgICByZXR1cm4gbV93b3JrTGlzdFJlZ2lvblNl
dDsKIH0KIAogdGVtcGxhdGUgPD4KLWlubGluZSBCbG9ja0FsbG9jYXRvcjo6UmVnaW9uU2V0JiBC
bG9ja0FsbG9jYXRvcjo6cmVnaW9uU2V0Rm9yPEhlYXBCbG9jazxIYW5kbGVCbG9jaz4gPigpCitp
bmxpbmUgQmxvY2tBbGxvY2F0b3I6OlJlZ2lvblNldCYgQmxvY2tBbGxvY2F0b3I6OnJlZ2lvblNl
dEZvcjxIZWFwQmxvY2s8SGFuZGxlQmxvY2s+PigpCiB7CiAgICAgcmV0dXJuIG1fZm91cktCQmxv
Y2tSZWdpb25TZXQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXggNmViMTM2NGQx
ODUzZjM2MjQwMWEwMDMzMmQxNWZiNTY0NDRkNjNlYi4uZWJiZmRhNjE5OGYxNTg0ZmMzODkxMmI1
MzIzN2Q0N2MyY2JjYjJjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtMjY2LDcg
KzI2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFByb3RlY3RDb3VudFNldCBtX3By
b3RlY3RlZFZhbHVlczsKICAgICAgICAgVmVjdG9yPFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXIsIDAs
IFVuc2FmZVZlY3Rvck92ZXJmbG93PiogPiBtX3RlbXBTb3J0aW5nVmVjdG9yczsKLSAgICAgICAg
T3duUHRyPEhhc2hTZXQ8TWFya2VkQXJndW1lbnRCdWZmZXIqPiA+IG1fbWFya0xpc3RTZXQ7Cisg
ICAgICAgIE93blB0cjxIYXNoU2V0PE1hcmtlZEFyZ3VtZW50QnVmZmVyKj4+IG1fbWFya0xpc3RT
ZXQ7CiAKICAgICAgICAgTWFjaGluZVRocmVhZHMgbV9tYWNoaW5lVGhyZWFkczsKICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWwuaAppbmRleCBkMjM0MzU5ODljMzkzNzU5Y2VkYmIy
NDVmM2RlZDYzMjIxN2M2ZTM0Li4xNGM0ZGVlMjYwMjQ2YTgwOTIxYTk5YmUyMjc1NGNlMzBmMDdk
NTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsLmgKQEAgLTE0MSw3ICsxNDEsNyBAQCBw
cml2YXRlOgogCiBuYW1lc3BhY2UgV1RGIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IFZlY3RvclRyYWl0czxKU0M6OkxvY2FsPFQ+ID4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEpTQzo6TG9jYWw8VD4+
IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgewogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24gPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBjYW5Jbml0aWFsaXpl
V2l0aE1lbXNldCA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdCBib29sIGNhbkNvbXBhcmVXaXRo
TWVtY21wID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaApp
bmRleCBjYjk4M2JmNDBlZDc0OWE5YjVhZmI3YTQzZmRjNzgzM2E4YTVjMGExLi42MWU0MWIzYWMw
ZjBiZDA0NzIxYzJjMTE3OTE2ZWY0MGU4Y2FhNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmgKQEAgLTE4OSw3ICsxODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNl
bHNlCiAgICAgICAgIFdURjo6Qml0bWFwPGF0b21zUGVyQmxvY2ssIFdURjo6Qml0bWFwTm90QXRv
bWljPiBtX21hcmtzOwogI2VuZGlmCi0gICAgICAgIE93blB0cjxXVEY6OkJpdG1hcDxhdG9tc1Bl
ckJsb2NrPiA+IG1fbmV3bHlBbGxvY2F0ZWQ7CisgICAgICAgIE93blB0cjxXVEY6OkJpdG1hcDxh
dG9tc1BlckJsb2NrPj4gbV9uZXdseUFsbG9jYXRlZDsKIAogICAgICAgICBEZXN0cnVjdG9yVHlw
ZSBtX2Rlc3RydWN0b3JUeXBlOwogICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIG1fYWxsb2NhdG9y
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Ryb25nLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcuaAppbmRleCBlMDBlOTIwNjE2ZjcxNjVhMDAz
ZTI0NDI2ZWViYWMzYjI1MWQ2MTkzLi4yN2FiNWQzMWY5OTdiMjA4ODQ2ZGE5NjQ0MzUxZDJiZDMy
ZTAzOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcuaApAQCAtMTQ4LDExICsxNDgs
MTEgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChTdHJvbmc8VD4mIGEsIFN0
cm9uZzxUPiYgYikKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpTdHJvbmc8VD4gPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJh
aXRzIHsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWZWN0b3JUcmFpdHM8SlNDOjpTdHJv
bmc8VD4+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgewogICAgIHN0YXRpYyBjb25zdCBib29s
IGNhbkNvbXBhcmVXaXRoTWVtY21wID0gZmFsc2U7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBQ
PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OlN0cm9uZzxQPiA+IDogU2ltcGxlQ2xhc3NIYXNoVHJh
aXRzPEpTQzo6U3Ryb25nPFA+ID4geyB9OwordGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhh
c2hUcmFpdHM8SlNDOjpTdHJvbmc8UD4+IDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6U3Ry
b25nPFA+PiB7IH07CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwCmluZGV4IGJjNDRkOWYwNzE3ODM4ZmI3MjJmMGRmZjg2ZWRiNjE3MzYyOTA5
NjkuLmRkZjFkNjM1OTIxYmQ1ZDUzMjNmZmVjYzgxYTdmZGY4MzYyYmM2MzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTQ0LDcgKzQ0LDcg
QEAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4mIEFzc2VtYmx5SGVscGVyczo6ZGVj
b2RlZENvZGVNYXBGb3IoQ29kZUJsb2NrKgogICAgIEFTU0VSVChjb2RlQmxvY2stPmppdFR5cGUo
KSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+aml0Q29k
ZU1hcCgpKTsKICAgICAKLSAgICBIYXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRlY29kZUFu
ZE1hY2hpbmVPZmZzZXQ+ID46OkFkZFJlc3VsdCByZXN1bHQgPSBtX2RlY29kZWRDb2RlTWFwcy5h
ZGQoY29kZUJsb2NrLCBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PigpKTsKKyAgICBI
YXNoTWFwPENvZGVCbG9jayosIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+Pjo6QWRk
UmVzdWx0IHJlc3VsdCA9IG1fZGVjb2RlZENvZGVNYXBzLmFkZChjb2RlQmxvY2ssIFZlY3RvcjxC
eXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+KCkpOwogICAgIAogICAgIGlmIChyZXN1bHQuaXNOZXdF
bnRyeSkKICAgICAgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRlY29kZShyZXN1bHQuaXRl
cmF0b3ItPnZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCmluZGV4IDZjNDhjOTBlZDliZjNjOWEzNzk3MzE5YzExMjBiYmFkYjZkN2RlMGIuLmY2ZGY2
ZWVmNWVlNzQyNzkwNjQ2YmYxODc2N2Y5ZDcxOTY5MDI4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtNDQ5LDcgKzQ0OSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwogICAgIENvZGVCbG9jayogbV9iYXNlbGlu
ZUNvZGVCbG9jazsKIAotICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgVmVjdG9yPEJ5dGVjb2RlQW5k
TWFjaGluZU9mZnNldD4gPiBtX2RlY29kZWRDb2RlTWFwczsKKyAgICBIYXNoTWFwPENvZGVCbG9j
ayosIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+PiBtX2RlY29kZWRDb2RlTWFwczsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1NwZWNpYWxpemVkVGh1bmtKSVQuaAppbmRleCAxNTQ0OTg3NjQ1ZDRjOGZiNDIzMjkwMDJkZDVi
NjEzMmUwN2Y4ZTYwLi5mYWNkMzQ0NTgwM2FjZWNkYmEwNGU3OWNjODA1ODVhYWI0YWE2OWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaApA
QCAtMTk3LDcgKzE5Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgbV9mYWlsdXJlczsKLSAgICAgICAgVmVj
dG9yPHN0ZDo6cGFpcjxDYWxsLCBGdW5jdGlvblB0cj4gPiBtX2NhbGxzOworICAgICAgICBWZWN0
b3I8c3RkOjpwYWlyPENhbGwsIEZ1bmN0aW9uUHRyPj4gbV9jYWxsczsKICAgICB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggMTNhNmM4YTE4ODRiOGE1NThmYzc0
YWMyMDVkMzFmNDVhODQ2YjNlNi4uNTUwZTIxODQ3MDFmMmE5YjM2M2JjNGE2MGUyOTM0MzU0OTBi
NzNkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtODAsNyArODAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIG5hbWVzcGFjZSBEZWNsYXJhdGlvblN0YWNrcyB7CiAg
ICAgICAgIGVudW0gVmFyQXR0cnMgeyBJc0NvbnN0YW50ID0gMSwgSGFzSW5pdGlhbGl6ZXIgPSAy
IH07Ci0gICAgICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxJZGVudGlmaWVyLCB1bnNpZ25l
ZD4gPiBWYXJTdGFjazsKKyAgICAgICAgdHlwZWRlZiBWZWN0b3I8c3RkOjpwYWlyPElkZW50aWZp
ZXIsIHVuc2lnbmVkPj4gVmFyU3RhY2s7CiAgICAgICAgIHR5cGVkZWYgVmVjdG9yPEZ1bmN0aW9u
Qm9keU5vZGUqPiBGdW5jdGlvblN0YWNrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCmluZGV4IDMzNDdmZjMyZTY0ZDk3ZjQ3OThjODQxZjE5OWNkZjk5NjRk
YjgwOGQuLjdkOWJhNmQ4OTRhM2IzZWI3YzNhNWYyZTBiODcwZDdiOTBlMjRlY2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTExNjAsNyArMTE2MCw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VJZlN0YXRlbWVudChUCiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUlmU3Rh
dGVtZW50KGlmTG9jYXRpb24sIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCAwLCBzdGFydCwgZW5kKTsK
IAogICAgIFZlY3RvcjxUcmVlRXhwcmVzc2lvbj4gZXhwclN0YWNrOwotICAgIFZlY3RvcjxwYWly
PGludCwgaW50PiA+IHBvc1N0YWNrOworICAgIFZlY3RvcjxwYWlyPGludCwgaW50Pj4gcG9zU3Rh
Y2s7CiAgICAgVmVjdG9yPEpTVG9rZW5Mb2NhdGlvbj4gdG9rZW5Mb2NhdGlvblN0YWNrOwogICAg
IFZlY3RvcjxUcmVlU3RhdGVtZW50PiBzdGF0ZW1lbnRTdGFjazsKICAgICBib29sIHRyYWlsaW5n
RWxzZSA9IGZhbHNlOwpAQCAtMTk1NCw3ICsxOTU0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJl
c3MKIH0KIAogLy8gSW5zdGFudGlhdGUgdGhlIHR3byBmbGF2b3JzIG9mIFBhcnNlciB3ZSBuZWVk
IGluc3RlYWQgb2YgcHV0dGluZyBtb3N0IG9mIHRoaXMgZmlsZSBpbiBQYXJzZXIuaAotdGVtcGxh
dGUgY2xhc3MgUGFyc2VyPCBMZXhlcjxMQ2hhcj4gPjsKLXRlbXBsYXRlIGNsYXNzIFBhcnNlcjwg
TGV4ZXI8VUNoYXI+ID47Cit0ZW1wbGF0ZSBjbGFzcyBQYXJzZXI8IExleGVyPExDaGFyPj47Cit0
ZW1wbGF0ZSBjbGFzcyBQYXJzZXI8IExleGVyPFVDaGFyPj47CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNTZlYzJmODEwOTcyNTI4
NzJkYWVkNDJjYzEwNjgxMzg0ZWUzMzEwMi4uM2IyYmZkZjczMDc3NzNkYzg3MDQ0YTg3NWRkYzcy
MDU5NGY4MWNlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0zMTAs
NyArMzEwLDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICBib29sIGlzVmFsaWRTdHJpY3RNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1ZhbGlkU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgc2hhZG93c0Fy
Z3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93c0FyZ3VtZW50czsgfQogCi0gICAgdm9p
ZCBjb3B5Q2FwdHVyZWRWYXJpYWJsZXNUb1ZlY3Rvcihjb25zdCBJZGVudGlmaWVyU2V0JiBjYXB0
dXJlZFZhcmlhYmxlcywgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPiA+JiB2ZWN0b3IpCisgICAg
dm9pZCBjb3B5Q2FwdHVyZWRWYXJpYWJsZXNUb1ZlY3Rvcihjb25zdCBJZGVudGlmaWVyU2V0JiBj
YXB0dXJlZFZhcmlhYmxlcywgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mIHZlY3RvcikKICAg
ICB7CiAgICAgICAgIElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIGVuZCA9IGNhcHR1cmVkVmFyaWFi
bGVzLmVuZCgpOwogICAgICAgICBmb3IgKElkZW50aWZpZXJTZXQ6Oml0ZXJhdG9yIGl0ID0gY2Fw
dHVyZWRWYXJpYWJsZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CkBAIC0xMTI2LDEwICsx
MTI2LDEwIEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gcGFyc2UoVk0qIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVyCiAKICAgICBBU1NFUlQoIXNvdXJjZS5w
cm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CiAgICAgaWYgKHNvdXJjZS5wcm92aWRlcigp
LT5zb3VyY2UoKS5pczhCaXQoKSkgewotICAgICAgICBQYXJzZXI8IExleGVyPExDaGFyPiA+IHBh
cnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBzdHJpY3RuZXNzLCBwYXJzZXJNb2Rl
KTsKKyAgICAgICAgUGFyc2VyPCBMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJh
bWV0ZXJzLCBuYW1lLCBzdHJpY3RuZXNzLCBwYXJzZXJNb2RlKTsKICAgICAgICAgcmV0dXJuIHBh
cnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvcik7CiAgICAgfQotICAgIFBhcnNlcjwgTGV4ZXI8
VUNoYXI+ID4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUsIHN0cmljdG5lc3Ms
IHBhcnNlck1vZGUpOworICAgIFBhcnNlcjwgTGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJj
ZSwgcGFyYW1ldGVycywgbmFtZSwgc3RyaWN0bmVzcywgcGFyc2VyTW9kZSk7CiAgICAgcmV0dXJu
IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAppbmRleCA0NWQ0YjE1OGVlMWM1YjU4YjM2ZDZlNzVj
YzNiZjFjMTYyYTVhMWYwLi40ZjEzNTJkM2YzN2QzNWI3ZDI4OGEzMjNkMDE2MjA2YzFkZWVhZTk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC0xODYs
NyArMTg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE93blB0cjxJZGVudGlmaWVyQXJl
bmE+IG1faWRlbnRpZmllckFyZW5hOwogICAgICAgICBWZWN0b3I8dm9pZCo+IG1fZnJlZWFibGVQ
b29sczsKICAgICAgICAgVmVjdG9yPFBhcnNlckFyZW5hRGVsZXRhYmxlKj4gbV9kZWxldGFibGVP
YmplY3RzOwotICAgICAgICBWZWN0b3I8UmVmUHRyPFBhcnNlckFyZW5hUmVmQ291bnRlZD4gPiBt
X3JlZkNvdW50ZWRPYmplY3RzOworICAgICAgICBWZWN0b3I8UmVmUHRyPFBhcnNlckFyZW5hUmVm
Q291bnRlZD4+IG1fcmVmQ291bnRlZE9iamVjdHM7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oCmlu
ZGV4IDA0OTA2MGJmNmNiMjEyMThlNGFhNjkxMjJjZDVhYjYwMzc3YzgyNmMuLjBlOTVkYjY3Mjkx
MWZlMWIyMmZjYmEzMzMzY2M1NDc1NDZlYjVkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgKQEAgLTQxLDggKzQx
LDggQEAgc3RydWN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtQ3JlYXRpb25QYXJhbWV0ZXJzIHsK
ICAgICBib29sIG5lZWRzRnVsbEFjdGl2YXRpb247CiAgICAgYm9vbCB1c2VzRXZhbDsKICAgICBi
b29sIHN0cmljdE1vZGU7Ci0gICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPiA+IHVzZWRWYXJp
YWJsZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPiA+IHdyaXR0ZW5WYXJpYWJsZXM7
CisgICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gdXNlZFZhcmlhYmxlczsKKyAgICBWZWN0
b3I8UmVmUHRyPFN0cmluZ0ltcGw+PiB3cml0dGVuVmFyaWFibGVzOwogfTsKIAogI2lmIENPTVBJ
TEVSKE1TVkMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVn
YWN5UHJvZmlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0xlZ2FjeVBy
b2ZpbGVyLmNwcAppbmRleCBiMWEyMDUzY2I0Zjc4N2Y1MDgzYjgzZjk0YzViNGM5ZGFmOWVmYTc5
Li5iY2E3Y2UyZDZmZGVkYzZlNzBhZmZmOTY0MzFhOWI0ZjBlMDM3ZmIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5jcHAKQEAgLTExNyw3
ICsxMTcsNyBAQCB2b2lkIExlZ2FjeVByb2ZpbGVyOjpzdG9wUHJvZmlsaW5nKEpTR2xvYmFsT2Jq
ZWN0KiBvcmlnaW4pCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgZGlzcGF0Y2hGdW5j
dGlvblRvUHJvZmlsZXMoRXhlY1N0YXRlKiBjYWxsZXJPckhhbmRsZXJDYWxsRnJhbWUsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8UHJvZmlsZUdlbmVyYXRvcj4gPiYgcHJvZmlsZXMsIFByb2ZpbGVHZW5l
cmF0b3I6OlByb2ZpbGVGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgQ2FsbElkZW50aWZpZXImIGNh
bGxJZGVudGlmaWVyLCB1bnNpZ25lZCBjdXJyZW50UHJvZmlsZVRhcmdldEdyb3VwKQorc3RhdGlj
IGlubGluZSB2b2lkIGRpc3BhdGNoRnVuY3Rpb25Ub1Byb2ZpbGVzKEV4ZWNTdGF0ZSogY2FsbGVy
T3JIYW5kbGVyQ2FsbEZyYW1lLCBjb25zdCBWZWN0b3I8UmVmUHRyPFByb2ZpbGVHZW5lcmF0b3I+
PiYgcHJvZmlsZXMsIFByb2ZpbGVHZW5lcmF0b3I6OlByb2ZpbGVGdW5jdGlvbiBmdW5jdGlvbiwg
Y29uc3QgQ2FsbElkZW50aWZpZXImIGNhbGxJZGVudGlmaWVyLCB1bnNpZ25lZCBjdXJyZW50UHJv
ZmlsZVRhcmdldEdyb3VwKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvZmlsZXMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKHByb2ZpbGVzW2ldLT5wcm9maWxlR3JvdXAoKSA9
PSBjdXJyZW50UHJvZmlsZVRhcmdldEdyb3VwIHx8ICFwcm9maWxlc1tpXS0+b3JpZ2luKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvTGVnYWN5UHJvZmlsZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5oCmluZGV4
IDZkYjU3Y2JmMjhiNzdmNWVhMTk1ZjBjMTFlNmI5OGRhZTgwNjFiM2EuLjYwN2RkZWM5ZGQwZjQw
ZDZiMTIzNjQwNmI3ZTAxYmFjMjc4M2Y1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9MZWdhY3lQcm9maWxlci5oCkBAIC02MSwxMCArNjEsMTAgQEAgcHVibGljOgog
CiAgICAgdm9pZCBleGNlcHRpb25VbndpbmQoRXhlY1N0YXRlKiBoYW5kbGVyQ2FsbEZyYW1lKTsK
IAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UHJvZmlsZUdlbmVyYXRvcj4gPiYgY3VycmVudFBy
b2ZpbGVzKCkgeyByZXR1cm4gbV9jdXJyZW50UHJvZmlsZXM7IH07CisgICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxQcm9maWxlR2VuZXJhdG9yPj4mIGN1cnJlbnRQcm9maWxlcygpIHsgcmV0dXJuIG1f
Y3VycmVudFByb2ZpbGVzOyB9OwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxSZWZQdHI8UHJvZmls
ZUdlbmVyYXRvcj4gPiBtX2N1cnJlbnRQcm9maWxlczsKKyAgICBWZWN0b3I8UmVmUHRyPFByb2Zp
bGVHZW5lcmF0b3I+PiBtX2N1cnJlbnRQcm9maWxlczsKICAgICBzdGF0aWMgTGVnYWN5UHJvZmls
ZXIqIHNfc2hhcmVkTGVnYWN5UHJvZmlsZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlTm9kZS5oCmluZGV4IDk5OTdhYTVmMDM3ZmM0YjQwNzM1NDA4NjQz
YWI3YTEzMDhhMzk1MTcuLjE0Nzk3ZGZlYjIxM2ZlMjg2YTM2OWM5ODlkMzUyZjMwYzhiNWUwOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5oCkBAIC05
Nyw3ICs5Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHNldE51bWJlck9mQ2Fs
bHModW5zaWduZWQgbnVtYmVyKSB7IG1fbnVtYmVyT2ZDYWxscyA9IG51bWJlcjsgfQogCiAgICAg
ICAgIC8vIENoaWxkcmVuIG1lbWJlcnMKLSAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxQcm9m
aWxlTm9kZT4gPiYgY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9CisgICAg
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UHJvZmlsZU5vZGU+PiYgY2hpbGRyZW4oKSBjb25zdCB7
IHJldHVybiBtX2NoaWxkcmVuOyB9CiAgICAgICAgIFByb2ZpbGVOb2RlKiBmaXJzdENoaWxkKCkg
Y29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbi5zaXplKCkgPyBtX2NoaWxkcmVuLmZpcnN0KCkuZ2V0
KCkgOiAwOyB9CiAgICAgICAgIFByb2ZpbGVOb2RlKiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVy
biBtX2NoaWxkcmVuLnNpemUoKSA/IG1fY2hpbGRyZW4ubGFzdCgpLmdldCgpIDogMDsgfQogICAg
ICAgICBQcm9maWxlTm9kZSogZmluZENoaWxkKFByb2ZpbGVOb2RlKikgY29uc3Q7CkBAIC0xMzAs
NyArMTMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxQcm9maWxlTm9kZT4gPjo6Y29uc3RfaXRlcmF0b3Ig
U3RhY2tJdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFByb2ZpbGVOb2Rl
Pj46OmNvbnN0X2l0ZXJhdG9yIFN0YWNrSXRlcmF0b3I7CiAKICAgICAgICAgUHJvZmlsZU5vZGUo
RXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNvbnN0IENhbGxJZGVudGlmaWVyJiwgUHJvZmls
ZU5vZGUqIGhlYWROb2RlLCBQcm9maWxlTm9kZSogcGFyZW50Tm9kZSk7CiAgICAgICAgIFByb2Zp
bGVOb2RlKEV4ZWNTdGF0ZSogY2FsbGVyQ2FsbEZyYW1lLCBQcm9maWxlTm9kZSogaGVhZE5vZGUs
IFByb2ZpbGVOb2RlKiBub2RlVG9Db3B5KTsKQEAgLTE2Niw3ICsxNjYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBib29sIG1fdmlzaWJsZTsKIAotICAgICAgICBWZWN0b3I8UmVmUHRy
PFByb2ZpbGVOb2RlPiA+IG1fY2hpbGRyZW47CisgICAgICAgIFZlY3RvcjxSZWZQdHI8UHJvZmls
ZU5vZGU+PiBtX2NoaWxkcmVuOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgKaW5kZXgg
ZDY1ZjBiMzI2YmRmNDk3Y2JmYzZhOWE3MTkyNzkzNjE1ZTdjODZhMS4uN2Q0ZjNjZjJjOTRiMzk4
M2QyYjAzODZmNWNkOGNkY2UyYjFmZDFmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oCkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6
CiAgICAgVk0mIG1fdm07CiAgICAgU2VnbWVudGVkVmVjdG9yPEJ5dGVjb2Rlcz4gbV9ieXRlY29k
ZXM7CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBCeXRlY29kZXMqPiBtX2J5dGVjb2Rlc01hcDsK
LSAgICBWZWN0b3I8UmVmUHRyPENvbXBpbGF0aW9uPiA+IG1fY29tcGlsYXRpb25zOworICAgIFZl
Y3RvcjxSZWZQdHI8Q29tcGlsYXRpb24+PiBtX2NvbXBpbGF0aW9uczsKICAgICBib29sIG1fc2hv
dWxkU2F2ZUF0RXhpdDsKICAgICBDU3RyaW5nIG1fYXRFeGl0U2F2ZUZpbGVuYW1lOwogICAgIERh
dGFiYXNlKiBtX25leHRSZWdpc3RlcmVkRGF0YWJhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9CdXR0ZXJmbHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0J1dHRlcmZseS5oCmluZGV4IGRlZDg1ZmNkZDJmOGY0NTAzN2U3Mzc1OWM1Mzc3MzI0
NGI3NWJiOGQuLjA0NTU0YWI3MTk1OGU3NDhiM2Y2ZTE3ZjQwYmU5NTAzOGMyOTQzZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0J1dHRlcmZseS5oCkBAIC03MSw3ICs3MSw3IEBA
IHByaXZhdGU6CiB9OwogCiB0eXBlZGVmIENvbnRpZ3VvdXNEYXRhPGRvdWJsZT4gQ29udGlndW91
c0RvdWJsZXM7Ci10eXBlZGVmIENvbnRpZ3VvdXNEYXRhPFdyaXRlQmFycmllcjxVbmtub3duPiA+
IENvbnRpZ3VvdXNKU1ZhbHVlczsKK3R5cGVkZWYgQ29udGlndW91c0RhdGE8V3JpdGVCYXJyaWVy
PFVua25vd24+PiBDb250aWd1b3VzSlNWYWx1ZXM7CiAKIGNsYXNzIEJ1dHRlcmZseSB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQnV0dGVyZmx5KTsKQEAgLTEyNCwxMCArMTI0LDEwIEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQqIGluZGV4aW5nUGF5bG9hZCgp
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFQqPih0aGlzKTsgfQogICAgIEFycmF5U3Rv
cmFnZSogYXJyYXlTdG9yYWdlKCkgeyByZXR1cm4gaW5kZXhpbmdQYXlsb2FkPEFycmF5U3RvcmFn
ZT4oKTsgfQotICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBjb250aWd1b3VzSW50MzIoKSB7IHJldHVy
biBDb250aWd1b3VzSlNWYWx1ZXMoaW5kZXhpbmdQYXlsb2FkPFdyaXRlQmFycmllcjxVbmtub3du
PiA+KCksIHZlY3Rvckxlbmd0aCgpKTsgfQorICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBjb250aWd1
b3VzSW50MzIoKSB7IHJldHVybiBDb250aWd1b3VzSlNWYWx1ZXMoaW5kZXhpbmdQYXlsb2FkPFdy
aXRlQmFycmllcjxVbmtub3duPj4oKSwgdmVjdG9yTGVuZ3RoKCkpOyB9CiAKICAgICBDb250aWd1
b3VzRG91YmxlcyBjb250aWd1b3VzRG91YmxlKCkgeyByZXR1cm4gQ29udGlndW91c0RvdWJsZXMo
aW5kZXhpbmdQYXlsb2FkPGRvdWJsZT4oKSwgdmVjdG9yTGVuZ3RoKCkpOyB9Ci0gICAgQ29udGln
dW91c0pTVmFsdWVzIGNvbnRpZ3VvdXMoKSB7IHJldHVybiBDb250aWd1b3VzSlNWYWx1ZXMoaW5k
ZXhpbmdQYXlsb2FkPFdyaXRlQmFycmllcjxVbmtub3duPiA+KCksIHZlY3Rvckxlbmd0aCgpKTsg
fQorICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBjb250aWd1b3VzKCkgeyByZXR1cm4gQ29udGlndW91
c0pTVmFsdWVzKGluZGV4aW5nUGF5bG9hZDxXcml0ZUJhcnJpZXI8VW5rbm93bj4+KCksIHZlY3Rv
ckxlbmd0aCgpKTsgfQogICAgIAogICAgIHN0YXRpYyBCdXR0ZXJmbHkqIGZyb21Db250aWd1b3Vz
KFdyaXRlQmFycmllcjxVbmtub3duPiogY29udGlndW91cykKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgKaW5kZXggYzZjYjM5MDc2MDFmMmM3YzUzNzVlYzU2OWRiZDU3ZWFiZWFhZjA2MS4u
MTI4OWM1MDM1NzU4OGM3OTE0OWNlZTY0ZTYzYjg0N2E5NTFkZmNhZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaApAQCAtNDAsNyArNDAsNyBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRv
cj46OkdlbmVyaWNUeXBlZEFycmF5VmlldygKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KLVBhc3NSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+ID4gR2VuZXJpY1R5
cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUodW5zaWduZWQgbGVuZ3RoKQorUGFzc1JlZlB0
cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobGVuZ3RoLCBzaXplb2YodHlwZW5hbWUg
QWRhcHRvcjo6VHlwZSkpOwogICAgIGlmICghYnVmZmVyKQpAQCAtNDksNyArNDksNyBAQCBQYXNz
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiA+IEdlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6Y3JlYQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUGFz
c1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4gPiBHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKK1Bhc3NSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKICAgICBj
b25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQogewog
ICAgIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IHJlc3VsdCA9IGNyZWF0ZShsZW5ndGgp
OwpAQCAtNTgsNyArNTgsNyBAQCBQYXNzUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPiA+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYQogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgotUGFzc1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4gPiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKK1Bhc3NSZWZQ
dHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmNyZWF0ZSgKICAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBwYXNzZWRCdWZm
ZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKQEAgLTY5LDcgKzY5LDcgQEAgUGFz
c1JlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4gPiBHZW5lcmljVHlwZWRBcnJh
eVZpZXc8QWRhcHRvcj46OmNyZWEKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVBh
c3NSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+ID4KK1Bhc3NSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PgogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciA9CkBAIC04MCwxNCArODAsMTQgQEAgR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KLVBhc3NSZWZQdHI8R2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+ID4KK1Bhc3NSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+PgogR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheShpbnQgc3RhcnQp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHN1YmFycmF5KHN0YXJ0LCBsZW5ndGgoKSk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1QYXNzUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPiA+CitQYXNzUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4K
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQg
ZW5kKSBjb25zdAogewogICAgIHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IDAzYjFiNjNhZjA2ZjQ1MjVlM2Zj
ODIzYTJhYzI4ZThkMTg3MmY5MmMuLmRiMDQ5OGZhZDVjZDc1YzhmMDU4ODY3MjU2ZTc0NWE2MjAz
YzIwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZp
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAg
LTE4OSw3ICsxODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaWYgKCFsZW5ndGgpCiAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6ZW1wdHkoKTsKICAgICAgICAgQ2hhckJ1ZmZl
cjxUPiBidWYgPSB7IHMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGgpIH07Ci0gICAgICAg
IEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gdm0tPmlkZW50aWZp
ZXJUYWJsZS0+YWRkPENoYXJCdWZmZXI8VD4sIElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRv
cjxUPiA+KGJ1Zik7CisgICAgICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRk
UmVzdWx0ID0gdm0tPmlkZW50aWZpZXJUYWJsZS0+YWRkPENoYXJCdWZmZXI8VD4sIElkZW50aWZp
ZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjxUPj4oYnVmKTsKICAgICAgICAgCiAgICAgICAgIC8vIElm
IHRoZSBzdHJpbmcgaXMgbmV3bHktdHJhbnNsYXRlZCwgdGhlbiB3ZSBuZWVkIHRvIGFkb3B0IGl0
LgogICAgICAgICAvLyBUaGUgYm9vbGVhbiBpbiB0aGUgcGFpciB0ZWxscyB1cyBpZiB0aGF0IGlz
IHNvLgpAQCAtMjQ0LDcgKzI0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIElkZW50aWZpZXJU
YWJsZSogY3JlYXRlSWRlbnRpZmllclRhYmxlKCk7CiAgICAgdm9pZCBkZWxldGVJZGVudGlmaWVy
VGFibGUoSWRlbnRpZmllclRhYmxlKik7CiAKLSAgICBzdHJ1Y3QgSWRlbnRpZmllclJlcEhhc2gg
OiBQdHJIYXNoPFJlZlB0cjxTdHJpbmdJbXBsPiA+IHsKKyAgICBzdHJ1Y3QgSWRlbnRpZmllclJl
cEhhc2ggOiBQdHJIYXNoPFJlZlB0cjxTdHJpbmdJbXBsPj4gewogICAgICAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBSZWZQdHI8U3RyaW5nSW1wbD4mIGtleSkgeyByZXR1cm4ga2V5LT5l
eGlzdGluZ0hhc2goKTsgfQogICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChTdHJpbmdJbXBs
KiBrZXkpIHsgcmV0dXJuIGtleS0+ZXhpc3RpbmdIYXNoKCk7IH0KICAgICB9OwpAQCAtMjU0LDcg
KzI1NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0
eVZhbHVlSXNaZXJvID0gZmFsc2U7CiAgICAgfTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8U3RyaW5nSW1wbD4sIGludCwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRy
PFN0cmluZ0ltcGw+ID4sIElkZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHM+IElkZW50aWZpZXJN
YXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgaW50LCBJZGVudGlm
aWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8U3RyaW5nSW1wbD4+LCBJZGVudGlmaWVyTWFw
SW5kZXhIYXNoVHJhaXRzPiBJZGVudGlmaWVyTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmdJbXBsKiwgaW50LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxTdHJpbmdJbXBsKj4s
IElkZW50aWZpZXJNYXBJbmRleEhhc2hUcmFpdHM+IEJvcnJvd2VkSWRlbnRpZmllck1hcDsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZS5oCmluZGV4IGExNzljZWU0OTc2YzIzNWVkYzc0ZmM0ODAxNzIy
YmFmZDkwM2M3MjAuLjQ2ZTIxNjM2MGY2ZjJjOWRhMTcwYTU1MTIyNTk2MTVjMTIyNWEyMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCkBAIC04NCw4ICs4NCw4
IEBAIHByaXZhdGU6CiAKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9taXNlUmVzb2x2ZXI+IG1fcmVz
b2x2ZXI7CiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+IG1fcmVzdWx0OwotICAgIFZlY3RvcjxX
cml0ZUJhcnJpZXI8SW50ZXJuYWxGdW5jdGlvbj4gPiBtX2Z1bGZpbGxDYWxsYmFja3M7Ci0gICAg
VmVjdG9yPFdyaXRlQmFycmllcjxJbnRlcm5hbEZ1bmN0aW9uPiA+IG1fcmVqZWN0Q2FsbGJhY2tz
OworICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SW50ZXJuYWxGdW5jdGlvbj4+IG1fZnVsZmlsbENh
bGxiYWNrczsKKyAgICBWZWN0b3I8V3JpdGVCYXJyaWVyPEludGVybmFsRnVuY3Rpb24+PiBtX3Jl
amVjdENhbGxiYWNrczsKICAgICBTdGF0ZSBtX3N0YXRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKaW5kZXggMTYw
NzJiNGMzZWM5ZGM0MWE2MGEzNjUzMTkxOWE5Njk0M2IzNWZhOS4uZmFkNjBmYmE1MDE0MDZlMDdm
MzI5ODVjNTRmY2RlZTc4MWY0NzJiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCkBAIC0yNTEsNyArMjUxLDcgQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCogbV9pbmRleDsKICAgICB1bnNpZ25lZCBtX2tleUNvdW50Owog
ICAgIHVuc2lnbmVkIG1fZGVsZXRlZENvdW50OwotICAgIE93blB0cjwgVmVjdG9yPFByb3BlcnR5
T2Zmc2V0PiA+IG1fZGVsZXRlZE9mZnNldHM7CisgICAgT3duUHRyPCBWZWN0b3I8UHJvcGVydHlP
ZmZzZXQ+PiBtX2RlbGV0ZWRPZmZzZXRzOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1p
bmltdW1UYWJsZVNpemUgPSA4OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBFbXB0eUVudHJ5
SW5kZXggPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlOYW1lQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5
TmFtZUFycmF5LmgKaW5kZXggMWQ5ZmFjNTdjMGUxYjc4NDY5YWJlNWYxYjVlY2ZlZTYwYzg5ODUz
Zi4uYmZiZGRhYTYwYzFjOTYxMjdhMTNjMmU4YTdmMTNhZWM1OGZlNTY0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lQXJyYXkuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oCkBAIC0xMDEs
NyArMTAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHR5cGVkZWYgSGFzaFNldDxTdHJpbmdJbXBsKiwgUHRySGFzaDxTdHJpbmdJbXBsKj4g
PiBJZGVudGlmaWVyU2V0OworICAgICAgICB0eXBlZGVmIEhhc2hTZXQ8U3RyaW5nSW1wbCosIFB0
ckhhc2g8U3RyaW5nSW1wbCo+PiBJZGVudGlmaWVyU2V0OwogCiAgICAgICAgIFJlZlB0cjxQcm9w
ZXJ0eU5hbWVBcnJheURhdGE+IG1fZGF0YTsKICAgICAgICAgSWRlbnRpZmllclNldCBtX3NldDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCmluZGV4IGZkNmI3
YjE1MDI1MzA1MzdhMGFkOTA5NzMyYzFkN2E1YzUzZTg2YzQuLjUxOTNhYzYyN2I4YmM1ZTVmYTlh
NGE5NmNiNTVkYjcyOGZmNTFmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ2FjaGUuaApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
UmVnRXhwQ2FjaGUgOiBwcml2YXRlIFdlYWtIYW5kbGVPd25lciB7CiBmcmllbmQgY2xhc3MgUmVn
RXhwOwotdHlwZWRlZiBIYXNoTWFwPFJlZ0V4cEtleSwgV2VhazxSZWdFeHA+ID4gUmVnRXhwQ2Fj
aGVNYXA7Cit0eXBlZGVmIEhhc2hNYXA8UmVnRXhwS2V5LCBXZWFrPFJlZ0V4cD4+IFJlZ0V4cENh
Y2hlTWFwOwogCiBwdWJsaWM6CiAgICAgUmVnRXhwQ2FjaGUoVk0qIHZtKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaAppbmRleCAy
ZTBjNjMwNmQyM2U0YjU0NGJkNTk1NjJlMGQyZjBhZGM1YzMzNDE0Li4xMTNiZWIzNTBhZTMzZWQ1
ZTE3N2Y5ZjlhMjcwOGUxN2I0Mjk2ZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogICAgIAogcHJpdmF0ZToKLSAgICB0eXBlZGVm
IEhhc2hNYXA8dWludDY0X3QsIFNwYXJzZUFycmF5RW50cnksIFdURjo6SW50SGFzaDx1aW50NjRf
dD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+ID4gTWFwOwor
ICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgU3BhcnNlQXJyYXlFbnRyeSwgV1RGOjpJbnRI
YXNoPHVpbnQ2NF90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRf
dD4+IE1hcDsKIAogICAgIGVudW0gRmxhZ3MgewogICAgICAgICBOb3JtYWwgPSAwLApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFRhYmxlLmgKaW5kZXggZjQwZGFhMmIzMGJi
NDM2ZjU4MTU0MmZkOWNhOWZhMDA2ZTI3ZDE0ZC4uYzk1ODMyNDMyOGMzMDcxZDI4ZjNmZWRiZTY3
MjY1ZTA4N2VkYjMyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xU
YWJsZS5oCkBAIC0zNDMsNyArMzQzLDcgQEAgc3RydWN0IFN5bWJvbFRhYmxlSW5kZXhIYXNoVHJh
aXRzIDogSGFzaFRyYWl0czxTeW1ib2xUYWJsZUVudHJ5PiB7CiAKIGNsYXNzIFN5bWJvbFRhYmxl
IHsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBTeW1i
b2xUYWJsZUVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8U3RyaW5n
SW1wbD4gPiwgU3ltYm9sVGFibGVJbmRleEhhc2hUcmFpdHM+IE1hcDsKKyAgICB0eXBlZGVmIEhh
c2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBTeW1ib2xUYWJsZUVudHJ5LCBJZGVudGlmaWVyUmVw
SGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8U3RyaW5nSW1wbD4+LCBTeW1ib2xUYWJsZUluZGV4SGFz
aFRyYWl0cz4gTWFwOwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3ltYm9sVGFibGUoKTsKICAg
ICBKU19FWFBPUlRfUFJJVkFURSB+U3ltYm9sVGFibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCmluZGV4IGZlZjRmNWQ2YWY5YThmOWNkM2I0MzM3NDU3ZWE2ZTMxMDM3YzA3MTcuLjQz
M2VhYjVlMzJlOTEzNjVjM2EyN2ZlYjk3M2I1YzU2OWY2MGI2N2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaApAQCAtMzE5LDcgKzMxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBQcm90b3R5cGVNYXAgcHJvdG90eXBlTWFwOwogCiAgICAgICAgIE93blB0cjxQYXJzZXJBcmVu
YT4gcGFyc2VyQXJlbmE7Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U291cmNlUHJv
dmlkZXI+LCBSZWZQdHI8U291cmNlUHJvdmlkZXJDYWNoZT4gPiBTb3VyY2VQcm92aWRlckNhY2hl
TWFwOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFNvdXJjZVByb3ZpZGVyPiwgUmVm
UHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGU+PiBTb3VyY2VQcm92aWRlckNhY2hlTWFwOwogICAgICAg
ICBTb3VyY2VQcm92aWRlckNhY2hlTWFwIHNvdXJjZVByb3ZpZGVyQ2FjaGVNYXA7CiAgICAgICAg
IE93blB0cjxLZXl3b3Jkcz4ga2V5d29yZHM7CiAgICAgICAgIEludGVycHJldGVyKiBpbnRlcnBy
ZXRlcjsKQEAgLTQxMyw3ICs0MTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQnVtcFBv
aW50ZXJBbGxvY2F0b3IgbV9yZWdFeHBBbGxvY2F0b3I7CiAKICNpZiBFTkFCTEUoUkVHRVhQX1RS
QUNJTkcpCi0gICAgICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVmUHRyPFJlZ0V4cD4gPiBSVFRy
YWNlTGlzdDsKKyAgICAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8UmVnRXhwPj4gUlRU
cmFjZUxpc3Q7CiAgICAgICAgIFJUVHJhY2VMaXN0KiBtX3J0VHJhY2VMaXN0OwogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9Db2RlUHJvZmlsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGUuY3BwCmluZGV4IDc2YWI4
MjRmMTVkY2QzZDhmOTNkZTNkYjA0NDUyNTYzODRlYzViOTguLjU5OWVmZmFjZjJjNDdhYTVmN2Y1
MzQ1Y2ZjODQxNjk3Yzg0YWU5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9Db2RlUHJvZmlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Nv
ZGVQcm9maWxlLmNwcApAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc3ltYm9s
TmFtZSh2b2lkKiBhZGRyZXNzKQogc3RhdGljIGJvb2wgdHJ1bmNhdGVUcmFjZShjb25zdCBjaGFy
KiBzeW1ib2xOYW1lKQogewogICAgIHJldHVybiAhc3RyY21wKHN5bWJvbE5hbWUsICJKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpIikKLSAgICAgICAgfHwgIXN0cmNtcChzeW1ib2xO
YW1lLCAiSlNDOjpQYXJzZXI8SlNDOjpMZXhlcjx1bnNpZ25lZCBjaGFyPiA+OjpwYXJzZUlubmVy
KCkiKQorICAgICAgICB8fCAhc3RyY21wKHN5bWJvbE5hbWUsICJKU0M6OlBhcnNlcjxKU0M6Okxl
eGVyPHVuc2lnbmVkIGNoYXI+Pjo6cGFyc2VJbm5lcigpIikKICAgICAgICAgfHwgIXN0cmNtcChz
eW1ib2xOYW1lLCAiV1RGOjpmYXN0TWFsbG9jKHVuc2lnbmVkIGxvbmcpIikKICAgICAgICAgfHwg
IXN0cmNtcChzeW1ib2xOYW1lLCAiV1RGOjpjYWxjdWxhdGVVVENPZmZzZXQoKSIpCiAgICAgICAg
IHx8ICFzdHJjbXAoc3ltYm9sTmFtZSwgIkpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VD
b2RlQmxvY2soKSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Nv
ZGVQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGUuaApp
bmRleCBkYjM4MGVlZGJjOGI1ODk0NDliNWI4NjQ2YThmOTM4N2IyMWU4NWY0Li42YjBhMzA2ODk4
NGQ4MTdkNjQ0ZjQ0MzZlOWZjN2UwMTcwN2NjOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvQ29kZVByb2ZpbGUuaApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgIENTdHJp
bmcgbV9maWxlOwogICAgIHVuc2lnbmVkIG1fbGluZU5vOwogICAgIENvZGVQcm9maWxlKiBtX3Bh
cmVudDsKLSAgICBWZWN0b3I8IE93blB0cjxDb2RlUHJvZmlsZT4gPiBtX2NoaWxkcmVuOworICAg
IFZlY3RvcjwgT3duUHRyPENvZGVQcm9maWxlPj4gbV9jaGlsZHJlbjsKICAgICBUaWVyZWRNTWFw
QXJyYXk8Q29kZVJlY29yZD4gbV9zYW1wbGVzOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNf
Y29kZVR5cGVOYW1lc1tOdW1iZXJPZkNvZGVUeXBlc107CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAppbmRleCBlNzc1YWQ2MjQyODFlNDY2NWIzMmZk
YmExNDAxZGRiNTgyYWVmNzdlLi42MmU3Njk3NTdmYjU5Y2ViNTkyYTExNDExYjQ1NWM0OTcyMDQ1
MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5j
cHAKQEAgLTE5MjQsNyArMTkyNCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEJ5dGVEaXNqdW5j
dGlvbj4gbV9ib2R5RGlzanVuY3Rpb247CiAgICAgdW5zaWduZWQgbV9jdXJyZW50QWx0ZXJuYXRp
dmVJbmRleDsKICAgICBWZWN0b3I8UGFyZW50aGVzZXNTdGFja0VudHJ5PiBtX3BhcmVudGhlc2Vz
U3RhY2s7Ci0gICAgVmVjdG9yPE93blB0cjxCeXRlRGlzanVuY3Rpb24+ID4gbV9hbGxQYXJlbnRo
ZXNlc0luZm87CisgICAgVmVjdG9yPE93blB0cjxCeXRlRGlzanVuY3Rpb24+PiBtX2FsbFBhcmVu
dGhlc2VzSW5mbzsKIH07CiAKIFBhc3NPd25QdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGls
ZShZYXJyUGF0dGVybiYgcGF0dGVybiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFsbG9jYXRvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKaW5kZXggYmI2
NGU2ZDkxNDJkODQ2YTVmMTE1OTYxOTM3MWM0ODQ0NjEwZDEwNS4uZjM3MzA5NDM2ODBlYjhmYzMw
YWEwOTczNzhjMDcyYzlmOTgxM2Y3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvWWFyckludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckludGVycHJldGVyLmgKQEAgLTMzNyw3ICszMzcsNyBAQCBwdWJsaWM6CiBzdHJ1Y3QgQnl0
ZWNvZGVQYXR0ZXJuIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBCeXRlY29kZVBhdHRlcm4oUGFzc093blB0cjxCeXRlRGlzanVuY3Rpb24+IGJvZHksIFZlY3Rv
cjxPd25QdHI8Qnl0ZURpc2p1bmN0aW9uPiA+JiBwYXJlbnRoZXNlc0luZm9Ub0Fkb3B0LCBZYXJy
UGF0dGVybiYgcGF0dGVybiwgQnVtcFBvaW50ZXJBbGxvY2F0b3IqIGFsbG9jYXRvcikKKyAgICBC
eXRlY29kZVBhdHRlcm4oUGFzc093blB0cjxCeXRlRGlzanVuY3Rpb24+IGJvZHksIFZlY3RvcjxP
d25QdHI8Qnl0ZURpc2p1bmN0aW9uPj4mIHBhcmVudGhlc2VzSW5mb1RvQWRvcHQsIFlhcnJQYXR0
ZXJuJiBwYXR0ZXJuLCBCdW1wUG9pbnRlckFsbG9jYXRvciogYWxsb2NhdG9yKQogICAgICAgICA6
IG1fYm9keShib2R5KQogICAgICAgICAsIG1faWdub3JlQ2FzZShwYXR0ZXJuLm1faWdub3JlQ2Fz
ZSkKICAgICAgICAgLCBtX211bHRpbGluZShwYXR0ZXJuLm1fbXVsdGlsaW5lKQpAQCAtMzY2LDgg
KzM2Niw4IEBAIHB1YmxpYzoKICAgICBDaGFyYWN0ZXJDbGFzcyogd29yZGNoYXJDaGFyYWN0ZXJD
bGFzczsKIAogcHJpdmF0ZToKLSAgICBWZWN0b3I8T3duUHRyPEJ5dGVEaXNqdW5jdGlvbj4gPiBt
X2FsbFBhcmVudGhlc2VzSW5mbzsKLSAgICBWZWN0b3I8T3duUHRyPENoYXJhY3RlckNsYXNzPiA+
IG1fdXNlckNoYXJhY3RlckNsYXNzZXM7CisgICAgVmVjdG9yPE93blB0cjxCeXRlRGlzanVuY3Rp
b24+PiBtX2FsbFBhcmVudGhlc2VzSW5mbzsKKyAgICBWZWN0b3I8T3duUHRyPENoYXJhY3RlckNs
YXNzPj4gbV91c2VyQ2hhcmFjdGVyQ2xhc3NlczsKIH07CiAKIEpTX0VYUE9SVF9QUklWQVRFIFBh
c3NPd25QdHI8Qnl0ZWNvZGVQYXR0ZXJuPiBieXRlQ29tcGlsZShZYXJyUGF0dGVybiYsIEJ1bXBQ
b2ludGVyQWxsb2NhdG9yKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCmlu
ZGV4IDkzNzkyNGU1MDBmYmVkYmRmMjFkNjEzZWU0NDQ1MzNiZDNmOWU5MDguLjQzMTdkNjcyMmU0
NmZiYjJjYzMzODU1ZDBlOGE4NmU1YWIzZWQ4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJKSVQuY3BwCkBAIC0yMzQ2LDcgKzIzNDYsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDog
cHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIG1fb3BzLmFwcGVuZChhbHRlcm5hdGl2
ZUJlZ2luT3BDb2RlKTsKICAgICAgICAgbV9vcHMubGFzdCgpLm1fcHJldmlvdXNPcCA9IG5vdEZv
dW5kOwogICAgICAgICBtX29wcy5sYXN0KCkubV90ZXJtID0gdGVybTsKLSAgICAgICAgVmVjdG9y
PE93blB0cjxQYXR0ZXJuQWx0ZXJuYXRpdmU+ID4mIGFsdGVybmF0aXZlcyA9ICB0ZXJtLT5wYXJl
bnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXM7CisgICAgICAgIFZlY3RvcjxPd25Q
dHI8UGF0dGVybkFsdGVybmF0aXZlPj4mIGFsdGVybmF0aXZlcyA9ICB0ZXJtLT5wYXJlbnRoZXNl
cy5kaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXM7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBhbHRlcm5hdGl2ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIHNpemVfdCBs
YXN0T3BJbmRleCA9IG1fb3BzLnNpemUoKSAtIDE7CiAKQEAgLTIzOTcsNyArMjM5Nyw3IEBAIGNs
YXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgbV9v
cHMuYXBwZW5kKE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRpdmVCZWdpbik7CiAgICAgICAgIG1fb3Bz
Lmxhc3QoKS5tX3ByZXZpb3VzT3AgPSBub3RGb3VuZDsKICAgICAgICAgbV9vcHMubGFzdCgpLm1f
dGVybSA9IHRlcm07Ci0gICAgICAgIFZlY3RvcjxPd25QdHI8UGF0dGVybkFsdGVybmF0aXZlPiA+
JiBhbHRlcm5hdGl2ZXMgPSAgdGVybS0+cGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fYWx0ZXJu
YXRpdmVzOworICAgICAgICBWZWN0b3I8T3duUHRyPFBhdHRlcm5BbHRlcm5hdGl2ZT4+JiBhbHRl
cm5hdGl2ZXMgPSAgdGVybS0+cGFyZW50aGVzZXMuZGlzanVuY3Rpb24tPm1fYWx0ZXJuYXRpdmVz
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYWx0ZXJuYXRpdmVzLnNpemUoKTsg
KytpKSB7CiAgICAgICAgICAgICBzaXplX3QgbGFzdE9wSW5kZXggPSBtX29wcy5zaXplKCkgLSAx
OwogCkBAIC0yNDcxLDcgKzI0NzEsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlciB7CiAgICAgLy8gdG8gcmV0dXJuIHRoZSBmYWlsaW5nIHJlc3VsdC4KICAg
ICB2b2lkIG9wQ29tcGlsZUJvZHkoUGF0dGVybkRpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbikKICAg
ICB7Ci0gICAgICAgIFZlY3RvcjxPd25QdHI8UGF0dGVybkFsdGVybmF0aXZlPiA+JiBhbHRlcm5h
dGl2ZXMgPSBkaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXM7CisgICAgICAgIFZlY3RvcjxPd25Q
dHI8UGF0dGVybkFsdGVybmF0aXZlPj4mIGFsdGVybmF0aXZlcyA9IGRpc2p1bmN0aW9uLT5tX2Fs
dGVybmF0aXZlczsKICAgICAgICAgc2l6ZV90IGN1cnJlbnRBbHRlcm5hdGl2ZUluZGV4ID0gMDsK
IAogICAgICAgICAvLyBFbWl0IHRoZSAnb25jZSB0aHJvdWdoJyBhbHRlcm5hdGl2ZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKaW5kZXggMDkzYTdiYTIwMTM2
ODE0ODliMzg4NDBjNWQ5ODQyNDI0NGU4NzIwYy4uN2VkOWQzYzMwODQ4ZDEyNGNiZTFmMTM2NmQz
OTZlZTM4ZThlMzQzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
clBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJu
LmNwcApAQCAtNjk2LDcgKzY5Niw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fcGF0dGVybi5t
X251bVN1YnBhdHRlcm5zKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFZlY3RvcjxP
d25QdHI8UGF0dGVybkFsdGVybmF0aXZlPiA+JiBhbHRlcm5hdGl2ZXMgPSBtX3BhdHRlcm4ubV9i
b2R5LT5tX2FsdGVybmF0aXZlczsKKyAgICAgICAgVmVjdG9yPE93blB0cjxQYXR0ZXJuQWx0ZXJu
YXRpdmU+PiYgYWx0ZXJuYXRpdmVzID0gbV9wYXR0ZXJuLm1fYm9keS0+bV9hbHRlcm5hdGl2ZXM7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWx0ZXJuYXRpdmVzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgICAgICBWZWN0b3I8UGF0dGVyblRlcm0+JiB0ZXJtcyA9IGFsdGVybmF0aXZl
c1tpXS0+bV90ZXJtczsKICAgICAgICAgICAgIGlmICh0ZXJtcy5zaXplKCkpIHsKQEAgLTc2Niw3
ICs3NjYsNyBAQCBwdWJsaWM6CiAgICAgLy8gYmVnaW5uaW5nIGFuZCB0aGUgZW5kIG9mIHRoZSBt
YXRjaC4KICAgICB2b2lkIG9wdGltaXplRG90U3RhcldyYXBwZWRFeHByZXNzaW9ucygpCiAgICAg
ewotICAgICAgICBWZWN0b3I8T3duUHRyPFBhdHRlcm5BbHRlcm5hdGl2ZT4gPiYgYWx0ZXJuYXRp
dmVzID0gbV9wYXR0ZXJuLm1fYm9keS0+bV9hbHRlcm5hdGl2ZXM7CisgICAgICAgIFZlY3RvcjxP
d25QdHI8UGF0dGVybkFsdGVybmF0aXZlPj4mIGFsdGVybmF0aXZlcyA9IG1fcGF0dGVybi5tX2Jv
ZHktPm1fYWx0ZXJuYXRpdmVzOwogICAgICAgICBpZiAoYWx0ZXJuYXRpdmVzLnNpemUoKSAhPSAx
KQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyUGF0dGVybi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBh
dHRlcm4uaAppbmRleCBlN2QxODdjMmIzMGZlZDI1MTY1NGJkMTc0ZTMyOTlmMGZlZjQzN2E5Li5k
NDJiMGY5Nzk4YzUxYzRjNTE0NmZmNjdiNTZmMGZkYTQzYWQ5MWE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKQEAgLTI3NSw3ICsyNzUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhbHRlcm5hdGl2ZTsKICAgICB9CiAKLSAgICBWZWN0b3I8T3duUHRyPFBh
dHRlcm5BbHRlcm5hdGl2ZT4gPiBtX2FsdGVybmF0aXZlczsKKyAgICBWZWN0b3I8T3duUHRyPFBh
dHRlcm5BbHRlcm5hdGl2ZT4+IG1fYWx0ZXJuYXRpdmVzOwogICAgIFBhdHRlcm5BbHRlcm5hdGl2
ZSogbV9wYXJlbnQ7CiAgICAgdW5zaWduZWQgbV9taW5pbXVtU2l6ZTsKICAgICB1bnNpZ25lZCBt
X2NhbGxGcmFtZVNpemU7CkBAIC0zODIsNyArMzgyLDcgQEAgc3RydWN0IFlhcnJQYXR0ZXJuIHsK
ICAgICB1bnNpZ25lZCBtX21heEJhY2tSZWZlcmVuY2U7CiAgICAgUGF0dGVybkRpc2p1bmN0aW9u
KiBtX2JvZHk7CiAgICAgVmVjdG9yPE93blB0cjxQYXR0ZXJuRGlzanVuY3Rpb24+LCA0PiBtX2Rp
c2p1bmN0aW9uczsKLSAgICBWZWN0b3I8T3duUHRyPENoYXJhY3RlckNsYXNzPiA+IG1fdXNlckNo
YXJhY3RlckNsYXNzZXM7CisgICAgVmVjdG9yPE93blB0cjxDaGFyYWN0ZXJDbGFzcz4+IG1fdXNl
ckNoYXJhY3RlckNsYXNzZXM7CiAKIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogY29tcGlsZShj
b25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
QVZMVHJlZS5oIGIvU291cmNlL1dURi93dGYvQVZMVHJlZS5oCmluZGV4IDYxZjYyN2U4YjJhYzc3
N2Q1YjQ1NDJmYjgwYjFjM2Q5MGNjMzAyMzguLmJjM2FjYWRkMjE4MDlkODA5ZTk4NjFlNjMxMDE2
ZTk2NTg3NGE3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0FWTFRyZWUuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9BVkxUcmVlLmgKQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2YXRlOgogLy8g
RS5nLiwgaWYsIGluIGEgcGFydGljdWxhciBpbnN0YW50aWF0aW9uLCB0aGUgbWF4aW11bSBudW1i
ZXIgb2Ygbm9kZXMgaW4gYSB0cmVlIGluc3RhbmNlIGlzIDEsMDAwLDAwMCwgdGhlIG1heGltdW0g
ZGVwdGggc2hvdWxkIGJlIDI4LgogLy8gWW91IHBpY2sgMjggYmVjYXVzZSBNTigyOCkgaXMgODMy
LDAzOSwgd2hpY2ggaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDEsMDAwLDAwMCwgYW5kIE1OKDI5
KSBpcyAxLDM0NiwyNjgsIHdoaWNoIGlzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiAxLDAwMCwwMDAu
CiAKLXRlbXBsYXRlIDxjbGFzcyBBYnN0cmFjdG9yLCB1bnNpZ25lZCBtYXhEZXB0aCA9IDMyLCBj
bGFzcyBCU2V0ID0gQVZMVHJlZURlZmF1bHRCU2V0PG1heERlcHRoPiA+Cit0ZW1wbGF0ZSA8Y2xh
c3MgQWJzdHJhY3RvciwgdW5zaWduZWQgbWF4RGVwdGggPSAzMiwgY2xhc3MgQlNldCA9IEFWTFRy
ZWVEZWZhdWx0QlNldDxtYXhEZXB0aD4+CiBjbGFzcyBBVkxUcmVlIHsKIHB1YmxpYzoKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCBiL1NvdXJjZS9XVEYv
d3RmL0NoZWNrZWRBcml0aG1ldGljLmgKaW5kZXggZTY4ZDA0MzJiZWVjMGE3ZWU5MGRhOWIxYWIy
OTM3MWE1MjEzY2ZlMC4uY2RkMjM5ZTJkNWQ3Yjg0YWRjNDdhNzMzNjViYTg1YzY2ZmY3YmE2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHJpdmF0
ZToKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGNsYXNzIE92ZXJmbG93SGFuZGxlciA9IENyYXNo
T25PdmVyZmxvdz4gY2xhc3MgQ2hlY2tlZDsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
UmVtb3ZlQ2hlY2tlZDsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tl
ZDxDaGVja2VkPFQ+ID47Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZUNoZWNr
ZWQ8Q2hlY2tlZDxUPj47CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNv
dXJjZSwgYm9vbCB0YXJnZXRTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFRhcmdldD46Omlz
X3NpZ25lZCwgYm9vbCBzb3VyY2VTaWduZWQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPFNvdXJjZT46
OmlzX3NpZ25lZD4gc3RydWN0IEJvdW5kc0NoZWNrZXI7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFy
Z2V0LCB0eXBlbmFtZSBTb3VyY2U+IHN0cnVjdCBCb3VuZHNDaGVja2VyPFRhcmdldCwgU291cmNl
LCBmYWxzZSwgZmFsc2U+IHsKQEAgLTE3OCwxMiArMTc4LDEyIEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZCB7CiAgICAgc3RhdGljIGNvbnN0IENsZWFuVHlwZSBE
ZWZhdWx0VmFsdWUgPSAwOyAgICAKIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
UmVtb3ZlQ2hlY2tlZDxDaGVja2VkPFQsIENyYXNoT25PdmVyZmxvdz4gPiB7Cit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gc3RydWN0IFJlbW92ZUNoZWNrZWQ8Q2hlY2tlZDxULCBDcmFzaE9uT3ZlcmZs
b3c+PiB7CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBSZW1vdmVDaGVja2VkPFQ+OjpDbGVhblR5cGUg
Q2xlYW5UeXBlOwogICAgIHN0YXRpYyBjb25zdCBDbGVhblR5cGUgRGVmYXVsdFZhbHVlID0gMDsK
IH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlQ2hlY2tlZDxDaGVja2Vk
PFQsIFJlY29yZE92ZXJmbG93PiA+IHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVt
b3ZlQ2hlY2tlZDxDaGVja2VkPFQsIFJlY29yZE92ZXJmbG93Pj4gewogICAgIHR5cGVkZWYgdHlw
ZW5hbWUgUmVtb3ZlQ2hlY2tlZDxUPjo6Q2xlYW5UeXBlIENsZWFuVHlwZTsKICAgICBzdGF0aWMg
Y29uc3QgQ2xlYW5UeXBlIERlZmF1bHRWYWx1ZSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvQ29tcHJlc3Npb24uaCBiL1NvdXJjZS9XVEYvd3RmL0NvbXByZXNzaW9uLmgKaW5k
ZXggMzhiNzdjYTE1OTVlZTE4YTIyYmNjOTYxN2Y3ODMxMTVjOTk0NGJlYi4uNGM4ZmQwNmVkY2Nh
YjgyY2ZhMTMyNDBjZmQ2OWU1NmQyYmI3N2Q1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q29tcHJlc3Npb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db21wcmVzc2lvbi5oCkBAIC0xMzcs
NyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9jb21wcmVzc2VkRGF0YS5jbGVhcigpOwog
ICAgIH0KICAgICBtdXRhYmxlIFZlY3RvcjxUPiBtX2RlY29tcHJlc3NlZERhdGE7Ci0gICAgbXV0
YWJsZSBPd25QdHI8Q29tcHJlc3NlZFZlY3RvcjxUPiA+IG1fY29tcHJlc3NlZERhdGE7CisgICAg
bXV0YWJsZSBPd25QdHI8Q29tcHJlc3NlZFZlY3RvcjxUPj4gbV9jb21wcmVzc2VkRGF0YTsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uYWwuaCBiL1NvdXJjZS9X
VEYvd3RmL0Z1bmN0aW9uYWwuaAppbmRleCBhMmZjMTU4NmNhNjdhODkyMDI4MTFhODhmN2MyODlh
MGVlNzRmMDUxLi40NWNhOTQxMWI4ZTM2NTY4M2I5YmI1NTcxNTVmMjZhODg0YmE5MzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbmFsLmgKKysrIGIvU291cmNlL1dURi93dGYv
RnVuY3Rpb25hbC5oCkBAIC00MTksMTQgKzQxOSwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgUGFyYW1TdG9yYWdlVHJhaXRzIHsKICAgICBzdGF0aWMgY29uc3QgVCYgdW53cmFwKGNv
bnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KIH07CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBQYXJhbVN0b3JhZ2VUcmFpdHM8UGFzc1JlZlB0cjxUPiA+IHsK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBQYXJhbVN0b3JhZ2VUcmFpdHM8UGFzc1JlZlB0
cjxUPj4gewogICAgIHR5cGVkZWYgUmVmUHRyPFQ+IFN0b3JhZ2VUeXBlOwogCiAgICAgc3RhdGlj
IFN0b3JhZ2VUeXBlIHdyYXAoUGFzc1JlZlB0cjxUPiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0K
ICAgICBzdGF0aWMgVCogdW53cmFwKGNvbnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4g
dmFsdWUuZ2V0KCk7IH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBQYXJhbVN0
b3JhZ2VUcmFpdHM8UmVmUHRyPFQ+ID4gewordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFBh
cmFtU3RvcmFnZVRyYWl0czxSZWZQdHI8VD4+IHsKICAgICB0eXBlZGVmIFJlZlB0cjxUPiBTdG9y
YWdlVHlwZTsKIAogICAgIHN0YXRpYyBTdG9yYWdlVHlwZSB3cmFwKFJlZlB0cjxUPiB2YWx1ZSkg
eyByZXR1cm4gdmFsdWUucmVsZWFzZSgpOyB9CkBAIC00MzUsNyArNDM1LDcgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IFBhcmFtU3RvcmFnZVRyYWl0czxSZWZQdHI8VD4gPiB7CiAKIHRl
bXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBSZXRhaW5QdHI7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
IHN0cnVjdCBQYXJhbVN0b3JhZ2VUcmFpdHM8UmV0YWluUHRyPFQ+ID4gewordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IFBhcmFtU3RvcmFnZVRyYWl0czxSZXRhaW5QdHI8VD4+IHsKICAgICB0
eXBlZGVmIFJldGFpblB0cjxUPiBTdG9yYWdlVHlwZTsKIAogICAgIHN0YXRpYyBTdG9yYWdlVHlw
ZSB3cmFwKGNvbnN0IFJldGFpblB0cjxUPiYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9CkBAIC02
OTIsNyArNjkyLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBGdW5jdGlvbihQYXNz
UmVmUHRyPEZ1bmN0aW9uSW1wbDxSICgpPiA+IGltcGwpCisgICAgRnVuY3Rpb24oUGFzc1JlZlB0
cjxGdW5jdGlvbkltcGw8UiAoKT4+IGltcGwpCiAgICAgICAgIDogRnVuY3Rpb25CYXNlKGltcGwp
CiAgICAgewogICAgIH0KQEAgLTcxMCw3ICs3MTAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICAvLyBEZWNsYXJlIGEgUmVmUHRyIGhlcmUgc28gd2UnbGwgYmUgc3VyZSB0aGF0IHRoZSB1bmRl
cmx5aW5nIEZ1bmN0aW9uSW1wbCBvYmplY3QncwogICAgICAgICAvLyBsaWZlY3ljbGUgaXMgbWFu
YWdlZCBjb3JyZWN0bHkuCi0gICAgICAgIFJlZlB0cjxGdW5jdGlvbkltcGw8UiAoKT4gPiBmdW5j
dGlvbkltcGwgPSBpbXBsPFIgKCk+KCk7CisgICAgICAgIFJlZlB0cjxGdW5jdGlvbkltcGw8UiAo
KT4+IGZ1bmN0aW9uSW1wbCA9IGltcGw8UiAoKT4oKTsKICAgICAgICAgQmxvY2tUeXBlIGJsb2Nr
ID0gXnsKICAgICAgICAgICAgZnVuY3Rpb25JbXBsLT5vcGVyYXRvcigpKCk7CiAgICAgICAgIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoRnVuY3Rpb25zLmggYi9Tb3VyY2UvV1RG
L3d0Zi9IYXNoRnVuY3Rpb25zLmgKaW5kZXggNzVmYWJjZDk3YWQwMmNlYTBiY2ZmOWZmYmI4MzZl
ODBjN2RmYjkzZS4uOThkYTllOTVjNGZmOWQ0YjZlZGYyMWY1YzFiODkzYzU4MDEyNzZiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0hhc2hGdW5jdGlvbnMuaApAQCAtMTM0LDcgKzEzNCw3IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChUIGEsIFQgYikgeyByZXR1cm4gYSA9PSBiOyB9CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0g
dHJ1ZTsKICAgICB9OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBQdHJIYXNoPFJl
ZlB0cjxQPiA+IDogUHRySGFzaDxQKj4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVj
dCBQdHJIYXNoPFJlZlB0cjxQPj4gOiBQdHJIYXNoPFAqPiB7CiAgICAgICAgIHVzaW5nIFB0ckhh
c2g8UCo+OjpoYXNoOwogICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBSZWZQdHI8
UD4mIGtleSkgeyByZXR1cm4gaGFzaChrZXkuZ2V0KCkpOyB9CiAgICAgICAgIHVzaW5nIFB0ckhh
c2g8UCo+OjplcXVhbDsKQEAgLTE4NywzMCArMTg3LDMwIEBAIG5hbWVzcGFjZSBXVEYgewogICAg
IC8vIG1ha2UgUHRySGFzaCB0aGUgZGVmYXVsdCBoYXNoIGZ1bmN0aW9uIGZvciBwb2ludGVyIHR5
cGVzIHRoYXQgZG9uJ3Qgc3BlY2lhbGl6ZQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3Ry
dWN0IERlZmF1bHRIYXNoPFAqPiB7IHR5cGVkZWYgUHRySGFzaDxQKj4gSGFzaDsgfTsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBQPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UmVmUHRyPFA+ID4geyB0eXBl
ZGVmIFB0ckhhc2g8UmVmUHRyPFA+ID4gSGFzaDsgfTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQ
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UmVmUHRyPFA+PiB7IHR5cGVkZWYgUHRySGFzaDxSZWZQdHI8
UD4+IEhhc2g7IH07CiAKICAgICAvLyBtYWtlIEludFBhaXJIYXNoIHRoZSBkZWZhdWx0IGhhc2gg
ZnVuY3Rpb24gZm9yIHBhaXJzIG9mIChhdCBtb3N0KSAzMi1iaXQgaW50ZWdlcnMuCiAKLSAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8c2hvcnQsIHNob3J0PiA+IHsg
dHlwZWRlZiBJbnRQYWlySGFzaDxzaG9ydCwgc2hvcnQ+IEhhc2g7IH07Ci0gICAgdGVtcGxhdGU8
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPHNob3J0LCB1bnNpZ25lZCBzaG9ydD4gPiB7
IHR5cGVkZWYgSW50UGFpckhhc2g8c2hvcnQsIHVuc2lnbmVkIHNob3J0PiBIYXNoOyB9OwotICAg
IHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjxzaG9ydCwgaW50PiA+IHsg
dHlwZWRlZiBJbnRQYWlySGFzaDxzaG9ydCwgaW50PiBIYXNoOyB9OwotICAgIHRlbXBsYXRlPD4g
c3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjxzaG9ydCwgdW5zaWduZWQ+ID4geyB0eXBlZGVm
IEludFBhaXJIYXNoPHNob3J0LCB1bnNpZ25lZD4gSGFzaDsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8dW5zaWduZWQgc2hvcnQsIHNob3J0PiA+IHsgdHlw
ZWRlZiBJbnRQYWlySGFzaDx1bnNpZ25lZCBzaG9ydCwgc2hvcnQ+IEhhc2g7IH07Ci0gICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPHVuc2lnbmVkIHNob3J0LCB1bnNp
Z25lZCBzaG9ydD4gPiB7IHR5cGVkZWYgSW50UGFpckhhc2g8dW5zaWduZWQgc2hvcnQsIHVuc2ln
bmVkIHNob3J0PiBIYXNoOyB9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0
ZDo6cGFpcjx1bnNpZ25lZCBzaG9ydCwgaW50PiA+IHsgdHlwZWRlZiBJbnRQYWlySGFzaDx1bnNp
Z25lZCBzaG9ydCwgaW50PiBIYXNoOyB9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPHN0ZDo6cGFpcjx1bnNpZ25lZCBzaG9ydCwgdW5zaWduZWQ+ID4geyB0eXBlZGVmIEludFBh
aXJIYXNoPHVuc2lnbmVkIHNob3J0LCB1bnNpZ25lZD4gSGFzaDsgfTsKLSAgICB0ZW1wbGF0ZTw+
IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8aW50LCBzaG9ydD4gPiB7IHR5cGVkZWYgSW50
UGFpckhhc2g8aW50LCBzaG9ydD4gSGFzaDsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZh
dWx0SGFzaDxzdGQ6OnBhaXI8aW50LCB1bnNpZ25lZCBzaG9ydD4gPiB7IHR5cGVkZWYgSW50UGFp
ckhhc2g8aW50LCB1bnNpZ25lZCBzaG9ydD4gSGFzaDsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVj
dCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8aW50LCBpbnQ+ID4geyB0eXBlZGVmIEludFBhaXJIYXNo
PGludCwgaW50PiBIYXNoOyB9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0
ZDo6cGFpcjxpbnQsIHVuc2lnbmVkPiA+IHsgdHlwZWRlZiBJbnRQYWlySGFzaDx1bnNpZ25lZCwg
dW5zaWduZWQ+IEhhc2g7IH07Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3Rk
OjpwYWlyPHVuc2lnbmVkLCBzaG9ydD4gPiB7IHR5cGVkZWYgSW50UGFpckhhc2g8dW5zaWduZWQs
IHNob3J0PiBIYXNoOyB9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6
cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQgc2hvcnQ+ID4geyB0eXBlZGVmIEludFBhaXJIYXNoPHVu
c2lnbmVkLCB1bnNpZ25lZCBzaG9ydD4gSGFzaDsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBE
ZWZhdWx0SGFzaDxzdGQ6OnBhaXI8dW5zaWduZWQsIGludD4gPiB7IHR5cGVkZWYgSW50UGFpckhh
c2g8dW5zaWduZWQsIGludD4gSGFzaDsgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0
SGFzaDxzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiA+IHsgdHlwZWRlZiBJbnRQYWlySGFz
aDx1bnNpZ25lZCwgdW5zaWduZWQ+IEhhc2g7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8c3RkOjpwYWlyPHNob3J0LCBzaG9ydD4+IHsgdHlwZWRlZiBJbnRQYWlySGFzaDxz
aG9ydCwgc2hvcnQ+IEhhc2g7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
c3RkOjpwYWlyPHNob3J0LCB1bnNpZ25lZCBzaG9ydD4+IHsgdHlwZWRlZiBJbnRQYWlySGFzaDxz
aG9ydCwgdW5zaWduZWQgc2hvcnQ+IEhhc2g7IH07CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVm
YXVsdEhhc2g8c3RkOjpwYWlyPHNob3J0LCBpbnQ+PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8c2hv
cnQsIGludD4gSGFzaDsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6
OnBhaXI8c2hvcnQsIHVuc2lnbmVkPj4geyB0eXBlZGVmIEludFBhaXJIYXNoPHNob3J0LCB1bnNp
Z25lZD4gSGFzaDsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBh
aXI8dW5zaWduZWQgc2hvcnQsIHNob3J0Pj4geyB0eXBlZGVmIEludFBhaXJIYXNoPHVuc2lnbmVk
IHNob3J0LCBzaG9ydD4gSGFzaDsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFz
aDxzdGQ6OnBhaXI8dW5zaWduZWQgc2hvcnQsIHVuc2lnbmVkIHNob3J0Pj4geyB0eXBlZGVmIElu
dFBhaXJIYXNoPHVuc2lnbmVkIHNob3J0LCB1bnNpZ25lZCBzaG9ydD4gSGFzaDsgfTsKKyAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8dW5zaWduZWQgc2hvcnQsIGlu
dD4+IHsgdHlwZWRlZiBJbnRQYWlySGFzaDx1bnNpZ25lZCBzaG9ydCwgaW50PiBIYXNoOyB9Owor
ICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjx1bnNpZ25lZCBzaG9y
dCwgdW5zaWduZWQ+PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8dW5zaWduZWQgc2hvcnQsIHVuc2ln
bmVkPiBIYXNoOyB9OworICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFp
cjxpbnQsIHNob3J0Pj4geyB0eXBlZGVmIEludFBhaXJIYXNoPGludCwgc2hvcnQ+IEhhc2g7IH07
CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPGludCwgdW5zaWdu
ZWQgc2hvcnQ+PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8aW50LCB1bnNpZ25lZCBzaG9ydD4gSGFz
aDsgfTsKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxzdGQ6OnBhaXI8aW50LCBp
bnQ+PiB7IHR5cGVkZWYgSW50UGFpckhhc2g8aW50LCBpbnQ+IEhhc2g7IH07CisgICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPGludCwgdW5zaWduZWQ+PiB7IHR5cGVk
ZWYgSW50UGFpckhhc2g8dW5zaWduZWQsIHVuc2lnbmVkPiBIYXNoOyB9OworICAgIHRlbXBsYXRl
PD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjx1bnNpZ25lZCwgc2hvcnQ+PiB7IHR5cGVk
ZWYgSW50UGFpckhhc2g8dW5zaWduZWQsIHNob3J0PiBIYXNoOyB9OworICAgIHRlbXBsYXRlPD4g
c3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQgc2hvcnQ+PiB7
IHR5cGVkZWYgSW50UGFpckhhc2g8dW5zaWduZWQsIHVuc2lnbmVkIHNob3J0PiBIYXNoOyB9Owor
ICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjx1bnNpZ25lZCwgaW50
Pj4geyB0eXBlZGVmIEludFBhaXJIYXNoPHVuc2lnbmVkLCBpbnQ+IEhhc2g7IH07CisgICAgdGVt
cGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4+
IHsgdHlwZWRlZiBJbnRQYWlySGFzaDx1bnNpZ25lZCwgdW5zaWduZWQ+IEhhc2g7IH07CiAKICAg
ICAvLyBtYWtlIFBhaXJIYXNoIHRoZSBkZWZhdWx0IGhhc2ggZnVuY3Rpb24gZm9yIHBhaXJzIG9m
IGFyYml0cmFyeSB2YWx1ZXMuCiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8c3RkOjpwYWlyPFQsIFU+ID4geyB0eXBlZGVmIFBhaXJIYXNo
PFQsIFU+IEhhc2g7IH07CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3Ry
dWN0IERlZmF1bHRIYXNoPHN0ZDo6cGFpcjxULCBVPj4geyB0eXBlZGVmIFBhaXJIYXNoPFQsIFU+
IEhhc2g7IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9IYXNoSXRlcmF0b3JzLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoSXRlcmF0b3JzLmgKaW5k
ZXggOWJlNGRlMzIzYzU2NThiMzNmOTViMmY5Nzc2ZWM1YWVlNTI3NGIyYy4uYjQ5OGI5MmM2YmY0
YTUxMDNlMDZlYWQ5ZjY0MWQ0ZmM0ZTAzMTM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
SGFzaEl0ZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hJdGVyYXRvcnMuaApAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNo
VGFibGVUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBzdHJ1Y3Qg
SGFzaFRhYmxlS2V5c0l0ZXJhdG9yOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5
cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFi
bGVWYWx1ZXNJdGVyYXRvcjsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUs
IHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVD
b25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBLZXlWYWx1ZVBhaXI8S2V5VHlwZSwg
TWFwcGVkVHlwZT4gPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlw
ZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4gc3RydWN0IEhhc2hUYWJsZUNvbnN0
SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIEtleVZhbHVlUGFpcjxLZXlUeXBlLCBNYXBw
ZWRUeXBlPj4gewogICAgIHByaXZhdGU6CiAgICAgICAgIHR5cGVkZWYgS2V5VmFsdWVQYWlyPEtl
eVR5cGUsIE1hcHBlZFR5cGU+IFZhbHVlVHlwZTsKICAgICBwdWJsaWM6CkBAIC01Niw3ICs1Niw3
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25z
dF9pdGVyYXRvciBtX2ltcGw7CiAgICAgfTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hU
YWJsZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBI
YXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgS2V5VmFsdWVQYWlyPEtleVR5
cGUsIE1hcHBlZFR5cGU+ID4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUs
IHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVJ
dGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgS2V5VmFsdWVQYWlyPEtleVR5cGUsIE1hcHBl
ZFR5cGU+PiB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdHlwZWRlZiBLZXlWYWx1ZVBhaXI8S2V5
VHlwZSwgTWFwcGVkVHlwZT4gVmFsdWVUeXBlOwogICAgIHB1YmxpYzoKQEAgLTg2LDcgKzg2LDcg
QEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBl
LCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxl
Q29uc3RLZXlzSXRlcmF0b3IgewogICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgSGFzaFRh
YmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgS2V5VmFsdWVQYWlyPEtleVR5
cGUsIE1hcHBlZFR5cGU+ID4gQ29uc3RJdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFi
bGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBLZXlWYWx1ZVBhaXI8S2V5VHlw
ZSwgTWFwcGVkVHlwZT4+IENvbnN0SXRlcmF0b3I7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIEhh
c2hUYWJsZUNvbnN0S2V5c0l0ZXJhdG9yKGNvbnN0IENvbnN0SXRlcmF0b3ImIGltcGwpIDogbV9p
bXBsKGltcGwpIHt9CkBAIC0xMDMsNyArMTAzLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFt
ZSBNYXBwZWRUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RWYWx1ZXNJdGVyYXRvciB7CiAgICAg
cHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxI
YXNoVGFibGVUeXBlLCBLZXlWYWx1ZVBhaXI8S2V5VHlwZSwgTWFwcGVkVHlwZT4gPiBDb25zdEl0
ZXJhdG9yOworICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhh
c2hUYWJsZVR5cGUsIEtleVZhbHVlUGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBlPj4gQ29uc3RJdGVy
YXRvcjsKIAogICAgIHB1YmxpYzoKICAgICAgICAgSGFzaFRhYmxlQ29uc3RWYWx1ZXNJdGVyYXRv
cihjb25zdCBDb25zdEl0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQpAQCAtMTIwLDgg
KzEyMCw4IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRh
YmxlVHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4gc3RydWN0IEhh
c2hUYWJsZUtleXNJdGVyYXRvciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBIYXNo
VGFibGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgS2V5VmFsdWVQYWlyPEtleVR5cGUs
IE1hcHBlZFR5cGU+ID4gSXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJ
dGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgS2V5VmFsdWVQYWlyPEtleVR5cGUsIE1hcHBl
ZFR5cGU+ID4gQ29uc3RJdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRv
ckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgS2V5VmFsdWVQYWlyPEtleVR5cGUsIE1hcHBlZFR5cGU+
PiBJdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRl
cjxIYXNoVGFibGVUeXBlLCBLZXlWYWx1ZVBhaXI8S2V5VHlwZSwgTWFwcGVkVHlwZT4+IENvbnN0
SXRlcmF0b3I7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIEhhc2hUYWJsZUtleXNJdGVyYXRvcihj
b25zdCBJdGVyYXRvciYgaW1wbCkgOiBtX2ltcGwoaW1wbCkge30KQEAgLTE0Myw4ICsxNDMsOCBA
QCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUs
IHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVW
YWx1ZXNJdGVyYXRvciB7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJ
dGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgS2V5VmFsdWVQYWlyPEtleVR5cGUsIE1hcHBl
ZFR5cGU+ID4gSXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgSGFzaFRhYmxlQ29uc3RJdGVyYXRv
ckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgS2V5VmFsdWVQYWlyPEtleVR5cGUsIE1hcHBlZFR5cGU+
ID4gQ29uc3RJdGVyYXRvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVJdGVyYXRvckFkYXB0
ZXI8SGFzaFRhYmxlVHlwZSwgS2V5VmFsdWVQYWlyPEtleVR5cGUsIE1hcHBlZFR5cGU+PiBJdGVy
YXRvcjsKKyAgICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNo
VGFibGVUeXBlLCBLZXlWYWx1ZVBhaXI8S2V5VHlwZSwgTWFwcGVkVHlwZT4+IENvbnN0SXRlcmF0
b3I7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIEhhc2hUYWJsZVZhbHVlc0l0ZXJhdG9yKGNvbnN0
IEl0ZXJhdG9yJiBpbXBsKSA6IG1faW1wbChpbXBsKSB7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvSGFzaFNldC5oIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCmluZGV4IGEzYTEyODcw
OWRmNTYxMTcyOTVhOWRiZWY3MjZlNmE0MDJhM2Q5MmIuLjc0MDhmNGU3NWYwOWJiZDk0NTc5ZjBh
MTUwMWQzMWNmMjBhZmI4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cz4gY2xhc3MgSGFzaFNldDsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFZhbHVlQXJnLCB0eXBlbmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8VmFs
dWVBcmc+OjpIYXNoLAotICAgICAgICB0eXBlbmFtZSBUcmFpdHNBcmcgPSBIYXNoVHJhaXRzPFZh
bHVlQXJnPiA+IGNsYXNzIEhhc2hTZXQgeworICAgICAgICB0eXBlbmFtZSBUcmFpdHNBcmcgPSBI
YXNoVHJhaXRzPFZhbHVlQXJnPj4gY2xhc3MgSGFzaFNldCB7CiAgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIHByaXZhdGU6CiAgICAgICAgIHR5cGVkZWYgSGFzaEFyZyBIYXNo
RnVuY3Rpb25zOwpAQCAtMTY3LDE0ICsxNjcsMTQgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+CiAgICAgaW5saW5lIGF1
dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6ZmluZChjb25zdCBUJiB2
YWx1ZSkgY29uc3QgLT4gaXRlcmF0b3IKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltcGwudGVt
cGxhdGUgZmluZDxIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+ID4odmFs
dWUpOworICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8SGFzaFNldFRyYW5zbGF0
b3JBZGFwdGVyPEhhc2hUcmFuc2xhdG9yPj4odmFsdWUpOwogICAgIH0KIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHM+
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+CiAgICAg
aW5saW5lIGJvb2wgSGFzaFNldDxWYWx1ZSwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzPjo6Y29udGFp
bnMoY29uc3QgVCYgdmFsdWUpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9pbXBsLnRl
bXBsYXRlIGNvbnRhaW5zPEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4g
Pih2YWx1ZSk7CisgICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgY29udGFpbnM8SGFzaFNl
dFRyYW5zbGF0b3JBZGFwdGVyPEhhc2hUcmFuc2xhdG9yPj4odmFsdWUpOwogICAgIH0KIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CkBAIC0xOTMsNyAr
MTkzLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5z
bGF0b3IsIHR5cGVuYW1lIFQ+CiAgICAgaW5saW5lIGF1dG8gSGFzaFNldDxWYWx1ZSwgSGFzaEZ1
bmN0aW9ucywgVHJhaXRzPjo6YWRkKGNvbnN0IFQmIHZhbHVlKSAtPiBBZGRSZXN1bHQKICAgICB7
Ci0gICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkUGFzc2luZ0hhc2hDb2RlPEhhc2hT
ZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4gPih2YWx1ZSwgdmFsdWUpOworICAg
ICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGFkZFBhc3NpbmdIYXNoQ29kZTxIYXNoU2V0VHJh
bnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSwgdmFsdWUpOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oIGIvU291cmNlL1dURi93dGYvTGlzdEhh
c2hTZXQuaAppbmRleCBhYzA0YzQyMTc2NGQzM2JkY2E2MDc1NTE0NGI4Y2MxMDZiZGJlNzdkLi45
MTJmMGYwMzM3ODdhZDFkYjc3M2NhZDI0M2IxOGFhNmI1MGQ0ZDFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0
LmgKQEAgLTU2OSw3ICs1NjksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIEhhc2hUcmFuc2xhdG9yPgogaW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8VmFsdWVUeXBlLCBp
bmxpbmVDYXBhY2l0eSwgVT46OmNvbnRhaW5zKGNvbnN0IFQmIHZhbHVlKSBjb25zdAogewotICAg
IHJldHVybiBtX2ltcGwudGVtcGxhdGUgY29udGFpbnM8TGlzdEhhc2hTZXRUcmFuc2xhdG9yQWRh
cHRlcjxIYXNoVHJhbnNsYXRvcj4gPih2YWx1ZSk7CisgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0
ZSBjb250YWluczxMaXN0SGFzaFNldFRyYW5zbGF0b3JBZGFwdGVyPEhhc2hUcmFuc2xhdG9yPj4o
dmFsdWUpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHks
IHR5cGVuYW1lIFU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkTGVha0Nv
dW50ZXIuY3BwIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcAppbmRl
eCBlNjI3ZDFkZDYwNDdhNTEyOTM1YTNhYzg4OGFkMmIyZDY0YjAwZmI2Li43MjgzMTM1OGJiOThm
ZmJkZDNlNzdlM2EwMWU0ZmFkMjA5ZGFiMmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9S
ZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRM
ZWFrQ291bnRlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBSZWZDb3VudGVkTGVha0NvdW50
ZXI6OmRlY3JlbWVudCgpIHsgfQogI2RlZmluZSBMT0dfQ0hBTk5FTF9QUkVGSVggTG9nCiBzdGF0
aWMgV1RGTG9nQ2hhbm5lbCBMb2dSZWZDb3VudGVkTGVha3MgPSB7IFdURkxvZ0NoYW5uZWxPbiwg
IlJlZkNvdW50ZWRMZWFrcyIgfTsKIAotdHlwZWRlZiBIYXNoQ291bnRlZFNldDxjb25zdCBjaGFy
KiwgUHRySGFzaDxjb25zdCBjaGFyKj4gPiBSZWFzb25TZXQ7Cit0eXBlZGVmIEhhc2hDb3VudGVk
U2V0PGNvbnN0IGNoYXIqLCBQdHJIYXNoPGNvbnN0IGNoYXIqPj4gUmVhc29uU2V0Owogc3RhdGlj
IFJlYXNvblNldCogbGVha01lc3NhZ2VTdXBwcmVzc2lvblJlYXNvbnM7CiAKIHZvaWQgUmVmQ291
bnRlZExlYWtDb3VudGVyOjpzdXBwcmVzc01lc3NhZ2VzKGNvbnN0IGNoYXIqIHJlYXNvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JldGFpblB0ci5oIGIvU291cmNlL1dURi93dGYvUmV0
YWluUHRyLmgKaW5kZXggOWEwM2M4NzIyMGIwODFkMWU4MWFhNWQ0MmExZjEzZGU1NjZiZDZiZi4u
MWYzODMwOWYxYTk5YTcyMThlODQ1MDFkOTc2MDhiODFlODFkOTAzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUmV0YWluUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvUmV0YWluUHRyLmgK
QEAgLTI5Myw5ICsyOTMsOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIG87CiAg
ICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUD4gc3RydWN0IEhhc2hUcmFpdHM8UmV0YWlu
UHRyPFA+ID4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8UmV0YWluUHRyPFA+ID4geyB9OworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVjdCBIYXNoVHJhaXRzPFJldGFpblB0cjxQPj4gOiBT
aW1wbGVDbGFzc0hhc2hUcmFpdHM8UmV0YWluUHRyPFA+PiB7IH07CiAgICAgCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgUD4gc3RydWN0IFB0ckhhc2g8UmV0YWluUHRyPFA+ID4gOiBQdHJIYXNoPHR5
cGVuYW1lIFJldGFpblB0cjxQPjo6UHRyVHlwZT4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+
IHN0cnVjdCBQdHJIYXNoPFJldGFpblB0cjxQPj4gOiBQdHJIYXNoPHR5cGVuYW1lIFJldGFpblB0
cjxQPjo6UHRyVHlwZT4gewogICAgICAgICB1c2luZyBQdHJIYXNoPHR5cGVuYW1lIFJldGFpblB0
cjxQPjo6UHRyVHlwZT46Omhhc2g7CiAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0
IFJldGFpblB0cjxQPiYga2V5KSB7IHJldHVybiBoYXNoKGtleS5nZXQoKSk7IH0KICAgICAgICAg
dXNpbmcgUHRySGFzaDx0eXBlbmFtZSBSZXRhaW5QdHI8UD46OlB0clR5cGU+OjplcXVhbDsKQEAg
LTMwNCwxMCArMzA0LDEwIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBzdGF0aWMgYm9vbCBl
cXVhbChjb25zdCBSZXRhaW5QdHI8UD4mIGEsIHR5cGVuYW1lIFJldGFpblB0cjxQPjo6UHRyVHlw
ZSBiKSB7IHJldHVybiBhID09IGI7IH0KICAgICB9OwogICAgIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFA+IHN0cnVjdCBEZWZhdWx0SGFzaDxSZXRhaW5QdHI8UD4gPiB7IHR5cGVkZWYgUHRySGFz
aDxSZXRhaW5QdHI8UD4gPiBIYXNoOyB9OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+IHN0cnVj
dCBEZWZhdWx0SGFzaDxSZXRhaW5QdHI8UD4+IHsgdHlwZWRlZiBQdHJIYXNoPFJldGFpblB0cjxQ
Pj4gSGFzaDsgfTsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBQPgotICAgIHN0cnVjdCBSZXRh
aW5QdHJPYmplY3RIYXNoVHJhaXRzIDogU2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFJldGFpblB0cjxQ
PiA+IHsKKyAgICBzdHJ1Y3QgUmV0YWluUHRyT2JqZWN0SGFzaFRyYWl0cyA6IFNpbXBsZUNsYXNz
SGFzaFRyYWl0czxSZXRhaW5QdHI8UD4+IHsKICAgICAgICAgc3RhdGljIGNvbnN0IFJldGFpblB0
cjxQPiYgZW1wdHlWYWx1ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIHN0YXRpYyBSZXRhaW5Q
dHI8UD4mIG51bGwgPSAqKG5ldyBSZXRhaW5QdHI8UD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvU2VudGluZWxMaW5rZWRMaXN0LmggYi9Tb3VyY2UvV1RGL3d0Zi9TZW50aW5lbExpbmtl
ZExpc3QuaAppbmRleCA1Y2M4MzVhZWU4NWNlZjMxMzg0ZmFiOTAzNmY4YTc0MGY1NDc1NzNhLi4x
MzRjZTgwYzcwZDg2YWExOWQwZjJkMzc0N2Y1M2UxZTRiYjcxZTE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TZW50
aW5lbExpbmtlZExpc3QuaApAQCAtOTgsNyArOTgsNyBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gdm9pZCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxUPjo6cmVtb3ZlKCkKIHsKLSAg
ICBTZW50aW5lbExpbmtlZExpc3Q8VCwgQmFzaWNSYXdTZW50aW5lbE5vZGU8VD4gPjo6cmVtb3Zl
KHN0YXRpY19jYXN0PFQqPih0aGlzKSk7CisgICAgU2VudGluZWxMaW5rZWRMaXN0PFQsIEJhc2lj
UmF3U2VudGluZWxOb2RlPFQ+Pjo6cmVtb3ZlKHN0YXRpY19jYXN0PFQqPih0aGlzKSk7CiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBSYXdOb2RlPiBpbmxpbmUgU2VudGluZWxM
aW5rZWRMaXN0PFQsIFJhd05vZGU+OjpTZW50aW5lbExpbmtlZExpc3QoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvU2l6ZUxpbWl0cy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9TaXplTGltaXRz
LmNwcAppbmRleCBmNTgyMGM5MmZiOTA1NWIzMTA5NjNmZmViODFkMjAyYjU1OThiYWZhLi5kNTg0
ZTQ5YzBjNjgzNjA0M2M5MTMzMTVkNWNiMWM3YzgyY2QyODE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9TaXplTGltaXRzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TaXplTGltaXRzLmNw
cApAQCAtNzMsMTAgKzczLDEwIEBAIHN0cnVjdCBTYW1lU2l6ZUFzVmVjdG9yV2l0aElubGluZUNh
cGFjaXR5IHsKIH07CiAKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKE93blB0cjxpbnQ+KSA9PSBzaXpl
b2YoaW50KiksICJPd25QdHIgc2hvdWxkIHN0YXkgc21hbGwhIik7Ci1zdGF0aWNfYXNzZXJ0KHNp
emVvZihQYXNzUmVmUHRyPFJlZkNvdW50ZWQ8aW50PiA+KSA9PSBzaXplb2YoaW50KiksICJQYXNz
UmVmUHRyIHNob3VsZCBzdGF5IHNtYWxsISIpOworc3RhdGljX2Fzc2VydChzaXplb2YoUGFzc1Jl
ZlB0cjxSZWZDb3VudGVkPGludD4+KSA9PSBzaXplb2YoaW50KiksICJQYXNzUmVmUHRyIHNob3Vs
ZCBzdGF5IHNtYWxsISIpOwogc3RhdGljX2Fzc2VydChzaXplb2YoUmVmQ291bnRlZDxpbnQ+KSA9
PSBzaXplb2YoU2FtZVNpemVBc1JlZkNvdW50ZWQpLCAiUmVmQ291bnRlZCBzaG91bGQgc3RheSBz
bWFsbCEiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFJlZkNvdW50ZWRDdXN0b21BbGxvY2F0ZWQ8
aW50PikgPT0gc2l6ZW9mKFNhbWVTaXplQXNSZWZDb3VudGVkKSwgIlJlZkNvdW50ZWRDdXN0b21B
bGxvY2F0ZWQgc2hvdWxkIHN0YXkgc21hbGwhIik7Ci1zdGF0aWNfYXNzZXJ0KHNpemVvZihSZWZQ
dHI8UmVmQ291bnRlZDxpbnQ+ID4pID09IHNpemVvZihpbnQqKSwgIlJlZlB0ciBzaG91bGQgc3Rh
eSBzbWFsbCEiKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFJlZlB0cjxSZWZDb3VudGVkPGludD4+
KSA9PSBzaXplb2YoaW50KiksICJSZWZQdHIgc2hvdWxkIHN0YXkgc21hbGwhIik7CiBzdGF0aWNf
YXNzZXJ0KHNpemVvZihWZWN0b3I8aW50PikgPT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0b3JXaXRo
SW5saW5lQ2FwYWNpdHk8aW50PiksICJWZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwhIik7CiBzdGF0
aWNfYXNzZXJ0KHNpemVvZihWZWN0b3I8aW50LCAxPikgPT0gc2l6ZW9mKFNhbWVTaXplQXNWZWN0
b3JXaXRoSW5saW5lQ2FwYWNpdHk8aW50LCAxPiksICJWZWN0b3Igc2hvdWxkIHN0YXkgc21hbGwh
Iik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihWZWN0b3I8aW50LCAyPikgPT0gc2l6ZW9mKFNhbWVT
aXplQXNWZWN0b3JXaXRoSW5saW5lQ2FwYWNpdHk8aW50LCAyPiksICJWZWN0b3Igc2hvdWxkIHN0
YXkgc21hbGwhIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdHJlYW1CdWZmZXIuaCBi
L1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5oCmluZGV4IDk5MGI4MTIxZjFkNTY2MjE3MWRm
YzEwM2RiMzVmYTEwN2NhNGM4ZWMuLmY0YjE0Yzc4YzRhZDgyMzc0MTM1NTU2NTE0MTQzZmIxZjMz
MmQ2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1N0cmVhbUJ1ZmZlci5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBzaXplX3QgbV9zaXplOwogICAgIHNpemVfdCBtX3JlYWRPZmZzZXQ7Ci0g
ICAgRGVxdWU8T3duUHRyPEJsb2NrPiA+IG1fYnVmZmVyOworICAgIERlcXVlPE93blB0cjxCbG9j
az4+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmluZGV4IDQyNGRi
NjIwNTYzMmU2YmY1NTRlYTdhODg3OWNmN2M1MGM5MjFhMmYuLjRkMzI1ODUxOWNmNzYwOTYwNTQy
MjA2NjNiNDFhZGE0YjRlMTg5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC0xMTk2LDcgKzExOTYsNyBAQCBpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZs
b3dIYW5kbGVyPiYgYSwgY29ucwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IFZhbHVlQ2hlY2s8VmVjdG9yPFQ+ID4gewordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IFZhbHVlQ2hlY2s8VmVjdG9yPFQ+PiB7CiAgICAgdHlwZWRlZiBWZWN0
b3I8VD4gVHJhaXRUeXBlOwogICAgIHN0YXRpYyB2b2lkIGNoZWNrQ29uc2lzdGVuY3koY29uc3Qg
VmVjdG9yPFQ+JiB2KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3RvclRy
YWl0cy5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yVHJhaXRzLmgKaW5kZXggM2MxNzQ2ZDdmZjdl
MzBiMDE4ODcyNmY4Y2E2ODRhMGFmNTA4ZDg3OS4uM2YyZDdjMjcyNTU2YTdkM2EwYjg2ZWY5YzU5
NDBhOWE0YWMwZDc3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yVHJhaXRzLmgK
KysrIGIvU291cmNlL1dURi93dGYvVmVjdG9yVHJhaXRzLmgKQEAgLTcxLDE5ICs3MSwxOSBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICAvLyBXZSBrbm93IE93blB0ciBhbmQgUmVmUHRyIGFyZSBzaW1w
bGUgZW5vdWdoIHRoYXQgaW5pdGlhbGl6aW5nIHRvIDAgYW5kIG1vdmluZyB3aXRoIG1lbWNweQog
ICAgIC8vIChhbmQgdGhlbiBub3QgZGVzdHJ1Y3RpbmcgdGhlIG9yaWdpbmFsKSB3aWxsIHRvdGFs
bHkgd29yawogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFA+Ci0gICAgc3RydWN0IFZlY3RvclRyYWl0
czxSZWZQdHI8UD4gPiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKKyAgICBzdHJ1Y3Qg
VmVjdG9yVHJhaXRzPFJlZlB0cjxQPj4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQPgotICAgIHN0cnVjdCBWZWN0b3JUcmFpdHM8T3duUHRy
PFA+ID4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0cyB7IH07CisgICAgc3RydWN0IFZlY3RvclRy
YWl0czxPd25QdHI8UD4+IDogU2ltcGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9OwogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgUD4KLSAgICBzdHJ1Y3QgVmVjdG9yVHJhaXRzPFJlZjxQPiA+IDogU2lt
cGxlQ2xhc3NWZWN0b3JUcmFpdHMgeyB9OworICAgIHN0cnVjdCBWZWN0b3JUcmFpdHM8UmVmPFA+
PiA6IFNpbXBsZUNsYXNzVmVjdG9yVHJhaXRzIHsgfTsKIAogICAgIHRlbXBsYXRlPD4KICAgICBz
dHJ1Y3QgVmVjdG9yVHJhaXRzPEF0b21pY1N0cmluZz4gOiBTaW1wbGVDbGFzc1ZlY3RvclRyYWl0
cyB7IH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUgU2Vjb25kPgot
ICAgIHN0cnVjdCBWZWN0b3JUcmFpdHM8c3RkOjpwYWlyPEZpcnN0LCBTZWNvbmQ+ID4KKyAgICBz
dHJ1Y3QgVmVjdG9yVHJhaXRzPHN0ZDo6cGFpcjxGaXJzdCwgU2Vjb25kPj4KICAgICB7CiAgICAg
ICAgIHR5cGVkZWYgVmVjdG9yVHJhaXRzPEZpcnN0PiBGaXJzdFRyYWl0czsKICAgICAgICAgdHlw
ZWRlZiBWZWN0b3JUcmFpdHM8U2Vjb25kPiBTZWNvbmRUcmFpdHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9XZWFrUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrUHRyLmgKaW5kZXggM2Yx
NTRmYTNjODQyMTZmNDQyYjRjNWVhYWE5ODUzODI0ZWJkZDdjNi4uZDA3NGRlNjM2NDk0MWEwYjdl
ZDQxNzc2NzY3NmVhZWNkMzZiY2I0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV2Vha1B0
ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaApAQCAtMzksMTIgKzM5LDEyIEBACiBu
YW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIFdlYWtSZWZlcmVu
Y2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2Vha1JlZmVyZW5jZTxUPiA+IHsKK2Ns
YXNzIFdlYWtSZWZlcmVuY2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2Vha1JlZmVy
ZW5jZTxUPj4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYWtSZWZlcmVuY2U8VD4pOwog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYWtSZWZlcmVuY2U8VD4gPiBjcmVhdGUoVCogcHRyKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgV2Vha1JlZmVyZW5jZShwdHIpKTsgfQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYWtSZWZl
cmVuY2U8VD4gPiBjcmVhdGVVbmJvdW5kKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFdlYWtSZWZl
cmVuY2UoKSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWFrUmVmZXJlbmNlPFQ+PiBjcmVh
dGUoVCogcHRyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2Vha1JlZmVyZW5jZShwdHIpKTsgfQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYWtSZWZlcmVuY2U8VD4+IGNyZWF0ZVVuYm91bmQoKSB7
IHJldHVybiBhZG9wdFJlZihuZXcgV2Vha1JlZmVyZW5jZSgpKTsgfQogCiAgICAgVCogZ2V0KCkg
Y29uc3QKICAgICB7CkBAIC05NywxMyArOTcsMTMgQEAgY2xhc3MgV2Vha1B0ciB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV2Vha1B0cigpIHsgfQotICAgIFdl
YWtQdHIoUGFzc1JlZlB0cjxXZWFrUmVmZXJlbmNlPFQ+ID4gcmVmKSA6IG1fcmVmKHJlZikgeyB9
CisgICAgV2Vha1B0cihQYXNzUmVmUHRyPFdlYWtSZWZlcmVuY2U8VD4+IHJlZikgOiBtX3JlZihy
ZWYpIHsgfQogCiAgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9yZWYtPmdldCgpOyB9CiAg
ICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9yZWYtPmdldCgpOyB9CiAKIHBy
aXZhdGU6Ci0gICAgUmVmUHRyPFdlYWtSZWZlcmVuY2U8VD4gPiBtX3JlZjsKKyAgICBSZWZQdHI8
V2Vha1JlZmVyZW5jZTxUPj4gbV9yZWY7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAt
MTEzLDcgKzExMyw3IEBAIGNsYXNzIFdlYWtQdHJGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBXZWFrUHRyRmFjdG9yeShUKiBwdHIpIDogbV9yZWYoV2Vha1JlZmVyZW5jZTxUPjo6Y3Jl
YXRlKHB0cikpIHsgfQogCi0gICAgV2Vha1B0ckZhY3RvcnkoUGFzc1JlZlB0cjxXZWFrUmVmZXJl
bmNlPFQ+ID4gcmVmLCBUKiBwdHIpCisgICAgV2Vha1B0ckZhY3RvcnkoUGFzc1JlZlB0cjxXZWFr
UmVmZXJlbmNlPFQ+PiByZWYsIFQqIHB0cikKICAgICAgICAgOiBtX3JlZihyZWYpCiAgICAgewog
ICAgICAgICBtX3JlZi0+YmluZFRvKHB0cik7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2Vha1JlZmVyZW5jZTxUPiA+IG1fcmVmOwor
ICAgIFJlZlB0cjxXZWFrUmVmZXJlbmNlPFQ+PiBtX3JlZjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwIGIv
U291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCmluZGV4IDdmNmFlMGE4YmMxZGQx
OTVhOTVmMTA1MzMzNDcwNDg4NWFlMTk3OWUuLjdiZDMyMzc0NjgxOTMzMzRkNjA3OWMxYmZlNzVj
Y2E4MDhmYzBmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5n
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKQEAgLTI1NSw3
ICsyNTUsNyBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IEF0b21pY1N0cmluZzo6YWRkKGNvbnN0
IFVDaGFyKiBzLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbgogICAgICAgICByZXR1cm4gU3RyaW5n
SW1wbDo6ZW1wdHkoKTsKIAogICAgIEhhc2hBbmRDaGFyYWN0ZXJzPFVDaGFyPiBidWZmZXIgPSB7
IGV4aXN0aW5nSGFzaCwgcywgbGVuZ3RoIH07Ci0gICAgcmV0dXJuIGFkZFRvU3RyaW5nVGFibGU8
SGFzaEFuZENoYXJhY3RlcnM8VUNoYXI+LCBIYXNoQW5kQ2hhcmFjdGVyc1RyYW5zbGF0b3I8VUNo
YXI+ID4oYnVmZmVyKTsKKyAgICByZXR1cm4gYWRkVG9TdHJpbmdUYWJsZTxIYXNoQW5kQ2hhcmFj
dGVyczxVQ2hhcj4sIEhhc2hBbmRDaGFyYWN0ZXJzVHJhbnNsYXRvcjxVQ2hhcj4+KGJ1ZmZlcik7
CiB9CiAKIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gQXRvbWljU3RyaW5nOjphZGQoY29uc3QgVUNo
YXIqIHMpCkBAIC00MDEsNyArNDAxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KIHN0YXRpYyBpbmxpbmUgSGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yIGZpbmRTdHJp
bmcoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCkKIHsKICAgICBIYXNoQW5kQ2hhcmFjdGVy
czxDaGFyYWN0ZXJUeXBlPiBidWZmZXIgPSB7IHN0cmluZ0ltcGwtPmV4aXN0aW5nSGFzaCgpLCBz
dHJpbmdJbXBsLT5nZXRDaGFyYWN0ZXJzPENoYXJhY3RlclR5cGU+KCksIHN0cmluZ0ltcGwtPmxl
bmd0aCgpIH07Ci0gICAgcmV0dXJuIHN0cmluZ1RhYmxlKCkuZmluZDxIYXNoQW5kQ2hhcmFjdGVy
c1RyYW5zbGF0b3I8Q2hhcmFjdGVyVHlwZT4gPihidWZmZXIpOworICAgIHJldHVybiBzdHJpbmdU
YWJsZSgpLmZpbmQ8SGFzaEFuZENoYXJhY3RlcnNUcmFuc2xhdG9yPENoYXJhY3RlclR5cGU+Pihi
dWZmZXIpOwogfQogCiBBdG9taWNTdHJpbmdJbXBsKiBBdG9taWNTdHJpbmc6OmZpbmQoY29uc3Qg
U3RyaW5nSW1wbCogc3RyaW5nSW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQ29uY2F0ZW5hdGUuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5h
dGUuaAppbmRleCBlOWY4ODEzZjNlYmNlNjdmMmU4NGEyNGVkOWZiMTY0MTNlNDIzMGQ3Li5kOGU0
NWExMjlkMmQ1OTkzZDlkNmFiMTFlODYzMzcwOWNhODI4MDFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZS5oCkBAIC0yOTcsOSArMjk3LDkgQEAgcHJpdmF0ZToKIH07CiAK
IHRlbXBsYXRlPD4KLWNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFZlY3RvcjxjaGFyPiA+IHsKK2Ns
YXNzIFN0cmluZ1R5cGVBZGFwdGVyPFZlY3RvcjxjaGFyPj4gewogcHVibGljOgotICAgIFN0cmlu
Z1R5cGVBZGFwdGVyPFZlY3RvcjxjaGFyPiA+KGNvbnN0IFZlY3RvcjxjaGFyPiYgYnVmZmVyKQor
ICAgIFN0cmluZ1R5cGVBZGFwdGVyPFZlY3RvcjxjaGFyPj4oY29uc3QgVmVjdG9yPGNoYXI+JiBi
dWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoYnVmZmVyKQogICAgIHsKICAgICB9CkBAIC0zMjUs
OSArMzI1LDkgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPD4KLWNsYXNzIFN0cmluZ1R5cGVB
ZGFwdGVyPFZlY3RvcjxMQ2hhcj4gPiB7CitjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxWZWN0b3I8
TENoYXI+PiB7CiBwdWJsaWM6Ci0gICAgU3RyaW5nVHlwZUFkYXB0ZXI8VmVjdG9yPExDaGFyPiA+
KGNvbnN0IFZlY3RvcjxMQ2hhcj4mIGJ1ZmZlcikKKyAgICBTdHJpbmdUeXBlQWRhcHRlcjxWZWN0
b3I8TENoYXI+Pihjb25zdCBWZWN0b3I8TENoYXI+JiBidWZmZXIpCiAgICAgICAgIDogbV9idWZm
ZXIoYnVmZmVyKQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDNh
ZmRiZGNkN2E5OWRkNzZmMmJhM2NhN2UxZDk0NjEzOWMzNDk3ZjMuLjc5ZDY2MDlkNmQwZjdhNzli
ODQ5OWY4YjI4NDI5MDRhODUxY2JkZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC0x
MzUyLDcgKzEzNTIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxTdHJpbmdJbXBsKj4gewogICAgIHR5cGVk
ZWYgU3RyaW5nSGFzaCBIYXNoOwogfTsKLXRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFJl
ZlB0cjxTdHJpbmdJbXBsPiA+IHsKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFJlZlB0
cjxTdHJpbmdJbXBsPj4gewogICAgIHR5cGVkZWYgU3RyaW5nSGFzaCBIYXNoOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdPcGVyYXRvcnMuaCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nT3BlcmF0b3JzLmgKaW5kZXggODQzZTE3M2FjMzcyMjY4YzA5MTQy
ZTE4NWQyZGU1YzdlYmJhOWRmMS4uY2ZkMmY2ZDZjYWNjZDE2ODY1MjVhODdlYTY4MjJkN2I0MDNj
Yjk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdPcGVyYXRvcnMuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ09wZXJhdG9ycy5oCkBAIC04Myw5ICs4Myw5
IEBAIHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5h
bWUgU3RyaW5nVHlwZTI+Ci1jbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxTdHJpbmdBcHBlbmQ8U3Ry
aW5nVHlwZTEsIFN0cmluZ1R5cGUyPiA+IHsKK2NsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFN0cmlu
Z0FwcGVuZDxTdHJpbmdUeXBlMSwgU3RyaW5nVHlwZTI+PiB7CiBwdWJsaWM6Ci0gICAgU3RyaW5n
VHlwZUFkYXB0ZXI8U3RyaW5nQXBwZW5kPFN0cmluZ1R5cGUxLCBTdHJpbmdUeXBlMj4gPihTdHJp
bmdBcHBlbmQ8U3RyaW5nVHlwZTEsIFN0cmluZ1R5cGUyPiYgYnVmZmVyKQorICAgIFN0cmluZ1R5
cGVBZGFwdGVyPFN0cmluZ0FwcGVuZDxTdHJpbmdUeXBlMSwgU3RyaW5nVHlwZTI+PihTdHJpbmdB
cHBlbmQ8U3RyaW5nVHlwZTEsIFN0cmluZ1R5cGUyPiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVm
ZmVyKGJ1ZmZlcikKICAgICB7CiAgICAgfQpAQCAtMTEyLDkgKzExMiw5IEBAIGlubGluZSBTdHJp
bmdBcHBlbmQ8Y29uc3QgY2hhciosIEF0b21pY1N0cmluZz4gb3BlcmF0b3IrKGNvbnN0IGNoYXIq
IHN0cmluZzEsIGNvCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci1pbmxp
bmUgU3RyaW5nQXBwZW5kPGNvbnN0IGNoYXIqLCBTdHJpbmdBcHBlbmQ8VSwgVj4gPiBvcGVyYXRv
cisoY29uc3QgY2hhciogc3RyaW5nMSwgY29uc3QgU3RyaW5nQXBwZW5kPFUsIFY+JiBzdHJpbmcy
KQoraW5saW5lIFN0cmluZ0FwcGVuZDxjb25zdCBjaGFyKiwgU3RyaW5nQXBwZW5kPFUsIFY+PiBv
cGVyYXRvcisoY29uc3QgY2hhciogc3RyaW5nMSwgY29uc3QgU3RyaW5nQXBwZW5kPFUsIFY+JiBz
dHJpbmcyKQogewotICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8Y29uc3QgY2hhciosIFN0cmluZ0Fw
cGVuZDxVLCBWPiA+KHN0cmluZzEsIHN0cmluZzIpOworICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8
Y29uc3QgY2hhciosIFN0cmluZ0FwcGVuZDxVLCBWPj4oc3RyaW5nMSwgc3RyaW5nMik7CiB9CiAK
IGlubGluZSBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNoYXIqLCBTdHJpbmc+IG9wZXJhdG9yKyhjb25z
dCBVQ2hhciogc3RyaW5nMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcyKQpAQCAtMTI4LDkgKzEyOCw5
IEBAIGlubGluZSBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNoYXIqLCBBdG9taWNTdHJpbmc+IG9wZXJh
dG9yKyhjb25zdCBVQ2hhciogc3RyaW5nMSwKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVSwgdHlw
ZW5hbWUgVj4KLWlubGluZSBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNoYXIqLCBTdHJpbmdBcHBlbmQ8
VSwgVj4gPiBvcGVyYXRvcisoY29uc3QgVUNoYXIqIHN0cmluZzEsIGNvbnN0IFN0cmluZ0FwcGVu
ZDxVLCBWPiYgc3RyaW5nMikKK2lubGluZSBTdHJpbmdBcHBlbmQ8Y29uc3QgVUNoYXIqLCBTdHJp
bmdBcHBlbmQ8VSwgVj4+IG9wZXJhdG9yKyhjb25zdCBVQ2hhciogc3RyaW5nMSwgY29uc3QgU3Ry
aW5nQXBwZW5kPFUsIFY+JiBzdHJpbmcyKQogewotICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8Y29u
c3QgVUNoYXIqLCBTdHJpbmdBcHBlbmQ8VSwgVj4gPihzdHJpbmcxLCBzdHJpbmcyKTsKKyAgICBy
ZXR1cm4gU3RyaW5nQXBwZW5kPGNvbnN0IFVDaGFyKiwgU3RyaW5nQXBwZW5kPFUsIFY+PihzdHJp
bmcxLCBzdHJpbmcyKTsKIH0KIAogaW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWwsIFN0
cmluZz4gb3BlcmF0b3IrKGNvbnN0IEFTQ0lJTGl0ZXJhbCYgc3RyaW5nMSwgY29uc3QgU3RyaW5n
JiBzdHJpbmcyKQpAQCAtMTQ0LDkgKzE0NCw5IEBAIGlubGluZSBTdHJpbmdBcHBlbmQ8QVNDSUlM
aXRlcmFsLCBBdG9taWNTdHJpbmc+IG9wZXJhdG9yKyhjb25zdCBBU0NJSUxpdGVyYWwmIHN0CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci1pbmxpbmUgU3RyaW5nQXBwZW5k
PEFTQ0lJTGl0ZXJhbCwgU3RyaW5nQXBwZW5kPFUsIFY+ID4gb3BlcmF0b3IrKGNvbnN0IEFTQ0lJ
TGl0ZXJhbCYgc3RyaW5nMSwgY29uc3QgU3RyaW5nQXBwZW5kPFUsIFY+JiBzdHJpbmcyKQoraW5s
aW5lIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWwsIFN0cmluZ0FwcGVuZDxVLCBWPj4gb3BlcmF0
b3IrKGNvbnN0IEFTQ0lJTGl0ZXJhbCYgc3RyaW5nMSwgY29uc3QgU3RyaW5nQXBwZW5kPFUsIFY+
JiBzdHJpbmcyKQogewotICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8QVNDSUlMaXRlcmFsLCBTdHJp
bmdBcHBlbmQ8VSwgVj4gPihzdHJpbmcxLCBzdHJpbmcyKTsKKyAgICByZXR1cm4gU3RyaW5nQXBw
ZW5kPEFTQ0lJTGl0ZXJhbCwgU3RyaW5nQXBwZW5kPFUsIFY+PihzdHJpbmcxLCBzdHJpbmcyKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDcyYjhiMzhjMGE2
YmViNjMxYTNhOGI3ZGM2OWMxYWRmY2ZkNzczOGEuLmRiZTIwODBiYzhiNDdlMDAwMTMxMTc4NmI1
OGM2ODViZGE1ZDk1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtOTUsNyArOTUsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgRGVxdWU8UGVuZGluZ0tleVJlcXVlc3Q+IG1fcGVuZGluZ0tleVJlcXVlc3RzOwog
ICAgIFRpbWVyPE1lZGlhS2V5U2Vzc2lvbj4gbV9rZXlSZXF1ZXN0VGltZXI7CiAKLSAgICBEZXF1
ZTxSZWZQdHI8VWludDhBcnJheT4gPiBtX3BlbmRpbmdLZXlzOworICAgIERlcXVlPFJlZlB0cjxV
aW50OEFycmF5Pj4gbV9wZW5kaW5nS2V5czsKICAgICBUaW1lcjxNZWRpYUtleVNlc3Npb24+IG1f
YWRkS2V5VGltZXI7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRleCBiZWU3OTEwNDIxN2RlYzE0NzYwNDdkMjdh
OWNhZDlkNmQ5NzVhNTJlLi5kOGVmOTNkMzAxN2FmODUxZjdjODcxMDBiZTBmY2JkZjlmNDU4YTJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgTWVkaWFLZXlzKGNvbnN0
IFN0cmluZyYga2V5U3lzdGVtLCBQYXNzT3duUHRyPENETT4pOwogCi0gICAgVmVjdG9yPFJlZlB0
cjxNZWRpYUtleVNlc3Npb24+ID4gbV9zZXNzaW9uczsKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlh
S2V5U2Vzc2lvbj4+IG1fc2Vzc2lvbnM7CiAKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlh
RWxlbWVudDsKICAgICBTdHJpbmcgbV9rZXlTeXN0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmgKaW5kZXggMDNhZjQ0OTE0NDBlYzBhOWRi
OTI3NGZmYzVkNTY2MmY0MDBjZmI3Mi4uNTU2NGMxMTJlYjQ5ZWY1MTNjYjRhYTM0M2U3MmY5OGUy
NGQzMTU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9H
ZW9sb2NhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb24uaApAQCAtMTA5LDggKzEwOSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgbV91
c2VDYWNoZWRQb3NpdGlvbjsKICAgICB9OwogCi0gICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEdl
b05vdGlmaWVyPiA+IEdlb05vdGlmaWVyVmVjdG9yOwotICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQ
dHI8R2VvTm90aWZpZXI+ID4gR2VvTm90aWZpZXJTZXQ7CisgICAgdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPEdlb05vdGlmaWVyPj4gR2VvTm90aWZpZXJWZWN0b3I7CisgICAgdHlwZWRlZiBIYXNoU2V0
PFJlZlB0cjxHZW9Ob3RpZmllcj4+IEdlb05vdGlmaWVyU2V0OwogCiAgICAgY2xhc3MgV2F0Y2hl
cnMgewogICAgIHB1YmxpYzoKQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgogICAgICAgICBi
b29sIGlzRW1wdHkoKSBjb25zdDsKICAgICAgICAgdm9pZCBnZXROb3RpZmllcnNWZWN0b3IoR2Vv
Tm90aWZpZXJWZWN0b3ImKSBjb25zdDsKICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIEhh
c2hNYXA8aW50LCBSZWZQdHI8R2VvTm90aWZpZXI+ID4gSWRUb05vdGlmaWVyTWFwOworICAgICAg
ICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8R2VvTm90aWZpZXI+PiBJZFRvTm90aWZpZXJN
YXA7CiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8R2VvTm90aWZpZXI+LCBpbnQ+IE5v
dGlmaWVyVG9JZE1hcDsKICAgICAgICAgSWRUb05vdGlmaWVyTWFwIG1faWRUb05vdGlmaWVyTWFw
OwogICAgICAgICBOb3RpZmllclRvSWRNYXAgbV9ub3RpZmllclRvSWRNYXA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29u
dHJvbGxlci5jcHAKaW5kZXggZmNhNDU2M2VhNDE4M2M3ZTNlNDJlMjliMzI0MmY4OWZiNzA4NTIx
ZC4uN2M3M2VjOTc3Y2NmNmYyY2FlMTg5MjhiOThjMWM0Mzg2ZDJkMzI3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25D
b250cm9sbGVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgR2VvbG9jYXRpb25Db250cm9s
bGVyOjpwb3NpdGlvbkNoYW5nZWQoR2VvbG9jYXRpb25Qb3NpdGlvbiogcG9zaXRpb24pCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgbV9sYXN0UG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICBW
ZWN0b3I8UmVmUHRyPEdlb2xvY2F0aW9uPiA+IG9ic2VydmVyc1ZlY3RvcjsKKyAgICBWZWN0b3I8
UmVmUHRyPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVjdG9yOwogICAgIGNvcHlUb1ZlY3Rvciht
X29ic2VydmVycywgb2JzZXJ2ZXJzVmVjdG9yKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG9ic2VydmVyc1ZlY3Rvci5zaXplKCk7ICsraSkKICAgICAgICAgb2JzZXJ2ZXJzVmVjdG9yW2ld
LT5wb3NpdGlvbkNoYW5nZWQoKTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIEdlb2xvY2F0aW9u
Q29udHJvbGxlcjo6cG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uUG9zaXRpb24qIHBvc2l0aW9u
KQogCiB2b2lkIEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZXJyb3JPY2N1cnJlZChHZW9sb2NhdGlv
bkVycm9yKiBlcnJvcikKIHsKLSAgICBWZWN0b3I8UmVmUHRyPEdlb2xvY2F0aW9uPiA+IG9ic2Vy
dmVyc1ZlY3RvcjsKKyAgICBWZWN0b3I8UmVmUHRyPEdlb2xvY2F0aW9uPj4gb2JzZXJ2ZXJzVmVj
dG9yOwogICAgIGNvcHlUb1ZlY3RvcihtX29ic2VydmVycywgb2JzZXJ2ZXJzVmVjdG9yKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9ic2VydmVyc1ZlY3Rvci5zaXplKCk7ICsraSkKICAg
ICAgICAgb2JzZXJ2ZXJzVmVjdG9yW2ldLT5zZXRFcnJvcihlcnJvcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xs
ZXIuaAppbmRleCBjNDY4OWFjN2UyYzliY2Y3MzNjNDY1ZDQ4OGYwMWRmMThiY2NmZTI4Li42OTQx
Yjc1NDI4ZGNmYzc5MTBiYjgyMDFmZjM0ODg2YWI5MTY0NjAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9sbGVy
LmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBQYWdlKiBtX3BhZ2U7CiAKICAgICBS
ZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247Ci0gICAgdHlwZWRlZiBI
YXNoU2V0PFJlZlB0cjxHZW9sb2NhdGlvbj4gPiBPYnNlcnZlcnNTZXQ7CisgICAgdHlwZWRlZiBI
YXNoU2V0PFJlZlB0cjxHZW9sb2NhdGlvbj4+IE9ic2VydmVyc1NldDsKICAgICAvLyBBbGwgb2Jz
ZXJ2ZXJzOyBib3RoIHRob3NlIHJlcXVlc3RpbmcgaGlnaCBhY2N1cmFjeSBhbmQgdGhvc2Ugbm90
LgogICAgIE9ic2VydmVyc1NldCBtX29ic2VydmVyczsKICAgICBPYnNlcnZlcnNTZXQgbV9oaWdo
QWNjdXJhY3lPYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkNhbGxiYWNrcy5oCmluZGV4IDlkYWEzZjFjMmZlNjgyYmNlOGY5Mjg0ZTMyZGVmZGQ0MWMz
ODg5MGUuLmFiYTc3MWI4MzgyYzU2ZWVmZDUwYzVkZDY3OTUwOGU2MWY2YjdlOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oCkBAIC02Niw3
ICs2Niw3IEBAIHB1YmxpYzoKICAgICAvLyBGcm9tIElEQkN1cnNvci5hZHZhbmNlKCkvY29udGlu
dWUoKQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNz
UmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSA9IDA7
CiAgICAgLy8gRnJvbSBJREJDdXJzb3IuYWR2YW5jZSgpL2NvbnRpbnVlKCkKLSAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+
JiBrZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPiA+JiB2YWx1ZXMpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4m
IGtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4mIHByaW1hcnlLZXlzLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiB2YWx1ZXMpID0gMDsKICAgICAvLyBGcm9tIElE
QkZhY3Rvcnkub3BlbigpL2RlbGV0ZURhdGFiYXNlKCkKICAgICB2aXJ0dWFsIHZvaWQgb25CbG9j
a2VkKHVpbnQ2NF90IC8qIGV4aXN0aW5nVmVyc2lvbiAqLykgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQogICAgIC8vIEZyb20gSURCRmFjdG9yeS5vcGVuKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCmluZGV4IDkwMjUzMTFhZmUzMjVjYjJiM2E3
OGQ5MzhkMmI1ZWQwNTQ3YmI3MjkuLmJkOTI1NWY1YjFjYTNjZjZiOWVhMzI1Y2JlNjQwMjVkYjZh
Zjk0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBLZWVwIHRyYWNrIG9m
IHRoZSB2ZXJzaW9uY2hhbmdlIGV2ZW50cyB3YWl0aW5nIHRvIGJlIGZpcmVkIG9uIHRoaXMKICAg
ICAvLyBkYXRhYmFzZSBzbyB0aGF0IHdlIGNhbiBjYW5jZWwgdGhlbSBpZiB0aGUgZGF0YWJhc2Ug
Y2xvc2VzLgotICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9lbnF1ZXVlZEV2ZW50czsKKyAg
ICBWZWN0b3I8UmVmUHRyPEV2ZW50Pj4gbV9lbnF1ZXVlZEV2ZW50czsKIAogICAgIFJlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxiYWNrczsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZS5oCmluZGV4IGY0NmQ1ODNkNmJiYTMwMzM1YzBlYjg5YzI3ZDI1MDlhYzhk
YWIxOWUuLjlmMzM2OWNlZTQ0MTJkODM2OGQzM2JmODhhMzZlODY1ZmU2NzhjOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZS5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBjb25zdCBpbnQ2NF90IE1pbmltdW1JbmRleElkID0gMzA7CiAKLSAgICB0eXBlZGVmIFZl
Y3RvcjxSZWZQdHI8SURCS2V5PiA+IEluZGV4S2V5czsKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQ
dHI8SURCS2V5Pj4gSW5kZXhLZXlzOwogCiAgICAgdmlydHVhbCB2b2lkIGdldChpbnQ2NF90IHRy
YW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiwgYm9vbCBrZXlPbmx5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4pID0gMDsKICAgICAvLyBOb3RlIHRoYXQgJ3ZhbHVlJyBtYXkgYmUgY29uc3VtZWQvYWRvcHRl
ZCBieSB0aGlzIGNhbGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJFdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCA3MjYzNDY3NTRjZDc5YjFhNWQ0OTA1
MDdmZDUyNWY2MGJkNDcwMGY0Li4xMTZmN2Q1MjYzZDUxNDY1NDcwYjk1NWQyNWZkYjI1ZTk4MDlj
OGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJFdmVu
dERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkV2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1ib29sIElEQkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goRXZlbnQqIGV2ZW50LCBW
ZWN0b3I8UmVmUHRyPEV2ZW50VGFyZ2V0PiA+JiBldmVudFRhcmdldHMpCitib29sIElEQkV2ZW50
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2goRXZlbnQqIGV2ZW50LCBWZWN0b3I8UmVmUHRyPEV2ZW50VGFy
Z2V0Pj4mIGV2ZW50VGFyZ2V0cykKIHsKICAgICBzaXplX3Qgc2l6ZSA9IGV2ZW50VGFyZ2V0cy5z
aXplKCk7CiAgICAgQVNTRVJUKHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRXZlbnREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJFdmVudERpc3BhdGNoZXIuaAppbmRleCAwMGJmMTU0NjM0YWFlZjYz
M2JiZGMwYmI0NDMzZmY4ZDBkZjYwOTg0Li4xZDI2M2I1NjA2MmRkNzg1YjBkMzhkODU0NTZkZWZh
OWZlN2RkZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJFdmVudERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJFdmVudERpc3BhdGNoZXIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBFdmVudFRhcmdl
dDsKIAogY2xhc3MgSURCRXZlbnREaXNwYXRjaGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgYm9v
bCBkaXNwYXRjaChFdmVudCosIFZlY3RvcjxSZWZQdHI8RXZlbnRUYXJnZXQ+ID4mKTsgLy8gVGhl
IHRhcmdldCBmaXJzdCBhbmQgdGhlbiBpdHMgYW5jZXN0b3JzIGluIG9yZGVyIG9mIGhvdyB0aGUg
ZXZlbnQgYnViYmxlcy4KKyAgICBzdGF0aWMgYm9vbCBkaXNwYXRjaChFdmVudCosIFZlY3RvcjxS
ZWZQdHI8RXZlbnRUYXJnZXQ+PiYpOyAvLyBUaGUgdGFyZ2V0IGZpcnN0IGFuZCB0aGVuIGl0cyBh
bmNlc3RvcnMgaW4gb3JkZXIgb2YgaG93IHRoZSBldmVudCBidWJibGVzLgogCiBwcml2YXRlOgog
ICAgIElEQkV2ZW50RGlzcGF0Y2hlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXkuaAppbmRleCAwNWJlYmNiN2FiZTFlZjJmMzdiNDFkYjBjNTdlYjAyMjZmYzliYTIz
Li45MGI2MmQ1OTkxOWM3ZmEwZjRiZTQ1MDNmMzhlY2QyYmRlNmEzZWRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQktleSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQktleT4g
ewogcHVibGljOgotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4gS2V5QXJyYXk7
CisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPElEQktleT4+IEtleUFycmF5OwogCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCS2V5PiBjcmVhdGVJbnZhbGlkKCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaAppbmRleCBjOTk1
YTU0ZTY1OGUwYTMxMWQwZDVmN2ZlZWJiMzYzNjdiNTUxZDZlLi4xMDhjYjAwY2M4ZmZmYzY5ZGM5
OTIwZTBmZWQyNWViZGRkYzM1MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAg
ICAgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0
YWRhdGE7IH0KICAgICB2b2lkIHNldE1ldGFkYXRhKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRh
dGEmIG1ldGFkYXRhKSB7IG1fbWV0YWRhdGEgPSBtZXRhZGF0YTsgfQogCi0gICAgdHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPElEQktleT4gPiBJbmRleEtleXM7CisgICAgdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPElEQktleT4+IEluZGV4S2V5czsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBJbmRl
eEtleXM+IEluZGV4S2V5TWFwOwogCiAgICAgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKiBi
YWNrZW5kREIoKSBjb25zdDsKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxJREJUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKICAgICBib29sIG1fZGVsZXRlZDsKIAot
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJREJJbmRleD4gPiBJREJJbmRleE1h
cDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SURCSW5kZXg+PiBJREJJbmRl
eE1hcDsKICAgICBJREJJbmRleE1hcCBtX2luZGV4TWFwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5nVHJhbnNh
Y3Rpb25Nb25pdG9yLmNwcAppbmRleCA1NTNhZjNmMjExNDEyMWEwNTY0MDY0NDRiMjZjNDJkNWUw
NDk5YjEyLi5hOWY2OTE2MGRkY2Q3YjYwYTIyYWYwYTc0ZjhmNzk2ZTgzZDViYzhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5nVHJhbnNhY3Rp
b25Nb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJQ
ZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmNwcApAQCAtMzQsNyArMzQsNyBAQCB1c2luZyBXVEY6
OlRocmVhZFNwZWNpZmljOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgVmVjdG9y
PFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gPiBUcmFuc2FjdGlvbkxpc3Q7Cit0eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8SURCVHJhbnNhY3Rpb24+PiBUcmFuc2FjdGlvbkxpc3Q7CiBzdGF0aWMgVGhyZWFk
U3BlY2lmaWM8VHJhbnNhY3Rpb25MaXN0PiYgdHJhbnNhY3Rpb25zKCkKIHsKICAgICAvLyBGSVhN
RTogTW92ZSB0aGUgVmVjdG9yIHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgdG8gYXZvaWQgZGVh
bGluZyB3aXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuY3BwCmluZGV4IDkzYWU5MmJlMGNhOGNhMTNlN2MwY2Y4MDM1ZGE4ZGJjYmU1YWM2YzcuLmU0
ZDA0MWIzZDQ3NjVkZGNhOGUzZGQ0ZTljZjRlNDQzMTg0MDg1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC00NTEsNyArNDUxLDcg
QEAgYm9vbCBJREJSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
KQogICAgICAgICAgICAgbV9lbnF1ZXVlZEV2ZW50cy5yZW1vdmUoaSk7CiAgICAgfQogCi0gICAg
VmVjdG9yPFJlZlB0cjxFdmVudFRhcmdldD4gPiB0YXJnZXRzOworICAgIFZlY3RvcjxSZWZQdHI8
RXZlbnRUYXJnZXQ+PiB0YXJnZXRzOwogICAgIHRhcmdldHMuYXBwZW5kKHRoaXMpOwogICAgIGlm
IChtX3RyYW5zYWN0aW9uICYmICFtX3ByZXZlbnRQcm9wYWdhdGlvbikgewogICAgICAgICB0YXJn
ZXRzLmFwcGVuZChtX3RyYW5zYWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCAyNWYyODM1MTVmN2UyNmU4NjdmYmU4NmIzMmVmNzE1
OWFhYWM3OTRlLi45YmMyMWNlYzk2ZTQ0NzdjMjc3MWQzYjc3Mzc0MWYxMDA3MTYwNTcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCkBAIC05MSw3
ICs5MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKGludDY0X3QpOwog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPik7Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVm
ZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+ID4mKSB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9IC8vIE5vdCBpbXBsZW1lbnRlZC4gQ2FsbGJhY2sgc2hvdWxkIG5v
dCByZWFjaCB0aGUgcmVuZGVyZXIgc2lkZS4KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0
aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4mLCBjb25zdCBWZWN0b3I8UmVm
UHRyPElEQktleT4+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gTm90IGltcGxlbWVudGVkLiBDYWxsYmFjayBzaG91bGQg
bm90IHJlYWNoIHRoZSByZW5kZXJlciBzaWRlLgogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAg
ICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IE9WRVJSSURFOwpAQCAt
MTQ0LDcgKzE0NCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgSURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlOjpUYXNrVHlwZSBtX3Rhc2tUeXBlOwogCiAgICAgYm9vbCBtX2hhc1BlbmRpbmdBY3Rp
dml0eTsKLSAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fZW5xdWV1ZWRFdmVudHM7CisgICAg
VmVjdG9yPFJlZlB0cjxFdmVudD4+IG1fZW5xdWV1ZWRFdmVudHM7CiAKICAgICAvLyBPbmx5IHVz
ZWQgaWYgdGhlIHJlc3VsdCB0eXBlIHdpbGwgYmUgYSBjdXJzb3IuCiAgICAgSW5kZXhlZERCOjpD
dXJzb3JUeXBlIG1fY3Vyc29yVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCBlYzAxZjE5NjZlYmNiYWZhZjE1YmRi
YjBmMDZmOTQ4YTJlMDE1Yzg2Li43ODhmNjMxMjY4MzA0N2E3ZGFhOTljZjA4MjkxZDQ5YWY4YmZh
NzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgYm9vbCBJREJUcmFuc2FjdGlvbjo6ZGlz
cGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICAgICAgKCppdCktPnRyYW5z
YWN0aW9uRmluaXNoZWQoKTsKICAgICBtX2RlbGV0ZWRPYmplY3RTdG9yZXMuY2xlYXIoKTsKIAot
ICAgIFZlY3RvcjxSZWZQdHI8RXZlbnRUYXJnZXQ+ID4gdGFyZ2V0czsKKyAgICBWZWN0b3I8UmVm
UHRyPEV2ZW50VGFyZ2V0Pj4gdGFyZ2V0czsKICAgICB0YXJnZXRzLmFwcGVuZCh0aGlzKTsKICAg
ICB0YXJnZXRzLmFwcGVuZChkYigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggNzhhOTFkZDM5NjcwMDk2OGZhZTNhODdj
MWU2ZThkNzJhMmQ2MTljYy4uYTRlOGFmMDFmNTQwYjNkNjFhNmZlOTgwN2I2ZmVlNzliOTEyYjA3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5oCkBAIC0xNTIsMTIgKzE1MiwxMiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxET01FcnJv
cj4gbV9lcnJvcjsKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CiAKLSAgICBMaXN0SGFzaFNl
dDxSZWZQdHI8SURCUmVxdWVzdD4gPiBtX3JlcXVlc3RMaXN0OworICAgIExpc3RIYXNoU2V0PFJl
ZlB0cjxJREJSZXF1ZXN0Pj4gbV9yZXF1ZXN0TGlzdDsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gPiBJREJPYmplY3RTdG9yZU1hcDsKKyAgICB0
eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SURCT2JqZWN0U3RvcmU+PiBJREJPYmplY3RT
dG9yZU1hcDsKICAgICBJREJPYmplY3RTdG9yZU1hcCBtX29iamVjdFN0b3JlTWFwOwogCi0gICAg
dHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxJREJPYmplY3RTdG9yZT4gPiBJREJPYmplY3RTdG9yZVNl
dDsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPElEQk9iamVjdFN0b3JlPj4gSURCT2JqZWN0
U3RvcmVTZXQ7CiAgICAgSURCT2JqZWN0U3RvcmVTZXQgbV9kZWxldGVkT2JqZWN0U3RvcmVzOwog
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxJREJPYmplY3RTdG9yZT4sIElEQk9iamVjdFN0
b3JlTWV0YWRhdGE+IElEQk9iamVjdFN0b3JlTWV0YWRhdGFNYXA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNw
cAppbmRleCBlYTI5YzUxMWRhOTY2NDE5M2M1ZTIyOWE1YTgxZTYzNTRlZjcyMmJkLi44ZGU4MGMx
Yzg1YmM5MWY0NTFjYjg3NGJiZDk3M2IxZTdjYWM0ZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAK
QEAgLTczLDE0ICs3MywxNCBAQCBNZWRpYUNvbnRyb2xzSG9zdDo6fk1lZGlhQ29udHJvbHNIb3N0
KCkKIHsKIH0KIAotVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gTWVkaWFDb250cm9sc0hvc3Q6
OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRyYWNrTGlzdCogdHJhY2tMaXN0KQorVmVjdG9y
PFJlZlB0cjxUZXh0VHJhY2s+PiBNZWRpYUNvbnRyb2xzSG9zdDo6c29ydGVkVHJhY2tMaXN0Rm9y
TWVudShUZXh0VHJhY2tMaXN0KiB0cmFja0xpc3QpCiB7CiAgICAgaWYgKCF0cmFja0xpc3QpCi0g
ICAgICAgIHJldHVybiBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPigpOworICAgICAgICByZXR1
cm4gVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PigpOwogCiAgICAgUGFnZSogcGFnZSA9IG1fbWVk
aWFFbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJl
dHVybiBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPigpOworICAgICAgICByZXR1cm4gVmVjdG9y
PFJlZlB0cjxUZXh0VHJhY2s+PigpOwogCiAgICAgQ2FwdGlvblVzZXJQcmVmZXJlbmNlcyogY2Fw
dGlvblByZWZlcmVuY2VzID0gcGFnZS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKTsKICAg
ICByZXR1cm4gY2FwdGlvblByZWZlcmVuY2VzLT5zb3J0ZWRUcmFja0xpc3RGb3JNZW51KHRyYWNr
TGlzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMv
TWVkaWFDb250cm9sc0hvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9s
cy9NZWRpYUNvbnRyb2xzSG9zdC5oCmluZGV4IGZjYThiZjYwYjFjNmYzMTkwMDZmMjA4ZjQxYTc5
OTIzMDIyMWUxZGYuLjAxNDc4YTNmMjFmNmRkNjFjNDBkMGNiZjc1ZmNhNjQyNjJiODZjYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRy
b2xzSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRp
YUNvbnRyb2xzSG9zdC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiBmb3JjZWRPbmx5S2V5d29yZCgpOwogICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIGFsd2F5c09uS2V5d29yZCgpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxUZXh0
VHJhY2s+ID4gc29ydGVkVHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0Kik7CisgICAgVmVj
dG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBzb3J0ZWRUcmFja0xpc3RGb3JNZW51KFRleHRUcmFja0xp
c3QqKTsKICAgICBTdHJpbmcgZGlzcGxheU5hbWVGb3JUcmFjayhUZXh0VHJhY2sqKTsKICAgICBU
ZXh0VHJhY2sqIGNhcHRpb25NZW51T2ZmSXRlbSgpOwogICAgIFRleHRUcmFjayogY2FwdGlvbk1l
bnVBdXRvbWF0aWNJdGVtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDY1OTg0NjY5OTE3ZWZjY2VjOGJkNDdhMWUwOTk0
NzkxZmY1ZjZlN2MuLmYxYjg1ZThiOGViZTkxN2M2Njg3Mzk0ODBiZTI3ZGI2ZDY5MTEwMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
Y3BwCkBAIC0xNzQsOSArMTc0LDkgQEAgdm9pZCBNZWRpYVNvdXJjZTo6b25SZWFkeVN0YXRlQ2hh
bmdlKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkU3RhdGUsIGNvbnN0IEF0b21pY1MKICAgICBzY2hl
ZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5zb3VyY2VjbG9zZUV2ZW50KTsKIH0KIAotVmVjdG9yPFJl
ZlB0cjxUaW1lUmFuZ2VzPiA+IE1lZGlhU291cmNlOjphY3RpdmVSYW5nZXMoKSBjb25zdAorVmVj
dG9yPFJlZlB0cjxUaW1lUmFuZ2VzPj4gTWVkaWFTb3VyY2U6OmFjdGl2ZVJhbmdlcygpIGNvbnN0
CiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxUaW1lUmFuZ2VzPiA+IGFjdGl2ZVJhbmdlcyhtX2FjdGl2
ZVNvdXJjZUJ1ZmZlcnMtPmxlbmd0aCgpKTsKKyAgICBWZWN0b3I8UmVmUHRyPFRpbWVSYW5nZXM+
PiBhY3RpdmVSYW5nZXMobV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5sZW5ndGgoKSk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPmxlbmd0aCgpOyArK2kp
CiAgICAgICAgIGFjdGl2ZVJhbmdlc1tpXSA9IG1fYWN0aXZlU291cmNlQnVmZmVycy0+aXRlbShp
KS0+YnVmZmVyZWQoQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAppbmRleCA4ZDYzODRlYjBhNzNhN2Vl
YWQ2OTE0MjY4MjE0MGY0ZmRiZGYyYzc2Li5mN2NlOGMxZmI1YmY4NmI4ZDM0NjczODIzNDZlYzk5
NWI0YzM1MDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZWRpYVNv
dXJjZUJhc2UgaW50ZXJmYWNlCiAgICAgdmlydHVhbCB2b2lkIG9uUmVhZHlTdGF0ZUNoYW5nZShj
b25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIFZlY3RvcjxSZWZQdHI8VGltZVJhbmdlcz4gPiBhY3RpdmVSYW5nZXMoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8VGltZVJhbmdlcz4+IGFjdGl2ZVJh
bmdlcygpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgUmVmUHRyPFNvdXJjZUJ1ZmZlckxpc3Q+IG1f
c291cmNlQnVmZmVyczsKICAgICBSZWZQdHI8U291cmNlQnVmZmVyTGlzdD4gbV9hY3RpdmVTb3Vy
Y2VCdWZmZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZUJhc2UuY3BwCmluZGV4IGYxNTAwZmQzZmE2M2FhOWZmYzdiYWMwZWYzNDZl
N2Q5MjY5NmY1OWMuLmY0NTdkMTg2YWNiNjFmMGI5NTY3NzI0NzEzNWYxNjFjMDk1MGRmMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291
cmNlQmFzZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1l
ZGlhU291cmNlQmFzZTo6YnVmZmVyZWQoKSBjb25zdAogewogICAgIC8vIEltcGxlbWVudHMgTWVk
aWFTb3VyY2UgYWxnb3JpdGhtIGZvciBIVE1MTWVkaWFFbGVtZW50LmJ1ZmZlcmVkLgogICAgIC8v
IGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9kZWZhdWx0L21lZGlh
LXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNodG1sbWVkaWFlbGVtZW50LWV4dGVuc2lvbnMKLSAg
ICBWZWN0b3I8UmVmUHRyPFRpbWVSYW5nZXM+ID4gcmFuZ2VzID0gYWN0aXZlUmFuZ2VzKCk7Cisg
ICAgVmVjdG9yPFJlZlB0cjxUaW1lUmFuZ2VzPj4gcmFuZ2VzID0gYWN0aXZlUmFuZ2VzKCk7CiAK
ICAgICAvLyAxLiBJZiBhY3RpdmVTb3VyY2VCdWZmZXJzLmxlbmd0aCBlcXVhbHMgMCB0aGVuIHJl
dHVybiBhbiBlbXB0eSBUaW1lUmFuZ2VzIG9iamVjdCBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAg
ICAgaWYgKHJhbmdlcy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZUJhc2UuaAppbmRleCA1YmU1YzliMTQwOTM2MmUwNzk5
MDg4ZjJjYTM2ZDQwZThiNzNiMWRhLi5iNTBhYjNiMGE0Y2RjMWFkZGU3NGRhODBjYjUwNzI4MmE2
M2M4YzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
TWVkaWFTb3VyY2VCYXNlLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHJvdGVjdGVkOgogICAgIGV4cGxp
Y2l0IE1lZGlhU291cmNlQmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgb25SZWFkeVN0YXRlQ2hhbmdlKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkU3RhdGUs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmV3U3RhdGUpID0gMDsKLSAgICB2aXJ0dWFsIFZlY3RvcjxS
ZWZQdHI8VGltZVJhbmdlcz4gPiBhY3RpdmVSYW5nZXMoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBWZWN0b3I8UmVmUHRyPFRpbWVSYW5nZXM+PiBhY3RpdmVSYW5nZXMoKSBjb25zdCA9IDA7CiAK
ICAgICBQYXNzT3duUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+IGNyZWF0ZVNvdXJjZUJ1ZmZlclBy
aXZhdGUoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBNZWRpYVNvdXJjZVByaXZhdGU6OkNvZGVj
c0FycmF5JiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2NoZWR1bGVFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmNwcAppbmRleCBhNjdlYzBm
Zjk4OWFkZTZlYWQwMDMxNzMyYzY5NmM4NTViOWExYjU3Li5mZGJlNTJhYzNiOWI1OTUxM2VhMzdj
OTZjMDBlN2UwNTMzY2ZkNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAKQEAgLTU5LDcgKzU5LDcg
QEAgdm9pZCBNZWRpYVNvdXJjZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTChTZWN1cml0eU9yaWdpbios
IGNvbnN0IFVSTCYgdXJsLCBVUkxSZWdpc3QKIHZvaWQgTWVkaWFTb3VyY2VSZWdpc3RyeTo6dW5y
ZWdpc3RlclVSTChjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8TWVkaWFTb3VyY2VCYXNlPiA+OjppdGVyYXRv
ciBpdGVyID0gbV9tZWRpYVNvdXJjZXMuZmluZCh1cmwuc3RyaW5nKCkpOworICAgIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8TWVkaWFTb3VyY2VCYXNlPj46Oml0ZXJhdG9yIGl0ZXIgPSBtX21lZGlh
U291cmNlcy5maW5kKHVybC5zdHJpbmcoKSk7CiAgICAgaWYgKGl0ZXIgPT0gbV9tZWRpYVNvdXJj
ZXMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaAppbmRleCA3OGQyN2Uw
MDY1YzQ3MWNjNzVjYWQyYmQ4MjJhYmY3MGNkMDYzMWFjLi4wOWQzNmU3YjIyOTIxZWQ5NGEzYTFm
YjFlYjdhOWIwZWM5M2YyZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaApAQCAtNTUsNyArNTUsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWVkaWFTb3VyY2VSZWdpc3RyeSgpOwotICAgIEhhc2hN
YXA8U3RyaW5nLCBSZWZQdHI8TWVkaWFTb3VyY2VCYXNlPiA+IG1fbWVkaWFTb3VyY2VzOworICAg
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8TWVkaWFTb3VyY2VCYXNlPj4gbV9tZWRpYVNvdXJjZXM7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5oCmluZGV4IDA5MDUxMzdkNDA5
MGQyMTFiN2JjZTg0OTRhNjdhZDMyZmUxYTZhYTQuLjk0NGFkN2U1YzhiY2ZhNjZjZWM0MDAyMGIw
NWRlMmZhODlmODc0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAg
IEdlbmVyaWNFdmVudFF1ZXVlIG1fYXN5bmNFdmVudFF1ZXVlOwogCi0gICAgVmVjdG9yPFJlZlB0
cjxTb3VyY2VCdWZmZXI+ID4gbV9saXN0OworICAgIFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVy
Pj4gbV9saXN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRNZWRpYVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdE1lZGlhU291cmNlLmNwcApp
bmRleCBlOWRlMjNmOTQzN2M0OTQxM2JjNTBkNzMwYTAxODhjYTU2ZmQzZjM4Li44ZjYxYmYzOWQ4
MDMyY2ViOTllNDZjMzdkMzYzZmFhYzZkZjNlYjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdE1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdE1lZGlhU291cmNlLmNwcApAQCAtMTY2
LDkgKzE2Niw5IEBAIHZvaWQgV2ViS2l0TWVkaWFTb3VyY2U6Om9uUmVhZHlTdGF0ZUNoYW5nZShj
b25zdCBBdG9taWNTdHJpbmcmIG9sZFN0YXRlLCBjb25zdCBBCiAgICAgfQogfQogCi1WZWN0b3I8
UmVmUHRyPFRpbWVSYW5nZXM+ID4gV2ViS2l0TWVkaWFTb3VyY2U6OmFjdGl2ZVJhbmdlcygpIGNv
bnN0CitWZWN0b3I8UmVmUHRyPFRpbWVSYW5nZXM+PiBXZWJLaXRNZWRpYVNvdXJjZTo6YWN0aXZl
UmFuZ2VzKCkgY29uc3QKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFRpbWVSYW5nZXM+ID4gYWN0aXZl
UmFuZ2VzKG1fYWN0aXZlU291cmNlQnVmZmVycy0+bGVuZ3RoKCkpOworICAgIFZlY3RvcjxSZWZQ
dHI8VGltZVJhbmdlcz4+IGFjdGl2ZVJhbmdlcyhtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPmxlbmd0
aCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWN0aXZlU291cmNlQnVmZmVycy0+
bGVuZ3RoKCk7ICsraSkKICAgICAgICAgYWN0aXZlUmFuZ2VzW2ldID0gbV9hY3RpdmVTb3VyY2VC
dWZmZXJzLT5pdGVtKGkpLT5idWZmZXJlZChBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRNZWRpYVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRNZWRpYVNvdXJj
ZS5oCmluZGV4IDY4N2YyM2JiNmRmMWZkMDkwOTk2NWFjYjA1NmZhOWYzOTk5ZjRjMWEuLmMwZDIy
MDViMDI4NzMzNDQyNjIzOTNiY2M1YzYxMzllNjEyOWIyYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvV2ViS2l0TWVkaWFTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdE1lZGlhU291cmNlLmgKQEAgLTY0
LDcgKzY0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lZGlhU291cmNlQmFzZSBpbnRlcmZhY2UK
ICAgICB2aXJ0dWFsIHZvaWQgb25SZWFkeVN0YXRlQ2hhbmdlKGNvbnN0IEF0b21pY1N0cmluZyYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0
cjxUaW1lUmFuZ2VzPiA+IGFjdGl2ZVJhbmdlcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgVmVjdG9yPFJlZlB0cjxUaW1lUmFuZ2VzPj4gYWN0aXZlUmFuZ2VzKCkgY29uc3QgT1ZFUlJJ
REU7CiAKICAgICBHZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKICAgICBSZWZQ
dHI8V2ViS2l0U291cmNlQnVmZmVyTGlzdD4gbV9zb3VyY2VCdWZmZXJzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9XZWJLaXRTb3VyY2VCdWZmZXJMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZl
ckxpc3QuaAppbmRleCAxOGE1NjQwZmJmYTVmODlmMmQ5OTZhNDhhMTUyM2I4MmIzNzQ1MzMxLi5h
M2ViNWU3NDFhOGQ5OTJiNDY4YzhhZmI0NDM3NWM4NjUwMjMwMjliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZlckxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1dlYktpdFNvdXJjZUJ1ZmZl
ckxpc3QuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBHZW5lcmljRXZlbnRRdWV1ZSBt
X2FzeW5jRXZlbnRRdWV1ZTsKIAotICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0U291cmNlQnVmZmVy
PiA+IG1fbGlzdDsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYktpdFNvdXJjZUJ1ZmZlcj4+IG1fbGlz
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggOTQyNDk5OTI3NzE0NTcy
OTBkZjY4MjIwODdjNjZjMzFkZmZjMjY2OS4uN2U3ZTkzOGNmZWYyYTdkYThjY2RmYzIxNTRmZGYw
ZTFjZGFkYWE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKQEAgLTMzMSwxMCArMzMxLDEwIEBAIHZvaWQgTWVkaWFTdHJlYW06
OnNjaGVkdWxlRGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKIAogdm9pZCBN
ZWRpYVN0cmVhbTo6c2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKFRpbWVyPE1lZGlhU3RyZWFtPiop
CiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBldmVudHM7CisgICAgVmVjdG9yPFJlZlB0
cjxFdmVudD4+IGV2ZW50czsKICAgICBldmVudHMuc3dhcChtX3NjaGVkdWxlZEV2ZW50cyk7CiAK
LSAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+OjppdGVyYXRvciBpdCA9IGV2ZW50cy5iZWdpbigp
OworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+Pjo6aXRlcmF0b3IgaXQgPSBldmVudHMuYmVnaW4o
KTsKICAgICBmb3IgKDsgaXQgIT0gZXZlbnRzLmVuZCgpOyArK2l0KQogICAgICAgICBkaXNwYXRj
aEV2ZW50KCgqaXQpLnJlbGVhc2UoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAppbmRleCBiNDI4Yzc3ZTM1M2FlM2Y1Y2QyY2ZlZjI5
N2YwNGRkMWY4ZDhhZmI1Li5mYzQzMzkxNjk3YzYzYWZkNjc2ZDJiMGE2NmQxYzc0NjBkNGEzMmU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS5oCkBAIC0xMTEsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50
Pj4gbV9zY2hlZHVsZWRFdmVudHM7CiB9OwogCi10eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVkaWFT
dHJlYW0+ID4gTWVkaWFTdHJlYW1WZWN0b3I7Cit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVkaWFT
dHJlYW0+PiBNZWRpYVN0cmVhbVZlY3RvcjsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1SZWdpc3RyeS5oCmluZGV4IGU0NmMyYjJkY2QwYWE1OTgyNGY1ZWEyNzVjZDcwY2Q1NzE2NDU5
MDkuLmYzMDQ0Njc0YWZhMDE4ZmI2MzhlMjg4N2E2ZjU3YTE0YzJmNTQ2NmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdp
c3RyeS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0
b3IqIGxvb2t1cE1lZGlhU3RyZWFtRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHVybCk7CiAKIHBy
aXZhdGU6Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+
ID4gbV9zdHJlYW1EZXNjcmlwdG9yczsKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPE1lZGlh
U3RyZWFtRGVzY3JpcHRvcj4+IG1fc3RyZWFtRGVzY3JpcHRvcnM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IGI1ZGFiZDAwODk3YjRmOTg2NDBjYjU5YWUyYWZj
MGNmNTA1M2FhMGYuLjNhNDQ4MmUxMDAzYmRjMDkxZTdiYmYwZWE2YzY4YjgwYzZkNDZmNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5oCkBAIC0xMzAsNyArMTMwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZXZlbnRE
aXNwYXRjaFNjaGVkdWxlZDsKIH07CiAKLXR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPiA+IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3I7Cit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4+IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3I7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEVE1GU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRFRNRlNlbmRlci5jcHAKaW5kZXggZDYxYTE2NWFhOTExZDc4YzU5ODhhYTNkZDRmZDQ5
ZmZiNGU0MzRkYy4uZDM2NWM1ZWVkNjc3MjI5YjI5NjM3MTVlMzYzYjVkM2Q0Y2RlMTk4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5k
ZXIuY3BwCkBAIC0xNDcsMTAgKzE0NywxMCBAQCB2b2lkIFJUQ0RUTUZTZW5kZXI6OnNjaGVkdWxl
ZEV2ZW50VGltZXJGaXJlZChUaW1lcjxSVENEVE1GU2VuZGVyPiopCiAgICAgaWYgKG1fc3RvcHBl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBldmVudHM7
CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+IGV2ZW50czsKICAgICBldmVudHMuc3dhcChtX3Nj
aGVkdWxlZEV2ZW50cyk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+OjppdGVyYXRvciBp
dCA9IGV2ZW50cy5iZWdpbigpOworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+Pjo6aXRlcmF0b3Ig
aXQgPSBldmVudHMuYmVnaW4oKTsKICAgICBmb3IgKDsgaXQgIT0gZXZlbnRzLmVuZCgpOyArK2l0
KQogICAgICAgICBkaXNwYXRjaEV2ZW50KCgqaXQpLnJlbGVhc2UoKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oCmluZGV4IDZi
N2IwNGI4ODVlOWNlYTY1ZTVlYTg3MDYzMWJiMzM0ZGEwYWEyOGQuLmI1ZjExZjQ0ODZlZWQxOTRl
M2NhZTcyNzllZjhmZTM5NzYyMWE5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oCkBAIC05MCw3ICs5MCw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3N0b3BwZWQ7CiAKICAgICBUaW1lcjxSVENEVE1GU2VuZGVyPiBtX3NjaGVk
dWxlZEV2ZW50VGltZXI7Ci0gICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX3NjaGVkdWxlZEV2
ZW50czsKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50Pj4gbV9zY2hlZHVsZWRFdmVudHM7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IDk3YzY0MTVhNjMwM2Y3ODNh
NWY2YTY3MjA5ZWZiMzRhNTExYTM1MDUuLmExZTBiNTYzOTAxMDM2NWZjOTQ2NmFlNWNhODhjMDEx
MWYyMzhlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRGF0YUNoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuY3BwCkBAIC0zMDYsMTAgKzMwNiwxMCBAQCB2b2lkIFJUQ0RhdGFD
aGFubmVsOjpzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoVGltZXI8UlRDRGF0YUNoYW5uZWw+KikK
ICAgICBpZiAobV9zdG9wcGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8UmVmUHRy
PEV2ZW50PiA+IGV2ZW50czsKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50Pj4gZXZlbnRzOwogICAg
IGV2ZW50cy5zd2FwKG1fc2NoZWR1bGVkRXZlbnRzKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8RXZl
bnQ+ID46Oml0ZXJhdG9yIGl0ID0gZXZlbnRzLmJlZ2luKCk7CisgICAgVmVjdG9yPFJlZlB0cjxF
dmVudD4+OjppdGVyYXRvciBpdCA9IGV2ZW50cy5iZWdpbigpOwogICAgIGZvciAoOyBpdCAhPSBl
dmVudHMuZW5kKCk7ICsraXQpCiAgICAgICAgIGRpc3BhdGNoRXZlbnQoKCppdCkucmVsZWFzZSgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENE
YXRhQ2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbC5oCmluZGV4IDUxMDE3ZjgzMTAyYmFmOWY3YzZlOWUzOTgzNDBiZDA5NDQ4NWU2N2Eu
LmZlMTllOGU2ZmYzMDcwMjZmZjUwZjY4YWJiNjRjZTk2NWJhYWU4ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgKQEAgLTEx
NSw3ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIEJpbmFyeVR5cGUgbV9iaW5hcnlUeXBlOwogCiAg
ICAgVGltZXI8UlRDRGF0YUNoYW5uZWw+IG1fc2NoZWR1bGVkRXZlbnRUaW1lcjsKLSAgICBWZWN0
b3I8UmVmUHRyPEV2ZW50PiA+IG1fc2NoZWR1bGVkRXZlbnRzOworICAgIFZlY3RvcjxSZWZQdHI8
RXZlbnQ+PiBtX3NjaGVkdWxlZEV2ZW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi5jcHAKaW5kZXggMDUxZTBkZGE1YWQyMTY1NjZlYjI0ZTkxZGRjY2Y3ZmJhZTY0
NmU3Mi4uMGM3NjhkMzAxNDVjMmNjMmU3ZTk1NDdlMGYxMzU5OGRjNTkzOTM4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi5jcHAKQEAgLTU5NSw3ICs1OTUsNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpzdG9w
KCkKICAgICBtX2ljZUNvbm5lY3Rpb25TdGF0ZSA9IEljZUNvbm5lY3Rpb25TdGF0ZUNsb3NlZDsK
ICAgICBtX3NpZ25hbGluZ1N0YXRlID0gU2lnbmFsaW5nU3RhdGVDbG9zZWQ7CiAKLSAgICBWZWN0
b3I8UmVmUHRyPFJUQ0RhdGFDaGFubmVsPiA+OjppdGVyYXRvciBpID0gbV9kYXRhQ2hhbm5lbHMu
YmVnaW4oKTsKKyAgICBWZWN0b3I8UmVmUHRyPFJUQ0RhdGFDaGFubmVsPj46Oml0ZXJhdG9yIGkg
PSBtX2RhdGFDaGFubmVscy5iZWdpbigpOwogICAgIGZvciAoOyBpICE9IG1fZGF0YUNoYW5uZWxz
LmVuZCgpOyArK2kpCiAgICAgICAgICgqaSktPnN0b3AoKTsKIH0KQEAgLTYzNCwxMCArNjM0LDEw
IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZChUaW1l
cjxSVENQZWVyQ29ubmVjdGlvbj4qKQogICAgIGlmIChtX3N0b3BwZWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gZXZlbnRzOworICAgIFZlY3RvcjxSZWZQ
dHI8RXZlbnQ+PiBldmVudHM7CiAgICAgZXZlbnRzLnN3YXAobV9zY2hlZHVsZWRFdmVudHMpOwog
Ci0gICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPjo6aXRlcmF0b3IgaXQgPSBldmVudHMuYmVnaW4o
KTsKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50Pj46Oml0ZXJhdG9yIGl0ID0gZXZlbnRzLmJlZ2lu
KCk7CiAgICAgZm9yICg7IGl0ICE9IGV2ZW50cy5lbmQoKTsgKytpdCkKICAgICAgICAgZGlzcGF0
Y2hFdmVudCgoKml0KS5yZWxlYXNlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggNDk2ZTJmMGU4YTkw
MmJjNDMwZDU5NGQ4MDdiNzNkMThiNGYzNjQ1MS4uMmM3N2FjNTUwMDczNjRlZmM4OTY1YTU0ZWU1
NmFhY2FlZTUwYzI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtMTUyLDEyICsxNTIsMTIgQEAgcHJpdmF0
ZToKICAgICBNZWRpYVN0cmVhbVZlY3RvciBtX2xvY2FsU3RyZWFtczsKICAgICBNZWRpYVN0cmVh
bVZlY3RvciBtX3JlbW90ZVN0cmVhbXM7CiAKLSAgICBWZWN0b3I8UmVmUHRyPFJUQ0RhdGFDaGFu
bmVsPiA+IG1fZGF0YUNoYW5uZWxzOworICAgIFZlY3RvcjxSZWZQdHI8UlRDRGF0YUNoYW5uZWw+
PiBtX2RhdGFDaGFubmVsczsKIAogICAgIE93blB0cjxSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI+
IG1fcGVlckhhbmRsZXI7CiAKICAgICBUaW1lcjxSVENQZWVyQ29ubmVjdGlvbj4gbV9zY2hlZHVs
ZWRFdmVudFRpbWVyOwotICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9zY2hlZHVsZWRFdmVu
dHM7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+IG1fc2NoZWR1bGVkRXZlbnRzOwogCiAgICAg
Ym9vbCBtX3N0b3BwZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaAppbmRleCBkOGE0MWY1ZjZmZmE1YjY0MTRjNGRk
MWRkMjFmMGU0NDg4ZDk4MmZhLi5kOWUwY2Q2ZDIzNTQwYzQyZGRmOWYyYmVmM2U5YjRlNzc1YjA4
NjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0
YXRzUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1N0YXRzUmVzcG9uc2UuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBSVENTdGF0c1Jlc3BvbnNl
IDogcHVibGljIFJUQ1N0YXRzUmVzcG9uc2VCYXNlLCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENTdGF0c1Jlc3BvbnNlPiBjcmVhdGUo
KTsKIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRDU3RhdHNSZXBvcnQ+ID4mIHJlc3VsdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0OyB9OworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRD
U3RhdHNSZXBvcnQ+PiYgcmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHQ7IH07CiAKICAg
ICBQYXNzUmVmUHRyPFJUQ1N0YXRzUmVwb3J0PiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5n
Jik7CiAgICAgYm9vbCBjYW5HZXRJdGVtc0Zvck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJik7CkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBSVENTdGF0c1Jlc3BvbnNl
KCk7Ci0gICAgVmVjdG9yPFJlZlB0cjxSVENTdGF0c1JlcG9ydD4gPiBtX3Jlc3VsdDsKKyAgICBW
ZWN0b3I8UmVmUHRyPFJUQ1N0YXRzUmVwb3J0Pj4gbV9yZXN1bHQ7CiAgICAgSGFzaE1hcDxTdHJp
bmcsIGludD4gbV9pZG1hcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAppbmRleCA0NTY3M2ViZmUxOGY5YTJmZmExNjcw
ZDA0MmU2YjdlNGVkMTgwY2ZiLi5mNmZmNmNmOGI0NWJiYjJjNDU5N2U1M2VhZjNlODk5MTI4MjBk
OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5oCkBAIC0xODEsNyArMTgxLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm90
aWZpY2F0aW9uQ2VudGVyPiBtX25vdGlmaWNhdGlvbkNlbnRlcjsKIAogI2lmIEVOQUJMRShOT1RJ
RklDQVRJT05TKQotICAgIE93blB0cjxUaW1lcjxOb3RpZmljYXRpb24+ID4gbV90YXNrVGltZXI7
CisgICAgT3duUHRyPFRpbWVyPE5vdGlmaWNhdGlvbj4+IG1fdGFza1RpbWVyOwogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ2VudGVyLmgKaW5kZXggNThkMDgzMjIzZjMxMDE2NDMyMjdlMDU5MTRjOTk5
ZWY4NWQ3NTI5Ni4uZTdjZDI2Y2FmNmFkMWVlMTU0YmIyY2UzOWI5N2RlZGMyOTY3ZGFlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNlbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuaApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVx
dWVzdFRpbWVkT3V0KE5vdGlmaWNhdGlvblJlcXVlc3RDYWxsYmFjayopOwogCiAgICAgTm90aWZp
Y2F0aW9uQ2xpZW50KiBtX2NsaWVudDsKLSAgICBIYXNoU2V0PFJlZlB0cjxOb3RpZmljYXRpb25S
ZXF1ZXN0Q2FsbGJhY2s+ID4gbV9jYWxsYmFja3M7CisgICAgSGFzaFNldDxSZWZQdHI8Tm90aWZp
Y2F0aW9uUmVxdWVzdENhbGxiYWNrPj4gbV9jYWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVl
Y2hTeW50aGVzaXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3lu
dGhlc2lzLmNwcAppbmRleCBiYWQ4MmRhOGMxMTk2MjQzMTY1ZjA1ZWYyN2VjODExZTBlZGQ1OGM4
Li5lNDU2MzJhOTQ0MWFlNmMyNTA0MjEyYjYwODg2MjRmYTM2Y2RiOWI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgdm9pZCBTcGVlY2hTeW50aGVzaXM6OnZvaWNlc0RpZENoYW5nZSgpCiAgICAgbV92
b2ljZUxpc3QuY2xlYXIoKTsKIH0KICAgICAKLWNvbnN0IFZlY3RvcjxSZWZQdHI8U3BlZWNoU3lu
dGhlc2lzVm9pY2U+ID4mIFNwZWVjaFN5bnRoZXNpczo6Z2V0Vm9pY2VzKCkKK2NvbnN0IFZlY3Rv
cjxSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+PiYgU3BlZWNoU3ludGhlc2lzOjpnZXRWb2lj
ZXMoKQogewogICAgIGlmIChtX3ZvaWNlTGlzdC5zaXplKCkpCiAgICAgICAgIHJldHVybiBtX3Zv
aWNlTGlzdDsKQEAgLTcwLDcgKzcwLDcgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxTcGVlY2hTeW50
aGVzaXNWb2ljZT4gPiYgU3BlZWNoU3ludGhlc2lzOjpnZXRWb2ljZXMoKQogICAgICAgICBtX3Bs
YXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgPSBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjpjcmVh
dGUodGhpcyk7CiAKICAgICAvLyBJZiB0aGUgdm9pY2VMaXN0IGlzIGVtcHR5LCB0aGF0J3MgdGhl
IGN1ZSB0byBnZXQgdGhlIHZvaWNlcyBmcm9tIHRoZSBwbGF0Zm9ybSBhZ2Fpbi4KLSAgICBjb25z
dCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+ID4mIHBsYXRmb3Jt
Vm9pY2VzID0gbV9wbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyLT52b2ljZUxpc3QoKTsKKyAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+PiYgcGxhdGZv
cm1Wb2ljZXMgPSBtX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXItPnZvaWNlTGlzdCgpOwogICAg
IHNpemVfdCB2b2ljZUNvdW50ID0gcGxhdGZvcm1Wb2ljZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6
ZV90IGsgPSAwOyBrIDwgdm9pY2VDb3VudDsgaysrKQogICAgICAgICBtX3ZvaWNlTGlzdC5hcHBl
bmQoU3BlZWNoU3ludGhlc2lzVm9pY2U6OmNyZWF0ZShwbGF0Zm9ybVZvaWNlc1trXSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaAppbmRleCA1
MzkzZGZlZmEyNTRhMGRiZWVhMmNhMmE1ZWFjYWE1ZmViN2U4YWZmLi45Yzc4N2EwNzNhMWIxY2Mw
ZWU1NzY2NzRkYzk1ZDUzZWM5ODBiODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hTeW50aGVzaXMuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwYXVzZSgpOwogICAgIHZvaWQgcmVzdW1lKCk7CiAgICAgCi0gICAgY29uc3QgVmVjdG9y
PFJlZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gPiYgZ2V0Vm9pY2VzKCk7CisgICAgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4+JiBnZXRWb2ljZXMoKTsKICAgICAK
ICAgICAvLyBVc2VkIGluIHRlc3RpbmcgdG8gdXNlIGEgbW9jayBwbGF0Zm9ybSBzeW50aGVzaXpl
cgogICAgIHZvaWQgc2V0UGxhdGZvcm1TeW50aGVzaXplcihQYXNzT3duUHRyPFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2l6ZXI+KTsKQEAgLTc3LDkgKzc3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZp
cmVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZSosIHVuc2lnbmVkIGxvbmcgY2hhckluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIAog
ICAgIE93blB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPiBtX3BsYXRmb3JtU3BlZWNoU3lu
dGhlc2l6ZXI7Ci0gICAgVmVjdG9yPFJlZlB0cjxTcGVlY2hTeW50aGVzaXNWb2ljZT4gPiBtX3Zv
aWNlTGlzdDsKKyAgICBWZWN0b3I8UmVmUHRyPFNwZWVjaFN5bnRoZXNpc1ZvaWNlPj4gbV92b2lj
ZUxpc3Q7CiAgICAgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiBtX2N1cnJlbnRTcGVlY2hVdHRl
cmFuY2U7Ci0gICAgRGVxdWU8UmVmUHRyPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gPiBtX3V0
dGVyYW5jZVF1ZXVlOworICAgIERlcXVlPFJlZlB0cjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+
PiBtX3V0dGVyYW5jZVF1ZXVlOwogICAgIGJvb2wgbV9pc1BhdXNlZDsKIH07CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmgKaW5kZXggMWNhNjc2
NmJjOTllMmEyYWYzOTk4ZTJmZGU5ODdhMDk0YjFlZTA5ZC4uZDUyYzAyODA1YjFjZjE4NDE0Zjgz
ZGQyZjM1NWZiNzMzN2M4MThkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXIuaApAQCAtNzgsNyArNzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgZmxvYXQg
bV9zYW1wbGVSYXRlOwogICAgIHNpemVfdCBtX2xlbmd0aDsKIAotICAgIFZlY3RvcjxSZWZQdHI8
RmxvYXQzMkFycmF5PiA+IG1fY2hhbm5lbHM7CisgICAgVmVjdG9yPFJlZlB0cjxGbG9hdDMyQXJy
YXk+PiBtX2NoYW5uZWxzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgKaW5kZXggNjRlYWUyYmE3MDQ2NGVi
OTQ1ZWRjOTRhOTQzMDAxZjYyNDc1OTFjNC4uYmE2NjM0MjY3NzdmMzBmNGM3NTRjZDNjZmZjY2Mx
MTViNTQ3MzkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9k
ZS5oCkBAIC0yMDEsOCArMjAxLDggQEAgcHJpdmF0ZToKICAgICBOb2RlVHlwZSBtX25vZGVUeXBl
OwogICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IG1fY29udGV4dDsKICAgICBmbG9hdCBtX3NhbXBs
ZVJhdGU7Ci0gICAgVmVjdG9yPE93blB0cjxBdWRpb05vZGVJbnB1dD4gPiBtX2lucHV0czsKLSAg
ICBWZWN0b3I8T3duUHRyPEF1ZGlvTm9kZU91dHB1dD4gPiBtX291dHB1dHM7CisgICAgVmVjdG9y
PE93blB0cjxBdWRpb05vZGVJbnB1dD4+IG1faW5wdXRzOworICAgIFZlY3RvcjxPd25QdHI8QXVk
aW9Ob2RlT3V0cHV0Pj4gbV9vdXRwdXRzOwogCiAgICAgZG91YmxlIG1fbGFzdFByb2Nlc3NpbmdU
aW1lOwogICAgIGRvdWJsZSBtX2xhc3ROb25TaWxlbnRUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgKaW5kZXggYWZmNDc1ZmI5ZDg1
YWU2OTI3OGE5ZGI2MmE2ODQxYmY5ZDZmNTM4Yy4uZWNlMzFlNGVmODg5Yjc1NDA1YzUwNjgwZmMx
NDIxNDY4Njc4NDU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb05vZGVPdXRwdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZU91dHB1dC5oCkBAIC0xNDQsOCArMTQ0LDggQEAgcHJpdmF0ZToKICAgICB1bnNp
Z25lZCBtX3JlbmRlcmluZ0Zhbk91dENvdW50OwogICAgIHVuc2lnbmVkIG1fcmVuZGVyaW5nUGFy
YW1GYW5PdXRDb3VudDsKIAotICAgIEhhc2hTZXQ8UmVmUHRyPEF1ZGlvUGFyYW0+ID4gbV9wYXJh
bXM7Ci0gICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxBdWRpb1BhcmFtPiA+OjppdGVyYXRvciBQ
YXJhbXNJdGVyYXRvcjsKKyAgICBIYXNoU2V0PFJlZlB0cjxBdWRpb1BhcmFtPj4gbV9wYXJhbXM7
CisgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxBdWRpb1BhcmFtPj46Oml0ZXJhdG9yIFBhcmFt
c0l0ZXJhdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5j
cHAKaW5kZXggZWE0ZjI3Y2FkZWNhNWExNDE3MDE5YWNhM2JkMjdmYWVlYTNlNjgzYi4uMTFmNDk2
NTk3ZTFiZWVmOTBmNTZiMzU0YWJiNzYyZmNkNzdkMjlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3Bw
CkBAIC04MiwxNCArODIsMTQgQEAgYm9vbCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpyZW1vdmVB
dWRpb0NvbnN1bWVyKEF1ZGlvRGVzdGluYXRpb25Db25zdW1lciogY29uc3UKIHZvaWQgTWVkaWFT
dHJlYW1BdWRpb1NvdXJjZTo6c2V0QXVkaW9Gb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMs
IGZsb2F0IHNhbXBsZVJhdGUpCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXVkaW9Db25z
dW1lcnNMb2NrKTsKLSAgICBmb3IgKFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1
bWVyPiA+OjppdGVyYXRvciBpdCA9IG1fYXVkaW9Db25zdW1lcnMuYmVnaW4oKTsgaXQgIT0gbV9h
dWRpb0NvbnN1bWVycy5lbmQoKTsgKytpdCkKKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8QXVkaW9E
ZXN0aW5hdGlvbkNvbnN1bWVyPj46Oml0ZXJhdG9yIGl0ID0gbV9hdWRpb0NvbnN1bWVycy5iZWdp
bigpOyBpdCAhPSBtX2F1ZGlvQ29uc3VtZXJzLmVuZCgpOyArK2l0KQogICAgICAgICAoKml0KS0+
c2V0Rm9ybWF0KG51bWJlck9mQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOwogfQogCiB2b2lkIE1lZGlh
U3RyZWFtQXVkaW9Tb3VyY2U6OmNvbnN1bWVBdWRpbyhBdWRpb0J1cyogYnVzLCBzaXplX3QgbnVt
YmVyT2ZGcmFtZXMpCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fYXVkaW9Db25zdW1lcnNM
b2NrKTsKLSAgICBmb3IgKFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyPiA+
OjppdGVyYXRvciBpdCA9IG1fYXVkaW9Db25zdW1lcnMuYmVnaW4oKTsgaXQgIT0gbV9hdWRpb0Nv
bnN1bWVycy5lbmQoKTsgKytpdCkKKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8QXVkaW9EZXN0aW5h
dGlvbkNvbnN1bWVyPj46Oml0ZXJhdG9yIGl0ID0gbV9hdWRpb0NvbnN1bWVycy5iZWdpbigpOyBp
dCAhPSBtX2F1ZGlvQ29uc3VtZXJzLmVuZCgpOyArK2l0KQogICAgICAgICAoKml0KS0+Y29uc3Vt
ZUF1ZGlvKGJ1cywgbnVtYmVyT2ZGcmFtZXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGljV2F2ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9QZXJpb2RpY1dhdmUuaAppbmRleCAxMjQzZDkwODBkMmRjZWU2NmMwNjNi
ZDg3MTc4OTZjNDJhMWJkZmYzLi5lNDQ4NTA2YTdkNjk5OTk4M2YzOGQ5NWQwYWJmYmE0MjFhZjZk
MzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1BlcmlvZGlj
V2F2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGVyaW9kaWNXYXZl
LmgKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENyZWF0ZXMgdGFibGVzIGJh
c2VkIG9uIG51bWJlck9mQ29tcG9uZW50cyBGb3VyaWVyIGNvZWZmaWNpZW50cy4KICAgICB2b2lk
IGNyZWF0ZUJhbmRMaW1pdGVkVGFibGVzKGNvbnN0IGZsb2F0KiByZWFsLCBjb25zdCBmbG9hdCog
aW1hZywgdW5zaWduZWQgbnVtYmVyT2ZDb21wb25lbnRzKTsKLSAgICBWZWN0b3I8T3duUHRyPEF1
ZGlvRmxvYXRBcnJheT4gPiBtX2JhbmRMaW1pdGVkVGFibGVzOworICAgIFZlY3RvcjxPd25QdHI8
QXVkaW9GbG9hdEFycmF5Pj4gbV9iYW5kTGltaXRlZFRhYmxlczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
U2NyaXB0UHJvY2Vzc29yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9T
Y3JpcHRQcm9jZXNzb3JOb2RlLmgKaW5kZXggODg1M2NlZjU4NjM4ODc3NzViZWNkNWQ1MzIxNGNi
MjZkOTBiNWQyNi4uMjNkMGExYjg4YzEyYzliZTA4NWFiOWI1ZmU1MzNiMWMzODg5OTU3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmgKQEAgLTgyLDggKzgyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3YXBCdWZmZXJz
KCkgeyBtX2RvdWJsZUJ1ZmZlckluZGV4ID0gMSAtIG1fZG91YmxlQnVmZmVySW5kZXg7IH0KICAg
ICB1bnNpZ25lZCBtX2RvdWJsZUJ1ZmZlckluZGV4OwogICAgIHVuc2lnbmVkIG1fZG91YmxlQnVm
ZmVySW5kZXhGb3JFdmVudDsKLSAgICBWZWN0b3I8UmVmUHRyPEF1ZGlvQnVmZmVyPiA+IG1faW5w
dXRCdWZmZXJzOwotICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9CdWZmZXI+ID4gbV9vdXRwdXRCdWZm
ZXJzOworICAgIFZlY3RvcjxSZWZQdHI8QXVkaW9CdWZmZXI+PiBtX2lucHV0QnVmZmVyczsKKyAg
ICBWZWN0b3I8UmVmUHRyPEF1ZGlvQnVmZmVyPj4gbV9vdXRwdXRCdWZmZXJzOwogCiAgICAgc2l6
ZV90IG1fYnVmZmVyU2l6ZTsKICAgICB1bnNpZ25lZCBtX2J1ZmZlclJlYWRXcml0ZUluZGV4Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERh
dGFiYXNlU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3Ry
YWN0RGF0YWJhc2VTZXJ2ZXIuaAppbmRleCBmZGJkYzU3YTc2MDZlZTFkMWVkMzk1MjNmM2UzODE2
MmM3ZjNmOTJkLi41NmM3NDI1MmNkM2YwOWQyYjI2MTQ3MmY2YzFkZjk0OGIzNmZlZTIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJh
c2VTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3Ry
YWN0RGF0YWJhc2VTZXJ2ZXIuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGJv
b2wgc2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIERhdGFiYXNlRXJyb3ImLCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgT3BlbkF0dGVtcHQgPSBGaXJzdFRyeVRvT3BlbkRhdGFiYXNlKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaGFzRW50cnlGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIG9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiYg
cmVzdWx0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+JiByZXN1bHQpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGF0YWJhc2VOYW1l
c0Zvck9yaWdpbihTZWN1cml0eU9yaWdpbiosIFZlY3RvcjxTdHJpbmc+JiByZXN1bHQpID0gMDsK
ICAgICB2aXJ0dWFsIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25z
dCBTdHJpbmcmLCBTZWN1cml0eU9yaWdpbiopID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmgKaW5kZXggYTNiMGFiZTc0
YWUyNmEzYmM1ZmU2ZGNiM2NhM2IwNWMyYmI0ODMwYS4uODUwNmU3MzFmZWNjZjBmYWFiZTE1MWIx
Y2NjZTg2MmI5OWY5YTI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHNjaGVkdWxlVHJhbnNhY3Rpb24oKTsKIAotICAgIERlcXVlPFJlZlB0cjxTUUxU
cmFuc2FjdGlvbkJhY2tlbmQ+ID4gbV90cmFuc2FjdGlvblF1ZXVlOworICAgIERlcXVlPFJlZlB0
cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+PiBtX3RyYW5zYWN0aW9uUXVldWU7CiAgICAgTXV0ZXgg
bV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleDsKICAgICBib29sIG1fdHJhbnNhY3Rpb25JblBy
b2dyZXNzOwogICAgIGJvb2wgbV9pc1RyYW5zYWN0aW9uUXVldWVFbmFibGVkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3Bw
CmluZGV4IGFmY2VhMTQzYTk2NzA1MWExNzE2MjFjOWVmNTdiNDllMmYxMjg1ZDQuLjc1ZmQxM2E3
ZGQwN2FkNTU3ZTE4NWU3ZGQzNjdkN2U3MWMyZjA1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTM1OSw3
ICszNTksNyBAQCBib29sIERhdGFiYXNlTWFuYWdlcjo6aGFzRW50cnlGb3JPcmlnaW4oU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbikKICAgICByZXR1cm4gbV9zZXJ2ZXItPmhhc0VudHJ5Rm9yT3JpZ2lu
KG9yaWdpbik7CiB9CiAKLXZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpvcmlnaW5zKFZlY3RvcjxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3VsdCkKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpvcmln
aW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgcmVzdWx0KQogewogICAgIG1fc2Vy
dmVyLT5vcmlnaW5zKHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAppbmRleCBmODY0ZTBiYmQ4YzFhODU3Mzcx
MDY5Mzc3MTIyMzAyMjAxMTg3OTRhLi4zODQxMzFjNTk1NDExNWViODAxYmIwNjhmMmUzZmMwZGVl
YzY1MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VNYW5hZ2VyLmgKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBm
dWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBi
b29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0ID0gdHJ1ZSk7CiAKICAgICBib29sIGhhc0VudHJ5Rm9y
T3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7Ci0gICAgdm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3VsdCk7CisgICAgdm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+PiYgcmVzdWx0KTsKICAgICBib29sIGRhdGFiYXNlTmFtZXNGb3JP
cmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KTsKICAgICBEYXRh
YmFzZURldGFpbHMgZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3QgU3RyaW5nJiwgU2VjdXJp
dHlPcmlnaW4qKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlU2VydmVyLmNwcAppbmRleCA5ZDkyNzA5ODFmODgwYjUxZGM5NjY3ZTY1N2Ji
NjdjNTFmOGYwYjI1Li43ZjJjYjNmOGViMWFhN2M1YzI0MDE3Yjc0YzM5ZDg5ZDNmMTgwODBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
U2VydmVyLmNwcApAQCAtNjcsNyArNjcsNyBAQCBib29sIERhdGFiYXNlU2VydmVyOjpoYXNFbnRy
eUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogICAgIHJldHVybiBEYXRhYmFzZVRy
YWNrZXI6OnRyYWNrZXIoKS5oYXNFbnRyeUZvck9yaWdpbihvcmlnaW4pOwogfQogCi12b2lkIERh
dGFiYXNlU2VydmVyOjpvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJl
c3VsdCkKK3ZvaWQgRGF0YWJhc2VTZXJ2ZXI6Om9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4+JiByZXN1bHQpCiB7CiAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkub3Jp
Z2lucyhyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVNlcnZlci5oCmluZGV4IDZhODY4YmRjNzE5YmQzMzI1ZDY1N2U4NDQzMWNl
ZTQ5ZDg5M2YwMWQuLjdjZjljOWM5ZjMyZmI4MGIxZWIxOWE2MDZlM2JhNjNmN2Q2YWU1MDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2Vy
dmVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgICAgICBib29sIHNldFZlcnNpb25J
bk5ld0RhdGFiYXNlLCBEYXRhYmFzZUVycm9yJiwgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIE9wZW5B
dHRlbXB0KTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNFbnRyeUZvck9yaWdpbihTZWN1cml0eU9y
aWdpbiopOwotICAgIHZpcnR1YWwgdm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+ID4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIG9yaWdpbnMoVmVjdG9yPFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgYm9vbCBkYXRhYmFzZU5h
bWVzRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCk7CiAg
ICAgdmlydHVhbCBEYXRhYmFzZURldGFpbHMgZGV0YWlsc0Zvck5hbWVBbmRPcmlnaW4oY29uc3Qg
U3RyaW5nJiwgU2VjdXJpdHlPcmlnaW4qKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oCmluZGV4IGI1NzgyNzhhOWRlNjE1MThj
MWU5OTdlNTZkMWUxZDgwZGQzZmUxMmIuLjRiMjAyZWVmMjVhOGYwNmVjYjU0ZTQ3MWI4ZWY2NjZj
MjBjYzk2MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICBNZXNzYWdl
UXVldWU8RGF0YWJhc2VUYXNrPiBtX3F1ZXVlOwogCiAgICAgLy8gVGhpcyBzZXQga2VlcHMgdHJh
Y2sgb2YgdGhlIG9wZW4gZGF0YWJhc2VzIHRoYXQgaGF2ZSBiZWVuIHVzZWQgb24gdGhpcyB0aHJl
YWQuCi0gICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxEYXRhYmFzZUJhY2tlbmQ+ID4gRGF0YWJh
c2VTZXQ7CisgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxEYXRhYmFzZUJhY2tlbmQ+PiBEYXRh
YmFzZVNldDsKICAgICBEYXRhYmFzZVNldCBtX29wZW5EYXRhYmFzZVNldDsKIAogICAgIE93blB0
cjxTUUxUcmFuc2FjdGlvbkNsaWVudD4gbV90cmFuc2FjdGlvbkNsaWVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApp
bmRleCBjY2RlNTNkOTUyNWI5ZDc3MWJiMzFhYzBiMDk1MTRlYjRmNzNkZDc5Li4yMWY5ZGQ2NTMy
NDllZmJiZmUxMjBhYWIzZThjMzM4YjJjYWE5Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0zMDEsNyAr
MzAxLDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlVHJhY2tlcjo6Z2V0TWF4U2l6ZUZv
ckRhdGFiYXNlKGNvbnN0IERhdGFiYXNlQmFja2VuZEIKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6
OmludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dCogY29udGV4dCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPERhdGFiYXNlQmFja2VuZEJhc2U+
ID4gb3BlbkRhdGFiYXNlczsKKyAgICBWZWN0b3I8UmVmUHRyPERhdGFiYXNlQmFja2VuZEJhc2U+
PiBvcGVuRGF0YWJhc2VzOwogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgb3BlbkRhdGFiYXNl
TWFwTG9jayhtX29wZW5EYXRhYmFzZU1hcEd1YXJkKTsKIApAQCAtMzIzLDggKzMyMyw4IEBAIHZv
aWQgRGF0YWJhc2VUcmFja2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0
IERhdGFiYXNlQmFja2VuZENvbnRlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBWZWN0b3I8UmVm
UHRyPERhdGFiYXNlQmFja2VuZEJhc2U+ID46OmNvbnN0X2l0ZXJhdG9yIG9wZW5EYXRhYmFzZXNF
bmRJdCA9IG9wZW5EYXRhYmFzZXMuZW5kKCk7Ci0gICAgZm9yIChWZWN0b3I8UmVmUHRyPERhdGFi
YXNlQmFja2VuZEJhc2U+ID46OmNvbnN0X2l0ZXJhdG9yIG9wZW5EYXRhYmFzZXNJdCA9IG9wZW5E
YXRhYmFzZXMuYmVnaW4oKTsgb3BlbkRhdGFiYXNlc0l0ICE9IG9wZW5EYXRhYmFzZXNFbmRJdDsg
KytvcGVuRGF0YWJhc2VzSXQpCisgICAgVmVjdG9yPFJlZlB0cjxEYXRhYmFzZUJhY2tlbmRCYXNl
Pj46OmNvbnN0X2l0ZXJhdG9yIG9wZW5EYXRhYmFzZXNFbmRJdCA9IG9wZW5EYXRhYmFzZXMuZW5k
KCk7CisgICAgZm9yIChWZWN0b3I8UmVmUHRyPERhdGFiYXNlQmFja2VuZEJhc2U+Pjo6Y29uc3Rf
aXRlcmF0b3Igb3BlbkRhdGFiYXNlc0l0ID0gb3BlbkRhdGFiYXNlcy5iZWdpbigpOyBvcGVuRGF0
YWJhc2VzSXQgIT0gb3BlbkRhdGFiYXNlc0VuZEl0OyArK29wZW5EYXRhYmFzZXNJdCkKICAgICAg
ICAgKCpvcGVuRGF0YWJhc2VzSXQpLT5pbnRlcnJ1cHQoKTsKIH0KIApAQCAtMzg1LDcgKzM4NSw3
IEBAIFN0cmluZyBEYXRhYmFzZVRyYWNrZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UoU2VjdXJpdHlP
cmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nCiAgICAgcmV0dXJuIGZ1bGxQYXRoRm9yRGF0YWJh
c2VOb0xvY2sob3JpZ2luLCBuYW1lLCBjcmVhdGVJZk5vdEV4aXN0cykuaXNvbGF0ZWRDb3B5KCk7
CiB9CiAKLXZvaWQgRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+ID4mIG9yaWdpbnNSZXN1bHQpCit2b2lkIERhdGFiYXNlVHJhY2tlcjo6b3JpZ2lu
cyhWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnNSZXN1bHQpCiB7CiAgICAg
TXV0ZXhMb2NrZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAKQEAgLTYyNSw3ICs2
MjUsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlT3BlbkRhdGFiYXNlKERhdGFiYXNl
QmFja2VuZEJhc2UqIGRhdGFiYXNlKQogICAgIH0KIH0KIAotdm9pZCBEYXRhYmFzZVRyYWNrZXI6
OmdldE9wZW5EYXRhYmFzZXMoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBIYXNoU2V0PFJlZlB0cjxEYXRhYmFzZUJhY2tlbmRCYXNlPiA+KiBkYXRhYmFzZXMpCit2
b2lkIERhdGFiYXNlVHJhY2tlcjo6Z2V0T3BlbkRhdGFiYXNlcyhTZWN1cml0eU9yaWdpbiogb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhhc2hTZXQ8UmVmUHRyPERhdGFiYXNlQmFja2VuZEJh
c2U+PiogZGF0YWJhc2VzKQogewogICAgIE11dGV4TG9ja2VyIG9wZW5EYXRhYmFzZU1hcExvY2so
bV9vcGVuRGF0YWJhc2VNYXBHdWFyZCk7CiAgICAgaWYgKCFtX29wZW5EYXRhYmFzZU1hcCkKQEAg
LTgxMCw3ICs4MTAsNyBAQCBib29sIERhdGFiYXNlVHJhY2tlcjo6YWRkRGF0YWJhc2UoU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjbwogCiB2b2lkIERhdGFiYXNl
VHJhY2tlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiA+IG9yaWdpbnNDb3B5OworICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmln
aW4+PiBvcmlnaW5zQ29weTsKICAgICBvcmlnaW5zKG9yaWdpbnNDb3B5KTsKIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBvcmlnaW5zQ29weS5zaXplKCk7ICsraSkKQEAgLTEwODksNyAr
MTA4OSw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGUoU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuCiAgICAgfQogI2VuZGlmCiAKLSAgICBW
ZWN0b3I8UmVmUHRyPERhdGFiYXNlQmFja2VuZEJhc2U+ID4gZGVsZXRlZERhdGFiYXNlczsKKyAg
ICBWZWN0b3I8UmVmUHRyPERhdGFiYXNlQmFja2VuZEJhc2U+PiBkZWxldGVkRGF0YWJhc2VzOwog
CiAgICAgLy8gTWFrZSBzdXJlIG5vdCB0byBob2xkIHRoZSBhbnkgbG9ja3Mgd2hlbiBjYWxsaW5n
CiAgICAgLy8gRGF0YWJhc2U6Om1hcmtBc0RlbGV0ZWRBbmRDbG9zZSgpLCBzaW5jZSB0aGF0IGNh
biBjYXVzZSBhIGRlYWRsb2NrCkBAIC0xMTMwLDcgKzExMzAsNyBAQCBzdGF0aWMgTXV0ZXgmIG5v
dGlmaWNhdGlvbk11dGV4KCkKICAgICByZXR1cm4gbXV0ZXg7CiB9CiAKLXR5cGVkZWYgVmVjdG9y
PHBhaXI8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgU3RyaW5nPiA+IE5vdGlmaWNhdGlvblF1ZXVl
OwordHlwZWRlZiBWZWN0b3I8cGFpcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBTdHJpbmc+PiBO
b3RpZmljYXRpb25RdWV1ZTsKIAogc3RhdGljIE5vdGlmaWNhdGlvblF1ZXVlJiBub3RpZmljYXRp
b25RdWV1ZSgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVHJhY2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRyYWNrZXIuaAppbmRleCA4MGUzZjA5NjVjM2ViMmNjZmYwNDkzNjhiZDY5Njll
YWNiMDAxMGEwLi4zNTIzNzQwN2FmODVhNTljNWY4NmE2ZWQ5ZjdmMzA5OGE5YjFiOTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRPcGVuRGF0YWJh
c2UoRGF0YWJhc2VCYWNrZW5kQmFzZSopOwogICAgIHZvaWQgcmVtb3ZlT3BlbkRhdGFiYXNlKERh
dGFiYXNlQmFja2VuZEJhc2UqKTsKLSAgICB2b2lkIGdldE9wZW5EYXRhYmFzZXMoU2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhhc2hTZXQ8UmVmUHRyPERhdGFiYXNlQmFja2Vu
ZEJhc2U+ID4qIGRhdGFiYXNlcyk7CisgICAgdm9pZCBnZXRPcGVuRGF0YWJhc2VzKFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBIYXNoU2V0PFJlZlB0cjxEYXRhYmFzZUJhY2tl
bmRCYXNlPj4qIGRhdGFiYXNlcyk7CiAKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZ2V0TWF4U2l6
ZUZvckRhdGFiYXNlKGNvbnN0IERhdGFiYXNlQmFja2VuZEJhc2UqKTsKIApAQCAtODUsNyArODUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREYXRhYmFzZURpcmVjdG9yeVBhdGgoY29uc3QgU3Ry
aW5nJik7CiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpIGNvbnN0OwogCi0gICAg
dm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3VsdCk7Cisg
ICAgdm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgcmVzdWx0KTsK
ICAgICBib29sIGRhdGFiYXNlTmFtZXNGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qLCBWZWN0b3I8
U3RyaW5nPiYgcmVzdWx0KTsKIAogICAgIERhdGFiYXNlRGV0YWlscyBkZXRhaWxzRm9yTmFtZUFu
ZE9yaWdpbihjb25zdCBTdHJpbmcmLCBTZWN1cml0eU9yaWdpbiopOwpAQCAtMTQ0LDcgKzE0NCw3
IEBAIHByaXZhdGU6CiAgICAgTXV0ZXggbV9kYXRhYmFzZUd1YXJkOwogICAgIFNRTGl0ZURhdGFi
YXNlIG1fZGF0YWJhc2U7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8T3Jp
Z2luTG9jaz4gPiBPcmlnaW5Mb2NrTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJl
ZlB0cjxPcmlnaW5Mb2NrPj4gT3JpZ2luTG9ja01hcDsKICAgICBPcmlnaW5Mb2NrTWFwIG1fb3Jp
Z2luTG9ja01hcDsKIAogICAgIFN0cmluZyBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aDsKQEAgLTE1
Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIENyZWF0ZVNldCBtX2JlaW5nQ3JlYXRlZDsKICAg
ICB0eXBlZGVmIEhhc2hTZXQ8U3RyaW5nPiBOYW1lU2V0OwogICAgIEhhc2hNYXA8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiwgTmFtZVNldCo+IG1fYmVpbmdEZWxldGVkOwotICAgIEhhc2hTZXQ8UmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiA+IG1fb3JpZ2luc0JlaW5nRGVsZXRlZDsKKyAgICBIYXNoU2V0
PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG1fb3JpZ2luc0JlaW5nRGVsZXRlZDsKICAgICBib29s
IGlzRGVsZXRpbmdEYXRhYmFzZU9yT3JpZ2luRm9yKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKICAgICB2b2lkIHJlY29yZENyZWF0aW5nRGF0YWJhc2UoU2VjdXJpdHlPcmln
aW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIHZvaWQgZG9uZUNyZWF0aW5nRGF0YWJhc2Uo
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnRCYWNrZW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50QmFja2VuZC5jcHAK
aW5kZXggNzc5MjRiZWI2NjlkZmU0NDZiNjlmMDdiYWQ3YzEyNGE5Y2EwNmRlZS4uMzg3M2UyMjM3
NDFiNGEzMTVkZDAwOGQzYjI3NjkwNjdkZTMzZjU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnRCYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudEJhY2tlbmQuY3BwCkBA
IC00Niw3ICs0Niw3IEBACiAvLwogLy8gICAgIEF0IGJpcnRoIChpbiBTUUxUcmFuc2FjdGlvbkJh
Y2tlbmQ6OmV4ZWN1dGVTUUwoKSk6CiAvLyAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLy8gICAgIFNRTFRyYW5zYWN0aW9uQmFja2VuZCAgICAg
ICAgICAgLy8gRGVxdWU8UmVmUHRyPFNRTFN0YXRlbWVudEJhY2tlbmQ+ID4gbV9zdGF0ZW1lbnRR
dWV1ZSBwb2ludHMgdG8gLi4uCisvLyAgICAgU1FMVHJhbnNhY3Rpb25CYWNrZW5kICAgICAgICAg
ICAvLyBEZXF1ZTxSZWZQdHI8U1FMU3RhdGVtZW50QmFja2VuZD4+IG1fc3RhdGVtZW50UXVldWUg
cG9pbnRzIHRvIC4uLgogLy8gICAgIC0tPiBTUUxTdGF0ZW1lbnRCYWNrZW5kICAgICAgICAgLy8g
T3duUHRyPFNRTFN0YXRlbWVudD4gbV9mcm9udGVuZCBwb2ludHMgdG8gLi4uCiAvLyAgICAgICAg
IC0tPiBTUUxTdGF0ZW1lbnQKIC8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKaW5kZXggYWEyYjY0
NTBmYWEzODc4MDYzNmY3NWVhYzlmMWNmZTk2Nzk4OTQ4NS4uNTY4YmU5N2QwZWNkNzNjNjI5MWYy
ODA5NjgzNjdiNTBlM2ZiNmYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcApAQCAtMjM3LDcg
KzIzNyw3IEBACiAvLwogLy8gICAgIEF0IGJpcnRoIChpbiBEYXRhYmFzZUJhY2tlbmQ6OnJ1blRy
YW5zYWN0aW9uKCkpOgogLy8gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS8vICAgICBEYXRhYmFzZUJhY2tlbmQgICAgICAgICAgICAgICAg
ICAgIC8vIERlcXVlPFJlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+ID4gbV90cmFuc2FjdGlv
blF1ZXVlIHBvaW50cyB0byAuLi4KKy8vICAgICBEYXRhYmFzZUJhY2tlbmQgICAgICAgICAgICAg
ICAgICAgIC8vIERlcXVlPFJlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+PiBtX3RyYW5zYWN0
aW9uUXVldWUgcG9pbnRzIHRvIC4uLgogLy8gICAgIC0tPiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQg
ICAgICAgICAgLy8gUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiBtX2Zyb250ZW5kIHBvaW50cyB0byAu
Li4KIC8vICAgICAgICAgLS0+IFNRTFRyYW5zYWN0aW9uICAgICAgICAgICAgIC8vIFJlZlB0cjxT
UUxUcmFuc2FjdGlvbkJhY2tlbmQ+IG1fYmFja2VuZCBwb2ludHMgdG8gLi4uCiAvLyAgICAgICAg
ICAgICAtLT4gU1FMVHJhbnNhY3Rpb25CYWNrZW5kICAvLyB3aGljaCBpcyBhIGNpcmN1bGFyIHJl
ZmVyZW5jZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMVHJhbnNhY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5oCmluZGV4IDEyYTUwMDlhOTk1OTc5YjZmNTRmMmUy
MmVhOWE4MmZlZGViYjY0YmYuLjZlZmM3NTFmZjE0NWI0NDhlMDQxMTU1MjViN2NiOTY2YzI4YTM4
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb25CYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaApAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2hhc1ZlcnNpb25NaXNtYXRjaDsKIAogICAgIE11dGV4IG1fc3RhdGVtZW50TXV0
ZXg7Ci0gICAgRGVxdWU8UmVmUHRyPFNRTFN0YXRlbWVudEJhY2tlbmQ+ID4gbV9zdGF0ZW1lbnRR
dWV1ZTsKKyAgICBEZXF1ZTxSZWZQdHI8U1FMU3RhdGVtZW50QmFja2VuZD4+IG1fc3RhdGVtZW50
UXVldWU7CiAKICAgICBPd25QdHI8U1FMaXRlVHJhbnNhY3Rpb24+IG1fc3FsaXRlVHJhbnNhY3Rp
b247CiAgICAgUmVmUHRyPE9yaWdpbkxvY2s+IG1fb3JpZ2luTG9jazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuY3BwCmluZGV4IDYzYzMwZmE1NGFlMGYzMTliYWM1MTFlMWI3ZTJiZTNjNmNj
ZTM0M2YuLmJiYjQ1YTgxMGM3MWY3YmUzNzRiM2NlMDE0OWRiNjQ3N2EyMmI1MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29y
ZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgU1FMVHJh
bnNhY3Rpb25Db29yZGluYXRvcjo6c2h1dGRvd24oKQogICAgICAgICAvLyB0cmFuc2FjdGlvbiBp
cyBpbnRlcnJ1cHRlZD8iIGF0IHRoZSB0b3Agb2YgU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcC4K
ICAgICAgICAgaWYgKGluZm8uYWN0aXZlV3JpdGVUcmFuc2FjdGlvbikKICAgICAgICAgICAgIGlu
Zm8uYWN0aXZlV3JpdGVUcmFuc2FjdGlvbi0+bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5n
RG93bigpOwotICAgICAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFNRTFRyYW5zYWN0aW9uQmFja2Vu
ZD4gPjo6aXRlcmF0b3IgYWN0aXZlUmVhZFRyYW5zYWN0aW9uc0l0ZXJhdG9yID0KKyAgICAgICAg
Zm9yIChIYXNoU2V0PFJlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+Pjo6aXRlcmF0b3IgYWN0
aXZlUmVhZFRyYW5zYWN0aW9uc0l0ZXJhdG9yID0KICAgICAgICAgICAgICAgICAgICAgIGluZm8u
YWN0aXZlUmVhZFRyYW5zYWN0aW9ucy5iZWdpbigpOwogICAgICAgICAgICAgIGFjdGl2ZVJlYWRU
cmFuc2FjdGlvbnNJdGVyYXRvciAhPSBpbmZvLmFjdGl2ZVJlYWRUcmFuc2FjdGlvbnMuZW5kKCk7
CiAgICAgICAgICAgICAgKythY3RpdmVSZWFkVHJhbnNhY3Rpb25zSXRlcmF0b3IpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25D
b29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmgKaW5kZXggYjRjZTRlYzZmM2I4MzJmYmE1NTM1ZGZkZTNhNGVi
MjkzZTNlZGY5MS4uY2U4N2UwNTVlNTkwM2ZhOWEwZTVmOTllZWI4ODQ3M2NlMmRlMDYzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZWxlYXNlTG9jayhTUUxUcmFuc2FjdGlvbkJhY2tlbmQqKTsKICAgICB2b2lkIHNo
dXRkb3duKCk7CiBwcml2YXRlOgotICAgIHR5cGVkZWYgRGVxdWU8UmVmUHRyPFNRTFRyYW5zYWN0
aW9uQmFja2VuZD4gPiBUcmFuc2FjdGlvbnNRdWV1ZTsKKyAgICB0eXBlZGVmIERlcXVlPFJlZlB0
cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+PiBUcmFuc2FjdGlvbnNRdWV1ZTsKICAgICBzdHJ1Y3Qg
Q29vcmRpbmF0aW9uSW5mbyB7CiAgICAgICAgIFRyYW5zYWN0aW9uc1F1ZXVlIHBlbmRpbmdUcmFu
c2FjdGlvbnM7Ci0gICAgICAgIEhhc2hTZXQ8UmVmUHRyPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4g
PiBhY3RpdmVSZWFkVHJhbnNhY3Rpb25zOworICAgICAgICBIYXNoU2V0PFJlZlB0cjxTUUxUcmFu
c2FjdGlvbkJhY2tlbmQ+PiBhY3RpdmVSZWFkVHJhbnNhY3Rpb25zOwogICAgICAgICBSZWZQdHI8
U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiBhY3RpdmVXcml0ZVRyYW5zYWN0aW9uOwogICAgIH07CiAg
ICAgLy8gTWFwcyBkYXRhYmFzZSBuYW1lcyB0byBpbmZvcm1hdGlvbiBhYm91dCBwZW5kaW5nIHRy
YW5zYWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyLmNwcAppbmRleCBhMzM2N2IwZWYyMWNiYzBmODdiYWNkMDJkZWM2ZWZjNzBmMDMxZDlj
Li42ZWQzY2EyN2ZmMjVhYmIwZTQ3MzMwYTI2ODYxNDlkNzE1NTEwZTZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcApAQCAtMTcwLDcg
KzE3MCw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpk
aWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lCiAgICAgICAgIHByb2Nlc3NQZW5kaW5n
VGFza3MoKTsKIH0KIAotdm9pZCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBw
ZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+ID4gYmluYXJ5
RGF0YSkKK3ZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRS
ZWNlaXZlQmluYXJ5RGF0YShQYXNzT3duUHRyPFZlY3RvcjxjaGFyPj4gYmluYXJ5RGF0YSkKIHsK
ICAgICBtX3BlbmRpbmdUYXNrcy5hcHBlbmQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRSZWNlaXZl
QmluYXJ5RGF0YUNhbGxiYWNrLCB0aGlzLCBiaW5hcnlEYXRhKSk7CiAgICAgaWYgKCFtX3N1c3Bl
bmRlZCkKQEAgLTIzMiw5ICsyMzIsOSBAQCB2b2lkIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlcjo6cHJvY2Vzc1BlbmRpbmdUYXNrcygpCiAgICAgICAgIG1fY29udGV4dC0+
cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI6OnByb2Nlc3NQZW5kaW5nVGFza3NDYWxsYmFjaywgdGhpcykpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIFZlY3RvcjxPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4gPiB0YXNrczsKKyAgICBWZWN0b3I8T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s+PiB0YXNrczsKICAgICB0YXNrcy5zd2FwKG1fcGVuZGluZ1Rhc2tzKTsKLSAgICBm
b3IgKFZlY3RvcjxPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gPjo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IHRhc2tzLmJlZ2luKCk7IGl0ZXIgIT0gdGFza3MuZW5kKCk7ICsraXRl
cikKKyAgICBmb3IgKFZlY3RvcjxPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4+
Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gdGFza3MuYmVnaW4oKTsgaXRlciAhPSB0YXNrcy5lbmQo
KTsgKytpdGVyKQogICAgICAgICAoKml0ZXIpLT5wZXJmb3JtVGFzaygwKTsKIH0KIApAQCAtMjUy
LDcgKzI1Miw3IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVy
OjpkaWRSZWNlaXZlTWVzc2FnZUNhbGxiYWNrKFNjcmlwdEV4CiAgICAgICAgIHdyYXBwZXItPm1f
Y2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlKTsKIH0KIAotdm9pZCBUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRhQ2FsbGJh
Y2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdyYXBwZXIsIFBhc3NPd25QdHI8VmVjdG9y
PGNoYXI+ID4gYmluYXJ5RGF0YSkKK3ZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGll
bnRXcmFwcGVyPiB3cmFwcGVyLCBQYXNzT3duUHRyPFZlY3RvcjxjaGFyPj4gYmluYXJ5RGF0YSkK
IHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsICFjb250ZXh0KTsKICAgICBpZiAod3JhcHBl
ci0+bV9jbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRX
cmFwcGVyLmgKaW5kZXggYzZmMzNhNTgwMzIyMTE4ZjY1YjIzOGQ0MTUyMGQxOWIyMWRmYmJlYS4u
ZDM2NGM2NTY0Nzg1NDI5NTkyMTI5ZGZlMGMwZTliNmEwN2ZkNzBlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaApAQCAtODAsNyArODAsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZENvbm5lY3QoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQmluYXJ5
RGF0YShQYXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCaW5h
cnlEYXRhKFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+Pik7CiAgICAgdm9pZCBkaWRVcGRhdGVCdWZm
ZXJlZEFtb3VudCh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KTsKICAgICB2b2lkIGRpZFN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpOwogICAgIHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1
bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudDo6Q2xvc2luZ0hh
bmRzaGFrZUNvbXBsZXRpb25TdGF0dXMsIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmlu
ZyYgcmVhc29uKTsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lk
IGRpZENvbm5lY3RDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNz
UmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4sIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUJpbmFyeURhdGFDYWxs
YmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCBQYXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+KTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcj4sIFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+Pik7CiAgICAgc3RhdGljIHZvaWQgZGlkVXBk
YXRlQnVmZmVyZWRBbW91bnRDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+LCB1bnNpZ25lZCBs
b25nIGJ1ZmZlcmVkQW1vdW50KTsKICAgICBzdGF0aWMgdm9pZCBkaWRTdGFydENsb3NpbmdIYW5k
c2hha2VDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+KTsKICAgICBzdGF0aWMgdm9pZCBkaWRD
bG9zZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4sIHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVk
QnVmZmVyZWRBbW91bnQsIFdlYlNvY2tldENoYW5uZWxDbGllbnQ6OkNsb3NpbmdIYW5kc2hha2VD
b21wbGV0aW9uU3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNv
bik7CkBAIC0xMTQsNyArMTE0LDcgQEAgcHJpdmF0ZToKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6U2VuZFJlc3VsdCBtX3NlbmRSZXF1ZXN0UmVzdWx0OwogICAgIHVuc2lnbmVkIGxv
bmcgbV9idWZmZXJlZEFtb3VudDsKICAgICBib29sIG1fc3VzcGVuZGVkOwotICAgIFZlY3RvcjxP
d25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gPiBtX3BlbmRpbmdUYXNrczsKKyAg
ICBWZWN0b3I8T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+PiBtX3BlbmRpbmdU
YXNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggMzNjZWY1ZTg4ZTgzMjdlYTMx
NmU0MjE0N2IzYjlmNjc4ZTg4ODJjZS4uOWExNTM5MWM2ZDdiMmEyZGE5Zjc2NGM1YzZlNzQzY2Fh
YmJiYmY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAKQEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoY29uc3QgU3RyaW5nJiBtc2cpCiAgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6
OmNyZWF0ZShtc2csIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpLT50b1N0cmluZygpKSk7
CiB9CiAKLXZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5RGF0YShQYXNzT3duUHRyPFZl
Y3RvcjxjaGFyPiA+IGJpbmFyeURhdGEpCit2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZUJpbmFy
eURhdGEoUGFzc093blB0cjxWZWN0b3I8Y2hhcj4+IGJpbmFyeURhdGEpCiB7CiAgICAgTE9HKE5l
dHdvcmssICJXZWJTb2NrZXQgJXAgZGlkUmVjZWl2ZUJpbmFyeURhdGEoKSAlbHUgYnl0ZSBiaW5h
cnkgbWVzc2FnZSIsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGJpbmFyeURhdGEt
PnNpemUoKSkpOwogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggMmIyZjk3N2Q1NDMwZDA4OGRk
NjdlZTc3NDcxYmNiZDE3NTQ1YjA4NS4uOTZhYzViNTY0YWNkMDMzMjczNzYyOTk2NDIwMWIzZTUx
NTdiNDRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaApAQCAtMTA2LDcgKzEwNiw3IEBAIHB1YmxpYzoKICAgICAvLyBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50IGZ1bmN0aW9ucy4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29ubmVjdCgpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShQYXNz
T3duUHRyPFZlY3RvcjxjaGFyPiA+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUJpbmFyeURhdGEoUGFzc093blB0cjxWZWN0b3I8Y2hhcj4+KSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1v
dW50KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtl
KCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggYTkzMmIzYzFmYzcwZjZmYjY3MzhmODRjNWY5
MTc4NmQyMzM0MDA2NS4uNjQ5Zjk3ZTZhZWY3NDZmNTVhN2EyMTk2ODI3YTEwZTU2MzgzNTFjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcApAQCAtNTc3LDcgKzU3Nyw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6
cHJvY2Vzc0ZyYW1lKCkKICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHRoZSBtZW1iZXIg
dmFyaWFibGVzIGFyZSBpbiBhIGNvbnNpc3RlbnQgc3RhdGUgYmVmb3JlCiAgICAgICAgICAgICAv
LyB0aGUgaGFuZGxlciBpcyBpbnZva2VkLgogICAgICAgICAgICAgLy8gVmVjdG9yPGNoYXI+Ojpz
d2FwKCkgaXMgdXNlZCBoZXJlIHRvIGNsZWFyIG1fY29udGludW91c0ZyYW1lRGF0YS4KLSAgICAg
ICAgICAgIE93blB0cjxWZWN0b3I8Y2hhcj4gPiBjb250aW51b3VzRnJhbWVEYXRhID0gYWRvcHRQ
dHIobmV3IFZlY3RvcjxjaGFyPik7CisgICAgICAgICAgICBPd25QdHI8VmVjdG9yPGNoYXI+PiBj
b250aW51b3VzRnJhbWVEYXRhID0gYWRvcHRQdHIobmV3IFZlY3RvcjxjaGFyPik7CiAgICAgICAg
ICAgICBtX2NvbnRpbnVvdXNGcmFtZURhdGEuc3dhcCgqY29udGludW91c0ZyYW1lRGF0YSk7CiAg
ICAgICAgICAgICBtX2hhc0NvbnRpbnVvdXNGcmFtZSA9IGZhbHNlOwogICAgICAgICAgICAgaWYg
KG1fY29udGludW91c0ZyYW1lT3BDb2RlID09IFdlYlNvY2tldEZyYW1lOjpPcENvZGVUZXh0KSB7
CkBAIC02MTgsNyArNjE4LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUo
KQogCiAgICAgY2FzZSBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmluYXJ5OgogICAgICAgICBpZiAo
ZnJhbWUuZmluYWwpIHsKLSAgICAgICAgICAgIE93blB0cjxWZWN0b3I8Y2hhcj4gPiBiaW5hcnlE
YXRhID0gYWRvcHRQdHIobmV3IFZlY3RvcjxjaGFyPihmcmFtZS5wYXlsb2FkTGVuZ3RoKSk7Cisg
ICAgICAgICAgICBPd25QdHI8VmVjdG9yPGNoYXI+PiBiaW5hcnlEYXRhID0gYWRvcHRQdHIobmV3
IFZlY3RvcjxjaGFyPihmcmFtZS5wYXlsb2FkTGVuZ3RoKSk7CiAgICAgICAgICAgICBtZW1jcHko
YmluYXJ5RGF0YS0+ZGF0YSgpLCBmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKTsK
ICAgICAgICAgICAgIHNraXBCdWZmZXIoZnJhbWVFbmQgLSBtX2J1ZmZlci5kYXRhKCkpOwogICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCaW5hcnlEYXRhKGJpbmFyeURhdGEucmVsZWFz
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5oCmluZGV4IDM5NjQ2NDc4NTA5YjczMDgyNmJiNDAwNTYwNmY4ZWJhNTdjYmIx
M2IuLmE2NTNhNGY1ZjA0MmU4MmRkMDk0NmI3ZGE4OTFiZDgzNjUxODAzODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApA
QCAtMjE1LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgc2hvcnQgbV9jbG9zZUV2
ZW50Q29kZTsKICAgICBTdHJpbmcgbV9jbG9zZUV2ZW50UmVhc29uOwogCi0gICAgRGVxdWU8T3du
UHRyPFF1ZXVlZEZyYW1lPiA+IG1fb3V0Z29pbmdGcmFtZVF1ZXVlOworICAgIERlcXVlPE93blB0
cjxRdWV1ZWRGcmFtZT4+IG1fb3V0Z29pbmdGcmFtZVF1ZXVlOwogICAgIE91dGdvaW5nRnJhbWVR
dWV1ZVN0YXR1cyBtX291dGdvaW5nRnJhbWVRdWV1ZVN0YXR1czsKIAogI2lmIEVOQUJMRShCTE9C
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWxDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsQ2xpZW50LmgKaW5kZXggMzFkMTg5MjE3Zjc0NjZhYTQ3NDM5OTdkZDk1YWY2
NDg0NGJjNTdkOC4uNDY2NDFjMDZjMjFjZjA1Yjg4MGU4ODViNDk3MGE3YTRjMTQwMDhhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWxDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbENsaWVudC5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB+V2ViU29ja2V0Q2hhbm5lbENsaWVudCgpIHsgfQogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29ubmVjdCgpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJikgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQmluYXJ5RGF0YShQYXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+KSB7IH0KKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCaW5hcnlEYXRhKFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+
PikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkgeyB9
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBs
b25nIC8qIGJ1ZmZlcmVkQW1vdW50ICovKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFN0
YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmgK
aW5kZXggMzVjZDc2OWVhYzMyMGFjMTQwODRiMTA4MjUyNDZjNDkwNjM5YzVkMy4uMjQzMDAxN2Q1
ZDM1MTkwMDM5NjdhNjJlYjczMTQ2NTVmNTY2ZmQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlz
cGF0Y2hlci5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmRBY2Nl
cHRlZEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvblRva2VuLCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiYgZXh0ZW5zaW9uUGFyYW1ldGVycyk7CiAgICAgdm9pZCBmYWlsKGNvbnN0IFN0
cmluZyYgcmVhc29uKTsKIAotICAgIFZlY3RvcjxPd25QdHI8V2ViU29ja2V0RXh0ZW5zaW9uUHJv
Y2Vzc29yPiA+IG1fcHJvY2Vzc29yczsKKyAgICBWZWN0b3I8T3duUHRyPFdlYlNvY2tldEV4dGVu
c2lvblByb2Nlc3Nvcj4+IG1fcHJvY2Vzc29yczsKICAgICBTdHJpbmdCdWlsZGVyIG1fYWNjZXB0
ZWRFeHRlbnNpb25zQnVpbGRlcjsKICAgICBTdHJpbmcgbV9mYWlsdXJlUmVhc29uOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGI2YmEyZDZmYTk0
MjdjNjY3NGJmY2JjMmVjMmI1YzVmMWZjZTI5NGQuLmViNmFjNTc1OWQ2YWMzZTM0MmEyNDI1ZDE1
YzEyODQ4NWEyZmYxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcApAQCAtMjgzLDEzICsyODMsMTMgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXMKICAgICBt
X2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZ3b3JrZXJHbG9iYWxTY29wZURpZFJlY2VpdmVNZXNzYWdlLCBtX3dvcmtlckNs
aWVudFdyYXBwZXIsIG1lc3NhZ2UpLCBtX3Rhc2tNb2RlKTsKIH0KIAotc3RhdGljIHZvaWQgd29y
a2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlQmluYXJ5RGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgUGFzc093blB0cjxWZWN0b3I8Y2hhcj4gPiBiaW5h
cnlEYXRhKQorc3RhdGljIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlQmluYXJ5RGF0
YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciwgUGFzc093
blB0cjxWZWN0b3I8Y2hhcj4+IGJpbmFyeURhdGEpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChjb250
ZXh0LCBjb250ZXh0LT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgIHdvcmtlckNsaWVudFdy
YXBwZXItPmRpZFJlY2VpdmVCaW5hcnlEYXRhKGJpbmFyeURhdGEpOwogfQogCi12b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShQ
YXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+IGJpbmFyeURhdGEpCit2b2lkIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YShQYXNzT3duUHRy
PFZlY3RvcjxjaGFyPj4gYmluYXJ5RGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShj
cmVhdGVDYWxsYmFja1Rhc2soJndvcmtlckdsb2JhbFNjb3BlRGlkUmVjZWl2ZUJpbmFyeURhdGEs
IG1fd29ya2VyQ2xpZW50V3JhcHBlciwgYmluYXJ5RGF0YSksIG1fdGFza01vZGUpOwpAQCAtNDU0
LDcgKzQ1NCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6Om1haW5U
aHJlYWRTZW5kKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiAgICAgcGVlci0+c2VuZChtZXNz
YWdlKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6bWFpblRo
cmVhZFNlbmRBcnJheUJ1ZmZlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQZWVy
KiBwZWVyLCBQYXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+IGRhdGEpCit2b2lkIFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjptYWluVGhyZWFkU2VuZEFycmF5QnVmZmVyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBlZXIqIHBlZXIsIFBhc3NPd25QdHI8VmVjdG9yPGNo
YXI+PiBkYXRhKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUX1VO
VVNFRChjb250ZXh0LCBjb250ZXh0LT5pc0RvY3VtZW50KCkpOwpAQCAtNDkzLDcgKzQ5Myw3IEBA
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAgICAgaWYgKCFtX3dvcmtlckNsaWVudFdyYXBwZXIg
fHwgIW1fcGVlcikKICAgICAgICAgcmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpT
ZW5kRmFpbDsKICAgICAvLyBBcnJheUJ1ZmZlciBpc24ndCB0aHJlYWQtc2FmZSwgaGVuY2UgdGhl
IGNvbnRlbnQgb2YgQXJyYXlCdWZmZXIgaXMgY29waWVkIGludG8gVmVjdG9yPGNoYXI+LgotICAg
IE93blB0cjxWZWN0b3I8Y2hhcj4gPiBkYXRhID0gYWRvcHRQdHIobmV3IFZlY3RvcjxjaGFyPihi
eXRlTGVuZ3RoKSk7CisgICAgT3duUHRyPFZlY3RvcjxjaGFyPj4gZGF0YSA9IGFkb3B0UHRyKG5l
dyBWZWN0b3I8Y2hhcj4oYnl0ZUxlbmd0aCkpOwogICAgIGlmIChiaW5hcnlEYXRhLmJ5dGVMZW5n
dGgoKSkKICAgICAgICAgbWVtY3B5KGRhdGEtPmRhdGEoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGJpbmFyeURhdGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwogICAgIHNl
dE1ldGhvZE5vdENvbXBsZXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuaAppbmRleCBmZjk4OWRmOTA4NzVmMjdiMDEzMjBjY2I0YWVjZDgzMjYyMDhhMjQwLi5mZDkz
ZmRkOGNhZDM5OTk3ZGIxNTEwOGY4MWI0MzQ1MzI5NGY3YmY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgLy8gV2ViU29ja2V0Q2hhbm5lbENsaWVudCBmdW5jdGlvbnMuCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRDb25uZWN0KCkgT1ZFUlJJREU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIE9WRVJSSURFOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUJpbmFyeURhdGEoUGFzc093blB0cjxWZWN0b3I8Y2hhcj4gPikg
T1ZFUlJJREU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShQYXNz
T3duUHRyPFZlY3RvcjxjaGFyPj4pIE9WRVJSSURFOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
VXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCkgT1ZFUlJJ
REU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKSBPVkVS
UklERTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5k
bGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzLCB1bnNp
Z25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgT1ZFUlJJREU7CkBAIC0xNzEs
NyArMTcxLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWRDb25uZWN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBwcm90b2NvbCk7CiAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZFNlbmQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHN0YXRpYyB2
b2lkIG1haW5UaHJlYWRTZW5kQXJyYXlCdWZmZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBl
ZXIqLCBQYXNzT3duUHRyPFZlY3RvcjxjaGFyPiA+KTsKKyAgICBzdGF0aWMgdm9pZCBtYWluVGhy
ZWFkU2VuZEFycmF5QnVmZmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQZWVyKiwgUGFzc093
blB0cjxWZWN0b3I8Y2hhcj4+KTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkU2VuZEJsb2Io
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGxvbmcgbG9uZyBzaXplKTsKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQnVmZmVy
ZWRBbW91bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqKTsKICAgICBzdGF0aWMgdm9p
ZCBtYWluVGhyZWFkQ2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBlZXIqLCBpbnQgY29k
ZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggODllNmY0ZTgzMDdlYWZkNmU2MTJlZjM4N2UxMGM2
MDFkMDQyODk1ZC4uNmIxNmRiMzU3MWY0NjM4OTU4ZjRhNDlhODgzZTUzNGVjZDM2YzhmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0x
MTgsOCArMTE4LDggQEAgQVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUoKQogewogICAgIG1f
bm90aWZpY2F0aW9uUG9zdFRpbWVyLnN0b3AoKTsKIAotICAgIEhhc2hNYXA8QVhJRCwgUmVmUHRy
PEFjY2Vzc2liaWxpdHlPYmplY3Q+ID46Oml0ZXJhdG9yIGVuZCA9IG1fb2JqZWN0cy5lbmQoKTsK
LSAgICBmb3IgKEhhc2hNYXA8QVhJRCwgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+ID46Oml0
ZXJhdG9yIGl0ID0gbV9vYmplY3RzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIEhh
c2hNYXA8QVhJRCwgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+Pjo6aXRlcmF0b3IgZW5kID0g
bV9vYmplY3RzLmVuZCgpOworICAgIGZvciAoSGFzaE1hcDxBWElELCBSZWZQdHI8QWNjZXNzaWJp
bGl0eU9iamVjdD4+OjppdGVyYXRvciBpdCA9IG1fb2JqZWN0cy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gKCppdCkudmFsdWUu
Z2V0KCk7CiAgICAgICAgIGRldGFjaFdyYXBwZXIob2JqKTsKICAgICAgICAgb2JqLT5kZXRhY2go
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXgg
OTcwYjFjZTlkNjI3NmI5MjQ1ZmM4YjhkNmUyNjZhMzc1YzllMWEyYS4uYjIyN2M2ODAwMzM1YWJi
ZTFiOTQ5MmFmNTc2NzVhZTNiYmI4YzRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTIyNCw3ICsyMjQsNyBAQCBwcm90ZWN0ZWQ6CiAKIHBy
aXZhdGU6CiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7Ci0gICAgSGFzaE1hcDxBWElELCBSZWZQ
dHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gPiBtX29iamVjdHM7CisgICAgSGFzaE1hcDxBWElELCBS
ZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IG1fb2JqZWN0czsKICAgICBIYXNoTWFwPFJlbmRl
ck9iamVjdCosIEFYSUQ+IG1fcmVuZGVyT2JqZWN0TWFwcGluZzsKICAgICBIYXNoTWFwPFdpZGdl
dCosIEFYSUQ+IG1fd2lkZ2V0T2JqZWN0TWFwcGluZzsKICAgICBIYXNoTWFwPE5vZGUqLCBBWElE
PiBtX25vZGVPYmplY3RNYXBwaW5nOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHByaXZhdGU6CiAgICAg
SGFzaFNldDxBWElEPiBtX2lkc0luVXNlOwogICAgIAogICAgIFRpbWVyPEFYT2JqZWN0Q2FjaGU+
IG1fbm90aWZpY2F0aW9uUG9zdFRpbWVyOwotICAgIFZlY3RvcjxwYWlyPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5T2JqZWN0PiwgQVhOb3RpZmljYXRpb24+ID4gbV9ub3RpZmljYXRpb25zVG9Qb3N0Owor
ICAgIFZlY3RvcjxwYWlyPFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiwgQVhOb3RpZmljYXRp
b24+PiBtX25vdGlmaWNhdGlvbnNUb1Bvc3Q7CiAgICAgdm9pZCBub3RpZmljYXRpb25Qb3N0VGlt
ZXJGaXJlZChUaW1lcjxBWE9iamVjdENhY2hlPiopOwogICAgIAogICAgIHN0YXRpYyBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBmb2N1c2VkSW1hZ2VNYXBVSUVsZW1lbnQoSFRNTEFyZWFFbGVtZW50Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3QuY3BwCmluZGV4IDcwOTAxZGUyMmI5MzBhNTMxOWQ5OWU4NjQ1NTMxOWQ4NjZh
MTA0ZTYuLmI0YTZhMDkyMmJkZTM2MmU0M2JjMTM3NWVjZjJkYTE4ZGQzNTFhNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QuY3BwCkBAIC0xMzk3LDcgKzEzOTcsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0OjphcmlhTGFiZWxlZEJ5VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+JiB0ZXh0Twog
ICAgICAgICBWZWN0b3I8RWxlbWVudCo+IGVsZW1lbnRzOwogICAgICAgICBhcmlhTGFiZWxlZEJ5
RWxlbWVudHMoZWxlbWVudHMpOwogICAgICAgICAKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PiA+IGF4RWxlbWVudHM7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8QWNj
ZXNzaWJpbGl0eU9iamVjdD4+IGF4RWxlbWVudHM7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IGVsZW1lbnRzLnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGxlbmd0
aDsgaysrKSB7CiAgICAgICAgICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gYXhFbGVt
ZW50ID0gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShlbGVtZW50c1trXSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4
IDdiYmU2ZDcxNzc1YjYyMDczNmNjM2YxZGRiZDhlZGYwOTlhYmRiMjUuLmEzZGFmNTU4YTM0N2Fm
OWFiOTY3MjJiNDMxYzkxOTQzNGM3MTA2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0yMjEsMTQgKzIyMSwxNCBAQCBl
bnVtIEFjY2Vzc2liaWxpdHlUZXh0U291cmNlIHsKIHN0cnVjdCBBY2Nlc3NpYmlsaXR5VGV4dCB7
CiAgICAgU3RyaW5nIHRleHQ7CiAgICAgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2UgdGV4dFNvdXJj
ZTsKLSAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+ID4gdGV4dEVsZW1lbnRz
OworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IHRleHRFbGVtZW50czsK
ICAgICAKICAgICBBY2Nlc3NpYmlsaXR5VGV4dChjb25zdCBTdHJpbmcmIHQsIGNvbnN0IEFjY2Vz
c2liaWxpdHlUZXh0U291cmNlJiBzKQogICAgIDogdGV4dCh0KQogICAgICwgdGV4dFNvdXJjZShz
KQogICAgIHsgfQogCi0gICAgQWNjZXNzaWJpbGl0eVRleHQoY29uc3QgU3RyaW5nJiB0LCBjb25z
dCBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZSYgcywgY29uc3QgVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5T2JqZWN0PiA+IGVsZW1lbnRzKQorICAgIEFjY2Vzc2liaWxpdHlUZXh0KGNvbnN0IFN0
cmluZyYgdCwgY29uc3QgQWNjZXNzaWJpbGl0eVRleHRTb3VyY2UmIHMsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IGVsZW1lbnRzKQogICAgIDogdGV4dCh0KQogICAg
ICwgdGV4dFNvdXJjZShzKQogICAgICwgdGV4dEVsZW1lbnRzKGVsZW1lbnRzKQpAQCAtMzk1LDcg
KzM5NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CiAgICAgdmlydHVh
bCBib29sIGlzRGV0YWNoZWQoKSBjb25zdDsKIAotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5T2JqZWN0PiA+IEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvcjsKKyAgICB0
eXBlZGVmIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4+IEFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvcjsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9ICAgIAogICAgIHZpcnR1YWwgYm9vbCBp
c0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAt
ODQyLDcgKzg0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBtYXRoTGluZVRoaWNrbmVz
cygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICAKICAgICAvLyBNdWx0aXNjcmlwdHMgY29tcG9u
ZW50cy4KLSAgICB0eXBlZGVmIFZlY3RvcjxwYWlyPEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBY2Nl
c3NpYmlsaXR5T2JqZWN0Kj4gPiBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnM7Cisg
ICAgdHlwZWRlZiBWZWN0b3I8cGFpcjxBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQWNjZXNzaWJpbGl0
eU9iamVjdCo+PiBBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnM7CiAgICAgdmlydHVh
bCB2b2lkIG1hdGhQcmVzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhN
dWx0aXNjcmlwdFBhaXJzJikgeyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0RPTVdyYXBwZXJXb3JsZC5oCmluZGV4IGI4YmMyY2ZiY2MyMjZmYTcxZTcwN2E4NDQzNDJlNjRk
N2EzYWIxZjkuLmFjNzcwMTI5YTc2ZjhkMzM5YmQ3MDJmMTQxNWM5M2E3ODg2YTExM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oCkBAIC0zMiw4ICsz
Miw4IEBAIGNsYXNzIENTU1ZhbHVlOwogY2xhc3MgSlNET01XcmFwcGVyOwogY2xhc3MgU2NyaXB0
Q29udHJvbGxlcjsKIAotdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBKU0M6OldlYWs8SlNDOjpKU09i
amVjdD4gPiBET01PYmplY3RXcmFwcGVyTWFwOwotdHlwZWRlZiBKU0M6OldlYWtHQ01hcDxTdHJp
bmdJbXBsKiwgSlNDOjpKU1N0cmluZywgUHRySGFzaDxTdHJpbmdJbXBsKj4gPiBKU1N0cmluZ0Nh
Y2hlOwordHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4+IERP
TU9iamVjdFdyYXBwZXJNYXA7Cit0eXBlZGVmIEpTQzo6V2Vha0dDTWFwPFN0cmluZ0ltcGwqLCBK
U0M6OkpTU3RyaW5nLCBQdHJIYXNoPFN0cmluZ0ltcGwqPj4gSlNTdHJpbmdDYWNoZTsKIAogY2xh
c3MgRE9NV3JhcHBlcldvcmxkIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NV3JhcHBlcldvcmxkPiB7
CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4
IDc3YjkzZGJmYWI3NDdhNjBkYjE1ODI4Y2FiMGU0NTJhMmJiMjFjZjcuLjk3ZDZhNWVjNThiOTFl
YjBmMmExMjM1YjZjZTYwZGU3ZTQ0Mjc3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oCkBAIC00OTgsMTIgKzQ5OCwxMiBAQCBjbGFzcyBET01TdHJpbmdMaXN0
OwogICAgIH07CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSlNUPgotICAgIFZlY3Rv
cjxSZWZQdHI8VD4gPiB0b1JlZlB0ck5hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0M6OkpTVmFsdWUgdmFsdWUsIFQqICgqdG9UKShKU0M6OkpTVmFsdWUgdmFsdWUpKQorICAgIFZl
Y3RvcjxSZWZQdHI8VD4+IHRvUmVmUHRyTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSwgVCogKCp0b1QpKEpTQzo6SlNWYWx1ZSB2YWx1ZSkpCiAgICAg
ewogICAgICAgICBpZiAoIWlzSlNBcnJheSh2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gVmVj
dG9yPFJlZlB0cjxUPiA+KCk7CisgICAgICAgICAgICByZXR1cm4gVmVjdG9yPFJlZlB0cjxUPj4o
KTsKIAotICAgICAgICBWZWN0b3I8UmVmUHRyPFQ+ID4gcmVzdWx0OworICAgICAgICBWZWN0b3I8
UmVmUHRyPFQ+PiByZXN1bHQ7CiAgICAgICAgIEpTQzo6SlNBcnJheSogYXJyYXkgPSBhc0FycmF5
KHZhbHVlKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS0+bGVuZ3RoKCk7
ICsraSkgewogICAgICAgICAgICAgSlNDOjpKU1ZhbHVlIGVsZW1lbnQgPSBhcnJheS0+Z2V0SW5k
ZXgoZXhlYywgaSk7CkBAIC01MTEsNyArNTExLDcgQEAgY2xhc3MgRE9NU3RyaW5nTGlzdDsKICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCgqdG9UKShlbGVtZW50KSk7CiAgICAgICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlwZSIpKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gVmVjdG9yPFJlZlB0cjxUPiA+KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFZl
Y3RvcjxSZWZQdHI8VD4+KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5oCmluZGV4IDNmZjgyYWNiZDMzZDY4M2E3ZjVjMTFmZmYzY2VmMGYzNTcyMTI4MmYuLjZl
YWI5OTk2N2YxNDYwODJmMjExYTNhNGE3NjQyNmViYzExMTA0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaApAQCAtMzgsOCArMzgsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRE9NV3JhcHBlcldvcmxkOwogICAgIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgSlND
OjpDbGFzc0luZm8qLCBKU0M6OldyaXRlQmFycmllcjxKU0M6OlN0cnVjdHVyZT4gPiBKU0RPTVN0
cnVjdHVyZU1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgSlNDOjpDbGFzc0luZm8qLCBK
U0M6OldyaXRlQmFycmllcjxKU0M6OkpTT2JqZWN0PiA+IEpTRE9NQ29uc3RydWN0b3JNYXA7Cisg
ICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IEpTQzo6Q2xhc3NJbmZvKiwgSlNDOjpXcml0ZUJhcnJp
ZXI8SlNDOjpTdHJ1Y3R1cmU+PiBKU0RPTVN0cnVjdHVyZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8Y29uc3QgSlNDOjpDbGFzc0luZm8qLCBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTT2JqZWN0
Pj4gSlNET01Db25zdHJ1Y3Rvck1hcDsKIAogICAgIGNsYXNzIEpTRE9NR2xvYmFsT2JqZWN0IDog
cHVibGljIEpTQzo6SlNHbG9iYWxPYmplY3QgewogICAgICAgICB0eXBlZGVmIEpTQzo6SlNHbG9i
YWxPYmplY3QgQmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
TXV0YXRpb25DYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0
aW9uQ2FsbGJhY2suY3BwCmluZGV4IDM2NjI1OWExNTMzY2U4MTIyZGRjMzBlNmUyMWUxOTBkYjk4
NmNiMDYuLmFkYWJjN2ViN2NkZWM3YWMyZmNkOTc4NmRlOWZkMGJhMDk0MDgzMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcApAQCAt
NTEsNyArNTEsNyBAQCBKU011dGF0aW9uQ2FsbGJhY2s6On5KU011dGF0aW9uQ2FsbGJhY2soKQog
ewogfQogCi12b2lkIEpTTXV0YXRpb25DYWxsYmFjazo6Y2FsbChjb25zdCBWZWN0b3I8UmVmUHRy
PE11dGF0aW9uUmVjb3JkPiA+JiBtdXRhdGlvbnMsIE11dGF0aW9uT2JzZXJ2ZXIqIG9ic2VydmVy
KQordm9pZCBKU011dGF0aW9uQ2FsbGJhY2s6OmNhbGwoY29uc3QgVmVjdG9yPFJlZlB0cjxNdXRh
dGlvblJlY29yZD4+JiBtdXRhdGlvbnMsIE11dGF0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyKQogewog
ICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suaAppbmRleCA4MmE2OWVk
OTgyMDMwOTEwODFjMzA2Y2ZjMzg4ZDBhMGFlZjNhY2ZlLi5jMjIzNmRiYWY1MzFlMGY4MzIyNmMx
YWZlNjhiYzYyOTBkODQxNmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU011dGF0aW9uQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U011dGF0aW9uQ2FsbGJhY2suaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIH5KU011dGF0aW9uQ2FsbGJhY2soKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjYWxsKGNvbnN0
IFZlY3RvcjxSZWZQdHI8TXV0YXRpb25SZWNvcmQ+ID4mLCBNdXRhdGlvbk9ic2VydmVyKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNhbGwoY29uc3QgVmVjdG9yPFJlZlB0cjxNdXRhdGlv
blJlY29yZD4+JiwgTXV0YXRpb25PYnNlcnZlciopIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggYzE5NWQwMTdlNDZk
OGFkMWE5NmIwMmRjZTQzMGVjMzNkZDFjYzdjNC4uOTE1MGZlMTQ0YTE5ZGFiYTA0OTZkYWZjMzA1
NDAxMTAwYjY2M2JmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApAQCAtMjQ5LDcgKzI0OSw3
IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0dGFjaGVkU2hhZGVycyhF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gdG9XZWJHTFByb2dy
YW0oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghcHJvZ3JhbSAmJiAhZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOwotICAgIFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFkZXI+
ID4gc2hhZGVyczsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYkdMU2hhZGVyPj4gc2hhZGVyczsKICAg
ICBib29sIHN1Y2NlZWQgPSBjb250ZXh0LmdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBzaGFk
ZXJzLCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBl
Yyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5oCmluZGV4IDgyMzJjZDlhZDBiMDEzNjY5MzA3MjEwOTc2NzBmZWQ0YjgzMmE4OGMuLjA1
YjhhMWE0YjZkNmMxNzU0ZmEyYWJjNTIzYzYzMzQ1ODhiNmMxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC01NCw3ICs1
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMo
VGltZXI8U2NyaXB0RGVidWdTZXJ2ZXI+Kik7CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBIYXNo
TWFwPFBhZ2UqLCBPd25QdHI8TGlzdGVuZXJTZXQ+ID4gUGFnZUxpc3RlbmVyc01hcDsKKyAgICB0
eXBlZGVmIEhhc2hNYXA8UGFnZSosIE93blB0cjxMaXN0ZW5lclNldD4+IFBhZ2VMaXN0ZW5lcnNN
YXA7CiAKICAgICBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIoKTsKICAgICB2aXJ0dWFsIH5QYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjaGVkdWxlZEFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVk
QWN0aW9uLmgKaW5kZXggM2VlMjFiY2JkZjIzMzZmYjBjNTFlNTUxMTM0Yjk5ZDA5Y2QxMWYxNy4u
ZTkzYTgzYTdkMGIyODFmNTMyN2UyYmNkMWYyOTIzNGM1M2NlYzVhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmgKQEAgLTY2LDcgKzY2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAKICAgICAgICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtu
b3duPiBtX2Z1bmN0aW9uOwotICAgICAgICBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3du
PiA+IG1fYXJnczsKKyAgICAgICAgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+IG1f
YXJnczsKICAgICAgICAgU3RyaW5nIG1fY29kZTsKICAgICAgICAgUmVmUHRyPERPTVdyYXBwZXJX
b3JsZD4gbV9pc29sYXRlZFdvcmxkOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDI3ODA4MzE1MzhhZTBhMjMwZWYyYTdl
YTQ1YmRhNDNjNmZjOWUyZDguLjQxYWQ0MDgzZTg1YzVmMDc0NWNhZWQyODBkZDA3YWYyMmEwZTVh
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCkBAIC0zMzcsNyArMzM3LDcgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpzZXRDYXB0dXJl
Q2FsbFN0YWNrRm9yVW5jYXVnaHRFeGNlcHRpb25zKGJvb2wpCiB7CiB9CiAKLXZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6Y29sbGVjdElzb2xhdGVkQ29udGV4dHMoVmVjdG9yPHN0ZDo6cGFpcjxKU0M6
OkV4ZWNTdGF0ZSosIFNlY3VyaXR5T3JpZ2luKj4gPiYgcmVzdWx0KQordm9pZCBTY3JpcHRDb250
cm9sbGVyOjpjb2xsZWN0SXNvbGF0ZWRDb250ZXh0cyhWZWN0b3I8c3RkOjpwYWlyPEpTQzo6RXhl
Y1N0YXRlKiwgU2VjdXJpdHlPcmlnaW4qPj4mIHJlc3VsdCkKIHsKICAgICBmb3IgKFNoZWxsTWFw
OjppdGVyYXRvciBpdGVyID0gbV93aW5kb3dTaGVsbHMuYmVnaW4oKTsgaXRlciAhPSBtX3dpbmRv
d1NoZWxscy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0g
aXRlci0+dmFsdWUtPndpbmRvdygpLT5nbG9iYWxFeGVjKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggNjFiNzk1ZjIzMWZiN2QwY2E3Yjg5
YjEyM2JlNjg2ZmFhYjdjMzYzZi4uMzY2YjcyNDUyNTc1ZjE4YjYyMjc1YmZmMmE2MWY2MTA0NDBh
OGJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
aApAQCAtNTcsNyArNTcsNyBAQCBjbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOwogY2xhc3MgV2lkZ2V0OwogCi10eXBlZGVmIEhhc2hNYXA8dm9pZCosIFJlZlB0cjxKU0M6
OkJpbmRpbmdzOjpSb290T2JqZWN0PiA+IFJvb3RPYmplY3RNYXA7Cit0eXBlZGVmIEhhc2hNYXA8
dm9pZCosIFJlZlB0cjxKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0Pj4gUm9vdE9iamVjdE1hcDsK
IAogZW51bSBSZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNjcmlwdHMgewogICAgIEFib3V0VG9F
eGVjdXRlU2NyaXB0LApAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAgICAgc3RhdGljIHZvaWQgc2V0Q2FwdHVyZUNhbGxTdGFja0ZvclVuY2F1Z2h0
RXhjZXB0aW9ucyhib29sKTsKLSAgICB2b2lkIGNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3Rv
cjxzdGQ6OnBhaXI8SlNDOjpFeGVjU3RhdGUqLCBTZWN1cml0eU9yaWdpbio+ID4mKTsKKyAgICB2
b2lkIGNvbGxlY3RJc29sYXRlZENvbnRleHRzKFZlY3RvcjxzdGQ6OnBhaXI8SlNDOjpFeGVjU3Rh
dGUqLCBTZWN1cml0eU9yaWdpbio+PiYpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBk
OTgzY2IzOWVjOGI2OTBkNDJmNjRiNzhhNWYwNTJlZDVjOWNhOGYzLi4yOWJmMjcxZDFlM2VkZTE4
MzcxYWQwOGVlZmJmMWI5Y2U2YzFiN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChKU0M6OkNhbGxGcmFtZSopIE9WRVJS
SURFOwogCiAgICAgdHlwZWRlZiBWZWN0b3I8U2NyaXB0QnJlYWtwb2ludD4gQnJlYWtwb2ludHNJ
bkxpbmU7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPGludCwgQnJlYWtwb2ludHNJbkxpbmUsIFdURjo6
SW50SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4gPiBM
aW5lVG9CcmVha3BvaW50c01hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBCcmVha3BvaW50
c0luTGluZSwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hU
cmFpdHM8aW50Pj4gTGluZVRvQnJlYWtwb2ludHNNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGlu
dHB0cl90LCBMaW5lVG9CcmVha3BvaW50c01hcD4gU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOwog
CiAgICAgYm9vbCBtX2NhbGxpbmdMaXN0ZW5lcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFByb2ZpbGUuY3BwCmluZGV4IDkxZGQzZDM2ZGE3ZGYwZGY5YzMzN2QxY2MxMGQ5
ODNlNzhjMzY4Y2UuLjQ1MDUwYWU2ZTI2OTA4ZWFmODA5YTg4ZWIzOTI3YTU3NDhjNDE5NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFByb2ZpbGUuY3BwCkBAIC03Niwx
MCArNzYsMTAgQEAgZG91YmxlIFNjcmlwdFByb2ZpbGU6OmlkbGVUaW1lKCkgY29uc3QKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlByb2ZpbGVy
OjpDUFVQcm9maWxlTm9kZT4gYnVpbGRJbnNwZWN0b3JPYmplY3RGb3IoY29uc3QgSlNDOjpQcm9m
aWxlTm9kZSogbm9kZSkKIHsKLSAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8SlNDOjpQcm9maWxl
Tm9kZT4gPiBQcm9maWxlTm9kZXNMaXN0OworICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxKU0M6
OlByb2ZpbGVOb2RlPj4gUHJvZmlsZU5vZGVzTGlzdDsKICAgICBjb25zdCBQcm9maWxlTm9kZXNM
aXN0JiBub2RlQ2hpbGRyZW4gPSBub2RlLT5jaGlsZHJlbigpOwogICAgIFByb2ZpbGVOb2Rlc0xp
c3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG5vZGVDaGlsZHJlbi5lbmQoKTsKLSAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+
ID4gY2hpbGRyZW4gPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpD
UFVQcm9maWxlTm9kZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxlTm9kZT4+IGNoaWxkcmVuID0gVHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+OjpjcmVh
dGUoKTsKICAgICBmb3IgKFByb2ZpbGVOb2Rlc0xpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBu
b2RlQ2hpbGRyZW4uYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKICAgICAgICAgY2hpbGRy
ZW4tPmFkZEl0ZW0oYnVpbGRJbnNwZWN0b3JPYmplY3RGb3IoaXRlci0+Z2V0KCkpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDTm9kZUZpbHRlckNvbmRp
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDTm9kZUZpbHRlckNvbmRp
dGlvbi5oCmluZGV4IGUxMzZiYzQ3MTM3YmI0OTE0M2E4MDgxYTIxYzFjMzIwMzk1MDg5ODUuLmI4
M2RiZWUzMTk4MzIyMTJmZDlkYTc5ZmIwZTkwMDRhZjA3MzNmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmgKQEAg
LTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0K
IAotICAgICAgICBSZXRhaW5QdHI8aWQgPERPTU5vZGVGaWx0ZXI+ID4gbV9maWx0ZXI7CisgICAg
ICAgIFJldGFpblB0cjxpZCA8RE9NTm9kZUZpbHRlcj4+IG1fZmlsdGVyOwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfY2xhc3MuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3Mu
aAppbmRleCA4MzgzNDdmMjRhYzlmYTQ4Y2VjYmMzN2U1Y2M3MTliNzJlOTllOTc2Li45YmQyZTFl
MzMxMzJiZWY0OWIxN2QxYWMzNGE5YjRhM2Y1NjlkZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY19jbGFzcy5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKICAgICAKIHByaXZh
dGU6CiAgICAgQ2xhc3NTdHJ1Y3RQdHIgX2lzYTsKLSAgICBtdXRhYmxlIEhhc2hNYXA8U3RyaW5n
LCBPd25QdHI8TWV0aG9kPiA+IG1fbWV0aG9kQ2FjaGU7Ci0gICAgbXV0YWJsZSBIYXNoTWFwPFN0
cmluZywgT3duUHRyPEZpZWxkPiA+IG1fZmllbGRDYWNoZTsKKyAgICBtdXRhYmxlIEhhc2hNYXA8
U3RyaW5nLCBPd25QdHI8TWV0aG9kPj4gbV9tZXRob2RDYWNoZTsKKyAgICBtdXRhYmxlIEhhc2hN
YXA8U3RyaW5nLCBPd25QdHI8RmllbGQ+PiBtX2ZpZWxkQ2FjaGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBCaW5kaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
cm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcAppbmRleCBl
Mzk2Y2NmNjNjNjM4ZTdmMzRkNDA4YzEyMmVmZDA3ZThkYTRhNDAxLi5iYTAzZDVkMjk5MmI0OGJk
ODBiZTQ2N2JmMWUyZmM5ZDBmZDI2YTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9yb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9y
b290LmNwcApAQCAtMTA1LDggKzEwNSw4IEBAIHZvaWQgUm9vdE9iamVjdDo6aW52YWxpZGF0ZSgp
CiAgICAgICAgIHJldHVybjsKIAogICAgIHsKLSAgICAgICAgSGFzaE1hcDxSdW50aW1lT2JqZWN0
KiwgSlNDOjpXZWFrPFJ1bnRpbWVPYmplY3Q+ID46Oml0ZXJhdG9yIGVuZCA9IG1fcnVudGltZU9i
amVjdHMuZW5kKCk7Ci0gICAgICAgIGZvciAoSGFzaE1hcDxSdW50aW1lT2JqZWN0KiwgSlNDOjpX
ZWFrPFJ1bnRpbWVPYmplY3Q+ID46Oml0ZXJhdG9yIGl0ID0gbV9ydW50aW1lT2JqZWN0cy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgSGFzaE1hcDxSdW50aW1lT2JqZWN0Kiwg
SlNDOjpXZWFrPFJ1bnRpbWVPYmplY3Q+Pjo6aXRlcmF0b3IgZW5kID0gbV9ydW50aW1lT2JqZWN0
cy5lbmQoKTsKKyAgICAgICAgZm9yIChIYXNoTWFwPFJ1bnRpbWVPYmplY3QqLCBKU0M6OldlYWs8
UnVudGltZU9iamVjdD4+OjppdGVyYXRvciBpdCA9IG1fcnVudGltZU9iamVjdHMuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBSdW50aW1lT2JqZWN0KiBydW50aW1lT2Jq
ZWN0ID0gaXQtPnZhbHVlLmdldCgpOwogICAgICAgICAgICAgaWYgKCFydW50aW1lT2JqZWN0KSAv
LyBTa2lwIHpvbWJpZXMuCiAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9yb290LmgKaW5kZXggZjVlNWQ0ZGE1MDFkNjA5Yzk2NWY0MGIyZDY2NjUzZDhj
NmI3YWUwMS4uNTdiYjU3N2U2MjhhYzRmMTU2ZDZjMzZlNTZmY2U3NmU2NjIyZTc1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaApAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgog
ICAgIFN0cm9uZzxKU0dsb2JhbE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAKICAgICBQcm90ZWN0
Q291bnRTZXQgbV9wcm90ZWN0Q291bnRTZXQ7Ci0gICAgSGFzaE1hcDxSdW50aW1lT2JqZWN0Kiwg
SlNDOjpXZWFrPFJ1bnRpbWVPYmplY3Q+ID4gbV9ydW50aW1lT2JqZWN0czsgLy8gV2UgdXNlIGEg
bWFwIHRvIGltcGxlbWVudCBhIHNldC4KKyAgICBIYXNoTWFwPFJ1bnRpbWVPYmplY3QqLCBKU0M6
OldlYWs8UnVudGltZU9iamVjdD4+IG1fcnVudGltZU9iamVjdHM7IC8vIFdlIHVzZSBhIG1hcCB0
byBpbXBsZW1lbnQgYSBzZXQuCiAKICAgICBIYXNoU2V0PEludmFsaWRhdGlvbkNhbGxiYWNrKj4g
bV9pbnZhbGlkYXRpb25DYWxsYmFja3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hh
cGVGdW5jdGlvbnMuY3BwCmluZGV4IDcxOTA3NDVhYjIwNTdlZDZjMjk0MTQ2ZmRjZmM4MTc2Yzlk
M2YwN2IuLjU3Y2RhN2IyOWIwNmQ0MDRhMmNlMTA5NGJhZWEwODhjMmZlMWEzYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKQEAgLTE3Myw3ICsxNzMsNyBA
QCBQYXNzUmVmUHRyPEJhc2ljU2hhcGU+IGJhc2ljU2hhcGVGb3JWYWx1ZShjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUsIGNvbnN0IFJlbmRlcgogICAgICAgICBSZWZQdHI8QmFzaWNTaGFwZVBvbHln
b24+IHBvbHlnb24gPSBCYXNpY1NoYXBlUG9seWdvbjo6Y3JlYXRlKCk7CiAKICAgICAgICAgcG9s
eWdvbi0+c2V0V2luZFJ1bGUocG9seWdvblZhbHVlLT53aW5kUnVsZSgpKTsKLSAgICAgICAgY29u
c3QgVmVjdG9yPFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gPiYgdmFsdWVzID0gcG9seWdvblZh
bHVlLT52YWx1ZXMoKTsKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4+JiB2YWx1ZXMgPSBwb2x5Z29uVmFsdWUtPnZhbHVlcygpOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgaSArPSAyKQogICAgICAgICAgICAgcG9s
eWdvbi0+YXBwZW5kUG9pbnQoY29udmVydFRvTGVuZ3RoKHN0eWxlLCByb290U3R5bGUsIHZhbHVl
cy5hdChpKS5nZXQoKSksIGNvbnZlcnRUb0xlbmd0aChzdHlsZSwgcm9vdFN0eWxlLCB2YWx1ZXMu
YXQoaSArIDEpLmdldCgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NC
YXNpY1NoYXBlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmgKaW5kZXgg
NzM2OWIxYWUwMzIzNTNjMjc5NDg3OTRkODNjYWI1OTQ2OTQ1YmUzMC4uMDg5YTg0OWNjMjMyYmM1
NWJmNTNlMzY0MTkxZWM5MzY4NGYxMDViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Jhc2ljU2hhcGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVz
LmgKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBnZXRYQXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuYXQo
aSAqIDIpOyB9CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZ2V0WUF0KHVuc2ln
bmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLmF0KGkgKiAyICsgMSk7IH0KLSAgICBjb25z
dCBWZWN0b3I8UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiA+JiB2YWx1ZXMoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlczsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+PiYgdmFsdWVzKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXM7IH0KIAogICAgIHZvaWQgc2V0
V2luZFJ1bGUoV2luZFJ1bGUgdykgeyBtX3dpbmRSdWxlID0gdzsgfQogICAgIFdpbmRSdWxlIHdp
bmRSdWxlKCkgY29uc3QgeyByZXR1cm4gbV93aW5kUnVsZTsgfQpAQCAtMjMyLDcgKzIzMiw3IEBA
IHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFZlY3RvcjxSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+ID4gbV92YWx1ZXM7CisgICAgVmVjdG9yPFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4+
IG1fdmFsdWVzOwogICAgIFdpbmRSdWxlIG1fd2luZFJ1bGU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGI3Njdi
Yjk1NzNkMjgwMmUzN2JlYWVmMmY4NzYwZjAzN2VhYjlkZDguLmVhNjZlN2M0Zjg2ZmFhMTYzN2U5
MGU3MjAwNjMwZGYyZTZjNzZhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC05NDksOCArOTQ5LDggQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIoY29uc3Qg
UmVuZGVyT2JqZWN0KgogCiAgICAgUmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiBmaWx0ZXJW
YWx1ZTsKIAotICAgIFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiA+Ojpjb25zdF9pdGVy
YXRvciBlbmQgPSBmaWx0ZXJPcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5lbmQoKTsKLSAgICBmb3Ig
KFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGZp
bHRlck9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewor
ICAgIFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGZpbHRlck9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmVuZCgpOworICAgIGZvciAoVmVjdG9yPFJl
ZlB0cjxGaWx0ZXJPcGVyYXRpb24+Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBmaWx0ZXJPcGVyYXRp
b25zLm9wZXJhdGlvbnMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgRmls
dGVyT3BlcmF0aW9uKiBmaWx0ZXJPcGVyYXRpb24gPSAoKml0KS5nZXQoKTsKICAgICAgICAgc3dp
dGNoIChmaWx0ZXJPcGVyYXRpb24tPmdldE9wZXJhdGlvblR5cGUoKSkgewogICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmlu
ZGV4IDRlZDk0NmY5Nzk4ZWMwNDcyODI5NWY5YTBmODI3ZWE2MzIzMjllNmIuLjUyOGNlNGYwMmVm
MzdjY2EzMGJlMzUyODVlYTVlZTA0MmE0MTgyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5o
CkBAIC0xMDcsNyArMTA3LDcgQEAgcHJpdmF0ZToKICAgICBGb250VHJhaXRzTWFzayBtX3RyYWl0
c01hc2s7CiAgICAgVmVjdG9yPFVuaWNvZGVSYW5nZT4gbV9yYW5nZXM7CiAgICAgSGFzaFNldDxD
U1NTZWdtZW50ZWRGb250RmFjZSo+IG1fc2VnbWVudGVkRm9udEZhY2VzOwotICAgIFZlY3RvcjxP
d25QdHI8Q1NTRm9udEZhY2VTb3VyY2U+ID4gbV9zb3VyY2VzOworICAgIFZlY3RvcjxPd25QdHI8
Q1NTRm9udEZhY2VTb3VyY2U+PiBtX3NvdXJjZXM7CiAgICAgQ1NTRm9udEZhY2VTb3VyY2UqIG1f
YWN0aXZlU291cmNlOwogICAgIGJvb2wgbV9pc0xvY2FsRmFsbGJhY2s7CiAjaWYgRU5BQkxFKEZP
TlRfTE9BRF9FVkVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5oCmluZGV4
IDExNTQzNzNmNzUyNmJjZmU4OWViZjVhZmMxMDAxNzBiZmRmNmUzMGIuLjgxOGEzMjY5YzIyMjVl
M2Y5MGRlOTNmNzkwYjJjNmIxYmM0NTU3YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGb250RmFjZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZVNvdXJjZS5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgQXRvbWljU3RyaW5nIG1f
c3RyaW5nOyAvLyBVUkkgZm9yIHJlbW90ZSwgYnVpbHQtaW4gZm9udCBuYW1lIGZvciBsb2NhbC4K
ICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiBtX2ZvbnQ7IC8vIEZvciByZW1v
dGUgZm9udHMsIGEgcG9pbnRlciB0byBvdXIgY2FjaGVkIHJlc291cmNlLgogICAgIENTU0ZvbnRG
YWNlKiBtX2ZhY2U7IC8vIE91ciBvd25pbmcgZm9udCBmYWNlLgotICAgIEhhc2hNYXA8dW5zaWdu
ZWQsIFJlZlB0cjxTaW1wbGVGb250RGF0YT4gPiBtX2ZvbnREYXRhVGFibGU7IC8vIFRoZSBoYXNo
IGtleSBpcyBjb21wb3NlZCBvZiBzaXplIHN5bnRoZXRpYyBzdHlsZXMuCisgICAgSGFzaE1hcDx1
bnNpZ25lZCwgUmVmUHRyPFNpbXBsZUZvbnREYXRhPj4gbV9mb250RGF0YVRhYmxlOyAvLyBUaGUg
aGFzaCBrZXkgaXMgY29tcG9zZWQgb2Ygc2l6ZSBzeW50aGV0aWMgc3R5bGVzLgogCiAjaWYgRU5B
QkxFKFNWR19GT05UUykKICAgICBSZWZQdHI8U1ZHRm9udEZhY2VFbGVtZW50PiBtX3N2Z0ZvbnRG
YWNlRWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggMjU5
MzRkYTRkYmMxMjU0NDczYjIwODIxMzFiODc1ZDU2NWZlZWRiNi4uMWE2NGM3YTA3ZmI3NGYxNTRj
NmY5M2NkMGY5MWM5NTk0ZGRlZTY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rv
ci5jcHAKQEAgLTI5OCwxNiArMjk4LDE2IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250
RmFjZVJ1bGUoY29uc3QgU3R5bGVSdWxlRm9udEZhY2UqIGZvbnRGYWNlUnVsZSkKICAgICAgICAg
aWYgKGZhbWlseU5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgT3duUHRyPFZlY3RvcjxSZWZQdHI8Q1NTRm9udEZhY2U+ID4gPiYgZmFtaWx5Rm9udEZhY2Vz
ID0gbV9mb250RmFjZXMuYWRkKGZhbWlseU5hbWUsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
KyAgICAgICAgT3duUHRyPFZlY3RvcjxSZWZQdHI8Q1NTRm9udEZhY2U+Pj4mIGZhbWlseUZvbnRG
YWNlcyA9IG1fZm9udEZhY2VzLmFkZChmYW1pbHlOYW1lLCBudWxscHRyKS5pdGVyYXRvci0+dmFs
dWU7CiAgICAgICAgIGlmICghZmFtaWx5Rm9udEZhY2VzKSB7Ci0gICAgICAgICAgICBmYW1pbHlG
b250RmFjZXMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPik7Cisg
ICAgICAgICAgICBmYW1pbHlGb250RmFjZXMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJlZlB0cjxD
U1NGb250RmFjZT4+KTsKIAogICAgICAgICAgICAgQVNTRVJUKCFtX2xvY2FsbHlJbnN0YWxsZWRG
b250RmFjZXMuY29udGFpbnMoZmFtaWx5TmFtZSkpOwogCiAgICAgICAgICAgICBWZWN0b3I8dW5z
aWduZWQ+IGxvY2FsbHlJbnN0YWxsZWRGb250c1RyYWl0c01hc2tzOwogICAgICAgICAgICAgZm9u
dENhY2hlKCktPmdldFRyYWl0c0luRmFtaWx5KGZhbWlseU5hbWUsIGxvY2FsbHlJbnN0YWxsZWRG
b250c1RyYWl0c01hc2tzKTsKICAgICAgICAgICAgIGlmICh1bnNpZ25lZCBudW1Mb2NhbGx5SW5z
dGFsbGVkRmFjZXMgPSBsb2NhbGx5SW5zdGFsbGVkRm9udHNUcmFpdHNNYXNrcy5zaXplKCkpIHsK
LSAgICAgICAgICAgICAgICBPd25QdHI8VmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4gPiA+IGZh
bWlseUxvY2FsbHlJbnN0YWxsZWRGYWNlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVmUHRyPENT
U0ZvbnRGYWNlPiA+KTsKKyAgICAgICAgICAgICAgICBPd25QdHI8VmVjdG9yPFJlZlB0cjxDU1NG
b250RmFjZT4+PiBmYW1pbHlMb2NhbGx5SW5zdGFsbGVkRmFjZXMgPSBhZG9wdFB0cihuZXcgVmVj
dG9yPFJlZlB0cjxDU1NGb250RmFjZT4+KTsKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1Mb2NhbGx5SW5zdGFsbGVkRmFjZXM7ICsraSkgewogICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8Q1NTRm9udEZhY2U+IGxvY2FsbHlJbnN0YWxsZWRGb250RmFjZSA9
IENTU0ZvbnRGYWNlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Rm9udFRyYWl0c01hc2s+KGxvY2FsbHlJ
bnN0YWxsZWRGb250c1RyYWl0c01hc2tzW2ldKSwgMCwgdHJ1ZSk7CkBAIC01MDQsMTMgKzUwNCwx
MyBAQCBQYXNzUmVmUHRyPEZvbnREYXRhPiBDU1NGb250U2VsZWN0b3I6OmdldEZvbnREYXRhKGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlcwogCiBDU1NTZWdtZW50ZWRGb250RmFjZSogQ1NT
Rm9udFNlbGVjdG9yOjpnZXRGb250RmFjZShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNj
cmlwdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCiB7Ci0gICAgVmVjdG9yPFJlZlB0
cjxDU1NGb250RmFjZT4gPiogZmFtaWx5Rm9udEZhY2VzID0gbV9mb250RmFjZXMuZ2V0KGZhbWls
eSk7CisgICAgVmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4+KiBmYW1pbHlGb250RmFjZXMgPSBt
X2ZvbnRGYWNlcy5nZXQoZmFtaWx5KTsKICAgICBpZiAoIWZhbWlseUZvbnRGYWNlcyB8fCBmYW1p
bHlGb250RmFjZXMtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBPd25QdHI8
SGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiA+ID4mIHNlZ21l
bnRlZEZvbnRGYWNlQ2FjaGUgPSBtX2ZvbnRzLmFkZChmYW1pbHksIG51bGxwdHIpLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICBPd25QdHI8SGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRyPENTU1NlZ21lbnRl
ZEZvbnRGYWNlPj4+JiBzZWdtZW50ZWRGb250RmFjZUNhY2hlID0gbV9mb250cy5hZGQoZmFtaWx5
LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFzZWdtZW50ZWRGb250RmFjZUNh
Y2hlKQotICAgICAgICBzZWdtZW50ZWRGb250RmFjZUNhY2hlID0gYWRvcHRQdHIobmV3IEhhc2hN
YXA8dW5zaWduZWQsIFJlZlB0cjxDU1NTZWdtZW50ZWRGb250RmFjZT4gPik7CisgICAgICAgIHNl
Z21lbnRlZEZvbnRGYWNlQ2FjaGUgPSBhZG9wdFB0cihuZXcgSGFzaE1hcDx1bnNpZ25lZCwgUmVm
UHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPj4pOwogCiAgICAgRm9udFRyYWl0c01hc2sgdHJhaXRz
TWFzayA9IGZvbnREZXNjcmlwdGlvbi50cmFpdHNNYXNrKCk7CiAKQEAgLTUzNiw3ICs1MzYsNyBA
QCBDU1NTZWdtZW50ZWRGb250RmFjZSogQ1NTRm9udFNlbGVjdG9yOjpnZXRGb250RmFjZShjb25z
dCBGb250RGVzY3JpcHRpb24mIGZvbnREZQogICAgICAgICAgICAgY2FuZGlkYXRlRm9udEZhY2Vz
LmFwcGVuZChjYW5kaWRhdGUpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKFZlY3RvcjxSZWZQ
dHI8Q1NTRm9udEZhY2U+ID4qIGZhbWlseUxvY2FsbHlJbnN0YWxsZWRGb250RmFjZXMgPSBtX2xv
Y2FsbHlJbnN0YWxsZWRGb250RmFjZXMuZ2V0KGZhbWlseSkpIHsKKyAgICAgICAgaWYgKFZlY3Rv
cjxSZWZQdHI8Q1NTRm9udEZhY2U+PiogZmFtaWx5TG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcyA9
IG1fbG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcy5nZXQoZmFtaWx5KSkgewogICAgICAgICAgICAg
dW5zaWduZWQgbnVtTG9jYWxseUluc3RhbGxlZEZvbnRGYWNlcyA9IGZhbWlseUxvY2FsbHlJbnN0
YWxsZWRGb250RmFjZXMtPnNpemUoKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1Mb2NhbGx5SW5zdGFsbGVkRm9udEZhY2VzOyArK2kpIHsKICAgICAgICAgICAgICAg
ICBDU1NGb250RmFjZSogY2FuZGlkYXRlID0gZmFtaWx5TG9jYWxseUluc3RhbGxlZEZvbnRGYWNl
cy0+YXQoaSkuZ2V0KCk7CkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6
OmJlZ2luTG9hZGluZ0ZvbnRTb29uKENhY2hlZEZvbnQqIGZvbnQpCiAKIHZvaWQgQ1NTRm9udFNl
bGVjdG9yOjpiZWdpbkxvYWRUaW1lckZpcmVkKFRpbWVyPFdlYkNvcmU6OkNTU0ZvbnRTZWxlY3Rv
cj4qKQogewotICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRGb250PiA+IGZv
bnRzVG9CZWdpbkxvYWRpbmc7CisgICAgVmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZEZvbnQ+PiBmb250c1RvQmVnaW5Mb2FkaW5nOwogICAgIGZvbnRzVG9CZWdpbkxvYWRpbmcuc3dh
cChtX2ZvbnRzVG9CZWdpbkxvYWRpbmcpOwogCiAgICAgLy8gQ1NTRm9udFNlbGVjdG9yIGNvdWxk
IGdldCBkZWxldGVkIHZpYSBiZWdpbkxvYWRJZk5lZWRlZCgpIG9yIGxvYWREb25lKCkgdW5sZXNz
IHByb3RlY3RlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaAppbmRleCA0ODI2MWVh
NWRmYzUxOGQ5ZTQ2ZmVjM2YzY2U3Mjc4ZTFmNDY5YTVkLi4wNDNmZjBkNzA5NzNlODBkYTZiMDkw
N2YxMmYyNDlkNDJkNGViNmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5oCkBA
IC04NywxMiArODcsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJlZ2luTG9hZFRpbWVyRmlyZWQo
VGltZXI8Q1NTRm9udFNlbGVjdG9yPiopOwogCiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7Ci0g
ICAgSGFzaE1hcDxTdHJpbmcsIE93blB0cjxWZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNlPiA+ID4s
IENhc2VGb2xkaW5nSGFzaD4gbV9mb250RmFjZXM7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIE93blB0
cjxWZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNlPiA+ID4sIENhc2VGb2xkaW5nSGFzaD4gbV9sb2Nh
bGx5SW5zdGFsbGVkRm9udEZhY2VzOwotICAgIEhhc2hNYXA8U3RyaW5nLCBPd25QdHI8SGFzaE1h
cDx1bnNpZ25lZCwgUmVmUHRyPENTU1NlZ21lbnRlZEZvbnRGYWNlPiA+ID4sIENhc2VGb2xkaW5n
SGFzaD4gbV9mb250czsKKyAgICBIYXNoTWFwPFN0cmluZywgT3duUHRyPFZlY3RvcjxSZWZQdHI8
Q1NTRm9udEZhY2U+Pj4sIENhc2VGb2xkaW5nSGFzaD4gbV9mb250RmFjZXM7CisgICAgSGFzaE1h
cDxTdHJpbmcsIE93blB0cjxWZWN0b3I8UmVmUHRyPENTU0ZvbnRGYWNlPj4+LCBDYXNlRm9sZGlu
Z0hhc2g+IG1fbG9jYWxseUluc3RhbGxlZEZvbnRGYWNlczsKKyAgICBIYXNoTWFwPFN0cmluZywg
T3duUHRyPEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxDU1NTZWdtZW50ZWRGb250RmFjZT4+Piwg
Q2FzZUZvbGRpbmdIYXNoPiBtX2ZvbnRzOwogICAgIEhhc2hTZXQ8Rm9udFNlbGVjdG9yQ2xpZW50
Kj4gbV9jbGllbnRzOwogCi0gICAgVmVjdG9yPENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEZv
bnQ+ID4gbV9mb250c1RvQmVnaW5Mb2FkaW5nOworICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRGb250Pj4gbV9mb250c1RvQmVnaW5Mb2FkaW5nOwogICAgIFRpbWVyPENTU0Zv
bnRTZWxlY3Rvcj4gbV9iZWdpbkxvYWRpbmdUaW1lcjsKIAogICAgIHVuc2lnbmVkIG1fdW5pcXVl
SWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmgKaW5kZXggYjNmOGU5ZmExZjg3YjUx
OGY3NjBkZTg1ODdiYTAyZDZmNjk1MjEzYy4uNTA3Y2RhNzE1NzU1ZmJjYTMxZDM0NDQ3MTlmMWRl
MzU2OWFmMmJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuaApAQCAtNTIsNyAr
NTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhcHBlbmRDc3NUZXh0Rm9ySXRlbXMoU3RyaW5n
QnVpbGRlciYpIGNvbnN0OwogCiAgICAgUmVmUHRyPFN0eWxlUnVsZUdyb3VwPiBtX2dyb3VwUnVs
ZTsKLSAgICBtdXRhYmxlIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZT4gPiBtX2NoaWxkUnVsZUNTU09N
V3JhcHBlcnM7CisgICAgbXV0YWJsZSBWZWN0b3I8UmVmUHRyPENTU1J1bGU+PiBtX2NoaWxkUnVs
ZUNTU09NV3JhcHBlcnM7CiAgICAgbXV0YWJsZSBPd25QdHI8Q1NTUnVsZUxpc3Q+IG1fcnVsZUxp
c3RDU1NPTVdyYXBwZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJh
dG9yVmFsdWUuaAppbmRleCAyMTQxOWZhYzJlNzFkNGFkMDFiNGFkM2MwNTBlMWVmNGJhY2MyMzhh
Li5hODMyZjhiZjQ4MjM2OGZjNmI2ZTRjMWRiYjU3MWI5OTllMmQyYzIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgKQEAgLTg5LDcgKzg5LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGV2aWN0Q2FjaGVkR2VuZXJhdGVkSW1hZ2UoSW50U2l6ZSk7CiAKICAg
ICBIYXNoQ291bnRlZFNldDxSZW5kZXJFbGVtZW50Kj4gbV9jbGllbnRzOwotICAgIEhhc2hNYXA8
SW50U2l6ZSwgT3duUHRyPENhY2hlZEdlbmVyYXRlZEltYWdlPiA+IG1faW1hZ2VzOworICAgIEhh
c2hNYXA8SW50U2l6ZSwgT3duUHRyPENhY2hlZEdlbmVyYXRlZEltYWdlPj4gbV9pbWFnZXM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyVmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1
ZXMuY3BwCmluZGV4IGY3NjNhMTI2MDZkM2I3MmY4YWViZTk4ODRmY2YwMzE5YzBmMzc1MmMuLjlm
NGEyMDBjZjM1NDBhMTljODc1OWQxODczZTk4YzlhZGJkMDk0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXJWYWx1ZXMuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgQ1NTUGFyc2VyU2VsZWN0
b3I6On5DU1NQYXJzZXJTZWxlY3RvcigpCiAgICAgfQogfQogCi12b2lkIENTU1BhcnNlclNlbGVj
dG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
ID4mIHNlbGVjdG9yVmVjdG9yKQordm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6YWRvcHRTZWxlY3Rv
clZlY3RvcihWZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPj4mIHNlbGVjdG9yVmVjdG9y
KQogewogICAgIE93blB0cjxDU1NTZWxlY3Rvckxpc3Q+IHNlbGVjdG9yTGlzdCA9IGFkb3B0UHRy
KG5ldyBDU1NTZWxlY3Rvckxpc3QpOwogICAgIHNlbGVjdG9yTGlzdC0+YWRvcHRTZWxlY3RvclZl
Y3RvcihzZWxlY3RvclZlY3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyVmFsdWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmgKaW5k
ZXggNDUwYzAzMmY0N2NmNzIxODVkZWViYWFmMWEzMzc5ODZmZmRhMzk1ZC4uZWMxNjUyZWZiY2Qx
ZjRkMDdiYzY4ZWRlZjJkYWI0OTM5Yzc2MWIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlclZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXJW
YWx1ZXMuaApAQCAtMTg4LDcgKzE4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlbGF0aW9u
KENTU1NlbGVjdG9yOjpSZWxhdGlvbiB2YWx1ZSkgeyBtX3NlbGVjdG9yLT5tX3JlbGF0aW9uID0g
dmFsdWU7IH0KICAgICB2b2lkIHNldEZvclBhZ2UoKSB7IG1fc2VsZWN0b3ItPnNldEZvclBhZ2Uo
KTsgfQogCi0gICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9yVmVjdG9yKTsKKyAgICB2b2lkIGFkb3B0U2VsZWN0b3JW
ZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+JiBzZWxlY3RvclZlY3Rvcik7
CiAKICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSBwc2V1ZG9UeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9zZWxlY3Rvci0+cHNldWRvVHlwZSgpOyB9CiAgICAgYm9vbCBpc0N1c3RvbVBzZXVkb0Vs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5pc0N1c3RvbVBzZXVkb0VsZW1lbnQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oCmluZGV4IDEy
YWQ4ODRjMDFmYWM5YWUxNTBlZTljOTA2OWVkMGYxZDg1OGU1YzkuLmRhNzFiZWIxZTZmOTUwZTY0
YTEwNzA2NTE3OTU5ODQ1ODkzZTQ2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eVNvdXJjZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHlTb3VyY2VEYXRhLmgKQEAgLTc2LDcgKzc2LDcgQEAgc3RydWN0IENTU1N0eWxlU291cmNlRGF0
YSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU1N0eWxlU291cmNlRGF0YT4gewogfTsKIAogc3RydWN0
IENTU1J1bGVTb3VyY2VEYXRhOwotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPENTU1J1bGVTb3VyY2VE
YXRhPiA+IFJ1bGVTb3VyY2VEYXRhTGlzdDsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxDU1NSdWxl
U291cmNlRGF0YT4+IFJ1bGVTb3VyY2VEYXRhTGlzdDsKIHR5cGVkZWYgVmVjdG9yPFNvdXJjZVJh
bmdlPiBTZWxlY3RvclJhbmdlTGlzdDsKIAogc3RydWN0IENTU1J1bGVTb3VyY2VEYXRhIDogcHVi
bGljIFJlZkNvdW50ZWQ8Q1NTUnVsZVNvdXJjZURhdGE+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NSdWxlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGVMaXN0
LmgKaW5kZXggMDEzNjM1M2ZkNjBkZmI5MjdhYWM1NzY2NjJmNGRhMGI0MTY0MjMxMy4uNGRhMTVi
NDg4NGQyYzQ3ZTIzMWJiMzBmYjgzM2NlYmY5MzViZjI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1J1bGVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGVM
aXN0LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWYoKSB7
ICsrbV9yZWZDb3VudDsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpOwogCi0gICAgVmVjdG9y
PFJlZlB0cjxDU1NSdWxlPiA+JiBydWxlcygpIHsgcmV0dXJuIG1fcnVsZXM7IH0KKyAgICBWZWN0
b3I8UmVmUHRyPENTU1J1bGU+PiYgcnVsZXMoKSB7IHJldHVybiBtX3J1bGVzOyB9CiAgICAgCiAg
ICAgdmlydHVhbCBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gMDsg
fQogCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX3J1bGVzLnNpemUoKTsgfQogICAgIHZpcnR1YWwgQ1NTUnVs
ZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXggPCBtX3J1bGVzLnNp
emUoKSA/IG1fcnVsZXNbaW5kZXhdLmdldCgpIDogMDsgfQogCi0gICAgVmVjdG9yPFJlZlB0cjxD
U1NSdWxlPiA+IG1fcnVsZXM7CisgICAgVmVjdG9yPFJlZlB0cjxDU1NSdWxlPj4gbV9ydWxlczsK
ICAgICB1bnNpZ25lZCBtX3JlZkNvdW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
ZWdtZW50ZWRGb250RmFjZS5jcHAKaW5kZXggM2ZhODJkM2JlMjdhMDg2NzE2NThhYzA1MjEzY2U0
YmE2OGMwNjU4MC4uZjMyODMyY2M1OGFkOGNhODlhNGFlMzg1MTQyOTUzMzE0OWNhNzU2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCkBAIC03Niw3ICs3
Niw3IEBAIHZvaWQgQ1NTU2VnbWVudGVkRm9udEZhY2U6OmZvbnRMb2FkZWQoQ1NTRm9udEZhY2Uq
KQogCiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZm9udExvYWRFdmVudHNFbmFibGVkKCkgJiYgIWlz
TG9hZGluZygpKSB7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8TG9hZEZvbnRDYWxsYmFjaz4gPiBj
YWxsYmFja3M7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8TG9hZEZvbnRDYWxsYmFjaz4+IGNhbGxi
YWNrczsKICAgICAgICAgbV9jYWxsYmFja3Muc3dhcChjYWxsYmFja3MpOwogICAgICAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY2FsbGJhY2tzLnNpemUoKTsgKytpbmRleCkgewog
ICAgICAgICAgICAgaWYgKGNoZWNrRm9udCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVu
dGVkRm9udEZhY2UuaAppbmRleCBlYzM5YzE3ZDE3ZDJmYmM5NjZiMTkyZGE3NTMwNTI4Yjg5MjI0
M2MxLi5mYjJiNGE3MzBhNjAyOTBjNmE1NjU0ZGI4M2MyMTE5ZGU3NTVhMjIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaApAQCAtNzUsMTAgKzc1LDEwIEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgIENTU0ZvbnRTZWxlY3RvciogbV9mb250U2VsZWN0b3I7Ci0g
ICAgSGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRyPFNlZ21lbnRlZEZvbnREYXRhPiA+IG1fZm9udERh
dGFUYWJsZTsKKyAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQdHI8U2VnbWVudGVkRm9udERhdGE+
PiBtX2ZvbnREYXRhVGFibGU7CiAgICAgVmVjdG9yPFJlZlB0cjxDU1NGb250RmFjZT4sIDE+IG1f
Zm9udEZhY2VzOwogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIFZlY3RvcjxSZWZQ
dHI8TG9hZEZvbnRDYWxsYmFjaz4gPiBtX2NhbGxiYWNrczsKKyAgICBWZWN0b3I8UmVmUHRyPExv
YWRGb250Q2FsbGJhY2s+PiBtX2NhbGxiYWNrczsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAppbmRleCAwMDE3OTk1ZjVjZmNhZTAxMzRkNTQ3NTBjNTA5
OWI2NWNlYzcwZmExLi4wNTljMDA3NmFkZDllNDBkMjI3ZDU1MmJiYzVkYmE3NzliYmU3MzdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcApAQCAtNTIsNyArNTIsNyBAQCB2
b2lkIENTU1NlbGVjdG9yTGlzdDo6YWRvcHQoQ1NTU2VsZWN0b3JMaXN0JiBsaXN0KQogICAgIGxp
c3QubV9zZWxlY3RvckFycmF5ID0gMDsKIH0KIAotdm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmFkb3B0
U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPiYgc2VsZWN0
b3JWZWN0b3IpCit2b2lkIENTU1NlbGVjdG9yTGlzdDo6YWRvcHRTZWxlY3RvclZlY3RvcihWZWN0
b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPj4mIHNlbGVjdG9yVmVjdG9yKQogewogICAgIGRl
bGV0ZVNlbGVjdG9ycygpOwogICAgIHNpemVfdCBmbGF0dGVuZWRTaXplID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvckxpc3QuaAppbmRleCA5MDRhMjRmMDQ4NzdhM2MyNDQwZjY3MjgwNDY4
YTU5NzAzNjI2MDI0Li4wMTczNDAxZGYwYTE3NzBkMmE0MWYxMTBiYmViZDA3ODUzMjIxM2IwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1Ymxp
YzoKICAgICB+Q1NTU2VsZWN0b3JMaXN0KCk7CiAKICAgICB2b2lkIGFkb3B0KENTU1NlbGVjdG9y
TGlzdCYgbGlzdCk7Ci0gICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25QdHI8
Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9yVmVjdG9yKTsKKyAgICB2b2lkIGFkb3B0U2Vs
ZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+JiBzZWxlY3RvclZl
Y3Rvcik7CiAgICAgdm9pZCBhZG9wdFNlbGVjdG9yQXJyYXkoQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
cykgeyBBU1NFUlQoIW1fc2VsZWN0b3JBcnJheSk7IG1fc2VsZWN0b3JBcnJheSA9IHNlbGVjdG9y
czsgfQogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gISFtX3NlbGVjdG9yQXJy
YXk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IDExOTUyNGJiOGRlNTkzY2E3
ZmJiYjkxMmI5NWE0ZTBlY2ZkMDM3NjEuLmMzYmJmMTQzZTc4N2IwNjZkODE5OTExOTMyNDgwZGMz
ZGU2MGU4MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMTM0LDcgKzEzNCw3
IEBAIHByaXZhdGU6CiAgICAgQ1NTSW1wb3J0UnVsZSogbV9vd25lclJ1bGU7CiAKICAgICBtdXRh
YmxlIFJlZlB0cjxNZWRpYUxpc3Q+IG1fbWVkaWFDU1NPTVdyYXBwZXI7Ci0gICAgbXV0YWJsZSBW
ZWN0b3I8UmVmUHRyPENTU1J1bGU+ID4gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzOworICAgIG11
dGFibGUgVmVjdG9yPFJlZlB0cjxDU1NSdWxlPj4gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzOwog
ICAgIG11dGFibGUgT3duUHRyPENTU1J1bGVMaXN0PiBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAppbmRleCA2Nzk5MDM3NjViZDE5YjlkY2VkY2MwZmVhNzE3
ZmJhYmRiOWNhNDU2Li45NjhmMTk1MjA3YjNlMmQ2OTk3YmJiNGU2N2UzZDBjM2M4NTZjMzNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWUuaApAQCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6CiB9OwogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDU1NWYWx1ZVR5cGU+Ci1pbmxpbmUgYm9vbCBjb21wYXJlQ1NTVmFs
dWVWZWN0b3IoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NWYWx1ZVR5cGU+ID4mIGZpcnN0VmVjdG9y
LCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1ZhbHVlVHlwZT4gPiYgc2Vjb25kVmVjdG9yKQoraW5s
aW5lIGJvb2wgY29tcGFyZUNTU1ZhbHVlVmVjdG9yKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTVmFs
dWVUeXBlPj4mIGZpcnN0VmVjdG9yLCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1ZhbHVlVHlwZT4+
JiBzZWNvbmRWZWN0b3IpCiB7CiAgICAgc2l6ZV90IHNpemUgPSBmaXJzdFZlY3Rvci5zaXplKCk7
CiAgICAgaWYgKHNpemUgIT0gc2Vjb25kVmVjdG9yLnNpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1
ZVBvb2wuaAppbmRleCBiYmNmZjc3YWY5YjdhMmZiZWQ1OWIwMDRhNDIxODBjYWNiNzk3ZDQ1Li5j
NjI5Mjc3MWQ4MmZhZTIyNmMzZGJjNzZlNTliNTIxMzk0OGY5MDYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlUG9vbC5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IG1faWRlbnRpZmllclZhbHVlQ2FjaGVbbnVtQ1NTVmFsdWVLZXl3b3Jk
c107CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gPiBDb2xvclZhbHVlQ2FjaGU7CisgICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+PiBDb2xvclZhbHVlQ2FjaGU7CiAgICAgQ29sb3JWYWx1
ZUNhY2hlIG1fY29sb3JWYWx1ZUNhY2hlOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
bV9jb2xvclRyYW5zcGFyZW50OwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9jb2xv
cldoaXRlOwpAQCAtNzgsMTAgKzc4LDEwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBtX3BlcmNlbnRWYWx1ZUNhY2hlW21heGltdW1DYWNoZWFibGVJbnRlZ2VyVmFs
dWUgKyAxXTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fbnVtYmVyVmFsdWVDYWNo
ZVttYXhpbXVtQ2FjaGVhYmxlSW50ZWdlclZhbHVlICsgMV07CiAKLSAgICB0eXBlZGVmIEhhc2hN
YXA8QXRvbWljU3RyaW5nLCBSZWZQdHI8Q1NTVmFsdWVMaXN0PiA+IEZvbnRGYWNlVmFsdWVDYWNo
ZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBSZWZQdHI8Q1NTVmFsdWVMaXN0
Pj4gRm9udEZhY2VWYWx1ZUNhY2hlOwogICAgIEZvbnRGYWNlVmFsdWVDYWNoZSBtX2ZvbnRGYWNl
VmFsdWVDYWNoZTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gPiBGb250RmFtaWx5VmFsdWVDYWNoZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+PiBGb250RmFtaWx5VmFsdWVDYWNoZTsK
ICAgICBGb250RmFtaWx5VmFsdWVDYWNoZSBtX2ZvbnRGYW1pbHlWYWx1ZUNhY2hlOwogCiAgICAg
ZnJpZW5kIENTU1ZhbHVlUG9vbCYgY3NzVmFsdWVQb29sKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9j
dW1lbnRSdWxlU2V0cy5jcHAKaW5kZXggOTJjZWQ4YTRjMjU2YTlmN2FmMDk2MjlmNjNkZmNkMGI4
NzJiYzgyMC4uNjI5NTVhZWZhNWU0NDc0MzRlNGZiODk1NTk1MmIzMmYwNDcyNjc0YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lk
IERvY3VtZW50UnVsZVNldHM6OmluaXRVc2VyU3R5bGUoRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbiYgc3R5bGVTaGVldENvbAogICAgICAgICBtX3VzZXJTdHlsZSA9IHRlbXBVc2VyU3R5bGUu
cmVsZWFzZSgpOwogfQogCi12b2lkIERvY3VtZW50UnVsZVNldHM6OmNvbGxlY3RSdWxlc0Zyb21V
c2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiB1c2Vy
U2hlZXRzLCBSdWxlU2V0JiB1c2VyU3R5bGUsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1l
ZGl1bSwgU3R5bGVSZXNvbHZlciYgcmVzb2x2ZXIpCit2b2lkIERvY3VtZW50UnVsZVNldHM6OmNv
bGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHls
ZVNoZWV0Pj4mIHVzZXJTaGVldHMsIFJ1bGVTZXQmIHVzZXJTdHlsZSwgY29uc3QgTWVkaWFRdWVy
eUV2YWx1YXRvciYgbWVkaXVtLCBTdHlsZVJlc29sdmVyJiByZXNvbHZlcikKIHsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlclNoZWV0cy5zaXplKCk7ICsraSkgewogICAgICAgICBB
U1NFUlQodXNlclNoZWV0c1tpXS0+Y29udGVudHMoKS0+aXNVc2VyU3R5bGVTaGVldCgpKTsKQEAg
LTgzLDcgKzgzLDcgQEAgdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjpyZXNldEF1dGhvclN0eWxlKCkK
ICAgICBtX2F1dGhvclN0eWxlLT5kaXNhYmxlQXV0b1Nocmlua1RvRml0KCk7CiB9CiAKLXZvaWQg
RG9jdW1lbnRSdWxlU2V0czo6YXBwZW5kQXV0aG9yU3R5bGVTaGVldHModW5zaWduZWQgZmlyc3RO
ZXcsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc3R5bGVTaGVldHMsIE1l
ZGlhUXVlcnlFdmFsdWF0b3IqIG1lZGl1bSwgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyYgaW5zcGVj
dG9yQ1NTT01XcmFwcGVycywgYm9vbCBpc1ZpZXdTb3VyY2UsIFN0eWxlUmVzb2x2ZXIqIHJlc29s
dmVyKQordm9pZCBEb2N1bWVudFJ1bGVTZXRzOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyh1bnNp
Z25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIHN0eWxl
U2hlZXRzLCBNZWRpYVF1ZXJ5RXZhbHVhdG9yKiBtZWRpdW0sIEluc3BlY3RvckNTU09NV3JhcHBl
cnMmIGluc3BlY3RvckNTU09NV3JhcHBlcnMsIGJvb2wgaXNWaWV3U291cmNlLCBTdHlsZVJlc29s
dmVyKiByZXNvbHZlcikKIHsKICAgICAvLyBUaGlzIGhhbmRsZXMgc2hlZXRzIGFkZGVkIHRvIHRo
ZSBlbmQgb2YgdGhlIHN0eWxlc2hlZXQgbGlzdCBvbmx5LiBJbiBvdGhlciBjYXNlcyB0aGUgc3R5
bGUgcmVzb2x2ZXIKICAgICAvLyBuZWVkcyB0byBiZSByZWNvbnN0cnVjdGVkLiBUbyBoYW5kbGUg
aW5zZXJ0aW9ucyB0b28gdGhlIHJ1bGUgb3JkZXIgbnVtYmVycyB3b3VsZCBuZWVkIHRvIGJlIHVw
ZGF0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuaAppbmRleCA5OTNjZDkyZGFi
YTA5NWM0YjI4MmVmOGQ1NWI3MDFjOWU5NzQ4OTE2Li4wMGEyNzE5Mzg5ZmM5NDYzNDAzZmU3Njc1
YWUxYjBhZDFlZGVmMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRS
dWxlU2V0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmgKQEAg
LTUzLDEyICs1MywxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRVc2VyU3R5bGUoRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbiYsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImLCBTdHls
ZVJlc29sdmVyJik7CiAgICAgdm9pZCByZXNldEF1dGhvclN0eWxlKCk7Ci0gICAgdm9pZCBhcHBl
bmRBdXRob3JTdHlsZVNoZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJlZlB0
cjxDU1NTdHlsZVNoZWV0PiA+JiwgTWVkaWFRdWVyeUV2YWx1YXRvciosIEluc3BlY3RvckNTU09N
V3JhcHBlcnMmLCBib29sIGlzVmlld1NvdXJjZSwgU3R5bGVSZXNvbHZlciopOworICAgIHZvaWQg
YXBwZW5kQXV0aG9yU3R5bGVTaGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiwgTWVkaWFRdWVyeUV2YWx1YXRvciosIEluc3BlY3RvckNT
U09NV3JhcHBlcnMmLCBib29sIGlzVmlld1NvdXJjZSwgU3R5bGVSZXNvbHZlciopOwogCiAgICAg
dm9pZCBjb2xsZWN0RmVhdHVyZXMoYm9vbCBpc1ZpZXdTb3VyY2UsIFN0eWxlU2NvcGVSZXNvbHZl
ciopOwogCiBwcml2YXRlOgotICAgIHZvaWQgY29sbGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNoZWV0
cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mLCBSdWxlU2V0JiB1c2VyU3R5
bGUsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImLCBTdHlsZVJlc29sdmVyJik7CisgICAgdm9p
ZCBjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NT
U3R5bGVTaGVldD4+JiwgUnVsZVNldCYgdXNlclN0eWxlLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVh
dG9yJiwgU3R5bGVSZXNvbHZlciYpOwogICAgIE93blB0cjxSdWxlU2V0PiBtX2F1dGhvclN0eWxl
OwogICAgIE93blB0cjxSdWxlU2V0PiBtX3VzZXJTdHlsZTsKICAgICBSdWxlRmVhdHVyZVNldCBt
X2ZlYXR1cmVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29s
bGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAK
aW5kZXggNTNlMzgxYmQ1Njc1NmI1ODVlODlkMGUxMGEzNjZjMTY0MDM1ZDNhMS4uMzY0MWM0ZTQ5
NGNlNTNjZGJlNDk0MGVmN2FjMWY5OWMyZTliMDM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCkBAIC04MCw3ICs4MCw3IEBAIFN0eWxlUmVzb2x2ZXI6
Ok1hdGNoUmVzdWx0JiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0Y2hlZFJlc3VsdCgpCiAgICAg
cmV0dXJuIG1fcmVzdWx0OwogfQogCi1jb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
ID4mIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaGVkUnVsZUxpc3QoKSBjb25zdAorY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRj
aGVkUnVsZUxpc3QoKSBjb25zdAogewogICAgIEFTU0VSVChtX21vZGUgPT0gU2VsZWN0b3JDaGVj
a2VyOjpDb2xsZWN0aW5nUnVsZXMpOwogICAgIHJldHVybiBtX21hdGNoZWRSdWxlTGlzdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKaW5kZXggZDFmNDE4Y2FhZmFl
NDJjMDgwM2E4NTUwMGVhZTIyMzk0ZTE5YWI2Yy4uODYzNmM5YjdmMzlkYWJmOGUzYmE2YzJkOWEw
MGFkNjcwMDRkZmNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxl
Q29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9y
LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQW55TWF0Y2hpbmdSdWxl
cyhSdWxlU2V0Kik7CiAKICAgICBTdHlsZVJlc29sdmVyOjpNYXRjaFJlc3VsdCYgbWF0Y2hlZFJl
c3VsdCgpOwotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiYgbWF0Y2hl
ZFJ1bGVMaXN0KCkgY29uc3Q7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNl
Pj4mIG1hdGNoZWRSdWxlTGlzdCgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIERvY3VtZW50JiBk
b2N1bWVudCgpIHsgcmV0dXJuIG1fc3RhdGUuZG9jdW1lbnQoKTsgfQpAQCAtMTA0LDEwICsxMDQs
MTAgQEAgcHJpdmF0ZToKICAgICBTZWxlY3RvckNoZWNrZXI6Ok1vZGUgbV9tb2RlOwogICAgIGJv
b2wgbV9jYW5Vc2VGYXN0UmVqZWN0OwogCi0gICAgT3duUHRyPFZlY3Rvcjxjb25zdCBSdWxlRGF0
YSosIDMyPiA+IG1fbWF0Y2hlZFJ1bGVzOworICAgIE93blB0cjxWZWN0b3I8Y29uc3QgUnVsZURh
dGEqLCAzMj4+IG1fbWF0Y2hlZFJ1bGVzOwogCiAgICAgLy8gT3V0cHV0LgotICAgIFZlY3RvcjxS
ZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiBtX21hdGNoZWRSdWxlTGlzdDsKKyAgICBWZWN0b3I8UmVm
UHRyPFN0eWxlUnVsZUJhc2U+PiBtX21hdGNoZWRSdWxlTGlzdDsKICAgICBTdHlsZVJlc29sdmVy
OjpNYXRjaFJlc3VsdCBtX3Jlc3VsdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5oCmluZGV4
IDhlNWYzMTdjYWIzMWMyM2FmMDk2MTQyNmRlNWI3MWU5OWE0ZTE5NjkuLmQ4MmRmMzFlNjI5Y2I2
OTJmMzczY2RhMWNjMmNhZjJkNjNjMzY0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuaApAQCAt
OTcsOCArOTcsOCBAQCBwcml2YXRlOgogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwogICAgIEV2
ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKICAgICB1bnNpZ25lZCBtX2xvYWRpbmdD
b3VudDsKLSAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fcGVuZGluZ0V2ZW50czsKLSAgICBW
ZWN0b3I8UmVmUHRyPFZvaWRDYWxsYmFjaz4gPiBtX2NhbGxiYWNrczsKKyAgICBWZWN0b3I8UmVm
UHRyPEV2ZW50Pj4gbV9wZW5kaW5nRXZlbnRzOworICAgIFZlY3RvcjxSZWZQdHI8Vm9pZENhbGxi
YWNrPj4gbV9jYWxsYmFja3M7CiAgICAgUmVmUHRyPEV2ZW50PiBtX2xvYWRpbmdEb25lRXZlbnQ7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFw
cGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAK
aW5kZXggZmFjMmFhMWQ3NWFiMDAwMTMxY2U1NTFmNTBiNjI1Y2VkYTc0YTNhNS4uNDM3NTY2OWU3
YjdlNTcyODY1NWU0Yjc0Y2Q4YzJkMGUzMGE2MTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcApAQCAtODgsNyArODgsNyBAQCB2b2lkIEluc3Bl
Y3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3QoTGlzdFR5cGUqIGxpc3RUeXBlKQogICAgIH0KIH0K
IAotdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250
ZW50cyhIYXNoU2V0PFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzaGVldFdyYXBwZXJTZXQsIFN0
eWxlU2hlZXRDb250ZW50cyogc3R5bGVTaGVldCkKK3ZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVy
czo6Y29sbGVjdEZyb21TdHlsZVNoZWV0Q29udGVudHMoSGFzaFNldDxSZWZQdHI8Q1NTU3R5bGVT
aGVldD4+JiBzaGVldFdyYXBwZXJTZXQsIFN0eWxlU2hlZXRDb250ZW50cyogc3R5bGVTaGVldCkK
IHsKICAgICBpZiAoIXN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybjsKQEAgLTk3LDcgKzk3LDcg
QEAgdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250
ZW50cyhIYXNoU2V0PFJlZlB0cjxDU1NTdHkKICAgICBjb2xsZWN0KHN0eWxlU2hlZXRXcmFwcGVy
LmdldCgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0
eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc2hlZXRzKQor
dm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRzKGNvbnN0
IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBzaGVldHMpCiB7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNoZWV0cy5zaXplKCk7ICsraSkKICAgICAgICAgY29sbGVjdChzaGVl
dHNbaV0uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0luc3BlY3RvckNT
U09NV3JhcHBlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9JbnNwZWN0b3JDU1NPTVdyYXBwZXJz
LmgKaW5kZXggM2FhZjc4Y2JjZGViYjY0ZjdmODk1M2MwMjA2MWQwMzgxZmUxMmNjNS4uZmM5NjUy
ZDFhYmQyZmZmOGY0NzQxYTlhMTMxYzkzNDAzY2E0YWJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0luc3BlY3RvckNTU09NV3JhcHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5oCkBAIC00OCwxMiArNDgsMTIgQEAgcHJpdmF0ZToK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgTGlzdFR5cGU+CiAgICAgdm9pZCBjb2xsZWN0KExpc3RUeXBl
Kik7CiAKLSAgICB2b2lkIGNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRzKEhhc2hTZXQ8UmVm
UHRyPENTU1N0eWxlU2hlZXQ+ID4mIHNoZWV0V3JhcHBlclNldCwgU3R5bGVTaGVldENvbnRlbnRz
Kik7Ci0gICAgdm9pZCBjb2xsZWN0RnJvbVN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8
Q1NTU3R5bGVTaGVldD4gPiYpOworICAgIHZvaWQgY29sbGVjdEZyb21TdHlsZVNoZWV0Q29udGVu
dHMoSGFzaFNldDxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBzaGVldFdyYXBwZXJTZXQsIFN0eWxl
U2hlZXRDb250ZW50cyopOworICAgIHZvaWQgY29sbGVjdEZyb21TdHlsZVNoZWV0cyhjb25zdCBW
ZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYpOwogICAgIHZvaWQgY29sbGVjdEZyb21Eb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24mKTsK
IAotICAgIEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiBtX3N0eWxl
UnVsZVRvQ1NTT01XcmFwcGVyTWFwOwotICAgIEhhc2hTZXQ8UmVmUHRyPENTU1N0eWxlU2hlZXQ+
ID4gbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0OworICAgIEhhc2hNYXA8U3R5bGVSdWxlKiwg
UmVmUHRyPENTU1N0eWxlUnVsZT4+IG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXA7CisgICAg
SGFzaFNldDxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNl
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAK
aW5kZXggOWU0ZTAxMjE4ODE5OTlmYzJhNTE5MjNiMjZiZjVjNTE2NTg3OGUxNS4uMjBmOTI4ZDRm
NGEzOWIyN2Q5ZjA2NTMzYmI2Y2M1MTI0ZWQ1NGRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5j
cHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBib29sIE1lZGlhUXVlcnlTZXQ6OnBhcnNlKGNvbnN0IFN0
cmluZyYgbWVkaWFTdHJpbmcpCiB7CiAgICAgQ1NTUGFyc2VyIHBhcnNlcihDU1NTdHJpY3RNb2Rl
KTsKICAgICAKLSAgICBWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnk+ID4gcmVzdWx0OworICAgIFZl
Y3RvcjxPd25QdHI8TWVkaWFRdWVyeT4+IHJlc3VsdDsKICAgICBWZWN0b3I8U3RyaW5nPiBsaXN0
OwogICAgIG1lZGlhU3RyaW5nLnNwbGl0KCcsJywgbGlzdCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIE1l
ZGlhTGlzdDo6c2V0TWVkaWFUZXh0KGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogCiBTdHJpbmcgTWVkaWFMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewot
ICAgIGNvbnN0IFZlY3RvcjxPd25QdHI8TWVkaWFRdWVyeT4gPiYgcXVlcmllcyA9IG1fbWVkaWFR
dWVyaWVzLT5xdWVyeVZlY3RvcigpOworICAgIGNvbnN0IFZlY3RvcjxPd25QdHI8TWVkaWFRdWVy
eT4+JiBxdWVyaWVzID0gbV9tZWRpYVF1ZXJpZXMtPnF1ZXJ5VmVjdG9yKCk7CiAgICAgaWYgKGlu
ZGV4IDwgcXVlcmllcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBxdWVyaWVzW2luZGV4XS0+Y3Nz
VGV4dCgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIHJl
cG9ydE1lZGlhUXVlcnlXYXJuaW5nSWZOZWVkZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBN
ZWRpYVF1ZXJ5U2V0KiBtZQogICAgIGlmICghbWVkaWFRdWVyeVNldCB8fCAhZG9jdW1lbnQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IFZlY3RvcjxPd25QdHI8TWVkaWFRdWVyeT4gPiYg
bWVkaWFRdWVyaWVzID0gbWVkaWFRdWVyeVNldC0+cXVlcnlWZWN0b3IoKTsKKyAgICBjb25zdCBW
ZWN0b3I8T3duUHRyPE1lZGlhUXVlcnk+PiYgbWVkaWFRdWVyaWVzID0gbWVkaWFRdWVyeVNldC0+
cXVlcnlWZWN0b3IoKTsKICAgICBjb25zdCBzaXplX3QgcXVlcnlDb3VudCA9IG1lZGlhUXVlcmll
cy5zaXplKCk7CiAKICAgICBpZiAoIXF1ZXJ5Q291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmgKaW5k
ZXggMzYyMDM0MDJmNzBmZmQwOTU2MmM4MjgyOWU5YmNiMzE2MmQ3MjJlOC4uNzQ5NzZkZjQ4ZmFh
Zjg1M2IyNjEzMTkzYzcwN2EyMjUzNWJhOGM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaApAQCAt
NTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZE1lZGlhUXVlcnkoUGFzc093blB0
cjxNZWRpYVF1ZXJ5Pik7CiAKLSAgICBjb25zdCBWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnk+ID4m
IHF1ZXJ5VmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9xdWVyaWVzOyB9CisgICAgY29uc3QgVmVj
dG9yPE93blB0cjxNZWRpYVF1ZXJ5Pj4mIHF1ZXJ5VmVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9x
dWVyaWVzOyB9CiAgICAgCiAgICAgaW50IGxhc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0
TGluZTsgfQogICAgIHZvaWQgc2V0TGFzdExpbmUoaW50IGxhc3RMaW5lKSB7IG1fbGFzdExpbmUg
PSBsYXN0TGluZTsgfQpAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHVuc2ln
bmVkIG1fZmFsbGJhY2tUb0Rlc2NyaXB0b3IgOiAxOyAvLyB0cnVlIGlmIGZhaWxlZCBtZWRpYSBx
dWVyeSBwYXJzaW5nIHNob3VsZCBmYWxsYmFjayB0byBtZWRpYSBkZXNjcmlwdGlvbiBwYXJzaW5n
LgogICAgIHNpZ25lZCBtX2xhc3RMaW5lIDogMzE7Ci0gICAgVmVjdG9yPE93blB0cjxNZWRpYVF1
ZXJ5PiA+IG1fcXVlcmllczsKKyAgICBWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnk+PiBtX3F1ZXJp
ZXM7CiB9OwogCiBjbGFzcyBNZWRpYUxpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYUxpc3Q+
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCBiMzYy
YjBmNjQ2MWIxY2IwM2Q0N2Q1MjQ0NDViNDZkOTBjOGIxOTliLi5lOGE1NDc3OGVjYWJmYzJmYTUy
NTAyNDcwNDRkMjkyN2IxMTQ1Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlF
dmFsdWF0b3IuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9y
OjpldmFsKGNvbnN0IE1lZGlhUXVlcnlTZXQqIHF1ZXJ5U2V0LCBTdHlsZVJlc29sdmVyKiBzdHkK
ICAgICBpZiAoIXF1ZXJ5U2V0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGNvbnN0IFZl
Y3RvcjxPd25QdHI8TWVkaWFRdWVyeT4gPiYgcXVlcmllcyA9IHF1ZXJ5U2V0LT5xdWVyeVZlY3Rv
cigpOworICAgIGNvbnN0IFZlY3RvcjxPd25QdHI8TWVkaWFRdWVyeT4+JiBxdWVyaWVzID0gcXVl
cnlTZXQtPnF1ZXJ5VmVjdG9yKCk7CiAgICAgaWYgKCFxdWVyaWVzLnNpemUoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7IC8vIGVtcHR5IHF1ZXJ5IGxpc3QgZXZhbHVhdGVzIHRvIHRydWUKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlNYXRjaGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuaAppbmRleCBjNmY3ZDc3NTgxYzZmNjZmOWQx
ZGFkMWNkYjJlM2EzMDY5NzVlNjg5Li5mMmVjNmE1ZGJlMmE5Yjk5YzZlNGY0NTVkNDllMDJjZTNh
Mzk5ZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeU1hdGNoZXIuaApAQCAtNzMsNyAr
NzMsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtZWRpYVR5cGUoKSBjb25zdDsKIAogICAgIERv
Y3VtZW50KiBtX2RvY3VtZW50OwotICAgIFZlY3RvcjxPd25QdHI8TGlzdGVuZXI+ID4gbV9saXN0
ZW5lcnM7CisgICAgVmVjdG9yPE93blB0cjxMaXN0ZW5lcj4+IG1fbGlzdGVuZXJzOwogCiAgICAg
Ly8gVGhpcyB2YWx1ZSBpcyBpbmNyZW1lbnRlZCBhdCBzdHlsZSBzZWxlY3RvciBjaGFuZ2VzLgog
ICAgIC8vIEl0IGlzIHVzZWQgdG8gYXZvaWQgZXZhbHVhdGluZyBxdWVyaWVzIG1vcmUgdGhlbiBv
bmNlIGFuZCB0byBtYWtlIHN1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggOTVlNGNjMzI1YzJmODk2ODM2Njc1
MTRhMWEyZjU0N2QyY2VhYmM0OC4uMWQ4MDJmNWQxODk0ZTM3N2Q0Nzk0ODY1N2I3YmMyZjcxMmQ3
ODJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCBDU1NWYWx1ZSogUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpjbG9uZUFuZENhY2hlRm9yQ1NTT00oQ1NTVmFsdWUqIGlu
dGVybgogICAgIC8vIFRoZSBtYXAgaXMgaGVyZSB0byBtYWludGFpbiB0aGUgb2JqZWN0IGlkZW50
aXR5IG9mIHRoZSBDU1NWYWx1ZXMgb3ZlciBtdWx0aXBsZSBpbnZvY2F0aW9ucy4KICAgICAvLyBG
SVhNRTogSXQgaXMgbGlrZWx5IHRoYXQgdGhlIGlkZW50aXR5IGlzIG5vdCBpbXBvcnRhbnQgZm9y
IHdlYiBjb21wYXRpYmlsaXR5IGFuZCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQuCiAgICAg
aWYgKCFtX2Nzc29tQ1NTVmFsdWVDbG9uZXMpCi0gICAgICAgIG1fY3Nzb21DU1NWYWx1ZUNsb25l
cyA9IGFkb3B0UHRyKG5ldyBIYXNoTWFwPENTU1ZhbHVlKiwgUmVmUHRyPENTU1ZhbHVlPiA+KTsK
KyAgICAgICAgbV9jc3NvbUNTU1ZhbHVlQ2xvbmVzID0gYWRvcHRQdHIobmV3IEhhc2hNYXA8Q1NT
VmFsdWUqLCBSZWZQdHI8Q1NTVmFsdWU+Pik7CiAgICAgCiAgICAgUmVmUHRyPENTU1ZhbHVlPiYg
Y2xvbmVkVmFsdWUgPSBtX2Nzc29tQ1NTVmFsdWVDbG9uZXMtPmFkZChpbnRlcm5hbFZhbHVlLCBS
ZWZQdHI8Q1NTVmFsdWU+KCkpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIWNsb25lZFZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJh
dGlvbi5oCmluZGV4IGQzNjliMjQ1YTA0NjA3YjZiMThjZDc0ZTU3YjlhMGI5MTQ1YzQxMWYuLjRl
OTkzOWUxYTc1YTlhMmRmOTM3YzIxZTlhZThhYTI5MDc0ZDMxZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTc4LDcg
Kzc4LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkaWRNdXRhdGUoTXV0YXRpb25U
eXBlKSB7IH0KIAogICAgIE11dGFibGVTdHlsZVByb3BlcnR5U2V0KiBtX3Byb3BlcnR5U2V0Owot
ICAgIE93blB0cjxIYXNoTWFwPENTU1ZhbHVlKiwgUmVmUHRyPENTU1ZhbHVlPiA+ID4gbV9jc3Nv
bUNTU1ZhbHVlQ2xvbmVzOworICAgIE93blB0cjxIYXNoTWFwPENTU1ZhbHVlKiwgUmVmUHRyPENT
U1ZhbHVlPj4+IG1fY3Nzb21DU1NWYWx1ZUNsb25lczsKIH07CiAKIGNsYXNzIFN0eWxlUnVsZUNT
U1N0eWxlRGVjbGFyYXRpb24gOiBwdWJsaWMgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5jcHAKaW5kZXggZjY2YTNiNDAzN2NjYTcyYTJhYTljNzQ2MDY0NDU1
N2M0Y2IyNjg5NS4uYzI3NTJkOWQxM2ViOTFiNjQxOWEwMGNmMjQzOTBkZjNmMmE1MmJkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9SdWxlU2V0LmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgUnVsZVNldDo6YWRk
VG9SdWxlU2V0KEF0b21pY1N0cmluZ0ltcGwqIGtleSwgQXRvbVJ1bGVNYXAmIG1hcCwgY29uc3Qg
UnVsZURhCiB7CiAgICAgaWYgKCFrZXkpCiAgICAgICAgIHJldHVybjsKLSAgICBPd25QdHI8VmVj
dG9yPFJ1bGVEYXRhPiA+JiBydWxlcyA9IG1hcC5hZGQoa2V5LCBudWxscHRyKS5pdGVyYXRvci0+
dmFsdWU7CisgICAgT3duUHRyPFZlY3RvcjxSdWxlRGF0YT4+JiBydWxlcyA9IG1hcC5hZGQoa2V5
LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFydWxlcykKICAgICAgICAgcnVs
ZXMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJ1bGVEYXRhPik7CiAgICAgcnVsZXMtPmFwcGVuZChy
dWxlRGF0YSk7CkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBSdWxlU2V0OjphZGRSZWdpb25SdWxl
KFN0eWxlUnVsZVJlZ2lvbiogcmVnaW9uUnVsZSwgYm9vbCBoYXNEb2N1bWVudFNlY3VyaXQKIAog
ICAgIC8vIENvbGxlY3QgdGhlIHJlZ2lvbiBydWxlcyBpbnRvIGEgcnVsZSBzZXQKICAgICAvLyBG
SVhNRTogU2hvdWxkIHRoaXMgYWRkIG90aGVyIHR5cGVzIG9mIHJ1bGVzPyAoaS5lLiB1c2UgYWRk
Q2hpbGRSdWxlcygpIGRpcmVjdGx5PykKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVs
ZUJhc2U+ID4mIGNoaWxkUnVsZXMgPSByZWdpb25SdWxlLT5jaGlsZFJ1bGVzKCk7CisgICAgY29u
c3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGNoaWxkUnVsZXMgPSByZWdpb25SdWxl
LT5jaGlsZFJ1bGVzKCk7CiAgICAgQWRkUnVsZUZsYWdzIGFkZFJ1bGVGbGFncyA9IGhhc0RvY3Vt
ZW50U2VjdXJpdHlPcmlnaW4gPyBSdWxlSGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiA6IFJ1bGVI
YXNOb1NwZWNpYWxTdGF0ZTsKICAgICBhZGRSdWxlRmxhZ3MgPSBzdGF0aWNfY2FzdDxBZGRSdWxl
RmxhZ3M+KGFkZFJ1bGVGbGFncyB8IFJ1bGVDYW5Vc2VGYXN0Q2hlY2tTZWxlY3RvciB8IFJ1bGVJ
c0luUmVnaW9uUnVsZSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoaWxkUnVsZXMu
c2l6ZSgpOyArK2kpIHsKQEAgLTI3MCw3ICsyNzAsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJlZ2lv
blJ1bGUoU3R5bGVSdWxlUmVnaW9uKiByZWdpb25SdWxlLCBib29sIGhhc0RvY3VtZW50U2VjdXJp
dAogICAgIG1fcmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMuYXBwZW5kKFJ1bGVTZXRTZWxlY3Rv
clBhaXIocmVnaW9uUnVsZS0+c2VsZWN0b3JMaXN0KCkuZmlyc3QoKSwgcmVnaW9uUnVsZVNldC5y
ZWxlYXNlKCkpKTsKIH0KIAotdm9pZCBSdWxlU2V0OjphZGRDaGlsZFJ1bGVzKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiYgcnVsZXMsIGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0
b3ImIG1lZGl1bSwgU3R5bGVSZXNvbHZlciogcmVzb2x2ZXIsIGNvbnN0IENvbnRhaW5lck5vZGUq
IHNjb3BlLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIEFkZFJ1bGVGbGFncyBhZGRS
dWxlRmxhZ3MpCit2b2lkIFJ1bGVTZXQ6OmFkZENoaWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGVCYXNlPj4mIHJ1bGVzLCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiBtZWRp
dW0sIFN0eWxlUmVzb2x2ZXIqIHJlc29sdmVyLCBjb25zdCBDb250YWluZXJOb2RlKiBzY29wZSwg
Ym9vbCBoYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luLCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdz
KQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxlcy5zaXplKCk7ICsraSkgewog
ICAgICAgICBTdHlsZVJ1bGVCYXNlKiBydWxlID0gcnVsZXNbaV0uZ2V0KCk7CkBAIC0zMjksNyAr
MzI5LDcgQEAgdm9pZCBSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVu
dHMqIHNoZWV0LCBjb25zdCBNZWRpYVF1ZXJ5RXZhbHUKIHsKICAgICBBU1NFUlQoc2hlZXQpOwog
Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVJbXBvcnQ+ID4mIGltcG9ydFJ1bGVz
ID0gc2hlZXQtPmltcG9ydFJ1bGVzKCk7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1
bGVJbXBvcnQ+PiYgaW1wb3J0UnVsZXMgPSBzaGVldC0+aW1wb3J0UnVsZXMoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgaW1wb3J0UnVsZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
U3R5bGVSdWxlSW1wb3J0KiBpbXBvcnRSdWxlID0gaW1wb3J0UnVsZXNbaV0uZ2V0KCk7CiAgICAg
ICAgIGlmIChpbXBvcnRSdWxlLT5zdHlsZVNoZWV0KCkgJiYgKCFpbXBvcnRSdWxlLT5tZWRpYVF1
ZXJpZXMoKSB8fCBtZWRpdW0uZXZhbChpbXBvcnRSdWxlLT5tZWRpYVF1ZXJpZXMoKSwgcmVzb2x2
ZXIpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvUnVsZVNldC5oCmluZGV4IGUzNWEyMGY5ZjFkNWJkODlmNTFmNjM0MGU3ZDY4
ZjU1YjkwNmJiZDIuLjc1ZTNlMTczYzk2MjkxNDMwOTRhMDE4OGI2ZGY1YzhkODgwNGU5ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1J1bGVTZXQuaApAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBQYXNzT3duUHRyPFJ1bGVTZXQ+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBSdWxl
U2V0KTsgfQogCi0gICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBPd25QdHI8
VmVjdG9yPFJ1bGVEYXRhPiA+ID4gQXRvbVJ1bGVNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPEF0
b21pY1N0cmluZ0ltcGwqLCBPd25QdHI8VmVjdG9yPFJ1bGVEYXRhPj4+IEF0b21SdWxlTWFwOwog
CiAgICAgdm9pZCBhZGRSdWxlc0Zyb21TaGVldChTdHlsZVNoZWV0Q29udGVudHMqLCBjb25zdCBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgU3R5bGVSZXNvbHZlciogPSAwLCBjb25zdCBDb250YWluZXJO
b2RlKiA9IDApOwogCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHJ1
bGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVsZUNvdW50OyB9CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCBhZGRDaGlsZFJ1bGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiYs
IGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGVSZXNvbHZlciosIGNvbnN0
IENvbnRhaW5lck5vZGUqIHNjb3BlLCBib29sIGhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4sIEFk
ZFJ1bGVGbGFncyk7CisgICAgdm9pZCBhZGRDaGlsZFJ1bGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8
U3R5bGVSdWxlQmFzZT4+JiwgY29uc3QgTWVkaWFRdWVyeUV2YWx1YXRvciYgbWVkaXVtLCBTdHls
ZVJlc29sdmVyKiwgY29uc3QgQ29udGFpbmVyTm9kZSogc2NvcGUsIGJvb2wgaGFzRG9jdW1lbnRT
ZWN1cml0eU9yaWdpbiwgQWRkUnVsZUZsYWdzKTsKICAgICBib29sIGZpbmRCZXN0UnVsZVNldEFu
ZEFkZChjb25zdCBDU1NTZWxlY3RvciosIFJ1bGVEYXRhJik7CiAKICAgICBSdWxlU2V0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JGaWx0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5oCmluZGV4IDI5MThjMGNlMGI5MGRiMzdjNWZlYTll
ZTgzMjgyNWJhMGUwZTJmNzYuLmNmOWMwZTAzY2QxOTIwMjFiNDhlYTMxYmI0ODFjMWQxM2NiNDM4
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckZpbHRlci5oCkBAIC02Myw3ICs2Myw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBXaXRoIDEwMCB1bmlxdWUgc3RyaW5ncyBpbiB0aGUgZmlsdGVyLCAy
XjEyIHNsb3QgdGFibGUgaGFzIGZhbHNlIHBvc2l0aXZlIHJhdGUgb2YgfjAuMiUuCiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGJsb29tRmlsdGVyS2V5Qml0cyA9IDEyOwotICAgIE93blB0cjxC
bG9vbUZpbHRlcjxibG9vbUZpbHRlcktleUJpdHM+ID4gbV9hbmNlc3RvcklkZW50aWZpZXJGaWx0
ZXI7CisgICAgT3duUHRyPEJsb29tRmlsdGVyPGJsb29tRmlsdGVyS2V5Qml0cz4+IG1fYW5jZXN0
b3JJZGVudGlmaWVyRmlsdGVyOwogfTsKIAogdGVtcGxhdGUgPHVuc2lnbmVkIG1heGltdW1JZGVu
dGlmaWVyQ291bnQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVJbnZhbGlk
YXRpb25BbmFseXNpcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVJbnZhbGlkYXRpb25B
bmFseXNpcy5jcHAKaW5kZXggYjU2NmE3NzRjOWJkODJhNTA0ZDQ2Y2FlNTcxMjEyZTcwYzMxZWZh
ZC4uYWQzYzQ0ODVkMzExMWE3MTYzOGQwOTYwY2Y1MWI3Yjg4Yjk2YTFmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmNwcApAQCAtNzQsNyAr
NzQsNyBAQCB2b2lkIFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXM6OmFuYWx5emVTdHlsZVNoZWV0
KFN0eWxlU2hlZXRDb250ZW50cyogc3R5bGVTaGVldAogCiAgICAgLy8gU2VlIGlmIGFsbCBydWxl
cyBvbiB0aGUgc2hlZXQgYXJlIHNjb3BlZCB0byBzb21lIHNwZWNpZmljIGlkcyBvciBjbGFzc2Vz
LgogICAgIC8vIFRoZW4gdGVzdCBpZiB3ZSBhY3R1YWxseSBoYXZlIGFueSBvZiB0aG9zZSBpbiB0
aGUgdHJlZSBhdCB0aGUgbW9tZW50LgotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxl
SW1wb3J0PiA+JiBpbXBvcnRSdWxlcyA9IHN0eWxlU2hlZXRDb250ZW50cy0+aW1wb3J0UnVsZXMo
KTsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUltcG9ydD4+JiBpbXBvcnRSdWxl
cyA9IHN0eWxlU2hlZXRDb250ZW50cy0+aW1wb3J0UnVsZXMoKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgaW1wb3J0UnVsZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKCFpbXBv
cnRSdWxlc1tpXS0+c3R5bGVTaGVldCgpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC04Miw3
ICs4Miw3IEBAIHZvaWQgU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpczo6YW5hbHl6ZVN0eWxlU2hl
ZXQoU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0CiAgICAgICAgIGlmIChtX2RpcnRpZXNB
bGxTdHlsZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY29uc3QgVmVjdG9yPFJl
ZlB0cjxTdHlsZVJ1bGVCYXNlPiA+JiBydWxlcyA9IHN0eWxlU2hlZXRDb250ZW50cy0+Y2hpbGRS
dWxlcygpOworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBydWxlcyA9
IHN0eWxlU2hlZXRDb250ZW50cy0+Y2hpbGRSdWxlcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBydWxlcy5zaXplKCk7IGkrKykgewogICAgICAgICBTdHlsZVJ1bGVCYXNlKiBydWxl
ID0gcnVsZXNbaV0uZ2V0KCk7CiAgICAgICAgIGlmICghcnVsZS0+aXNTdHlsZVJ1bGUoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCmluZGV4IGY2OThiNDk5YmJiOGU2
NTkyNDI2ZmMyNmI5ZmI3Y2NlNmRiYWE1NGQuLmJlYTdkNDAxOGQyYjcwNzUwNTljYmNmMDk5MTI0
ZDk2ODU0YTYwMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5
U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKQEAg
LTM2MCw3ICszNjAsNyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0TGF5ZXJlZFNob3J0
aGFuZFZhbHVlKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmCiAKICAgICBjb25zdCB1bnNp
Z25lZCBzaXplID0gc2hvcnRoYW5kLmxlbmd0aCgpOwogICAgIC8vIEJlZ2luIGJ5IGNvbGxlY3Rp
bmcgdGhlIHByb3BlcnRpZXMgaW50byBhbiBhcnJheS4KLSAgICBWZWN0b3I8IFJlZlB0cjxDU1NW
YWx1ZT4gPiB2YWx1ZXMoc2l6ZSk7CisgICAgVmVjdG9yPCBSZWZQdHI8Q1NTVmFsdWU+PiB2YWx1
ZXMoc2l6ZSk7CiAgICAgc2l6ZV90IG51bUxheWVycyA9IDA7CiAKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
aW5kZXggYTNhOTEzZTQ0MmE2ZTZiN2FhZWU5MTU4ZTUzZDgyY2NhZjAyODYxMC4uYmI0MmMxODkz
ZDUxMDUyNDUwZDI2NzE1ZWQ0NjNlNjUyODExYmI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIFN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVzb2x2
ZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykKICAg
ICBhcHBlbmRBdXRob3JTdHlsZVNoZWV0cygwLCBzdHlsZVNoZWV0Q29sbGVjdGlvbi5hY3RpdmVB
dXRob3JTdHlsZVNoZWV0cygpKTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRo
b3JTdHlsZVNoZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NT
dHlsZVNoZWV0PiA+JiBzdHlsZVNoZWV0cykKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0
aG9yU3R5bGVTaGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NT
U3R5bGVTaGVldD4+JiBzdHlsZVNoZWV0cykKIHsKICAgICBtX3J1bGVTZXRzLmFwcGVuZEF1dGhv
clN0eWxlU2hlZXRzKGZpcnN0TmV3LCBzdHlsZVNoZWV0cywgbV9tZWRpdW0uZ2V0KCksIG1faW5z
cGVjdG9yQ1NTT01XcmFwcGVycywgZG9jdW1lbnQoKS5pc1ZpZXdTb3VyY2UoKSwgdGhpcyk7CiAg
ICAgaWYgKGRvY3VtZW50KCkucmVuZGVyVmlldygpICYmIGRvY3VtZW50KCkucmVuZGVyVmlldygp
LT5zdHlsZSgpKQpAQCAtOTIyLDcgKzkyMiw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6a2V5ZnJh
bWVTdHlsZXNGb3JBbmltYXRpb24oRWxlbWVudCogZSwgY29uc3QgUmVuZGVyU3R5bGUqIGVsCiAg
ICAgY29uc3QgU3R5bGVSdWxlS2V5ZnJhbWVzKiBrZXlmcmFtZXNSdWxlID0gaXQtPnZhbHVlLmdl
dCgpOwogCiAgICAgLy8gQ29uc3RydWN0IGFuZCBwb3B1bGF0ZSB0aGUgc3R5bGUgZm9yIGVhY2gg
a2V5ZnJhbWUKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlS2V5ZnJhbWU+ID4mIGtleWZy
YW1lcyA9IGtleWZyYW1lc1J1bGUtPmtleWZyYW1lcygpOworICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3R5bGVLZXlmcmFtZT4+JiBrZXlmcmFtZXMgPSBrZXlmcmFtZXNSdWxlLT5rZXlmcmFtZXMo
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga2V5ZnJhbWVzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIC8vIEFwcGx5IHRoZSBkZWNsYXJhdGlvbiB0byB0aGUgc3R5bGUuIFRoaXMgaXMg
YSBzaW1wbGlmaWVkIHZlcnNpb24gb2YgdGhlIGxvZ2ljIGluIHN0eWxlRm9yRWxlbWVudAogICAg
ICAgICBpbml0RWxlbWVudChlKTsKQEAgLTE0NTcsMTUgKzE0NTcsMTUgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjp1cGRhdGVGb250KCkKICAgICBtX3N0YXRlLnNldEZvbnREaXJ0eShmYWxzZSk7CiB9
CiAKLVZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiBTdHlsZVJlc29sdmVyOjpzdHlsZVJ1
bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSkKK1ZlY3Rv
cjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+IFN0eWxlUmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVt
ZW50KEVsZW1lbnQqIGUsIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlKQogewogICAgIHJldHVybiBw
c2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlLCBOT1BTRVVETywgcnVsZXNUb0luY2x1ZGUpOwog
fQogCi1WZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4gU3R5bGVSZXNvbHZlcjo6cHNldWRv
U3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZSwgUHNldWRvSWQgcHNldWRvSWQsIHVuc2ln
bmVkIHJ1bGVzVG9JbmNsdWRlKQorVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4gU3R5bGVS
ZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZSwgUHNldWRvSWQg
cHNldWRvSWQsIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlKQogewogICAgIGlmICghZSB8fCAhZS0+
ZG9jdW1lbnQoKS5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSkKLSAgICAgICAgcmV0dXJuIFZlY3Rv
cjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPigpOworICAgICAgICByZXR1cm4gVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGVCYXNlPj4oKTsKIAogICAgIGluaXRFbGVtZW50KGUpOwogICAgIG1fc3RhdGUu
aW5pdEZvclN0eWxlUmVzb2x2ZShkb2N1bWVudCgpLCBlLCAwKTsKQEAgLTIwNTMsNyArMjA1Myw3
IEBAIHN0YXRpYyBib29sIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKENTU1ZhbHVlKiB2YWx1ZSkKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6cmVzb2x2ZVZhcmlhYmxl
cyhDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIFZlY3RvcjxzdGQ6OnBhaXI8Q1NT
UHJvcGVydHlJRCwgU3RyaW5nPiA+JiBrbm93bkV4cHJlc3Npb25zKQordm9pZCBTdHlsZVJlc29s
dmVyOjpyZXNvbHZlVmFyaWFibGVzKENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwg
VmVjdG9yPHN0ZDo6cGFpcjxDU1NQcm9wZXJ0eUlELCBTdHJpbmc+PiYga25vd25FeHByZXNzaW9u
cykKIHsKICAgICBzdGQ6OnBhaXI8Q1NTUHJvcGVydHlJRCwgU3RyaW5nPiBleHByZXNzaW9uKGlk
LCB2YWx1ZS0+c2VyaWFsaXplUmVzb2x2aW5nVmFyaWFibGVzKCptX3N0YXRlLnN0eWxlKCktPnZh
cmlhYmxlcygpKSk7CiAKQEAgLTIwODEsNyArMjA4MSw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAjaWYg
RU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgaWYgKGlkICE9IENTU1Byb3BlcnR5VmFyaWFibGUg
JiYgaGFzVmFyaWFibGVSZWZlcmVuY2UodmFsdWUpKSB7Ci0gICAgICAgIFZlY3RvcjxzdGQ6OnBh
aXI8Q1NTUHJvcGVydHlJRCwgU3RyaW5nPiA+IGtub3duRXhwcmVzc2lvbnM7CisgICAgICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8Q1NTUHJvcGVydHlJRCwgU3RyaW5nPj4ga25vd25FeHByZXNzaW9uczsK
ICAgICAgICAgcmVzb2x2ZVZhcmlhYmxlcyhpZCwgdmFsdWUsIGtub3duRXhwcmVzc2lvbnMpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjIzOSw3ICsyMjM5LDcgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkK
ICAgICAgICAgfQogICAgICAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKICAgICAgICAg
ICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHRvQ1NTVmFsdWVMaXN0KHZhbHVlKTsKLSAgICAgICAg
ICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+ID4gcXVvdGVzOworICAgICAgICAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHF1b3RlczsKICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC0+bGVuZ3RoKCk7IGkgKz0gMikgewogICAgICAg
ICAgICAgICAgIENTU1ZhbHVlKiBmaXJzdCA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
aSk7CiAgICAgICAgICAgICAgICAgLy8gaXRlbSgpIHJldHVybnMgbnVsbCBpZiBvdXQgb2YgYm91
bmRzIHNvIHRoaXMgaXMgc2FmZS4KQEAgLTIyNTcsNyArMjI1Nyw3IEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7CiAgICAgICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCi0gICAgICAgICAg
ICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0UXVvdGVzKFF1b3Rlc0RhdGE6OmNyZWF0ZShWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPiA+KCkpKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS5z
dHlsZSgpLT5zZXRRdW90ZXMoUXVvdGVzRGF0YTo6Y3JlYXRlKFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBTdHJpbmc+PigpKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIC8vIFNo
b3J0aGFuZCBwcm9wZXJ0aWVzLgpAQCAtMzM5OSw3ICszMzk5LDcgQEAgdm9pZCBTdHlsZVJlc29s
dmVyOjpsb2FkUGVuZGluZ1NWR0RvY3VtZW50cygpCiAgICAgICAgIHJldHVybjsKIAogICAgIENh
Y2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IHN0YXRlLmRvY3VtZW50
KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKLSAgICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJh
dGlvbj4gPiYgZmlsdGVyT3BlcmF0aW9ucyA9IHN0YXRlLnN0eWxlKCktPm11dGFibGVGaWx0ZXIo
KS5vcGVyYXRpb25zKCk7CisgICAgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+PiYgZmls
dGVyT3BlcmF0aW9ucyA9IHN0YXRlLnN0eWxlKCktPm11dGFibGVGaWx0ZXIoKS5vcGVyYXRpb25z
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZpbHRlck9wZXJhdGlvbnMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZmlsdGVyT3BlcmF0aW9u
ID0gZmlsdGVyT3BlcmF0aW9ucy5hdChpKTsKICAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbi0+
Z2V0T3BlcmF0aW9uVHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFKSB7CkBAIC0z
NDYyLDcgKzM0NjIsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5kaW5nU2hhZGVycygp
CiAKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBtX3N0
YXRlLmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIAotICAgIFZlY3RvcjxSZWZQ
dHI8RmlsdGVyT3BlcmF0aW9uPiA+JiBmaWx0ZXJPcGVyYXRpb25zID0gbV9zdGF0ZS5zdHlsZSgp
LT5tdXRhYmxlRmlsdGVyKCkub3BlcmF0aW9ucygpOworICAgIFZlY3RvcjxSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPj4mIGZpbHRlck9wZXJhdGlvbnMgPSBtX3N0YXRlLnN0eWxlKCktPm11dGFibGVG
aWx0ZXIoKS5vcGVyYXRpb25zKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZpbHRl
ck9wZXJhdGlvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gZmlsdGVyT3BlcmF0aW9uID0gZmlsdGVyT3BlcmF0aW9ucy5hdChpKTsKICAgICAgICAgaWYg
KGZpbHRlck9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6
Q1VTVE9NKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCA3YzI0ZDQ5Y2FlNGEx
OGU0ZTQwYzNlODIzMzc3NjAwOGEwM2Y1OTUxLi40NGYzZDIzMmZiM2UxZTBlNzg4ZTEwZWRjOWE3
YjQ0Y2JkNjQ0NGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTE4Nyw3ICsx
ODcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRTogSXQgY291bGQgYmUgYmV0dGVyIHRvIGNh
bGwgbV9ydWxlU2V0cy5hcHBlbmRBdXRob3JTdHlsZVNoZWV0cygpIGRpcmVjdGx5IGFmdGVyIHdl
IGZhY3RvciBTdHlsZVJzb2x2ZXIgZnVydGhlci4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4ODkwCi0gICAgdm9pZCBhcHBlbmRBdXRob3JTdHlsZVNo
ZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0
PiA+Jik7CisgICAgdm9pZCBhcHBlbmRBdXRob3JTdHlsZVNoZWV0cyh1bnNpZ25lZCBmaXJzdE5l
dywgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mKTsKIAogICAgIERvY3VtZW50
UnVsZVNldHMmIHJ1bGVTZXRzKCkgeyByZXR1cm4gbV9ydWxlU2V0czsgfQogICAgIGNvbnN0IERv
Y3VtZW50UnVsZVNldHMmIHJ1bGVTZXRzKCkgY29uc3QgeyByZXR1cm4gbV9ydWxlU2V0czsgfQpA
QCAtMjI0LDggKzIyNCw4IEBAIHB1YmxpYzoKICAgICAgICAgQWxsQnV0RW1wdHlDU1NSdWxlcyA9
IFVBQW5kVXNlckNTU1J1bGVzIHwgQXV0aG9yQ1NTUnVsZXMgfCBDcm9zc09yaWdpbkNTU1J1bGVz
LAogICAgICAgICBBbGxDU1NSdWxlcyAgICAgICAgID0gQWxsQnV0RW1wdHlDU1NSdWxlcyB8IEVt
cHR5Q1NTUnVsZXMsCiAgICAgfTsKLSAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4g
c3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCosIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlID0g
QWxsQnV0RW1wdHlDU1NSdWxlcyk7Ci0gICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+
IHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqLCBQc2V1ZG9JZCwgdW5zaWduZWQg
cnVsZXNUb0luY2x1ZGUgPSBBbGxCdXRFbXB0eUNTU1J1bGVzKTsKKyAgICBWZWN0b3I8UmVmUHRy
PFN0eWxlUnVsZUJhc2U+PiBzdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiwgdW5zaWduZWQg
cnVsZXNUb0luY2x1ZGUgPSBBbGxCdXRFbXB0eUNTU1J1bGVzKTsKKyAgICBWZWN0b3I8UmVmUHRy
PFN0eWxlUnVsZUJhc2U+PiBwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiwgUHNl
dWRvSWQsIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlID0gQWxsQnV0RW1wdHlDU1NSdWxlcyk7CiAK
IHB1YmxpYzoKICAgICB2b2lkIGFwcGx5UHJvcGVydHlUb1N0eWxlKENTU1Byb3BlcnR5SUQsIENT
U1ZhbHVlKiwgUmVuZGVyU3R5bGUqKTsKQEAgLTM2NCw3ICszNjQsNyBAQCBwcml2YXRlOgogICAg
IHRlbXBsYXRlIDxTdHlsZUFwcGxpY2F0aW9uUGFzcyBwYXNzPgogICAgIHZvaWQgYXBwbHlQcm9w
ZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIFN0eWxlUnVsZSosIGJv
b2wgaXNJbXBvcnRhbnQsIGJvb2wgaW5oZXJpdGVkT25seSwgUHJvcGVydHlXaGl0ZWxpc3RUeXBl
ID0gUHJvcGVydHlXaGl0ZWxpc3ROb25lKTsKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKLSAg
ICB2b2lkIHJlc29sdmVWYXJpYWJsZXMoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUqLCBWZWN0b3I8
c3RkOjpwYWlyPENTU1Byb3BlcnR5SUQsIFN0cmluZz4gPiYga25vd25FeHByZXNzaW9ucyk7Cisg
ICAgdm9pZCByZXNvbHZlVmFyaWFibGVzKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKiwgVmVjdG9y
PHN0ZDo6cGFpcjxDU1NQcm9wZXJ0eUlELCBTdHJpbmc+PiYga25vd25FeHByZXNzaW9ucyk7CiAj
ZW5kaWYKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkUmVnaW9uU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC0zODEsMTMgKzM4MSwxMyBAQCBw
cml2YXRlOgogCiAgICAgRG9jdW1lbnRSdWxlU2V0cyBtX3J1bGVTZXRzOwogCi0gICAgdHlwZWRl
ZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPiA+
IEtleWZyYW1lc1J1bGVNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwq
LCBSZWZQdHI8U3R5bGVSdWxlS2V5ZnJhbWVzPj4gS2V5ZnJhbWVzUnVsZU1hcDsKICAgICBLZXlm
cmFtZXNSdWxlTWFwIG1fa2V5ZnJhbWVzUnVsZU1hcDsKIAogcHVibGljOgotICAgIHR5cGVkZWYg
SGFzaE1hcDxDU1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NTVmFsdWU+ID4gUGVuZGluZ0ltYWdlUHJv
cGVydHlNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPENTU1Byb3BlcnR5SUQsIFJlZlB0cjxDU1NW
YWx1ZT4+IFBlbmRpbmdJbWFnZVByb3BlcnR5TWFwOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykg
JiYgRU5BQkxFKFNWRykKLSAgICB0eXBlZGVmIEhhc2hNYXA8RmlsdGVyT3BlcmF0aW9uKiwgUmVm
UHRyPFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWU+ID4gUGVuZGluZ1NWR0RvY3VtZW50TWFwOwor
ICAgIHR5cGVkZWYgSGFzaE1hcDxGaWx0ZXJPcGVyYXRpb24qLCBSZWZQdHI8V2ViS2l0Q1NTU1ZH
RG9jdW1lbnRWYWx1ZT4+IFBlbmRpbmdTVkdEb2N1bWVudE1hcDsKICNlbmRpZgogCiAgICAgY2xh
c3MgU3RhdGUgewpAQCAtNTg1LDcgKzU4NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21hdGNo
QXV0aG9yQW5kVXNlclN0eWxlczsKIAogICAgIFJlZlB0cjxDU1NGb250U2VsZWN0b3I+IG1fZm9u
dFNlbGVjdG9yOwotICAgIFZlY3RvcjxPd25QdHI8TWVkaWFRdWVyeVJlc3VsdD4gPiBtX3ZpZXdw
b3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHM7CisgICAgVmVjdG9yPE93blB0cjxNZWRpYVF1
ZXJ5UmVzdWx0Pj4gbV92aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzOwogCiAjaWYg
RU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKICAgICBSZWZQdHI8Vmlld3BvcnRTdHlsZVJl
c29sdmVyPiBtX3ZpZXdwb3J0U3R5bGVSZXNvbHZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAK
aW5kZXggNmYxZGU3ZDBkODdlNmQ0YmY2OWUyYzlhNDU4YTk2OGY5ZDU0OTQ0Yy4uZDRhOTM0YmVk
MGUwNTQ2OGFhNTg4NjY4ZGE4YjU3OWM2ZjM3NWI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5j
cHAKQEAgLTI2NywxMSArMjY3LDExIEBAIFBhc3NSZWZQdHI8U3R5bGVSdWxlPiBTdHlsZVJ1bGU6
OmNyZWF0ZShpbnQgc291cmNlTGluZSwgY29uc3QgVmVjdG9yPGNvbnN0IENTU1NlCiAgICAgcmV0
dXJuIHJ1bGUucmVsZWFzZSgpOwogfQogCi1WZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4gPiBTdHls
ZVJ1bGU6OnNwbGl0SW50b011bHRpcGxlUnVsZXNXaXRoTWF4aW11bVNlbGVjdG9yQ29tcG9uZW50
Q291bnQodW5zaWduZWQgbWF4Q291bnQpIGNvbnN0CitWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+
IFN0eWxlUnVsZTo6c3BsaXRJbnRvTXVsdGlwbGVSdWxlc1dpdGhNYXhpbXVtU2VsZWN0b3JDb21w
b25lbnRDb3VudCh1bnNpZ25lZCBtYXhDb3VudCkgY29uc3QKIHsKICAgICBBU1NFUlQoc2VsZWN0
b3JMaXN0KCkuY29tcG9uZW50Q291bnQoKSA+IG1heENvdW50KTsKIAotICAgIFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlPiA+IHJ1bGVzOworICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4gcnVs
ZXM7CiAgICAgVmVjdG9yPGNvbnN0IENTU1NlbGVjdG9yKj4gY29tcG9uZW50c1NpbmNlTGFzdFNw
bGl0OwogCiAgICAgZm9yIChjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBzZWxlY3Rvckxp
c3QoKS5maXJzdCgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQo
c2VsZWN0b3IpKSB7CkBAIC0zNDAsNyArMzQwLDcgQEAgTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQm
IFN0eWxlUnVsZUZvbnRGYWNlOjptdXRhYmxlUHJvcGVydGllcygpCiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE11dGFibGVTdHlsZVByb3BlcnR5U2V0Jj4obV9wcm9wZXJ0aWVzLmdldCgpKTsKIH0K
IAotU3R5bGVSdWxlR3JvdXA6OlN0eWxlUnVsZUdyb3VwKFR5cGUgdHlwZSwgVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGVCYXNlPiA+JiBhZG9wdFJ1bGUpCitTdHlsZVJ1bGVHcm91cDo6U3R5bGVSdWxl
R3JvdXAoVHlwZSB0eXBlLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxl
KQogICAgIDogU3R5bGVSdWxlQmFzZSh0eXBlLCAwKQogewogICAgIG1fY2hpbGRSdWxlcy5zd2Fw
KGFkb3B0UnVsZSk7CkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBTdHlsZVJ1bGVHcm91cDo6d3Jh
cHBlclJlbW92ZVJ1bGUodW5zaWduZWQgaW5kZXgpCiB9CiAKIAotU3R5bGVSdWxlTWVkaWE6OlN0
eWxlUnVsZU1lZGlhKFBhc3NSZWZQdHI8TWVkaWFRdWVyeVNldD4gbWVkaWEsIFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4gPiYgYWRvcHRSdWxlcykKK1N0eWxlUnVsZU1lZGlhOjpTdHlsZVJ1
bGVNZWRpYShQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhLCBWZWN0b3I8UmVmUHRyPFN0
eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKICAgICA6IFN0eWxlUnVsZUdyb3VwKE1lZGlhLCBh
ZG9wdFJ1bGVzKQogICAgICwgbV9tZWRpYVF1ZXJpZXMobWVkaWEpCiB7CkBAIC0zODAsNyArMzgw
LDcgQEAgU3R5bGVSdWxlTWVkaWE6OlN0eWxlUnVsZU1lZGlhKGNvbnN0IFN0eWxlUnVsZU1lZGlh
JiBvKQogCiAKICNpZiBFTkFCTEUoQ1NTM19DT05ESVRJT05BTF9SVUxFUykKLVN0eWxlUnVsZVN1
cHBvcnRzOjpTdHlsZVJ1bGVTdXBwb3J0cyhjb25zdCBTdHJpbmcmIGNvbmRpdGlvblRleHQsIGJv
b2wgY29uZGl0aW9uSXNTdXBwb3J0ZWQsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiYg
YWRvcHRSdWxlcykKK1N0eWxlUnVsZVN1cHBvcnRzOjpTdHlsZVJ1bGVTdXBwb3J0cyhjb25zdCBT
dHJpbmcmIGNvbmRpdGlvblRleHQsIGJvb2wgY29uZGl0aW9uSXNTdXBwb3J0ZWQsIFZlY3RvcjxS
ZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKQogICAgIDogU3R5bGVSdWxlR3JvdXAo
U3VwcG9ydHMsIGFkb3B0UnVsZXMpCiAgICAgLCBtX2NvbmRpdGlvblRleHQoY29uZGl0aW9uVGV4
dCkKICAgICAsIG1fY29uZGl0aW9uSXNTdXBwb3J0ZWQoY29uZGl0aW9uSXNTdXBwb3J0ZWQpCkBA
IC0zOTUsNyArMzk1LDcgQEAgU3R5bGVSdWxlU3VwcG9ydHM6OlN0eWxlUnVsZVN1cHBvcnRzKGNv
bnN0IFN0eWxlUnVsZVN1cHBvcnRzJiBvKQogfQogI2VuZGlmCiAKLVN0eWxlUnVsZVJlZ2lvbjo6
U3R5bGVSdWxlUmVnaW9uKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVj
dG9ycywgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+JiBhZG9wdFJ1bGVzKQorU3R5bGVS
dWxlUmVnaW9uOjpTdHlsZVJ1bGVSZWdpb24oVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rv
cj4+KiBzZWxlY3RvcnMsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVz
KQogICAgIDogU3R5bGVSdWxlR3JvdXAoUmVnaW9uLCBhZG9wdFJ1bGVzKQogewogICAgIG1fc2Vs
ZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JWZWN0b3IoKnNlbGVjdG9ycyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
dWxlLmgKaW5kZXggMDhkOGI5MTk3ZDVmNjgyMjUyMmU1YWZlNGZjN2MzMWUwOGNiYzhmMC4uMGJm
ZDBmOGIyMTFlMjE5ODczMDJmNDM2N2JmMDliYjJjMGE0ODk3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1
bGUuaApAQCAtMTI5LDEzICsxMjksMTMgQEAgcHVibGljOgogICAgIGNvbnN0IFN0eWxlUHJvcGVy
dHlTZXQmIHByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnRpZXMuZ2V0KCk7IH0K
ICAgICBNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldCYgbXV0YWJsZVByb3BlcnRpZXMoKTsKICAgICAK
LSAgICB2b2lkIHBhcnNlckFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJz
ZXJTZWxlY3Rvcj4gPiYgc2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0LmFkb3B0U2VsZWN0b3JW
ZWN0b3Ioc2VsZWN0b3JzKTsgfQorICAgIHZvaWQgcGFyc2VyQWRvcHRTZWxlY3RvclZlY3RvcihW
ZWN0b3I8T3duUHRyPENTU1BhcnNlclNlbGVjdG9yPj4mIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9y
TGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9ycyk7IH0KICAgICB2b2lkIHdyYXBwZXJB
ZG9wdFNlbGVjdG9yTGlzdChDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9y
TGlzdC5hZG9wdChzZWxlY3RvcnMpOyB9CiAgICAgdm9pZCBwYXJzZXJBZG9wdFNlbGVjdG9yQXJy
YXkoQ1NTU2VsZWN0b3IqIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9y
QXJyYXkoc2VsZWN0b3JzKTsgfQogCiAgICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGU+IGNvcHkoKSBj
b25zdCB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVSdWxlKCp0aGlzKSk7IH0KIAotICAgIFZl
Y3RvcjxSZWZQdHI8U3R5bGVSdWxlPiA+IHNwbGl0SW50b011bHRpcGxlUnVsZXNXaXRoTWF4aW11
bVNlbGVjdG9yQ29tcG9uZW50Q291bnQodW5zaWduZWQpIGNvbnN0OworICAgIFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlPj4gc3BsaXRJbnRvTXVsdGlwbGVSdWxlc1dpdGhNYXhpbXVtU2VsZWN0b3JD
b21wb25lbnRDb3VudCh1bnNpZ25lZCkgY29uc3Q7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgYXZl
cmFnZVNpemVJbkJ5dGVzKCk7CiAKQEAgLTE4NCw3ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgU3R5bGVQcm9wZXJ0eVNldCYgcHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVy
dGllcy5nZXQoKTsgfQogICAgIE11dGFibGVTdHlsZVByb3BlcnR5U2V0JiBtdXRhYmxlUHJvcGVy
dGllcygpOwogCi0gICAgdm9pZCBwYXJzZXJBZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxPd25Q
dHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4mIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9w
dFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9ycyk7IH0KKyAgICB2b2lkIHBhcnNlckFkb3B0U2VsZWN0
b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+JiBzZWxlY3RvcnMpIHsg
bV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvcnMpOyB9CiAgICAgdm9p
ZCB3cmFwcGVyQWRvcHRTZWxlY3Rvckxpc3QoQ1NTU2VsZWN0b3JMaXN0JiBzZWxlY3RvcnMpIHsg
bV9zZWxlY3Rvckxpc3QuYWRvcHQoc2VsZWN0b3JzKTsgfQogCiAgICAgUGFzc1JlZlB0cjxTdHls
ZVJ1bGVQYWdlPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUnVsZVBh
Z2UoKnRoaXMpKTsgfQpAQCAtMTk5LDIyICsxOTksMjIgQEAgcHJpdmF0ZToKIAogY2xhc3MgU3R5
bGVSdWxlR3JvdXAgOiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7CiBwdWJsaWM6Ci0gICAgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+JiBjaGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1
cm4gbV9jaGlsZFJ1bGVzOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNl
Pj4mIGNoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkUnVsZXM7IH0KICAgICAKICAg
ICB2b2lkIHdyYXBwZXJJbnNlcnRSdWxlKHVuc2lnbmVkLCBQYXNzUmVmUHRyPFN0eWxlUnVsZUJh
c2U+KTsKICAgICB2b2lkIHdyYXBwZXJSZW1vdmVSdWxlKHVuc2lnbmVkKTsKICAgICAKIHByb3Rl
Y3RlZDoKLSAgICBTdHlsZVJ1bGVHcm91cChUeXBlLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJh
c2U+ID4mIGFkb3B0UnVsZSk7CisgICAgU3R5bGVSdWxlR3JvdXAoVHlwZSwgVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZSk7CiAgICAgU3R5bGVSdWxlR3JvdXAoY29uc3Qg
U3R5bGVSdWxlR3JvdXAmKTsKICAgICAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPFJlZlB0cjxTdHls
ZVJ1bGVCYXNlPiA+IG1fY2hpbGRSdWxlczsKKyAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJh
c2U+PiBtX2NoaWxkUnVsZXM7CiB9OwogCiBjbGFzcyBTdHlsZVJ1bGVNZWRpYSA6IHB1YmxpYyBT
dHlsZVJ1bGVHcm91cCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVSdWxl
TWVkaWE+IGNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhLCBWZWN0b3I8UmVm
UHRyPFN0eWxlUnVsZUJhc2U+ID4mIGFkb3B0UnVsZXMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3R5bGVSdWxlTWVkaWE+IGNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhUXVlcnlTZXQ+IG1lZGlhLCBW
ZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVSdWxlTWVkaWEobWVkaWEsIGFkb3B0UnVsZXMpKTsK
ICAgICB9CkBAIC0yMjQsNyArMjI0LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8U3R5bGVS
dWxlTWVkaWE+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVSdWxlTWVk
aWEoKnRoaXMpKTsgfQogCiBwcml2YXRlOgotICAgIFN0eWxlUnVsZU1lZGlhKFBhc3NSZWZQdHI8
TWVkaWFRdWVyeVNldD4sIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiYgYWRvcHRSdWxl
cyk7CisgICAgU3R5bGVSdWxlTWVkaWEoUGFzc1JlZlB0cjxNZWRpYVF1ZXJ5U2V0PiwgVmVjdG9y
PFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIGFkb3B0UnVsZXMpOwogICAgIFN0eWxlUnVsZU1lZGlh
KGNvbnN0IFN0eWxlUnVsZU1lZGlhJik7CiAKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbV9t
ZWRpYVF1ZXJpZXM7CkBAIC0yMzMsNyArMjMzLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ1NT
M19DT05ESVRJT05BTF9SVUxFUykKIGNsYXNzIFN0eWxlUnVsZVN1cHBvcnRzIDogcHVibGljIFN0
eWxlUnVsZUdyb3VwIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVJ1bGVT
dXBwb3J0cz4gY3JlYXRlKGNvbnN0IFN0cmluZyYgY29uZGl0aW9uVGV4dCwgYm9vbCBjb25kaXRp
b25Jc1N1cHBvcnRlZCwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+JiBhZG9wdFJ1bGVz
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUnVsZVN1cHBvcnRzPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBjb25kaXRpb25UZXh0LCBib29sIGNvbmRpdGlvbklzU3VwcG9ydGVkLCBWZWN0b3I8
UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRvcHRSdWxlcykKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU3R5bGVSdWxlU3VwcG9ydHMoY29uZGl0aW9uVGV4dCwgY29uZGl0aW9u
SXNTdXBwb3J0ZWQsIGFkb3B0UnVsZXMpKTsKICAgICB9CkBAIC0yNDMsNyArMjQzLDcgQEAgcHVi
bGljOgogICAgIFBhc3NSZWZQdHI8U3R5bGVSdWxlU3VwcG9ydHM+IGNvcHkoKSBjb25zdCB7IHJl
dHVybiBhZG9wdFJlZihuZXcgU3R5bGVSdWxlU3VwcG9ydHMoKnRoaXMpKTsgfQogCiBwcml2YXRl
OgotICAgIFN0eWxlUnVsZVN1cHBvcnRzKGNvbnN0IFN0cmluZyYgY29uZGl0aW9uVGV4dCwgYm9v
bCBjb25kaXRpb25Jc1N1cHBvcnRlZCwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+JiBh
ZG9wdFJ1bGVzKTsKKyAgICBTdHlsZVJ1bGVTdXBwb3J0cyhjb25zdCBTdHJpbmcmIGNvbmRpdGlv
blRleHQsIGJvb2wgY29uZGl0aW9uSXNTdXBwb3J0ZWQsIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxl
QmFzZT4+JiBhZG9wdFJ1bGVzKTsKICAgICBTdHlsZVJ1bGVTdXBwb3J0cyhjb25zdCBTdHlsZVJ1
bGVTdXBwb3J0cyYpOwogCiAgICAgU3RyaW5nIG1fY29uZGl0aW9uVGV4dDsKQEAgLTI1Myw3ICsy
NTMsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBTdHlsZVJ1bGVSZWdpb24gOiBwdWJsaWMgU3R5bGVS
dWxlR3JvdXAgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUnVsZVJlZ2lv
bj4gY3JlYXRlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9ycywg
VmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiA+JiBhZG9wdFJ1bGVzKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0eWxlUnVsZVJlZ2lvbj4gY3JlYXRlKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2Vy
U2VsZWN0b3I+Piogc2VsZWN0b3JzLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRv
cHRSdWxlcykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVSdWxlUmVn
aW9uKHNlbGVjdG9ycywgYWRvcHRSdWxlcykpOwogICAgIH0KQEAgLTI2Myw3ICsyNjMsNyBAQCBw
dWJsaWM6CiAgICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVSZWdpb24+IGNvcHkoKSBjb25zdCB7IHJl
dHVybiBhZG9wdFJlZihuZXcgU3R5bGVSdWxlUmVnaW9uKCp0aGlzKSk7IH0KIAogcHJpdmF0ZToK
LSAgICBTdHlsZVJ1bGVSZWdpb24oVmVjdG9yPE93blB0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gPios
IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiYgYWRvcHRSdWxlcyk7CisgICAgU3R5bGVS
dWxlUmVnaW9uKFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+PiosIFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKTsKICAgICBTdHlsZVJ1bGVSZWdpb24oY29u
c3QgU3R5bGVSdWxlUmVnaW9uJik7CiAgICAgCiAgICAgQ1NTU2VsZWN0b3JMaXN0IG1fc2VsZWN0
b3JMaXN0OwpAQCAtMjcyLDcgKzI3Miw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNIQURPV19E
T00pCiBjbGFzcyBTdHlsZVJ1bGVIb3N0IDogcHVibGljIFN0eWxlUnVsZUdyb3VwIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVJ1bGVIb3N0PiBjcmVhdGUoVmVjdG9yPFJl
ZlB0cjxTdHlsZVJ1bGVCYXNlPiA+JiBhZG9wdFJ1bGVzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0eWxlUnVsZUhvc3Q+IGNyZWF0ZShWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgYWRv
cHRSdWxlcykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVSdWxlSG9z
dChhZG9wdFJ1bGVzKSk7CiAgICAgfQpAQCAtMjgwLDcgKzI4MCw3IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPFN0eWxlUnVsZUhvc3Q+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFJlZihu
ZXcgU3R5bGVSdWxlSG9zdCgqdGhpcykpOyB9CiAKIHByaXZhdGU6Ci0gICAgU3R5bGVSdWxlSG9z
dChWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4mIGFkb3B0UnVsZXMpIDogU3R5bGVSdWxl
R3JvdXAoSG9zdEludGVybmFsLCBhZG9wdFJ1bGVzKSB7IH0KKyAgICBTdHlsZVJ1bGVIb3N0KFZl
Y3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBhZG9wdFJ1bGVzKSA6IFN0eWxlUnVsZUdyb3Vw
KEhvc3RJbnRlcm5hbCwgYWRvcHRSdWxlcykgeyB9CiAgICAgU3R5bGVSdWxlSG9zdChjb25zdCBT
dHlsZVJ1bGVIb3N0JiBvKSA6IFN0eWxlUnVsZUdyb3VwKG8pIHsgfQogfTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5oCmluZGV4IDdjZjQ2ODgzZmI1MGUyODAx
ZjY0MzdhZTA4ZWI4OGJhYTM5NGMzZDcuLjQ1NTdlOWUwMzMyZmNkMzg4NDYxYTM0N2MzODY1NTQw
ZDdlNzE5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgc3RydWN0IFJ1bGVGZWF0dXJlU2V0OwogCiBjbGFzcyBTdHlsZVNjb3BlUmVz
b2x2ZXIgewogcHVibGljOgotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBDb250YWluZXJOb2Rl
KiwgT3duUHRyPFJ1bGVTZXQ+ID4gU2NvcGVkUnVsZVNldE1hcDsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8Y29uc3QgQ29udGFpbmVyTm9kZSosIE93blB0cjxSdWxlU2V0Pj4gU2NvcGVkUnVsZVNldE1h
cDsKIAogICAgIHN0cnVjdCBTdGFja0ZyYW1lIHsKICAgICAgICAgU3RhY2tGcmFtZSgpIDogbV9z
Y29wZSgwKSwgbV9hdXRob3JTdHlsZUJvdW5kc0luZGV4KDApLCBtX3J1bGVTZXQoMCkgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCmluZGV4IGY1NWY3NDhmZWE5
OThjZTBkNjdlMzY1MDc3ZDA1NDI0ZjNjZTI1ZmIuLmI3NTJkZWEwNGM5NDQ3YzIzNTRkOWJmNWJi
N2Q1MjVhNWY1ZmZkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0
Q29udGVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMu
Y3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6OnBhcnNlckFw
cGVuZFJ1bGUoUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBydWxlKQogICAgIC8vIE5PVEU6IFRo
ZSBzZWxlY3RvciBsaXN0IGhhcyB0byBmaXQgaW50byBSdWxlRGF0YS4gPGh0dHA6Ly93ZWJraXQu
b3JnL2IvMTE4MzY5PgogICAgIC8vIElmIHdlJ3JlIGFkZGluZyBhIHJ1bGUgd2l0aCBhIGh1Z2Ug
bnVtYmVyIG9mIHNlbGVjdG9ycywgc3BsaXQgaXQgdXAgaW50byBtdWx0aXBsZSBydWxlcwogICAg
IGlmIChydWxlLT5pc1N0eWxlUnVsZSgpICYmIHRvU3R5bGVSdWxlKHJ1bGUuZ2V0KCkpLT5zZWxl
Y3Rvckxpc3QoKS5jb21wb25lbnRDb3VudCgpID4gUnVsZURhdGE6Om1heGltdW1TZWxlY3RvckNv
bXBvbmVudENvdW50KSB7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPiA+IHJ1bGVz
ID0gdG9TdHlsZVJ1bGUocnVsZS5nZXQoKSktPnNwbGl0SW50b011bHRpcGxlUnVsZXNXaXRoTWF4
aW11bVNlbGVjdG9yQ29tcG9uZW50Q291bnQoUnVsZURhdGE6Om1heGltdW1TZWxlY3RvckNvbXBv
bmVudENvdW50KTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiBydWxlcyA9IHRv
U3R5bGVSdWxlKHJ1bGUuZ2V0KCkpLT5zcGxpdEludG9NdWx0aXBsZVJ1bGVzV2l0aE1heGltdW1T
ZWxlY3RvckNvbXBvbmVudENvdW50KFJ1bGVEYXRhOjptYXhpbXVtU2VsZWN0b3JDb21wb25lbnRD
b3VudCk7CiAgICAgICAgIG1fY2hpbGRSdWxlcy5hcHBlbmRWZWN0b3IocnVsZXMpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgU3R5bGVTaGVldENvbnRl
bnRzOjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKQogICAg
IH0KIH0KIAotc3RhdGljIGJvb2wgY2hpbGRSdWxlc0hhdmVGYWlsZWRPckNhbmNlbGVkU3VicmVz
b3VyY2VzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiYgcnVsZXMpCitzdGF0
aWMgYm9vbCBjaGlsZFJ1bGVzSGF2ZUZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mIHJ1bGVzKQogewogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBydWxlcy5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBTdHlsZVJ1
bGVCYXNlKiBydWxlID0gcnVsZXNbaV0uZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVl
dENvbnRlbnRzLmgKaW5kZXggZjllNjk0NWM2OTY4ODhkNWMzZjdiNGM2YTcxNTgzNjcwY2JiMDQx
Yy4uMjc2MTM0ZmFmZmZhZmJmNGNhNDEwYmU3OGU3MDNiY2E5YjMyYThiMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaApAQCAtOTgsOCArOTgsOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNDaGFyc2V0UnVsZSgpIGNvbnN0IHsgcmV0dXJuICFtX2VuY29kaW5nRnJvbUNo
YXJzZXRSdWxlLmlzTnVsbCgpOyB9CiAgICAgU3RyaW5nIGVuY29kaW5nRnJvbUNoYXJzZXRSdWxl
KCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGluZ0Zyb21DaGFyc2V0UnVsZTsgfQogICAgIC8vIFJ1
bGVzIG90aGVyIHRoYW4gQGNoYXJzZXQgYW5kIEBpbXBvcnQuCi0gICAgY29uc3QgVmVjdG9yPFJl
ZlB0cjxTdHlsZVJ1bGVCYXNlPiA+JiBjaGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGls
ZFJ1bGVzOyB9Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVJbXBvcnQ+ID4mIGlt
cG9ydFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBvcnRSdWxlczsgfQorICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBjaGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1cm4g
bV9jaGlsZFJ1bGVzOyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVJbXBvcnQ+
PiYgaW1wb3J0UnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2ltcG9ydFJ1bGVzOyB9CiAKICAgICB2
b2lkIG5vdGlmeUxvYWRlZFNoZWV0KGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqKTsKICAgICAK
QEAgLTE0OSw4ICsxNDksOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX29yaWdpbmFsVVJMOwog
CiAgICAgU3RyaW5nIG1fZW5jb2RpbmdGcm9tQ2hhcnNldFJ1bGU7Ci0gICAgVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGVJbXBvcnQ+ID4gbV9pbXBvcnRSdWxlczsKLSAgICBWZWN0b3I8UmVmUHRyPFN0
eWxlUnVsZUJhc2U+ID4gbV9jaGlsZFJ1bGVzOworICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxl
SW1wb3J0Pj4gbV9pbXBvcnRSdWxlczsKKyAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
PiBtX2NoaWxkUnVsZXM7CiAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgQXRvbWlj
U3RyaW5nPiBQcmVmaXhOYW1lc3BhY2VVUklNYXA7CiAgICAgUHJlZml4TmFtZXNwYWNlVVJJTWFw
IG1fbmFtZXNwYWNlczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hl
ZXRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5jcHAKaW5kZXgg
YTQ0ZjYwODdkMzk4YzE2ODBmZTY1ZDM0ZGZiNWM2MTkyZGNhOGY0NS4uMTAzZTY0MWFjNmU3YzVl
YjQwYzE3NTMyZWEwMTQ0NWY2MTFjMTUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlU2hlZXRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldExp
c3QuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFN0eWxlU2hlZXRMaXN0Ojp+U3R5bGVTaGVldExpc3Qo
KQogewogfQogCi1pbmxpbmUgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+JiBTdHls
ZVNoZWV0TGlzdDo6c3R5bGVTaGVldHMoKSBjb25zdAoraW5saW5lIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8U3R5bGVTaGVldD4+JiBTdHlsZVNoZWV0TGlzdDo6c3R5bGVTaGVldHMoKSBjb25zdAogewog
ICAgIGlmICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG1fZGV0YWNoZWRTdHlsZVNoZWV0
czsKQEAgLTYxLDcgKzYxLDcgQEAgdW5zaWduZWQgU3R5bGVTaGVldExpc3Q6Omxlbmd0aCgpIGNv
bnN0CiAKIFN0eWxlU2hlZXQqIFN0eWxlU2hlZXRMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KQog
ewotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgc2hlZXRzID0gc3R5bGVT
aGVldHMoKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+PiYgc2hlZXRzID0g
c3R5bGVTaGVldHMoKTsKICAgICByZXR1cm4gaW5kZXggPCBzaGVldHMuc2l6ZSgpID8gc2hlZXRz
W2luZGV4XS5nZXQoKSA6IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRMaXN0LmgKaW5k
ZXggYzA1Mjg0MTU5OTNjYWQ1NGEzMThhOTMwZDE3ZmQwNTY3YTI5OGUwOC4uZGQyNzNhYzAwYzdi
YzU3MjQ4ZmViNmIwYmRhOWZhNzJmNjQyNTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlU2hlZXRMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRM
aXN0LmgKQEAgLTQ4LDEwICs0OCwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgU3R5bGVT
aGVldExpc3QoRG9jdW1lbnQqKTsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+
ID4mIHN0eWxlU2hlZXRzKCkgY29uc3Q7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVNo
ZWV0Pj4mIHN0eWxlU2hlZXRzKCkgY29uc3Q7CiAKICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsK
LSAgICBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4gbV9kZXRhY2hlZFN0eWxlU2hlZXRzOwor
ICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4+IG1fZGV0YWNoZWRTdHlsZVNoZWV0czsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
S2V5ZnJhbWVzUnVsZS5oCmluZGV4IDgzNmE0ZTM1Mzc3M2ZlYWYyZTM4OTdmZTgzZTM0ZWQ4NzNk
Y2JkMjcuLmMzNjRlMjk4YTZjNDkxY2Y0OWIyNzU3OTMzNWQ1NjYyMmEyNzk1ZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0tleWZyYW1lc1J1bGUuaApAQCAtNDMsNyArNDMsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgflN0eWxlUnVsZUtleWZyYW1lcygpOwogICAgIAotICAgIGNv
bnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4gPiYga2V5ZnJhbWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9rZXlmcmFtZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlS2V5ZnJh
bWU+PiYga2V5ZnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9rZXlmcmFtZXM7IH0KICAgICAKICAg
ICB2b2lkIHBhcnNlckFwcGVuZEtleWZyYW1lKFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4pOwog
ICAgIHZvaWQgd3JhcHBlckFwcGVuZEtleWZyYW1lKFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4p
OwpAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogICAgIFN0eWxlUnVsZUtleWZyYW1lcygpOwog
ICAgIFN0eWxlUnVsZUtleWZyYW1lcyhjb25zdCBTdHlsZVJ1bGVLZXlmcmFtZXMmKTsKIAotICAg
IFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4gPiBtX2tleWZyYW1lczsKKyAgICBWZWN0b3I8
UmVmUHRyPFN0eWxlS2V5ZnJhbWU+PiBtX2tleWZyYW1lczsKICAgICBBdG9taWNTdHJpbmcgbV9u
YW1lOwogfTsKIApAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIFdlYktpdENTU0tleWZy
YW1lc1J1bGUoU3R5bGVSdWxlS2V5ZnJhbWVzKiwgQ1NTU3R5bGVTaGVldCogcGFyZW50KTsKIAog
ICAgIFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IG1fa2V5ZnJhbWVzUnVsZTsKLSAgICBtdXRh
YmxlIFZlY3RvcjxSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiA+IG1fY2hpbGRSdWxlQ1NT
T01XcmFwcGVyczsKKyAgICBtdXRhYmxlIFZlY3RvcjxSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVS
dWxlPj4gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzOwogICAgIG11dGFibGUgT3duUHRyPENTU1J1
bGVMaXN0PiBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGVja2VkUmFkaW9CdXR0b25zLmgKaW5kZXggZjA1MGZhYTQ4YzE2MjQ0Yzk3NDVlMzAxOTA3MmFm
NjE3MWY0OTQ3Mi4uYmIzNTcwZGE5MGY1ZGJmMzhjZmIxZWJmNjg4MTVjMTVhMjkzZDQ3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoZWNrZWRSYWRpb0J1dHRvbnMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5oCkBAIC00NCw3ICs0NCw3IEBA
IHB1YmxpYzoKICAgICBib29sIGlzSW5SZXF1aXJlZEdyb3VwKEhUTUxJbnB1dEVsZW1lbnQqKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCos
IE93blB0cjxSYWRpb0J1dHRvbkdyb3VwPiA+IE5hbWVUb0dyb3VwTWFwOworICAgIHR5cGVkZWYg
SGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgT3duUHRyPFJhZGlvQnV0dG9uR3JvdXA+PiBOYW1l
VG9Hcm91cE1hcDsKICAgICBPd25QdHI8TmFtZVRvR3JvdXBNYXA+IG1fbmFtZVRvR3JvdXBNYXA7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2xpZW50UmVjdExpc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5oCmluZGV4IDUxM2MzYmRhNmMyOTQ3
NWVlZDExZmI2ZTJlNDIyYzY0NjU2MTliNTguLmM0MjFkODAzNTdiMzZlNzIzNWQ2Mjg0ZmMwMWY0
ZGNlM2U3MWFkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGllbnRSZWN0TGlzdC5oCkBAIC00OSw3ICs0
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ2xpZW50UmVjdExpc3QoKTsKICAg
ICAgICAgZXhwbGljaXQgQ2xpZW50UmVjdExpc3QoY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4mKTsK
IAotICAgICAgICBWZWN0b3I8UmVmUHRyPENsaWVudFJlY3Q+ID4gbV9saXN0OworICAgICAgICBW
ZWN0b3I8UmVmUHRyPENsaWVudFJlY3Q+PiBtX2xpc3Q7CiAgICAgfTsgCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IDRhMTk3NzcyMzli
OTg4NzNkNDMxYWVkZjQxNTAyMjcyYmNiNmJhMDAuLmViZjUzN2RkOTBiYzI4ZGM5NGE1NjY5ZjY5
YTU5NjcxNzJlYWNhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtMjcxLDcg
KzI3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gbm9kZS0+
bmV4dFNpYmxpbmcoKTsKICAgICAgICAgICAgIHJldHVybiBub2RlLnJlbGVhc2UoKTsKICAgICAg
ICAgfQotICAgICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIG5vZGVWZWN0b3IgPSAqbV9jaGls
ZE5vZGVzOworICAgICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+PiYgbm9kZVZlY3RvciA9ICptX2No
aWxkTm9kZXM7CiAgICAgICAgIGlmIChtX2N1cnJlbnRJbmRleCA+PSBub2RlVmVjdG9yLnNpemUo
KSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gbm9kZVZlY3RvclttX2N1
cnJlbnRJbmRleCsrXTsKQEAgLTI4MSw3ICsyODEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBpZiAoaGFzU25hcHNob3QoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9jaGls
ZE5vZGVzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPigpKTsKKyAgICAgICAg
bV9jaGlsZE5vZGVzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Tm9kZT4+KCkpOwogICAg
ICAgICBOb2RlKiBub2RlID0gbV9jdXJyZW50Tm9kZS5nZXQoKTsKICAgICAgICAgd2hpbGUgKG5v
ZGUpIHsKICAgICAgICAgICAgIG1fY2hpbGROb2Rlcy0+YXBwZW5kKG5vZGUpOwpAQCAtMzA2LDcg
KzMwNiw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8Tm9kZT4gbV9jdXJyZW50Tm9kZTsKICAg
ICB1bnNpZ25lZCBtX2N1cnJlbnRJbmRleDsKLSAgICBPd25QdHI8VmVjdG9yPFJlZlB0cjxOb2Rl
PiA+ID4gbV9jaGlsZE5vZGVzOyAvLyBMYXppbHkgaW5zdGFudGlhdGVkLgorICAgIE93blB0cjxW
ZWN0b3I8UmVmUHRyPE5vZGU+Pj4gbV9jaGlsZE5vZGVzOyAvLyBMYXppbHkgaW5zdGFudGlhdGVk
LgogICAgIENoaWxkTm9kZXNMYXp5U25hcHNob3QqIG1fbmV4dFNuYXBzaG90OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nyb3NzVGhyZWFkVGFzay5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0Nyb3NzVGhyZWFkVGFzay5oCmluZGV4IGUyODA5OTg3ZjhjMGZiMWU4ZTY5Yzk0
NjdmZGE4MDdlMzQ4OTU3NjYuLjZjYzVmODQyMTU2ZDIwZTgwODY1Y2EzNDg1NjI4ZDFhNzI1Nzdk
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Dcm9zc1RocmVhZFRhc2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3Jvc3NUaHJlYWRUYXNrLmgKQEAgLTQ4LDExICs0OCwxMSBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFQqPiB7
CiAgICAgdHlwZWRlZiBUKiBQYXJhbVR5cGU7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFBhc3NSZWZQdHI8VD4gPiB7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRUYXNrVHJhaXRzPFBhc3NSZWZQdHI8VD4+IHsK
ICAgICB0eXBlZGVmIFBhc3NSZWZQdHI8VD4gUGFyYW1UeXBlOwogfTsKIAotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkVGFza1RyYWl0czxQYXNzT3duUHRyPFQ+ID4gewor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENyb3NzVGhyZWFkVGFza1RyYWl0czxQYXNzT3du
UHRyPFQ+PiB7CiAgICAgdHlwZWRlZiBQYXNzT3duUHRyPFQ+IFBhcmFtVHlwZTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDllNWYyYzNjOWNhMzg0MTcyOGQ1N2M1NDNlYTcyYjhi
YTYwMzZmZDQuLjlkODk0MzM3NzAzZmQ5MmE5MDcwNTg1YTA1MjJlNzZmZmI1MDIzZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTA4Nyw3ICs1MDg3LDcgQEAgdm9pZCBEb2N1bWVudDo6
d2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpCiAKICAgICAvLyBUbyBhY2hpZXZlIHRoYXQgYWltLCBy
ZW1vdmUgYWxsIHRoZSBlbGVtZW50cyBmcm9tIHRoZSB0b3AgZG9jdW1lbnQncyBzdGFjayBleGNl
cHQgZm9yIHRoZSBmaXJzdCBiZWZvcmUKICAgICAvLyBjYWxsaW5nIHdlYmtpdEV4aXRGdWxsc2Ny
ZWVuKCk6Ci0gICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50PiA+IHJlcGxhY2VtZW50RnVsbHNjcmVl
bkVsZW1lbnRTdGFjazsKKyAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiByZXBsYWNlbWVudEZ1
bGxzY3JlZW5FbGVtZW50U3RhY2s7CiAgICAgcmVwbGFjZW1lbnRGdWxsc2NyZWVuRWxlbWVudFN0
YWNrLmFwcGVuZCh0b3BEb2N1bWVudCgpLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVudCgpKTsKICAg
ICB0b3BEb2N1bWVudCgpLT5tX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suc3dhcChyZXBsYWNlbWVu
dEZ1bGxzY3JlZW5FbGVtZW50U3RhY2spOwogCkBAIC01MTA4LDcgKzUxMDgsNyBAQCB2b2lkIERv
Y3VtZW50Ojp3ZWJraXRFeGl0RnVsbHNjcmVlbigpCiAgICAgLy8gMy4gTGV0IGRlc2NlbmRhbnRz
IGJlIGFsbCB0aGUgZG9jJ3MgZGVzY2VuZGFudCBicm93c2luZyBjb250ZXh0J3MgZG9jdW1lbnRz
IHdpdGggYSBub24tZW1wdHkgZnVsbHNjcmVlbgogICAgIC8vIGVsZW1lbnQgc3RhY2sgKGlmIGFu
eSksIG9yZGVyZWQgc28gdGhhdCB0aGUgY2hpbGQgb2YgdGhlIGRvYyBpcyBsYXN0IGFuZCB0aGUg
ZG9jdW1lbnQgZnVydGhlc3QKICAgICAvLyBhd2F5IGZyb20gdGhlIGRvYyBpcyBmaXJzdC4KLSAg
ICBEZXF1ZTxSZWZQdHI8RG9jdW1lbnQ+ID4gZGVzY2VuZGFudHM7CisgICAgRGVxdWU8UmVmUHRy
PERvY3VtZW50Pj4gZGVzY2VuZGFudHM7CiAgICAgZm9yIChGcmFtZSogZGVzY2VuZGFudCA9IGZy
YW1lKCkgPyBmcmFtZSgpLT50cmVlKCkudHJhdmVyc2VOZXh0KCkgOiBudWxscHRyOyBkZXNjZW5k
YW50OyBkZXNjZW5kYW50ID0gZGVzY2VuZGFudC0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAg
ICAgICAgIGlmIChkZXNjZW5kYW50LT5kb2N1bWVudCgpLT53ZWJraXRGdWxsc2NyZWVuRWxlbWVu
dCgpKQogICAgICAgICAgICAgZGVzY2VuZGFudHMucHJlcGVuZChkZXNjZW5kYW50LT5kb2N1bWVu
dCgpKTsKQEAgLTUxMTYsNyArNTExNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OndlYmtpdEV4aXRGdWxs
c2NyZWVuKCkKICAgICAgICAgCiAgICAgLy8gNC4gRm9yIGVhY2ggZGVzY2VuZGFudCBpbiBkZXNj
ZW5kYW50cywgZW1wdHkgZGVzY2VuZGFudCdzIGZ1bGxzY3JlZW4gZWxlbWVudCBzdGFjaywgYW5k
IHF1ZXVlIGEKICAgICAvLyB0YXNrIHRvIGZpcmUgYW4gZXZlbnQgbmFtZWQgZnVsbHNjcmVlbmNo
YW5nZSB3aXRoIGl0cyBidWJibGVzIGF0dHJpYnV0ZSBzZXQgdG8gdHJ1ZSBvbiBkZXNjZW5kYW50
LgotICAgIGZvciAoRGVxdWU8UmVmUHRyPERvY3VtZW50PiA+OjppdGVyYXRvciBpID0gZGVzY2Vu
ZGFudHMuYmVnaW4oKTsgaSAhPSBkZXNjZW5kYW50cy5lbmQoKTsgKytpKSB7CisgICAgZm9yIChE
ZXF1ZTxSZWZQdHI8RG9jdW1lbnQ+Pjo6aXRlcmF0b3IgaSA9IGRlc2NlbmRhbnRzLmJlZ2luKCk7
IGkgIT0gZGVzY2VuZGFudHMuZW5kKCk7ICsraSkgewogICAgICAgICAoKmkpLT5jbGVhckZ1bGxz
Y3JlZW5FbGVtZW50U3RhY2soKTsKICAgICAgICAgYWRkRG9jdW1lbnRUb0Z1bGxTY3JlZW5DaGFu
Z2VFdmVudFF1ZXVlKGktPmdldCgpKTsKICAgICB9CkBAIC01MzA0LDkgKzUzMDQsOSBAQCB2b2lk
IERvY3VtZW50OjpmdWxsU2NyZWVuQ2hhbmdlRGVsYXlUaW1lckZpcmVkKFRpbWVyPERvY3VtZW50
PiopCiAgICAgLy8gZG9jdW1lbnQgd2lsbCBiZSBkZXRhY2hlZCBhbmQgR0MnZC4gV2UgcHJvdGVj
dCBpdCBoZXJlIHRvIG1ha2Ugc3VyZSB3ZQogICAgIC8vIGNhbiBmaW5pc2ggdGhlIGZ1bmN0aW9u
IHN1Y2Nlc3NmdWxseS4KICAgICBSZWY8RG9jdW1lbnQ+IHByb3RlY3QoKnRoaXMpOwotICAgIERl
cXVlPFJlZlB0cjxOb2RlPiA+IGNoYW5nZVF1ZXVlOworICAgIERlcXVlPFJlZlB0cjxOb2RlPj4g
Y2hhbmdlUXVldWU7CiAgICAgbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS5zd2Fw
KGNoYW5nZVF1ZXVlKTsKLSAgICBEZXF1ZTxSZWZQdHI8Tm9kZT4gPiBlcnJvclF1ZXVlOworICAg
IERlcXVlPFJlZlB0cjxOb2RlPj4gZXJyb3JRdWV1ZTsKICAgICBtX2Z1bGxTY3JlZW5FcnJvckV2
ZW50VGFyZ2V0UXVldWUuc3dhcChlcnJvclF1ZXVlKTsKICAgICBkaXNwYXRjaEZ1bGxTY3JlZW5D
aGFuZ2VPckVycm9yRXZlbnQoY2hhbmdlUXVldWUsIGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2Ny
ZWVuY2hhbmdlRXZlbnQsIC8qIHNob3VsZE5vdGlmeU1lZGlhRWxlbWVudCAqLyB0cnVlKTsKICAg
ICBkaXNwYXRjaEZ1bGxTY3JlZW5DaGFuZ2VPckVycm9yRXZlbnQoZXJyb3JRdWV1ZSwgZXZlbnRO
YW1lcygpLndlYmtpdGZ1bGxzY3JlZW5lcnJvckV2ZW50LCAvKiBzaG91bGROb3RpZnlNZWRpYUVs
ZW1lbnQgKi8gZmFsc2UpOwpAQCAtNTk0MCw3ICs1OTQwLDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlk
QXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZChUaW1lcjxEb2N1bWVudD4qIHRpbWVyKQog
ICAgIGlmICghZnJhbWUoKSB8fCAhZnJhbWUoKS0+cGFnZSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID4gYXNzb2NpYXRlZEZvcm1Db250cm9sczsKKyAg
ICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiBhc3NvY2lhdGVkRm9ybUNvbnRyb2xzOwogICAgIGNv
cHlUb1ZlY3RvcihtX2Fzc29jaWF0ZWRGb3JtQ29udHJvbHMsIGFzc29jaWF0ZWRGb3JtQ29udHJv
bHMpOwogCiAgICAgZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5kaWRBc3NvY2lh
dGVGb3JtQ29udHJvbHMoYXNzb2NpYXRlZEZvcm1Db250cm9scyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CmluZGV4IDVkNDcxNjU0Zjc1NGI3MGMzYTIxNDI5MGUyYzViM2I1M2E2MzIzNGUuLjMwZjhjYzJk
MmNhMDM0YzJlNTIzZjQ1ZGQwMjQ1ZDM0OWU0OTA3ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBA
IC0xNDI2LDcgKzE0MjYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbm5vdGF0ZWRSZWdpb25z
RGlydHk7CiAjZW5kaWYKIAotICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SFRNTENhbnZhc0Vs
ZW1lbnQ+ID4gbV9jc3NDYW52YXNFbGVtZW50czsKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRy
PEhUTUxDYW52YXNFbGVtZW50Pj4gbV9jc3NDYW52YXNFbGVtZW50czsKIAogICAgIGJvb2wgbV9j
cmVhdGVSZW5kZXJlcnM7CiAgICAgYm9vbCBtX2luUGFnZUNhY2hlOwpAQCAtMTQ2NCw3ICsxNDY0
LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgYm9vbCBtX2Fy
ZUtleXNFbmFibGVkSW5GdWxsU2NyZWVuOwogICAgIFJlZlB0cjxFbGVtZW50PiBtX2Z1bGxTY3Jl
ZW5FbGVtZW50OwotICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiBtX2Z1bGxTY3JlZW5FbGVt
ZW50U3RhY2s7CisgICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4gbV9mdWxsU2NyZWVuRWxlbWVu
dFN0YWNrOwogICAgIFJlbmRlckZ1bGxTY3JlZW4qIG1fZnVsbFNjcmVlblJlbmRlcmVyOwogICAg
IFRpbWVyPERvY3VtZW50PiBtX2Z1bGxTY3JlZW5DaGFuZ2VEZWxheVRpbWVyOwogICAgIERlcXVl
PFJlZlB0cjxOb2RlPj4gbV9mdWxsU2NyZWVuQ2hhbmdlRXZlbnRUYXJnZXRRdWV1ZTsKQEAgLTE1
MDUsNyArMTUwNSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFRpbWVyPERvY3VtZW50PiBt
X3BlbmRpbmdUYXNrc1RpbWVyOwotICAgIFZlY3RvcjxPd25QdHI8VGFzaz4gPiBtX3BlbmRpbmdU
YXNrczsKKyAgICBWZWN0b3I8T3duUHRyPFRhc2s+PiBtX3BlbmRpbmdUYXNrczsKIAogI2lmIEVO
QUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQogcHVibGljOgpAQCAtMTU0Miw3ICsxNTQyLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fZGlkRGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNDaGFuZ2Vk
OwogI2VuZGlmCiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBPd25QdHI8TG9j
YWxlPiA+IExvY2FsZUlkZW50aWZpZXJUb0xvY2FsZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8
QXRvbWljU3RyaW5nLCBPd25QdHI8TG9jYWxlPj4gTG9jYWxlSWRlbnRpZmllclRvTG9jYWxlTWFw
OwogICAgIExvY2FsZUlkZW50aWZpZXJUb0xvY2FsZU1hcCBtX2xvY2FsZUNhY2hlOwogCiAjaWYg
RU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCkBAIC0xNTU1LDcgKzE1NTUsNyBAQCBwcml2YXRlOgog
I2VuZGlmCiAKICAgICBUaW1lcjxEb2N1bWVudD4gbV9kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNU
aW1lcjsKLSAgICBIYXNoU2V0PFJlZlB0cjxFbGVtZW50PiA+IG1fYXNzb2NpYXRlZEZvcm1Db250
cm9sczsKKyAgICBIYXNoU2V0PFJlZlB0cjxFbGVtZW50Pj4gbV9hc3NvY2lhdGVkRm9ybUNvbnRy
b2xzOwogCiAgICAgYm9vbCBtX2hhc0luamVjdGVkUGx1Z0luc1NjcmlwdDsKICAgICBib29sIG1f
cmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcAppbmRleCA1Zjk4YWNlZGE0MDYyZmE4YWJlZmQ2YWY3YjJm
NzZmMGM2MzAwYzM2Li4wMWQzZTM2OGQ4ZmI4Nzg3ZDMyM2MwNmE0NGZjYzdlNmY0ZDhlNDEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApA
QCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW1vdmVN
YXJrZXJzKERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyBtYXJrZXJUCiAgICAgICAgIHJldHVy
bjsKICAgICBBU1NFUlQoIW1fbWFya2Vycy5pc0VtcHR5KCkpOwogCi0gICAgVmVjdG9yPFJlZlB0
cjxOb2RlPiA+IG5vZGVzV2l0aE1hcmtlcnM7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gbm9k
ZXNXaXRoTWFya2VyczsKICAgICBjb3B5S2V5c1RvVmVjdG9yKG1fbWFya2Vycywgbm9kZXNXaXRo
TWFya2Vycyk7CiAgICAgdW5zaWduZWQgc2l6ZSA9IG5vZGVzV2l0aE1hcmtlcnMuc2l6ZSgpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaAppbmRleCA4MGI5OGQ5ZTUzY2I1OTA1
MDYwNzY4ZGJlZGNlNGEzMTVhZTRjZDExLi45MjRlYmJiYTNjZGE1NDU5N2NlNjlmY2FhM2M0MTM1
MmRlOGM2NWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJv
bGxlci5oCkBAIC05MSw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRNYXJrZXIoTm9k
ZSosIGNvbnN0IERvY3VtZW50TWFya2VyJik7CiAKICAgICB0eXBlZGVmIFZlY3RvcjxSZW5kZXJl
ZERvY3VtZW50TWFya2VyPiBNYXJrZXJMaXN0OwotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
Tm9kZT4sIE93blB0cjxNYXJrZXJMaXN0PiA+IE1hcmtlck1hcDsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPE5vZGU+LCBPd25QdHI8TWFya2VyTGlzdD4+IE1hcmtlck1hcDsKICAgICBib29s
IHBvc3NpYmx5SGFzTWFya2VycyhEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZXMpOwogICAgIHZv
aWQgcmVtb3ZlTWFya2Vyc0Zyb21MaXN0KE1hcmtlck1hcDo6aXRlcmF0b3IsIERvY3VtZW50TWFy
a2VyOjpNYXJrZXJUeXBlcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAppbmRleCBmOTY1MjQ0ODI1YWUxYzE3YmRmN2JhNDRk
MDRjODNlMWM5Zjc0OTg1Li4yMDRhY2I0NGE2MGM4ZTViODk5MzgwMjYyNDczYTFmZTAxMmM2ODhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxl
Y3Rpb24uY3BwCkBAIC0xMTksMTMgKzExOSwxMyBAQCB2b2lkIERvY3VtZW50U3R5bGVTaGVldENv
bGxlY3Rpb246OnVwZGF0ZVBhZ2VVc2VyU2hlZXQoKQogICAgICAgICBtX2RvY3VtZW50LnN0eWxl
UmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogfQogCi1jb25zdCBWZWN0
b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246
OmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCkgY29uc3QKK2NvbnN0IFZlY3RvcjxSZWZQdHI8Q1NT
U3R5bGVTaGVldD4+JiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjppbmplY3RlZFVzZXJT
dHlsZVNoZWV0cygpIGNvbnN0CiB7CiAgICAgdXBkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUo
KTsKICAgICByZXR1cm4gbV9pbmplY3RlZFVzZXJTdHlsZVNoZWV0czsKIH0KIAotY29uc3QgVmVj
dG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
OjppbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkgY29uc3QKK2NvbnN0IFZlY3RvcjxSZWZQdHI8
Q1NTU3R5bGVTaGVldD4+JiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjppbmplY3RlZEF1
dGhvclN0eWxlU2hlZXRzKCkgY29uc3QKIHsKICAgICB1cGRhdGVJbmplY3RlZFN0eWxlU2hlZXRD
YWNoZSgpOwogICAgIHJldHVybiBtX2luamVjdGVkQXV0aG9yU3R5bGVTaGVldHM7CkBAIC0yNTUs
NyArMjU1LDcgQEAgdm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpyZW1vdmVTdHls
ZVNoZWV0Q2FuZGlkYXRlTm9kZShOb2RlJiBub2RlKQogICAgIG1fc3R5bGVTaGVldENhbmRpZGF0
ZU5vZGVzLnJlbW92ZSgmbm9kZSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbjo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4g
PiYgc2hlZXRzKQordm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpjb2xsZWN0QWN0
aXZlU3R5bGVTaGVldHMoVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0Pj4mIHNoZWV0cykKIHsKICAg
ICBpZiAobV9kb2N1bWVudC5zZXR0aW5ncygpICYmICFtX2RvY3VtZW50LnNldHRpbmdzKCktPmF1
dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM0OCw3ICsz
NDgsNyBAQCB2b2lkIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxlY3RBY3RpdmVT
dHlsZVNoZWV0cyhWZWN0b3I8UmVmUHRyPFN0eWxlUwogICAgIH0KIH0KIAotdm9pZCBEb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uOjphbmFseXplU3R5bGVTaGVldENoYW5nZShVcGRhdGVGbGFn
IHVwZGF0ZUZsYWcsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgbmV3U3R5
bGVzaGVldHMsIFN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlJiBzdHlsZVJlc29sdmVyVXBkYXRlVHlw
ZSwgYm9vbCYgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMpCit2b2lkIERvY3VtZW50U3R5bGVTaGVl
dENvbGxlY3Rpb246OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKFVwZGF0ZUZsYWcgdXBkYXRlRmxh
ZywgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIG5ld1N0eWxlc2hlZXRzLCBT
dHlsZVJlc29sdmVyVXBkYXRlVHlwZSYgc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUsIGJvb2wmIHJl
cXVpcmVzRnVsbFN0eWxlUmVjYWxjKQogewogICAgIHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlID0g
UmVjb25zdHJ1Y3Q7CiAgICAgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMgPSB0cnVlOwpAQCAtNDA3
LDcgKzQwNyw3IEBAIHZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YW5hbHl6ZVN0
eWxlU2hlZXRDaGFuZ2UoVXBkYXRlRmxhZyB1cGRhdGVGbGFnCiAgICAgcmVxdWlyZXNGdWxsU3R5
bGVSZWNhbGMgPSBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgc3R5bGVTaGVldHNVc2VSZW1Vbml0
cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHNoZWV0cykKK3N0YXRpYyBi
b29sIHN0eWxlU2hlZXRzVXNlUmVtVW5pdHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0Pj4mIHNoZWV0cykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2hlZXRzLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIGlmIChzaGVldHNbaV0tPmNvbnRlbnRzKCktPnVzZXNSZW1V
bml0cygpKQpAQCAtNDE2LDcgKzQxNiw3IEBAIHN0YXRpYyBib29sIHN0eWxlU2hlZXRzVXNlUmVt
VW5pdHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzaGVldHMpCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgdm9pZCBmaWx0ZXJFbmFibGVkTm9uZW1wdHlDU1NT
dHlsZVNoZWV0cyhWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHJlc3VsdCwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+JiBzaGVldHMpCitzdGF0aWMgdm9pZCBmaWx0ZXJF
bmFibGVkTm9uZW1wdHlDU1NTdHlsZVNoZWV0cyhWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+
PiYgcmVzdWx0LCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+PiYgc2hlZXRzKQogewog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaGVldHMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgaWYgKCFzaGVldHNbaV0tPmlzQ1NTU3R5bGVTaGVldCgpKQpAQCAtNDMwLDcgKzQzMCw3IEBA
IHN0YXRpYyB2b2lkIGZpbHRlckVuYWJsZWROb25lbXB0eUNTU1N0eWxlU2hlZXRzKFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIGNvbGxlY3RB
Y3RpdmVDU1NTdHlsZVNoZWV0c0Zyb21TZWFtbGVzc1BhcmVudHMoVmVjdG9yPFJlZlB0cjxDU1NT
dHlsZVNoZWV0PiA+JiBzaGVldHMsIERvY3VtZW50JiBkb2N1bWVudCkKK3N0YXRpYyB2b2lkIGNv
bGxlY3RBY3RpdmVDU1NTdHlsZVNoZWV0c0Zyb21TZWFtbGVzc1BhcmVudHMoVmVjdG9yPFJlZlB0
cjxDU1NTdHlsZVNoZWV0Pj4mIHNoZWV0cywgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIEhU
TUxJRnJhbWVFbGVtZW50KiBzZWFtbGVzc1BhcmVudElGcmFtZSA9IGRvY3VtZW50LnNlYW1sZXNz
UGFyZW50SUZyYW1lKCk7CiAgICAgaWYgKCFzZWFtbGVzc1BhcmVudElGcmFtZSkKQEAgLTQ1Miwx
MCArNDUyLDEwIEBAIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlQWN0
aXZlU3R5bGVTaGVldHMoVXBkYXRlRmxhZyB1cGRhdGVGbGFnCiAgICAgaWYgKCFtX2RvY3VtZW50
LnJlbmRlclZpZXcoKSB8fCAhbV9kb2N1bWVudC5hdHRhY2hlZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4gYWN0aXZlU3R5bGVTaGVl
dHM7CisgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0Pj4gYWN0aXZlU3R5bGVTaGVldHM7CiAg
ICAgY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKGFjdGl2ZVN0eWxlU2hlZXRzKTsKIAotICAgIFZl
Y3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBhY3RpdmVDU1NTdHlsZVNoZWV0czsKKyAgICBW
ZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiBhY3RpdmVDU1NTdHlsZVNoZWV0czsKICAgICBh
Y3RpdmVDU1NTdHlsZVNoZWV0cy5hcHBlbmRWZWN0b3IoaW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0
cygpKTsKICAgICBhY3RpdmVDU1NTdHlsZVNoZWV0cy5hcHBlbmRWZWN0b3IoZG9jdW1lbnRBdXRo
b3JTdHlsZVNoZWV0cygpKTsKICAgICBjb2xsZWN0QWN0aXZlQ1NTU3R5bGVTaGVldHNGcm9tU2Vh
bWxlc3NQYXJlbnRzKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCBtX2RvY3VtZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oCmluZGV4IDMw
MjJlY2U0NDRhN2U4NzZhMTdhYWUyZDQ0OWMzODI3NDRiN2Q4MzMuLjVlYzZhN2JiMTJkM2U0OWE4
ODVlMjRiZDEzYmFjZDcxOTFiZDI5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaApAQCAtMTE4LDE4ICsxMTgsMTggQEAgcHVibGlj
OgogICAgIHZvaWQgZGV0YWNoRnJvbURvY3VtZW50KCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBj
b2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+Jik7Cisg
ICAgdm9pZCBjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0
Pj4mKTsKICAgICBlbnVtIFN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlIHsKICAgICAgICAgUmVjb25z
dHJ1Y3QsCiAgICAgICAgIFJlc2V0LAogICAgICAgICBBZGRpdGl2ZQogICAgIH07Ci0gICAgdm9p
ZCBhbmFseXplU3R5bGVTaGVldENoYW5nZShVcGRhdGVGbGFnLCBjb25zdCBWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+ID4mIG5ld1N0eWxlc2hlZXRzLCBTdHlsZVJlc29sdmVyVXBkYXRlVHlw
ZSYsIGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKTsKKyAgICB2b2lkIGFuYWx5emVTdHls
ZVNoZWV0Q2hhbmdlKFVwZGF0ZUZsYWcsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4+JiBuZXdTdHlsZXNoZWV0cywgU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUmLCBib29sJiByZXF1
aXJlc0Z1bGxTdHlsZVJlY2FsYyk7CiAKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKIAotICAg
IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiBtX3N0eWxlU2hlZXRzRm9yU3R5bGVTaGVldExp
c3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+IG1fYWN0aXZlQXV0aG9yU3R5
bGVTaGVldHM7CisgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0Pj4gbV9zdHlsZVNoZWV0c0Zv
clN0eWxlU2hlZXRMaXN0OworICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG1fYWN0
aXZlQXV0aG9yU3R5bGVTaGVldHM7CiAKICAgICAvLyBUaGlzIGlzIGEgbWlycm9yIG9mIG1fYWN0
aXZlQXV0aG9yU3R5bGVTaGVldHMgdGhhdCBnZXRzIHBvcHVsYXRlZCBvbiBkZW1hbmQgZm9yIGFj
dGl2ZVN0eWxlU2hlZXRzQ29udGFpbnMoKS4KICAgICBtdXRhYmxlIE93blB0cjxIYXNoU2V0PGNv
bnN0IENTU1N0eWxlU2hlZXQqPj4gbV93ZWFrQ29weU9mQWN0aXZlU3R5bGVTaGVldExpc3RGb3JG
YXN0TG9va3VwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGRjMzQzMDZjN2ZhOGJiNGJmYzE2
ZDEzMzY2ODY1NDU2YmJiZGM2OWUuLjY2MWZkMzk0NTliYzlkMWQ0MGM0N2IzYjFlMWVmNmIzZTM5
ZTNiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTExMSw4ICsxMTEsOCBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZShjb25zdCBFbGVtZW50JiBlbGVt
ZW50KQogICAgIHJldHVybiBlbGVtZW50LmlzSFRNTEVsZW1lbnQoKSAmJiBlbGVtZW50LmRvY3Vt
ZW50KCkuaXNIVE1MRG9jdW1lbnQoKTsKIH0KIAotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEF0dHI+
ID4gQXR0ck5vZGVMaXN0OwotdHlwZWRlZiBIYXNoTWFwPEVsZW1lbnQqLCBPd25QdHI8QXR0ck5v
ZGVMaXN0PiA+IEF0dHJOb2RlTGlzdE1hcDsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxBdHRyPj4g
QXR0ck5vZGVMaXN0OwordHlwZWRlZiBIYXNoTWFwPEVsZW1lbnQqLCBPd25QdHI8QXR0ck5vZGVM
aXN0Pj4gQXR0ck5vZGVMaXN0TWFwOwogCiBzdGF0aWMgQXR0ck5vZGVMaXN0TWFwJiBhdHRyTm9k
ZUxpc3RNYXAoKQogewpAQCAtMTc2OSw3ICsxNzY5LDcgQEAgdm9pZCBFbGVtZW50Ojpmb3JtYXRG
b3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIH0KICNlbmRp
ZgogCi1jb25zdCBWZWN0b3I8UmVmUHRyPEF0dHI+ID4mIEVsZW1lbnQ6OmF0dHJOb2RlTGlzdCgp
Citjb25zdCBWZWN0b3I8UmVmUHRyPEF0dHI+PiYgRWxlbWVudDo6YXR0ck5vZGVMaXN0KCkKIHsK
ICAgICBBU1NFUlQoaGFzU3ludGhldGljQXR0ckNoaWxkTm9kZXMoKSk7CiAgICAgcmV0dXJuICph
dHRyTm9kZUxpc3RGb3JFbGVtZW50KHRoaXMpOwpAQCAtMjc1OSwxMSArMjc1OSwxMSBAQCBjb25z
dCBBdG9taWNTdHJpbmcmIEVsZW1lbnQ6OndlYmtpdFJlZ2lvbk92ZXJzZXQoKSBjb25zdAogICAg
IHJldHVybiB1bmRlZmluZWRTdGF0ZTsKIH0KIAotVmVjdG9yPFJlZlB0cjxSYW5nZT4gPiBFbGVt
ZW50Ojp3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCkgY29uc3QKK1ZlY3RvcjxSZWZQdHI8UmFu
Z2U+PiBFbGVtZW50Ojp3ZWJraXRHZXRSZWdpb25GbG93UmFuZ2VzKCkgY29uc3QKIHsKICAgICBk
b2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCi0gICAg
VmVjdG9yPFJlZlB0cjxSYW5nZT4gPiByYW5nZU9iamVjdHM7CisgICAgVmVjdG9yPFJlZlB0cjxS
YW5nZT4+IHJhbmdlT2JqZWN0czsKICAgICBpZiAoZG9jdW1lbnQoKS5jc3NSZWdpb25zRW5hYmxl
ZCgpICYmIHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dENvbnRhaW5lcigpKSB7CiAgICAgICAgIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KiByZWdpb24g
PSB0b1JlbmRlckJsb2NrRmxvdyhyZW5kZXJlcigpKS0+cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQo
KTsKICAgICAgICAgaWYgKHJlZ2lvbi0+aXNWYWxpZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXgg
ZTQ1Y2IwNDIzYjQ0NDVkOGVlYjE0NmNjZWMxNGMwZGI1YTQ0YmQyMS4uMWJlMDAzNzg3NGE2NjAy
MWJjMzZjOTJiNmJlMTYwOGRiMDBiZTQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0yMzYsNyAr
MjM2LDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8QXR0cj4gYXR0cklmRXhpc3RzKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKICAgICBQYXNzUmVmUHRyPEF0dHI+IGVuc3VyZUF0dHIoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxBdHRyPiA+JiBhdHRy
Tm9kZUxpc3QoKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEF0dHI+PiYgYXR0ck5vZGVMaXN0
KCk7CiAKICAgICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKCk7CiAKQEAgLTUy
Myw3ICs1MjMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZE1vdmVUb0Zsb3dU
aHJlYWQoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKICAgICAKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHdlYmtpdFJlZ2lvbk92ZXJzZXQoKSBjb25zdDsKLSAgICBWZWN0b3I8UmVmUHRyPFJh
bmdlPiA+IHdlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKSBjb25zdDsKKyAgICBWZWN0b3I8UmVm
UHRyPFJhbmdlPj4gd2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpIGNvbnN0OwogI2VuZGlmCiAK
ICAgICBib29sIGhhc0lEKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRMaXN0ZW5lck1hcC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAu
aAppbmRleCA4MGE1MWNmZDliZmYzZTNjZGE1ZTBiOGVhY2UzMWEwNDcyMDI4Mzg0Li4wM2ExZGI0
ZWZhYmZhYTVmNWJhYjJkNzcwOTYyMzk0ZTUzYTNjNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dExpc3RlbmVyTWFwLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXNz
ZXJ0Tm9BY3RpdmVJdGVyYXRvcnMoKTsKIAotICAgIFZlY3RvcjxzdGQ6OnBhaXI8QXRvbWljU3Ry
aW5nLCBPd25QdHI8RXZlbnRMaXN0ZW5lclZlY3Rvcj4gPiwgMj4gbV9lbnRyaWVzOworICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8QXRvbWljU3RyaW5nLCBPd25QdHI8RXZlbnRMaXN0ZW5lclZlY3Rvcj4+
LCAyPiBtX2VudHJpZXM7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgaW50IG1fYWN0aXZlSXRlcmF0
b3JDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFNlbmRlci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50U2VuZGVyLmgKaW5kZXggNjQ2MDM0YzMyMGNkODc5YzVk
NTIwOGQzNmZjOGU5MTRkNjAxM2M3Mi4uODI5MjUwYjRkM2IyMjM2ZWM5Zjg0MzQ4MzU5NzJiY2Ni
NTBlMDEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50U2VuZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50U2VuZGVyLmgKQEAgLTQ5LDEwICs0OSwxMCBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8RXZl
bnRTZW5kZXI8VD4gPiopIHsgZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7IH0KKyAgICB2b2lkIHRp
bWVyRmlyZWQoVGltZXI8RXZlbnRTZW5kZXI8VD4+KikgeyBkaXNwYXRjaFBlbmRpbmdFdmVudHMo
KTsgfQogCiAgICAgQXRvbWljU3RyaW5nIG1fZXZlbnRUeXBlOwotICAgIFRpbWVyPEV2ZW50U2Vu
ZGVyPFQ+ID4gbV90aW1lcjsKKyAgICBUaW1lcjxFdmVudFNlbmRlcjxUPj4gbV90aW1lcjsKICAg
ICBWZWN0b3I8VCo+IG1fZGlzcGF0Y2hTb29uTGlzdDsKICAgICBWZWN0b3I8VCo+IG1fZGlzcGF0
Y2hpbmdMaXN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9i
c2VydmVyUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9JZFRhcmdldE9ic2VydmVyUmVn
aXN0cnkuaAppbmRleCBiYTc0YTJiNDZhNDZjZmMyOWMzZjMzNGI5MGQ5ZjVmMGQwNzQ0MmUwLi4y
OWM0MGY3NjNjMzI1OTI5MGY5ODY4YWE0YjQ1YzBmOGZjMzJiNTUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oCkBAIC01MSw3ICs1MSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBub3RpZnlPYnNlcnZlcnNJbnRlcm5hbChjb25zdCBBdG9taWNTdHJp
bmdJbXBsJiBpZCk7CiAKICAgICB0eXBlZGVmIEhhc2hTZXQ8SWRUYXJnZXRPYnNlcnZlcio+IE9i
c2VydmVyU2V0OwotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBBdG9taWNTdHJpbmdJbXBsKiwg
T3duUHRyPE9ic2VydmVyU2V0PiA+IElkVG9PYnNlcnZlclNldE1hcDsKKyAgICB0eXBlZGVmIEhh
c2hNYXA8Y29uc3QgQXRvbWljU3RyaW5nSW1wbCosIE93blB0cjxPYnNlcnZlclNldD4+IElkVG9P
YnNlcnZlclNldE1hcDsKICAgICBJZFRvT2JzZXJ2ZXJTZXRNYXAgbV9yZWdpc3RyeTsKICAgICBP
YnNlcnZlclNldCogbV9ub3RpZnlpbmdPYnNlcnZlcnNJblNldDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25DYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uQ2FsbGJhY2suaAppbmRleCBhNjBjZThiMWE2MTkxYzUwNTUwYTMxNDVlODYxZDQ1
MDMyZjhjMzQ2Li5lNjk4YTU5YzMxZWJkM2M4NDkwNmEyODNlYjY3MGIwZDE5OGI0NjJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25DYWxsYmFjay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkNhbGxiYWNrLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3Mg
TXV0YXRpb25DYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE11dGF0aW9uQ2FsbGJhY2s+IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NdXRhdGlvbkNhbGxiYWNrKCkgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgY2FsbChjb25zdCBWZWN0b3I8UmVmUHRyPE11dGF0aW9uUmVjb3JkPiA+JiwgTXV0
YXRpb25PYnNlcnZlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsbChjb25zdCBWZWN0b3I8
UmVmUHRyPE11dGF0aW9uUmVjb3JkPj4mLCBNdXRhdGlvbk9ic2VydmVyKikgPSAwOwogICAgIHZp
cnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0ID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRl
eCAxZmYyNmIxNzAyZGYwNDRkNzMzZWUzODk3NGU4OWEyODQzODg0ODRjLi42NjM1ODFlOTc4Nzkz
NGM0ZWVkMjc3OTc2MzQ0ZTZjZDg2MWRjODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXIuY3BwCkBAIC0xMTAsOSArMTEwLDkgQEAgdm9pZCBNdXRhdGlvbk9ic2VydmVyOjpv
YnNlcnZlKE5vZGUqIG5vZGUsIGNvbnN0IERpY3Rpb25hcnkmIG9wdGlvbnNEaWN0aW9uYXJ5LAog
ICAgIG5vZGUtPnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZlcih0aGlzLCBvcHRpb25zLCBhdHRyaWJ1
dGVGaWx0ZXIpOwogfQogCi1WZWN0b3I8UmVmUHRyPE11dGF0aW9uUmVjb3JkPiA+IE11dGF0aW9u
T2JzZXJ2ZXI6OnRha2VSZWNvcmRzKCkKK1ZlY3RvcjxSZWZQdHI8TXV0YXRpb25SZWNvcmQ+PiBN
dXRhdGlvbk9ic2VydmVyOjp0YWtlUmVjb3JkcygpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxNdXRh
dGlvblJlY29yZD4gPiByZWNvcmRzOworICAgIFZlY3RvcjxSZWZQdHI8TXV0YXRpb25SZWNvcmQ+
PiByZWNvcmRzOwogICAgIHJlY29yZHMuc3dhcChtX3JlY29yZHMpOwogICAgIHJldHVybiByZWNv
cmRzOwogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6b2JzZXJ2
YXRpb25FbmRlZChNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKiByZWdpc3RyYXRpCiAgICAg
bV9yZWdpc3RyYXRpb25zLnJlbW92ZShyZWdpc3RyYXRpb24pOwogfQogCi10eXBlZGVmIEhhc2hT
ZXQ8UmVmUHRyPE11dGF0aW9uT2JzZXJ2ZXI+ID4gTXV0YXRpb25PYnNlcnZlclNldDsKK3R5cGVk
ZWYgSGFzaFNldDxSZWZQdHI8TXV0YXRpb25PYnNlcnZlcj4+IE11dGF0aW9uT2JzZXJ2ZXJTZXQ7
CiAKIHN0YXRpYyBNdXRhdGlvbk9ic2VydmVyU2V0JiBhY3RpdmVNdXRhdGlvbk9ic2VydmVycygp
CiB7CkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyKCkK
ICAgICBpZiAobV9yZWNvcmRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVj
dG9yPFJlZlB0cjxNdXRhdGlvblJlY29yZD4gPiByZWNvcmRzOworICAgIFZlY3RvcjxSZWZQdHI8
TXV0YXRpb25SZWNvcmQ+PiByZWNvcmRzOwogICAgIHJlY29yZHMuc3dhcChtX3JlY29yZHMpOwog
CiAgICAgbV9jYWxsYmFjay0+Y2FsbChyZWNvcmRzLCB0aGlzKTsKQEAgLTIwOSw3ICsyMDksNyBA
QCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRhdGlvbnMoKQogICAgIGRlbGl2
ZXJ5SW5Qcm9ncmVzcyA9IHRydWU7CiAKICAgICBpZiAoIXN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2
ZXJzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8TXV0YXRpb25PYnNlcnZl
cj4gPiBzdXNwZW5kZWQ7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8TXV0YXRpb25PYnNlcnZlcj4+
IHN1c3BlbmRlZDsKICAgICAgICAgY29weVRvVmVjdG9yKHN1c3BlbmRlZE11dGF0aW9uT2JzZXJ2
ZXJzKCksIHN1c3BlbmRlZCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3VzcGVu
ZGVkLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoIXN1c3BlbmRlZFtpXS0+Y2FuRGVs
aXZlcigpKQpAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZl
ckFsbE11dGF0aW9ucygpCiAgICAgfQogCiAgICAgd2hpbGUgKCFhY3RpdmVNdXRhdGlvbk9ic2Vy
dmVycygpLmlzRW1wdHkoKSkgewotICAgICAgICBWZWN0b3I8UmVmUHRyPE11dGF0aW9uT2JzZXJ2
ZXI+ID4gb2JzZXJ2ZXJzOworICAgICAgICBWZWN0b3I8UmVmUHRyPE11dGF0aW9uT2JzZXJ2ZXI+
PiBvYnNlcnZlcnM7CiAgICAgICAgIGNvcHlUb1ZlY3RvcihhY3RpdmVNdXRhdGlvbk9ic2VydmVy
cygpLCBvYnNlcnZlcnMpOwogICAgICAgICBhY3RpdmVNdXRhdGlvbk9ic2VydmVycygpLmNsZWFy
KCk7CiAgICAgICAgIHN0ZDo6c29ydChvYnNlcnZlcnMuYmVnaW4oKSwgb2JzZXJ2ZXJzLmVuZCgp
LCBbXShjb25zdCBSZWZQdHI8TXV0YXRpb25PYnNlcnZlcj4mIGxocywgY29uc3QgUmVmUHRyPE11
dGF0aW9uT2JzZXJ2ZXI+JiByaHMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
dXRhdGlvbk9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5o
CmluZGV4IDZkMzEyNzdiYzMzYWYwMTNlM2E2MjdlYzM4MGZlMjc4MTMyNGJmNGQuLmQzNTI5NGE5
Mjk1OGIyMzk0YmQ4MmM3NTA3YWU5NWU4ZDk3YjM0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0
aW9uT2JzZXJ2ZXIuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgfk11dGF0aW9uT2Jz
ZXJ2ZXIoKTsKIAogICAgIHZvaWQgb2JzZXJ2ZShOb2RlKiwgY29uc3QgRGljdGlvbmFyeSYsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICBWZWN0b3I8UmVmUHRyPE11dGF0aW9uUmVjb3JkPiA+IHRha2VS
ZWNvcmRzKCk7CisgICAgVmVjdG9yPFJlZlB0cjxNdXRhdGlvblJlY29yZD4+IHRha2VSZWNvcmRz
KCk7CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAgICAgdm9pZCBvYnNlcnZhdGlvblN0YXJ0ZWQo
TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbiopOwogICAgIHZvaWQgb2JzZXJ2YXRpb25FbmRl
ZChNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uKik7CkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIGJvb2wgdmFsaWRhdGVPcHRpb25zKE11dGF0aW9uT2JzZXJ2ZXJPcHRp
b25zKTsKIAogICAgIFJlZlB0cjxNdXRhdGlvbkNhbGxiYWNrPiBtX2NhbGxiYWNrOwotICAgIFZl
Y3RvcjxSZWZQdHI8TXV0YXRpb25SZWNvcmQ+ID4gbV9yZWNvcmRzOworICAgIFZlY3RvcjxSZWZQ
dHI8TXV0YXRpb25SZWNvcmQ+PiBtX3JlY29yZHM7CiAgICAgSGFzaFNldDxNdXRhdGlvbk9ic2Vy
dmVyUmVnaXN0cmF0aW9uKj4gbV9yZWdpc3RyYXRpb25zOwogICAgIHVuc2lnbmVkIG1fcHJpb3Jp
dHk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyUmVnaXN0
cmF0aW9uLmgKaW5kZXggNWExNGE1OTU5ZTRlNjQyOTkwMjI1NGU2M2IzNTg0Zjc1ZmQ5NDNjNy4u
NWFmNmMzNTdlYThhNGI1OTVmYjYzMDlkZjk5ZWI4MWQ3ZWYzOWUxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbi5oCkBAIC02Niw3ICs2
Niw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE11dGF0aW9uT2JzZXJ2ZXI+IG1fb2JzZXJ2ZXI7
CiAgICAgTm9kZSogbV9yZWdpc3RyYXRpb25Ob2RlOwogICAgIFJlZlB0cjxOb2RlPiBtX3JlZ2lz
dHJhdGlvbk5vZGVLZWVwQWxpdmU7Ci0gICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxOb2RlPiA+
IE5vZGVIYXNoU2V0OworICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8Tm9kZT4+IE5vZGVIYXNo
U2V0OwogICAgIE93blB0cjxOb2RlSGFzaFNldD4gbV90cmFuc2llbnRSZWdpc3RyYXRpb25Ob2Rl
czsKIAogICAgIE11dGF0aW9uT2JzZXJ2ZXJPcHRpb25zIG1fb3B0aW9uczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAppbmRleCBmOWMwNzNkZTcyYzM1MWY5NmRl
OTk1NzNiOWI3NzQ1YTY4M2ZhZDZkLi4yODliOWE4NzU1Mzk2MWRmMjY1OWU0YjVmNjhjNDk3ZTU1
MzM0NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCkBA
IC00NSw5ICs0NSw5IEBAIE5hbWVkRmxvd0NvbGxlY3Rpb246Ok5hbWVkRmxvd0NvbGxlY3Rpb24o
RG9jdW1lbnQqIGRvY3VtZW50KQogewogfQogCi1WZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxv
dz4gPiBOYW1lZEZsb3dDb2xsZWN0aW9uOjpuYW1lZEZsb3dzKCkKK1ZlY3RvcjxSZWZQdHI8V2Vi
S2l0TmFtZWRGbG93Pj4gTmFtZWRGbG93Q29sbGVjdGlvbjo6bmFtZWRGbG93cygpCiB7Ci0gICAg
VmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+ID4gbmFtZWRGbG93czsKKyAgICBWZWN0b3I8
UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4+IG5hbWVkRmxvd3M7CiAKICAgICBmb3IgKE5hbWVkRmxv
d1NldDo6aXRlcmF0b3IgaXQgPSBtX25hbWVkRmxvd3MuYmVnaW4oKTsgaXQgIT0gbV9uYW1lZEZs
b3dzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIGlmICgoKml0KS0+Zmxvd1N0YXRlKCkgPT0gV2Vi
S2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dD
b2xsZWN0aW9uLmgKaW5kZXggYjAyNDA0Y2NiNGY3ZjUyNjBjODFkMDU0MzlkNzZjMWMwMDgwMGQx
Yy4uMGJiMDY0OTFiMzQwMzQ1YzcyZTk0NTczODg2NjA5ZDVhNWM5YjY2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIE5h
bWVkRmxvd0NvbGxlY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxOYW1lZEZsb3dDb2xsZWN0aW9u
PiwgcHVibGljIENvbnRlCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TmFtZWRGbG93
Q29sbGVjdGlvbj4gY3JlYXRlKERvY3VtZW50KiBkb2MpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBO
YW1lZEZsb3dDb2xsZWN0aW9uKGRvYykpOyB9CiAKLSAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5h
bWVkRmxvdz4gPiBuYW1lZEZsb3dzKCk7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZs
b3c+PiBuYW1lZEZsb3dzKCk7CiAgICAgV2ViS2l0TmFtZWRGbG93KiBmbG93QnlOYW1lKGNvbnN0
IFN0cmluZyYpOwogICAgIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBlbnN1cmVGbG93V2l0
aE5hbWUoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBmZjNiMzkyNTdiOTcy
MDUyN2MwZTg3ZmQyOTQ2NWVlYjExMGIxZWJmLi41MGM4MjM3MjUyZWU3MWZiNTc3YWM1MmE2OTdh
YmFhNjRhNjIwYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xODIwLDcgKzE4MjAsNyBAQCB2b2lk
IE5vZGU6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGlmIChWZWN0b3I8T3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyYXRpb24+ID4qIHJlZ2lzdHJ5ID0gbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkpIHsKKyAg
ICBpZiAoVmVjdG9yPE93blB0cjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPj4qIHJlZ2lz
dHJ5ID0gbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkpIHsKICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCByZWdpc3RyeS0+c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGRvY3VtZW50
KCkuYWRkTXV0YXRpb25PYnNlcnZlclR5cGVzKHJlZ2lzdHJ5LT5hdChpKS0+bXV0YXRpb25UeXBl
cygpKTsKICAgICAgICAgfQpAQCAtMTg3Miw3ICsxODcyLDcgQEAgYm9vbCBOb2RlOjpyZW1vdmVF
dmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVy
KiBsaXMKICAgICByZXR1cm4gdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLCBldmVudFR5cGUs
IGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKIH0KIAotdHlwZWRlZiBIYXNoTWFwPE5vZGUqLCBPd25Q
dHI8RXZlbnRUYXJnZXREYXRhPiA+IEV2ZW50VGFyZ2V0RGF0YU1hcDsKK3R5cGVkZWYgSGFzaE1h
cDxOb2RlKiwgT3duUHRyPEV2ZW50VGFyZ2V0RGF0YT4+IEV2ZW50VGFyZ2V0RGF0YU1hcDsKIAog
c3RhdGljIEV2ZW50VGFyZ2V0RGF0YU1hcCYgZXZlbnRUYXJnZXREYXRhTWFwKCkKIHsKQEAgLTE5
MDAsNyArMTkwMCw3IEBAIHZvaWQgTm9kZTo6Y2xlYXJFdmVudFRhcmdldERhdGEoKQogICAgIGV2
ZW50VGFyZ2V0RGF0YU1hcCgpLnJlbW92ZSh0aGlzKTsKIH0KIAotVmVjdG9yPE93blB0cjxNdXRh
dGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPiA+KiBOb2RlOjptdXRhdGlvbk9ic2VydmVyUmVnaXN0
cnkoKQorVmVjdG9yPE93blB0cjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPj4qIE5vZGU6
Om11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpCiB7CiAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQog
ICAgICAgICByZXR1cm4gMDsKQEAgLTE5NTAsNyArMTk1MCw3IEBAIHZvaWQgTm9kZTo6Z2V0UmVn
aXN0ZXJlZE11dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKEhhc2hNYXA8TXV0YXRpb25PYnNlcnZlcios
IE11dGF0CiB2b2lkIE5vZGU6OnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9ic2Vy
dmVyKiBvYnNlcnZlciwgTXV0YXRpb25PYnNlcnZlck9wdGlvbnMgb3B0aW9ucywgY29uc3QgSGFz
aFNldDxBdG9taWNTdHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIpCiB7CiAgICAgTXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uID0gMDsKLSAgICBWZWN0b3I8T3duUHRyPE11
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+ID4mIHJlZ2lzdHJ5ID0gZW5zdXJlUmFyZURhdGEo
KS5lbnN1cmVNdXRhdGlvbk9ic2VydmVyRGF0YSgpLnJlZ2lzdHJ5OworICAgIFZlY3RvcjxPd25Q
dHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4+JiByZWdpc3RyeSA9IGVuc3VyZVJhcmVE
YXRhKCkuZW5zdXJlTXV0YXRpb25PYnNlcnZlckRhdGEoKS5yZWdpc3RyeTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHJlZ2lzdHJ5LnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChyZWdp
c3RyeVtpXS0+b2JzZXJ2ZXIoKSA9PSBvYnNlcnZlcikgewogICAgICAgICAgICAgcmVnaXN0cmF0
aW9uID0gcmVnaXN0cnlbaV0uZ2V0KCk7CkBAIC0xOTY4LDcgKzE5NjgsNyBAQCB2b2lkIE5vZGU6
OnJlZ2lzdGVyTXV0YXRpb25PYnNlcnZlcihNdXRhdGlvbk9ic2VydmVyKiBvYnNlcnZlciwgTXV0
YXRpb25PYnNlcnZlcgogCiB2b2lkIE5vZGU6OnVucmVnaXN0ZXJNdXRhdGlvbk9ic2VydmVyKE11
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24qIHJlZ2lzdHJhdGlvbikKIHsKLSAgICBWZWN0b3I8
T3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+ID4qIHJlZ2lzdHJ5ID0gbXV0YXRp
b25PYnNlcnZlclJlZ2lzdHJ5KCk7CisgICAgVmVjdG9yPE93blB0cjxNdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uPj4qIHJlZ2lzdHJ5ID0gbXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCk7CiAg
ICAgQVNTRVJUKHJlZ2lzdHJ5KTsKICAgICBpZiAoIXJlZ2lzdHJ5KQogICAgICAgICByZXR1cm47
CkBAIC0yMDAzLDcgKzIwMDMsNyBAQCB2b2lkIE5vZGU6Om5vdGlmeU11dGF0aW9uT2JzZXJ2ZXJz
Tm9kZVdpbGxEZXRhY2goKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKE5vZGUqIG5vZGUg
PSBwYXJlbnROb2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAg
ICAgaWYgKFZlY3RvcjxPd25QdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4gPiogcmVn
aXN0cnkgPSBub2RlLT5tdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSkgeworICAgICAgICBpZiAo
VmVjdG9yPE93blB0cjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPj4qIHJlZ2lzdHJ5ID0g
bm9kZS0+bXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkpIHsKICAgICAgICAgICAgIGNvbnN0IHNp
emVfdCBzaXplID0gcmVnaXN0cnktPnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LT5hdChpKS0+b2Jz
ZXJ2ZWRTdWJ0cmVlTm9kZVdpbGxEZXRhY2godGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBhYTVmZDA3
YzNiNzU3OThjMjc2YTk3OTUzMWRhMTczNjU1NzdhYzYyLi5kYWEwZDliNWM3YzU3NjI3YzBkZTQz
ODk4OWZiNzg2NWRiMjY5ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTY3Miw3ICs2NzIsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCB0cmFja0ZvckRlYnVnZ2luZygpOwogCi0gICAgVmVjdG9yPE93blB0
cjxNdXRhdGlvbk9ic2VydmVyUmVnaXN0cmF0aW9uPiA+KiBtdXRhdGlvbk9ic2VydmVyUmVnaXN0
cnkoKTsKKyAgICBWZWN0b3I8T3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+Piog
bXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCk7CiAgICAgSGFzaFNldDxNdXRhdGlvbk9ic2VydmVy
UmVnaXN0cmF0aW9uKj4qIHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpOwogCiAg
ICAgbXV0YWJsZSB1aW50MzJfdCBtX25vZGVGbGFnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEu
aAppbmRleCAyNTllZWZlNDI5ZWY1MWZiMTE4NGIzOWEwMmQ4NTFhMDJmNjExMzAzLi5hZmM3NmZl
N2ZmMTEwZDg0NjExMjg3ZGQ5NzNiNzcyOWZjMjczMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJl
RGF0YS5oCkBAIC04Miw4ICs4Miw4IEBAIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBEZWZhdWx0SGFzaDxTdHJpbmdUeXBl
Pjo6SGFzaDo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQ7CiAgICAgfTsKIAotICAgIHR5
cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQgY2hhciwgQXRvbWljU3RyaW5nPiwgTGl2
ZU5vZGVMaXN0QmFzZSosIE5vZGVMaXN0Q2FjaGVNYXBFbnRyeUhhc2g8QXRvbWljU3RyaW5nPiA+
IE5vZGVMaXN0QXRvbWljTmFtZUNhY2hlTWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBh
aXI8dW5zaWduZWQgY2hhciwgU3RyaW5nPiwgTGl2ZU5vZGVMaXN0QmFzZSosIE5vZGVMaXN0Q2Fj
aGVNYXBFbnRyeUhhc2g8U3RyaW5nPiA+IE5vZGVMaXN0TmFtZUNhY2hlTWFwOworICAgIHR5cGVk
ZWYgSGFzaE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQgY2hhciwgQXRvbWljU3RyaW5nPiwgTGl2ZU5v
ZGVMaXN0QmFzZSosIE5vZGVMaXN0Q2FjaGVNYXBFbnRyeUhhc2g8QXRvbWljU3RyaW5nPj4gTm9k
ZUxpc3RBdG9taWNOYW1lQ2FjaGVNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjx1
bnNpZ25lZCBjaGFyLCBTdHJpbmc+LCBMaXZlTm9kZUxpc3RCYXNlKiwgTm9kZUxpc3RDYWNoZU1h
cEVudHJ5SGFzaDxTdHJpbmc+PiBOb2RlTGlzdE5hbWVDYWNoZU1hcDsKICAgICB0eXBlZGVmIEhh
c2hNYXA8UXVhbGlmaWVkTmFtZSwgVGFnTm9kZUxpc3QqPiBUYWdOb2RlTGlzdENhY2hlTlM7CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMjM5LDcgKzIzOSw3IEBAIHByaXZhdGU6CiBj
bGFzcyBOb2RlTXV0YXRpb25PYnNlcnZlckRhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KE5vZGVNdXRhdGlvbk9ic2VydmVyRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgotICAgIFZlY3RvcjxPd25QdHI8TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJhdGlvbj4gPiBy
ZWdpc3RyeTsKKyAgICBWZWN0b3I8T3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24+
PiByZWdpc3RyeTsKICAgICBIYXNoU2V0PE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyYXRpb24qPiB0
cmFuc2llbnRSZWdpc3RyeTsKIAogICAgIHN0YXRpYyBQYXNzT3duUHRyPE5vZGVNdXRhdGlvbk9i
c2VydmVyRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IE5vZGVNdXRhdGlvbk9i
c2VydmVyRGF0YSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IDU5YTA2NjIxNzdkMTgwNjRkMjcx
ZjkzYmIzZjk5Y2FjN2E1ZGM0NzkuLjZhZWY3ZWFlZWM2OGEyMTc5ZDU5NDY2OWU3M2MxODljOGM0
YjcwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtNjcwLDcgKzY3MCw3IEBAIHN0YXRpYyBpbmxp
bmUgdW5zaWduZWQgbGVuZ3RoT2ZDb250ZW50c0luTm9kZShOb2RlKiBub2RlKQogCiBQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IFJhbmdlOjpwcm9jZXNzQ29udGVudHMoQWN0aW9uVHlwZSBh
Y3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxO
b2RlPiA+IE5vZGVWZWN0b3I7CisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE5vZGU+PiBOb2Rl
VmVjdG9yOwogCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50OwogICAgIGlm
IChhY3Rpb24gPT0gRXh0cmFjdCB8fCBhY3Rpb24gPT0gQ2xvbmUpCkBAIC04NTEsNyArODUxLDcg
QEAgUGFzc1JlZlB0cjxOb2RlPiBSYW5nZTo6cHJvY2Vzc0NvbnRlbnRzQmV0d2Vlbk9mZnNldHMo
QWN0aW9uVHlwZSBhY3Rpb24sIFBhc3NSZWYKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsK
IH0KIAotdm9pZCBSYW5nZTo6cHJvY2Vzc05vZGVzKEFjdGlvblR5cGUgYWN0aW9uLCBWZWN0b3I8
UmVmUHRyPE5vZGU+ID4mIG5vZGVzLCBQYXNzUmVmUHRyPE5vZGU+IG9sZENvbnRhaW5lciwgUGFz
c1JlZlB0cjxOb2RlPiBuZXdDb250YWluZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBSYW5n
ZTo6cHJvY2Vzc05vZGVzKEFjdGlvblR5cGUgYWN0aW9uLCBWZWN0b3I8UmVmUHRyPE5vZGU+PiYg
bm9kZXMsIFBhc3NSZWZQdHI8Tm9kZT4gb2xkQ29udGFpbmVyLCBQYXNzUmVmUHRyPE5vZGU+IG5l
d0NvbnRhaW5lciwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG5vZGVzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CkBA
IC04NzAsMTUgKzg3MCwxNSBAQCB2b2lkIFJhbmdlOjpwcm9jZXNzTm9kZXMoQWN0aW9uVHlwZSBh
Y3Rpb24sIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgbm9kZXMsIFBhc3NSZQogCiBQYXNzUmVmUHRy
PE5vZGU+IFJhbmdlOjpwcm9jZXNzQW5jZXN0b3JzQW5kVGhlaXJTaWJsaW5ncyhBY3Rpb25UeXBl
IGFjdGlvbiwgTm9kZSogY29udGFpbmVyLCBDb250ZW50c1Byb2Nlc3NEaXJlY3Rpb24gZGlyZWN0
aW9uLCBQYXNzUmVmUHRyPE5vZGU+IHBhc3NlZENsb25lZENvbnRhaW5lciwgTm9kZSogY29tbW9u
Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE5v
ZGU+ID4gTm9kZVZlY3RvcjsKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IE5vZGVW
ZWN0b3I7CiAKICAgICBSZWZQdHI8Tm9kZT4gY2xvbmVkQ29udGFpbmVyID0gcGFzc2VkQ2xvbmVk
Q29udGFpbmVyOwotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBhbmNlc3RvcnM7CisgICAgVmVj
dG9yPFJlZlB0cjxOb2RlPj4gYW5jZXN0b3JzOwogICAgIGZvciAoQ29udGFpbmVyTm9kZSogbiA9
IGNvbnRhaW5lci0+cGFyZW50Tm9kZSgpOyBuICYmIG4gIT0gY29tbW9uUm9vdDsgbiA9IG4tPnBh
cmVudE5vZGUoKSkKICAgICAgICAgYW5jZXN0b3JzLmFwcGVuZChuKTsKIAogICAgIFJlZlB0cjxO
b2RlPiBmaXJzdENoaWxkSW5BbmNlc3RvclRvUHJvY2VzcyA9IGRpcmVjdGlvbiA9PSBQcm9jZXNz
Q29udGVudHNGb3J3YXJkID8gY29udGFpbmVyLT5uZXh0U2libGluZygpIDogY29udGFpbmVyLT5w
cmV2aW91c1NpYmxpbmcoKTsKLSAgICBmb3IgKFZlY3RvcjxSZWZQdHI8Tm9kZT4gPjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBhbmNlc3RvcnMuYmVnaW4oKTsgaXQgIT0gYW5jZXN0b3JzLmVuZCgpOyAr
K2l0KSB7CisgICAgZm9yIChWZWN0b3I8UmVmUHRyPE5vZGU+Pjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBhbmNlc3RvcnMuYmVnaW4oKTsgaXQgIT0gYW5jZXN0b3JzLmVuZCgpOyArK2l0KSB7CiAgICAg
ICAgIFJlZlB0cjxOb2RlPiBhbmNlc3RvciA9ICppdDsKICAgICAgICAgaWYgKGFjdGlvbiA9PSBF
eHRyYWN0IHx8IGFjdGlvbiA9PSBDbG9uZSkgewogICAgICAgICAgICAgaWYgKFJlZlB0cjxOb2Rl
PiBjbG9uZWRBbmNlc3RvciA9IGFuY2VzdG9yLT5jbG9uZU5vZGUoZmFsc2UpKSB7IC8vIE1pZ2h0
IGhhdmUgYmVlbiByZW1vdmVkIGFscmVhZHkgZHVyaW5nIG11dGF0aW9uIGV2ZW50LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuaAppbmRleCA1ZDdiZjMxOTA2NmMxYzVjM2JhOGE5NzQ4NmJhZTYzYTQzMTU0ZmQzLi44Yjc3
OGZhNDk0NjAxNGUzZGMzNDg1ZWQ4N2ZhZDdmZjM4YTVlMzNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuaApAQCAt
MTY1LDcgKzE2NSw3IEBAIHByaXZhdGU6CiAgICAgZW51bSBBY3Rpb25UeXBlIHsgRGVsZXRlLCBF
eHRyYWN0LCBDbG9uZSB9OwogICAgIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gcHJvY2Vz
c0NvbnRlbnRzKEFjdGlvblR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxOb2RlPiBwcm9jZXNzQ29udGVudHNCZXR3ZWVuT2Zmc2V0cyhBY3Rpb25UeXBlLCBQYXNz
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+LCBOb2RlKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHN0YXRpYyB2b2lkIHByb2Nl
c3NOb2RlcyhBY3Rpb25UeXBlLCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mLCBQYXNzUmVmUHRyPE5v
ZGU+IG9sZENvbnRhaW5lciwgUGFzc1JlZlB0cjxOb2RlPiBuZXdDb250YWluZXIsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzTm9kZXMoQWN0aW9uVHlwZSwgVmVjdG9y
PFJlZlB0cjxOb2RlPj4mLCBQYXNzUmVmUHRyPE5vZGU+IG9sZENvbnRhaW5lciwgUGFzc1JlZlB0
cjxOb2RlPiBuZXdDb250YWluZXIsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBlbnVtIENvbnRlbnRz
UHJvY2Vzc0RpcmVjdGlvbiB7IFByb2Nlc3NDb250ZW50c0ZvcndhcmQsIFByb2Nlc3NDb250ZW50
c0JhY2t3YXJkIH07CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm9kZT4gcHJvY2Vzc0FuY2VzdG9y
c0FuZFRoZWlyU2libGluZ3MoQWN0aW9uVHlwZSwgTm9kZSogY29udGFpbmVyLCBDb250ZW50c1By
b2Nlc3NEaXJlY3Rpb24sIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVkQ29udGFpbmVyLCBOb2RlKiBj
b21tb25Sb290LCBFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY29wZWRFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NvcGVkRXZlbnRR
dWV1ZS5oCmluZGV4IDAyMTIzOGJmZTFiYWUyODU0MTI1N2FkYTIyNmEyMTU5ODkxZGYwNzguLmVl
NjNlOWMzMDdiOWFkNWFhMGIzZGMwZDE2NjU0ZWUyZTViMjliNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY29wZWRFdmVudFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1Njb3BlZEV2ZW50UXVldWUuaApAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyB2b2lkIGluaXRpYWxpemUoKTsKICAgICB2b2lkIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxF
dmVudD4pIGNvbnN0OwogCi0gICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX3F1ZXVlZEV2ZW50
czsKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50Pj4gbV9xdWV1ZWRFdmVudHM7CiAgICAgdW5zaWdu
ZWQgbV9zY29waW5nTGV2ZWw7CiAKICAgICBzdGF0aWMgU2NvcGVkRXZlbnRRdWV1ZSogc19pbnN0
YW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApp
bmRleCBmNzQ4YWM5ZTBmOTUwNGI5OTMxZTcyYTllNTllZTU3MzIxYThkNDZiLi5jOTAyMGZlYWU2
NDBjYmJlNTNlNTBhY2JhMjc1NDQyNmVjNTFkM2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpyZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW4KIHsKICAgICBpZiAobV9pbkRpc3BhdGNoRXJyb3JFdmVudCkgewogICAg
ICAgICBpZiAoIW1fcGVuZGluZ0V4Y2VwdGlvbnMpCi0gICAgICAgICAgICBtX3BlbmRpbmdFeGNl
cHRpb25zID0gYWRvcHRQdHIobmV3IFZlY3RvcjxPd25QdHI8UGVuZGluZ0V4Y2VwdGlvbj4gPigp
KTsKKyAgICAgICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlvbnMgPSBhZG9wdFB0cihuZXcgVmVjdG9y
PE93blB0cjxQZW5kaW5nRXhjZXB0aW9uPj4oKSk7CiAgICAgICAgIG1fcGVuZGluZ0V4Y2VwdGlv
bnMtPmFwcGVuZChhZG9wdFB0cihuZXcgUGVuZGluZ0V4Y2VwdGlvbihlcnJvck1lc3NhZ2UsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMLCBjYWxsU3RhY2spKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaAppbmRleCA4NzQ4Njg4MmI5ZWM3MjNkY2VlMGMwYTFlYWY4YTk0OGJiNjBjMmQ4Li44N2Iy
N2RkY2VjNDg0YzUzY2VhNmU3MTA2ZjMyYWVjZDcyYzU5NjYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTE5OSw3ICsxOTksNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBtX2luRGlzcGF0Y2hFcnJvckV2ZW50OwogICAgIGNsYXNzIFBlbmRpbmdF
eGNlcHRpb247Ci0gICAgT3duUHRyPFZlY3RvcjxPd25QdHI8UGVuZGluZ0V4Y2VwdGlvbj4gPiA+
IG1fcGVuZGluZ0V4Y2VwdGlvbnM7CisgICAgT3duUHRyPFZlY3RvcjxPd25QdHI8UGVuZGluZ0V4
Y2VwdGlvbj4+PiBtX3BlbmRpbmdFeGNlcHRpb25zOwogCiAgICAgYm9vbCBtX2FjdGl2ZURPTU9i
amVjdHNBcmVTdXNwZW5kZWQ7CiAgICAgQWN0aXZlRE9NT2JqZWN0OjpSZWFzb25Gb3JTdXNwZW5z
aW9uIG1fcmVhc29uRm9yU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgKaW5kZXggNGU2YTEwNTJk
ZTliMzgwODNjYmRiNGI5OTE5ZDg5ZmU3NDkwZjRlOC4uYzJlM2Q3MmJmNmQ5NTQyMTA1YTliOTY3
MjE2Y2MxZDI1MzAxMzdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcihEb2N1bWVudCosIFBsYXRmb3JtRGlzcGxh
eUlEKTsKIAotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxSZXF1ZXN0QW5pbWF0aW9uRnJhbWVD
YWxsYmFjaz4gPiBDYWxsYmFja0xpc3Q7CisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPFJlcXVl
c3RBbmltYXRpb25GcmFtZUNhbGxiYWNrPj4gQ2FsbGJhY2tMaXN0OwogICAgIENhbGxiYWNrTGlz
dCBtX2NhbGxiYWNrczsKIAogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCBmYTNmN2I2YjliOThhMzUz
NDBiY2UzY2Y0M2UwODlkYzFmMmQ2ODg2Li44YzYzOTI1OTM1MGI4OTEwYzM0OTg1MDNlNjAyMDdh
Zjg0NmU0NjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmNwcApAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5UmVs
YXRpdmVGb250U3R5bGVDaGFuZ2UoRWRpdGluZ1N0eWxlKiBzdHlsZSkKICAgICAgICAgc3RhcnRp
bmdGb250U2l6ZXMuc2V0KG5vZGUsIGNvbXB1dGVkRm9udFNpemUobm9kZSkpOwogCiAgICAgLy8g
VGhlc2Ugc3BhbnMgd2VyZSBhZGRlZCBieSB1cy4gSWYgZW1wdHkgYWZ0ZXIgZm9udCBzaXplIGNo
YW5nZXMsIHRoZXkgY2FuIGJlIHJlbW92ZWQuCi0gICAgVmVjdG9yPFJlZlB0cjxIVE1MRWxlbWVu
dD4gPiB1bnN0eWxlZFNwYW5zOworICAgIFZlY3RvcjxSZWZQdHI8SFRNTEVsZW1lbnQ+PiB1bnN0
eWxlZFNwYW5zOwogICAgIAogICAgIE5vZGUqIGxhc3RTdHlsZWROb2RlID0gMDsKICAgICBmb3Ig
KE5vZGUqIG5vZGUgPSBzdGFydE5vZGU7IG5vZGUgIT0gYmV5b25kRW5kOyBub2RlID0gTm9kZVRy
YXZlcnNhbDo6bmV4dChub2RlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9CcmVha0Jsb2NrcXVvdGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJl
YWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAKaW5kZXggN2I4YTZjNjBmNGI4ZmNkZGIzZTE5NTRkNjMw
ZDM2ZTU2YTM3MjI2MC4uNDg0YmFlMzAzOWZjZGQyNWUwZmYyNjg4MDg1MDdjNTk0MDhlMjg4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9CcmVha0Jsb2NrcXVvdGVDb21tYW5k
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQu
Y3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBCcmVha0Jsb2NrcXVvdGVDb21tYW5kOjpkb0Fw
cGx5KCkKICAgICB9CiAgICAgCiAgICAgLy8gQnVpbGQgdXAgbGlzdCBvZiBhbmNlc3RvcnMgaW4g
YmV0d2VlbiB0aGUgc3RhcnQgbm9kZSBhbmQgdGhlIHRvcCBibG9ja3F1b3RlLgotICAgIFZlY3Rv
cjxSZWZQdHI8RWxlbWVudD4gPiBhbmNlc3RvcnM7ICAgIAorICAgIFZlY3RvcjxSZWZQdHI8RWxl
bWVudD4+IGFuY2VzdG9yczsgICAgCiAgICAgZm9yIChFbGVtZW50KiBub2RlID0gc3RhcnROb2Rl
LT5wYXJlbnRFbGVtZW50KCk7IG5vZGUgJiYgbm9kZSAhPSB0b3BCbG9ja3F1b3RlOyBub2RlID0g
bm9kZS0+cGFyZW50RWxlbWVudCgpKQogICAgICAgICBhbmNlc3RvcnMuYXBwZW5kKG5vZGUpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cAppbmRleCAzMzkwNmQyN2E1ZjZhYzRhOTE4NGI5OTRiYWM5NDEzMjRmN2E4YWQ3Li4yNmFiMjRk
NzYwMjgxODMwZmZlNWQ1OWMwYjQ3MDQyNDA4MGJjMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtMzg1LDcgKzM4NSw3IEBAIHZv
aWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGVuZE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBub2Rl
LCBQYXNzUmVmUHRyPENvbnRhaW5lCiAKIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlbW92
ZUNoaWxkcmVuSW5SYW5nZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIHVuc2lnbmVkIGZyb20sIHVu
c2lnbmVkIHRvKQogewotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBjaGlsZHJlbjsKKyAgICBW
ZWN0b3I8UmVmUHRyPE5vZGU+PiBjaGlsZHJlbjsKICAgICBOb2RlKiBjaGlsZCA9IG5vZGUtPmNo
aWxkTm9kZShmcm9tKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBmcm9tOyBjaGlsZCAmJiBpIDwg
dG87IGkrKywgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgY2hpbGRyZW4u
YXBwZW5kKGNoaWxkKTsKQEAgLTgxNiw3ICs4MTYsNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjpkZWxldGVJbnNpZ25pZmljYW50VGV4dChjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0
CiAgICAgaWYgKGNvbXBhcmVQb3NpdGlvbnMoc3RhcnQsIGVuZCkgPj0gMCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgVmVjdG9yPFJlZlB0cjxUZXh0PiA+IG5vZGVzOworICAgIFZlY3RvcjxSZWZQ
dHI8VGV4dD4+IG5vZGVzOwogICAgIGZvciAoTm9kZSogbm9kZSA9IHN0YXJ0LmRlcHJlY2F0ZWRO
b2RlKCk7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUpKSB7CiAgICAgICAg
IGlmIChub2RlLT5pc1RleHROb2RlKCkpCiAgICAgICAgICAgICBub2Rlcy5hcHBlbmQodG9UZXh0
KG5vZGUpKTsKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpj
bG9uZVBhcmFncmFwaFVuZGVyTmV3RWxlbWVudChQb3NpdGlvbiYgc3RhcnQsIFBvc2l0aQogICAg
IH0KIAogICAgIGlmIChzdGFydC5kZXByZWNhdGVkTm9kZSgpICE9IG91dGVyTm9kZSAmJiBsYXN0
Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBh
bmNlc3RvcnM7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IGFuY2VzdG9yczsKICAgICAg
ICAgCiAgICAgICAgIC8vIEluc2VydCBlYWNoIG5vZGUgZnJvbSBpbm5lck5vZGUgdG8gb3V0ZXJO
b2RlIChleGNsdWRlZCkgaW4gYSBsaXN0LgogICAgICAgICBmb3IgKE5vZGUqIG4gPSBzdGFydC5k
ZXByZWNhdGVkTm9kZSgpOyBuICYmIG4gIT0gb3V0ZXJOb2RlOyBuID0gbi0+cGFyZW50Tm9kZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCmluZGV4
IDc4ZGNmNzMzNzNmZjNlN2FiZjIxOTY2NzBjMDkyYTQ5YzZlMmRkMTUuLmUyYTQ5OTJiNzBkNjdk
NThkNmY1ZTg2YjBlYjc2NjMxZDFjZTU0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBtX3N0YXJ0
aW5nU2VsZWN0aW9uOwogICAgIFZpc2libGVTZWxlY3Rpb24gbV9lbmRpbmdTZWxlY3Rpb247Ci0g
ICAgVmVjdG9yPFJlZlB0cjxTaW1wbGVFZGl0Q29tbWFuZD4gPiBtX2NvbW1hbmRzOworICAgIFZl
Y3RvcjxSZWZQdHI8U2ltcGxlRWRpdENvbW1hbmQ+PiBtX2NvbW1hbmRzOwogICAgIFJlZlB0cjxF
bGVtZW50PiBtX3N0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudDsKICAgICBSZWZQdHI8RWxlbWVu
dD4gbV9lbmRpbmdSb290RWRpdGFibGVFbGVtZW50OwogICAgIEVkaXRBY3Rpb24gbV9lZGl0QWN0
aW9uOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHByb3RlY3RlZDoKICAgICAKICAgICBQYXNzUmVmUHRy
PE5vZGU+IHNwbGl0VHJlZVRvTm9kZShOb2RlKiwgTm9kZSosIGJvb2wgc3BsaXRBbmNlc3RvciA9
IGZhbHNlKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8RWRpdENvbW1hbmQ+ID4gbV9jb21tYW5kczsK
KyAgICBWZWN0b3I8UmVmUHRyPEVkaXRDb21tYW5kPj4gbV9jb21tYW5kczsKIAogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgaXNDb21wb3NpdGVFZGl0Q29tbWFuZCgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcApp
bmRleCAxNzVkYzlkZGIyMGNmMWEyZWE5YTM1OTFhMmViMzc2MDk0ZjI2MWM3Li4wZThiN2RmNzI0
NWYyMjViMjE1NGMxYzYxMjc5ZTgxMmNiOTRhOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0aW5nU3R5bGUuY3BwCkBAIC03NTksOSArNzU5LDkgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmNv
bmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBF
ZGkKICAgICByZXR1cm4gY29uZmxpY3RpbmdQcm9wZXJ0aWVzICYmICFjb25mbGljdGluZ1Byb3Bl
cnRpZXMtPmlzRW1wdHkoKTsKIH0KIAotc3RhdGljIGNvbnN0IFZlY3RvcjxPd25QdHI8SFRNTEVs
ZW1lbnRFcXVpdmFsZW50PiA+JiBodG1sRWxlbWVudEVxdWl2YWxlbnRzKCkKK3N0YXRpYyBjb25z
dCBWZWN0b3I8T3duUHRyPEhUTUxFbGVtZW50RXF1aXZhbGVudD4+JiBodG1sRWxlbWVudEVxdWl2
YWxlbnRzKCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxPd25QdHI8SFRNTEVs
ZW1lbnRFcXVpdmFsZW50PiA+LCBIVE1MRWxlbWVudEVxdWl2YWxlbnRzLCAoKSk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8T3duUHRyPEhUTUxFbGVtZW50RXF1aXZhbGVudD4+LCBI
VE1MRWxlbWVudEVxdWl2YWxlbnRzLCAoKSk7CiAKICAgICBpZiAoIUhUTUxFbGVtZW50RXF1aXZh
bGVudHMuc2l6ZSgpKSB7CiAgICAgICAgIEhUTUxFbGVtZW50RXF1aXZhbGVudHMuYXBwZW5kKEhU
TUxFbGVtZW50RXF1aXZhbGVudDo6Y3JlYXRlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgQ1NTVmFs
dWVCb2xkLCBIVE1MTmFtZXM6OmJUYWcpKTsKQEAgLTc4NSw3ICs3ODUsNyBAQCBib29sIEVkaXRp
bmdTdHlsZTo6Y29uZmxpY3RzV2l0aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoSFRNTEVsZW1lbnQq
IGVsZW1lbnQsIEVkaQogICAgIGlmICghbV9tdXRhYmxlU3R5bGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGNvbnN0IFZlY3RvcjxPd25QdHI8SFRNTEVsZW1lbnRFcXVpdmFsZW50PiA+
JiBIVE1MRWxlbWVudEVxdWl2YWxlbnRzID0gaHRtbEVsZW1lbnRFcXVpdmFsZW50cygpOworICAg
IGNvbnN0IFZlY3RvcjxPd25QdHI8SFRNTEVsZW1lbnRFcXVpdmFsZW50Pj4mIEhUTUxFbGVtZW50
RXF1aXZhbGVudHMgPSBodG1sRWxlbWVudEVxdWl2YWxlbnRzKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBIVE1MRWxlbWVudEVxdWl2YWxlbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGNvbnN0IEhUTUxFbGVtZW50RXF1aXZhbGVudCogZXF1aXZhbGVudCA9IEhUTUxFbGVtZW50RXF1
aXZhbGVudHNbaV0uZ2V0KCk7CiAgICAgICAgIGlmIChlcXVpdmFsZW50LT5tYXRjaGVzKGVsZW1l
bnQpICYmIGVxdWl2YWxlbnQtPnByb3BlcnR5RXhpc3RzSW5TdHlsZShtX211dGFibGVTdHlsZS5n
ZXQoKSkKQEAgLTc5OCw5ICs3OTgsOSBAQCBib29sIEVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0
aEltcGxpY2l0U3R5bGVPZkVsZW1lbnQoSFRNTEVsZW1lbnQqIGVsZW1lbnQsIEVkaQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGNvbnN0IFZlY3RvcjxPd25QdHI8SFRNTEF0dHJpYnV0
ZUVxdWl2YWxlbnQ+ID4mIGh0bWxBdHRyaWJ1dGVFcXVpdmFsZW50cygpCitzdGF0aWMgY29uc3Qg
VmVjdG9yPE93blB0cjxIVE1MQXR0cmlidXRlRXF1aXZhbGVudD4+JiBodG1sQXR0cmlidXRlRXF1
aXZhbGVudHMoKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoVmVjdG9yPE93blB0cjxIVE1M
QXR0cmlidXRlRXF1aXZhbGVudD4gPiwgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnRzLCAoKSk7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChWZWN0b3I8T3duUHRyPEhUTUxBdHRyaWJ1dGVFcXVpdmFs
ZW50Pj4sIEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50cywgKCkpOwogCiAgICAgaWYgKCFIVE1MQXR0
cmlidXRlRXF1aXZhbGVudHMuc2l6ZSgpKSB7CiAgICAgICAgIC8vIGVsZW1lbnRJc1N0eWxlZFNw
YW5PckhUTUxFcXVpdmFsZW50IGRlcGVuZHMgb24gdGhlIGZhY3QgZWFjaCBIVE1MQXR0cml1dGVF
cXVpdmFsZW50IG1hdGNoZXMgZXhhY3RseSBvbmUgYXR0cmlidXRlCkBAIC04MjIsNyArODIyLDcg
QEAgYm9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbXBsaWNpdFN0eWxlT2ZBdHRyaWJ1
dGVzKEhUTUxFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghbV9tdXRhYmxlU3R5bGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IFZlY3RvcjxPd25QdHI8SFRNTEF0dHJpYnV0
ZUVxdWl2YWxlbnQ+ID4mIEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50cyA9IGh0bWxBdHRyaWJ1dGVF
cXVpdmFsZW50cygpOworICAgIGNvbnN0IFZlY3RvcjxPd25QdHI8SFRNTEF0dHJpYnV0ZUVxdWl2
YWxlbnQ+PiYgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnRzID0gaHRtbEF0dHJpYnV0ZUVxdWl2YWxl
bnRzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBIVE1MQXR0cmlidXRlRXF1aXZhbGVu
dHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50c1tp
XS0+bWF0Y2hlcyhlbGVtZW50KSAmJiBIVE1MQXR0cmlidXRlRXF1aXZhbGVudHNbaV0tPnByb3Bl
cnR5RXhpc3RzSW5TdHlsZShtX211dGFibGVTdHlsZS5nZXQoKSkKICAgICAgICAgICAgICYmICFI
VE1MQXR0cmlidXRlRXF1aXZhbGVudHNbaV0tPnZhbHVlSXNQcmVzZW50SW5TdHlsZShlbGVtZW50
LCBtX211dGFibGVTdHlsZS5nZXQoKSkpCkBAIC04NDEsNyArODQxLDcgQEAgYm9vbCBFZGl0aW5n
U3R5bGU6OmV4dHJhY3RDb25mbGljdGluZ0ltcGxpY2l0U3R5bGVPZkF0dHJpYnV0ZXMoSFRNTEVs
ZW1lbnQqIGVsZW0KICAgICBpZiAoIW1fbXV0YWJsZVN0eWxlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBjb25zdCBWZWN0b3I8T3duUHRyPEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50PiA+
JiBIVE1MQXR0cmlidXRlRXF1aXZhbGVudHMgPSBodG1sQXR0cmlidXRlRXF1aXZhbGVudHMoKTsK
KyAgICBjb25zdCBWZWN0b3I8T3duUHRyPEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50Pj4mIEhUTUxB
dHRyaWJ1dGVFcXVpdmFsZW50cyA9IGh0bWxBdHRyaWJ1dGVFcXVpdmFsZW50cygpOwogICAgIGJv
b2wgcmVtb3ZlZCA9IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgSFRNTEF0dHJp
YnV0ZUVxdWl2YWxlbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbnN0IEhUTUxBdHRyaWJ1
dGVFcXVpdmFsZW50KiBlcXVpdmFsZW50ID0gSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnRzW2ldLmdl
dCgpOwpAQCAtODc3LDcgKzg3Nyw3IEBAIGJvb2wgRWRpdGluZ1N0eWxlOjplbGVtZW50SXNTdHls
ZWRTcGFuT3JIVE1MRXF1aXZhbGVudChjb25zdCBIVE1MRWxlbWVudCogZWxlbWVuCiAgICAgaWYg
KGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzcGFuVGFnKSkKICAgICAgICAgZWxlbWVu
dElzU3Bhbk9yRWxlbWVudEVxdWl2YWxlbnQgPSB0cnVlOwogICAgIGVsc2UgewotICAgICAgICBj
b25zdCBWZWN0b3I8T3duUHRyPEhUTUxFbGVtZW50RXF1aXZhbGVudD4gPiYgSFRNTEVsZW1lbnRF
cXVpdmFsZW50cyA9IGh0bWxFbGVtZW50RXF1aXZhbGVudHMoKTsKKyAgICAgICAgY29uc3QgVmVj
dG9yPE93blB0cjxIVE1MRWxlbWVudEVxdWl2YWxlbnQ+PiYgSFRNTEVsZW1lbnRFcXVpdmFsZW50
cyA9IGh0bWxFbGVtZW50RXF1aXZhbGVudHMoKTsKICAgICAgICAgc2l6ZV90IGk7CiAgICAgICAg
IGZvciAoaSA9IDA7IGkgPCBIVE1MRWxlbWVudEVxdWl2YWxlbnRzLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgICAgICBpZiAoSFRNTEVsZW1lbnRFcXVpdmFsZW50c1tpXS0+bWF0Y2hlcyhlbGVtZW50
KSkgewpAQCAtODkxLDcgKzg5MSw3IEBAIGJvb2wgRWRpdGluZ1N0eWxlOjplbGVtZW50SXNTdHls
ZWRTcGFuT3JIVE1MRXF1aXZhbGVudChjb25zdCBIVE1MRWxlbWVudCogZWxlbWVuCiAgICAgICAg
IHJldHVybiBlbGVtZW50SXNTcGFuT3JFbGVtZW50RXF1aXZhbGVudDsgLy8gc3BhbiwgYiwgZXRj
Li4uIHdpdGhvdXQgYW55IGF0dHJpYnV0ZXMKIAogICAgIHVuc2lnbmVkIG1hdGNoZWRBdHRyaWJ1
dGVzID0gMDsKLSAgICBjb25zdCBWZWN0b3I8T3duUHRyPEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50
PiA+JiBIVE1MQXR0cmlidXRlRXF1aXZhbGVudHMgPSBodG1sQXR0cmlidXRlRXF1aXZhbGVudHMo
KTsKKyAgICBjb25zdCBWZWN0b3I8T3duUHRyPEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50Pj4mIEhU
TUxBdHRyaWJ1dGVFcXVpdmFsZW50cyA9IGh0bWxBdHRyaWJ1dGVFcXVpdmFsZW50cygpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnRzLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIGlmIChIVE1MQXR0cmlidXRlRXF1aXZhbGVudHNbaV0tPm1hdGNoZXMo
ZWxlbWVudCkgJiYgSFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnRzW2ldLT5hdHRyaWJ1dGVOYW1lKCkg
IT0gSFRNTE5hbWVzOjpkaXJBdHRyKQogICAgICAgICAgICAgbWF0Y2hlZEF0dHJpYnV0ZXMrKzsK
QEAgLTEwMTksMTMgKzEwMTksMTMgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlSW5saW5lQW5k
SW1wbGljaXRTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50LAogICAgIHN0eWxl
RnJvbVJ1bGVzLT5tX211dGFibGVTdHlsZSA9IGV4dHJhY3RFZGl0aW5nUHJvcGVydGllcyhzdHls
ZUZyb21SdWxlcy0+bV9tdXRhYmxlU3R5bGUuZ2V0KCksIHByb3BlcnRpZXNUb0luY2x1ZGUpOwog
ICAgIG1lcmdlU3R5bGUoc3R5bGVGcm9tUnVsZXMtPm1fbXV0YWJsZVN0eWxlLmdldCgpLCBtb2Rl
KTsKIAotICAgIGNvbnN0IFZlY3RvcjxPd25QdHI8SFRNTEVsZW1lbnRFcXVpdmFsZW50PiA+JiBl
bGVtZW50RXF1aXZhbGVudHMgPSBodG1sRWxlbWVudEVxdWl2YWxlbnRzKCk7CisgICAgY29uc3Qg
VmVjdG9yPE93blB0cjxIVE1MRWxlbWVudEVxdWl2YWxlbnQ+PiYgZWxlbWVudEVxdWl2YWxlbnRz
ID0gaHRtbEVsZW1lbnRFcXVpdmFsZW50cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZWxlbWVudEVxdWl2YWxlbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChlbGVtZW50TWF0
Y2hlc0FuZFByb3BlcnR5SXNOb3RJbklubGluZVN0eWxlRGVjbChlbGVtZW50RXF1aXZhbGVudHNb
aV0uZ2V0KCksIGVsZW1lbnQsIG1vZGUsIG1fbXV0YWJsZVN0eWxlLmdldCgpKSkKICAgICAgICAg
ICAgIGVsZW1lbnRFcXVpdmFsZW50c1tpXS0+YWRkVG9TdHlsZShlbGVtZW50LCB0aGlzKTsKICAg
ICB9CiAKLSAgICBjb25zdCBWZWN0b3I8T3duUHRyPEhUTUxBdHRyaWJ1dGVFcXVpdmFsZW50PiA+
JiBhdHRyaWJ1dGVFcXVpdmFsZW50cyA9IGh0bWxBdHRyaWJ1dGVFcXVpdmFsZW50cygpOworICAg
IGNvbnN0IFZlY3RvcjxPd25QdHI8SFRNTEF0dHJpYnV0ZUVxdWl2YWxlbnQ+PiYgYXR0cmlidXRl
RXF1aXZhbGVudHMgPSBodG1sQXR0cmlidXRlRXF1aXZhbGVudHMoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGF0dHJpYnV0ZUVxdWl2YWxlbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGlmIChhdHRyaWJ1dGVFcXVpdmFsZW50c1tpXS0+YXR0cmlidXRlTmFtZSgpID09IEhUTUxOYW1l
czo6ZGlyQXR0cikKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBXZSBkb24ndCB3YW50IHRvIGlu
Y2x1ZGUgZGlyZWN0aW9uYWxpdHkKQEAgLTExMTMsNyArMTExMyw3IEBAIHZvaWQgRWRpdGluZ1N0
eWxlOjptZXJnZVN0eWxlKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBDU1NQcm9wZXJ0
eU92ZXJyaWRlCiBzdGF0aWMgUGFzc1JlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0eVNldD4gc3R5
bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCB1bnNpZ25lZCBy
dWxlc1RvSW5jbHVkZSkKIHsKICAgICBSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ+IHN0
eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwotICAgIFZlY3RvcjxSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4gPiBtYXRjaGVkUnVsZXMgPSBlbGVtZW50LT5kb2N1bWVudCgpLmVu
c3VyZVN0eWxlUmVzb2x2ZXIoKS5zdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBydWxlc1Rv
SW5jbHVkZSk7CisgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4gbWF0Y2hlZFJ1bGVz
ID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5lbnN1cmVTdHlsZVJlc29sdmVyKCkuc3R5bGVSdWxlc0Zv
ckVsZW1lbnQoZWxlbWVudCwgcnVsZXNUb0luY2x1ZGUpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtYXRjaGVkUnVsZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKG1hdGNoZWRS
dWxlc1tpXS0+aXNTdHlsZVJ1bGUoKSkKICAgICAgICAgICAgIHN0eWxlLT5tZXJnZUFuZE92ZXJy
aWRlT25Db25mbGljdChzdGF0aWNfcG9pbnRlcl9jYXN0PFN0eWxlUnVsZT4obWF0Y2hlZFJ1bGVz
W2ldKS0+cHJvcGVydGllcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAwMTQ2
MjE2ZmY4NjQxOTM2MjFkNzA5MDg5OTdlYWU0YTRkMmNmYzY2Li5hYjEzNmQ2YzBiZTVlOGYzOWRl
NWM0ZmU4NzNmYmJlMmYwMjBlYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0y
OTM0LDcgKzI5MzQsNyBAQCBzdGF0aWMgYm9vbCBpc0ZyYW1lSW5SYW5nZShGcmFtZSogZnJhbWUs
IFJhbmdlKiByYW5nZSkKICAgICByZXR1cm4gaW5SYW5nZTsKIH0KIAotdW5zaWduZWQgRWRpdG9y
Ojpjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmFuZ2Us
IEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIGxpbWl0LCBib29sIG1hcmtNYXRjaGVzLCBW
ZWN0b3I8UmVmUHRyPFJhbmdlPiA+KiBtYXRjaGVzKQordW5zaWduZWQgRWRpdG9yOjpjb3VudE1h
dGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBSYW5nZSogcmFuZ2UsIEZpbmRPcHRp
b25zIG9wdGlvbnMsIHVuc2lnbmVkIGxpbWl0LCBib29sIG1hcmtNYXRjaGVzLCBWZWN0b3I8UmVm
UHRyPFJhbmdlPj4qIG1hdGNoZXMpCiB7CiAgICAgaWYgKHRhcmdldC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggOTY2NzI2NWNlNDgxMTYz
MjYyOWMyZGM0YjY1ZjhlNDI2N2UwZWNiNC4uNzE3MGI0MWEwNjFhZjkwMTc4YjQzODMxYmZiY2Y1
YjBhYzkyZDliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0zNDAsNyArMzQwLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9w
dGlvbnMpOwogICAgIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIG9sZFNlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9u
LCBFQWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIGNvbnN0OwotICAgIHVuc2lnbmVkIGNv
dW50TWF0Y2hlc0ZvclRleHQoY29uc3QgU3RyaW5nJiwgUmFuZ2UqLCBGaW5kT3B0aW9ucywgdW5z
aWduZWQgbGltaXQsIGJvb2wgbWFya01hdGNoZXMsIFZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4qKTsK
KyAgICB1bnNpZ25lZCBjb3VudE1hdGNoZXNGb3JUZXh0KGNvbnN0IFN0cmluZyYsIFJhbmdlKiwg
RmluZE9wdGlvbnMsIHVuc2lnbmVkIGxpbWl0LCBib29sIG1hcmtNYXRjaGVzLCBWZWN0b3I8UmVm
UHRyPFJhbmdlPj4qKTsKICAgICBib29sIG1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQo
KSBjb25zdDsKICAgICB2b2lkIHNldE1hcmtlZFRleHRNYXRjaGVzQXJlSGlnaGxpZ2h0ZWQoYm9v
bCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFn
cmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCmluZGV4IGFmZGY1OGYyYWZlNjRjYzczODhlOGJkMjU3
MmI2YWJlMDM1MGM4M2YuLmU0ZWQ4Y2IwMDdjYzQ3ZWYyMzdiZTEzYzA5MDgzYTY4MjIwMGNlY2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3JDb21tYW5kLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIGJvb2wgSW5zZXJ0UGFy
YWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6c2hvdWxkVXNlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQo
Tm9kZSogZW5jCiAgICAgICAgICAgIGVuY2xvc2luZ0Jsb2NrLT5oYXNUYWdOYW1lKGg1VGFnKTsK
IH0KIAotdm9pZCBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpnZXRBbmNlc3RvcnNJ
bnNpZGVCbG9jayhjb25zdCBOb2RlKiBpbnNlcnRpb25Ob2RlLCBFbGVtZW50KiBvdXRlckJsb2Nr
LCBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID4mIGFuY2VzdG9ycykKK3ZvaWQgSW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQ29tbWFuZDo6Z2V0QW5jZXN0b3JzSW5zaWRlQmxvY2soY29uc3QgTm9kZSog
aW5zZXJ0aW9uTm9kZSwgRWxlbWVudCogb3V0ZXJCbG9jaywgVmVjdG9yPFJlZlB0cjxFbGVtZW50
Pj4mIGFuY2VzdG9ycykKIHsKICAgICBhbmNlc3RvcnMuY2xlYXIoKTsKICAgICAKQEAgLTEzMiw3
ICsxMzIsNyBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmdldEFuY2Vz
dG9yc0luc2lkZUJsb2NrKGNvbnN0IE5vZGUqIGluc2VydAogICAgIH0KIH0KIAotUGFzc1JlZlB0
cjxFbGVtZW50PiBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpjbG9uZUhpZXJhcmNo
eVVuZGVyTmV3QmxvY2soY29uc3QgVmVjdG9yPFJlZlB0cjxFbGVtZW50PiA+JiBhbmNlc3RvcnMs
IFBhc3NSZWZQdHI8RWxlbWVudD4gYmxvY2tUb0luc2VydCkKK1Bhc3NSZWZQdHI8RWxlbWVudD4g
SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6Y2xvbmVIaWVyYXJjaHlVbmRlck5ld0Js
b2NrKGNvbnN0IFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+JiBhbmNlc3RvcnMsIFBhc3NSZWZQdHI8
RWxlbWVudD4gYmxvY2tUb0luc2VydCkKIHsKICAgICAvLyBNYWtlIGNsb25lcyBvZiBhbmNlc3Rv
cnMgaW4gYmV0d2VlbiB0aGUgc3RhcnQgbm9kZSBhbmQgdGhlIHN0YXJ0IGJsb2NrLgogICAgIFJl
ZlB0cjxFbGVtZW50PiBwYXJlbnQgPSBibG9ja1RvSW5zZXJ0OwpAQCAtMjQxLDcgKzI0MSw3IEBA
IHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSgpCiAKICAgICAg
ICAgLy8gUmVjcmVhdGUgdGhlIHNhbWUgc3RydWN0dXJlIGluIHRoZSBuZXcgcGFyYWdyYXBoLgog
ICAgICAgICAKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50PiA+IGFuY2VzdG9yczsKKyAg
ICAgICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4gYW5jZXN0b3JzOwogICAgICAgICBnZXRBbmNl
c3RvcnNJbnNpZGVCbG9jayhwb3NpdGlvbk91dHNpZGVUYWJTcGFuKGluc2VydGlvblBvc2l0aW9u
KS5kZXByZWNhdGVkTm9kZSgpLCBzdGFydEJsb2NrLmdldCgpLCBhbmNlc3RvcnMpOyAgICAgIAog
ICAgICAgICBSZWZQdHI8RWxlbWVudD4gcGFyZW50ID0gY2xvbmVIaWVyYXJjaHlVbmRlck5ld0Js
b2NrKGFuY2VzdG9ycywgYmxvY2tUb0luc2VydCk7CiAgICAgICAgIApAQCAtMjgwLDcgKzI4MCw3
IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG9BcHBseSgpCiAKICAg
ICAgICAgLy8gUmVjcmVhdGUgdGhlIHNhbWUgc3RydWN0dXJlIGluIHRoZSBuZXcgcGFyYWdyYXBo
LgogCi0gICAgICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiBhbmNlc3RvcnM7CisgICAgICAg
IFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+IGFuY2VzdG9yczsKICAgICAgICAgZ2V0QW5jZXN0b3Jz
SW5zaWRlQmxvY2socG9zaXRpb25Bdm9pZGluZ1NwZWNpYWxFbGVtZW50Qm91bmRhcnkocG9zaXRp
b25PdXRzaWRlVGFiU3BhbihpbnNlcnRpb25Qb3NpdGlvbikpLmRlcHJlY2F0ZWROb2RlKCksIHN0
YXJ0QmxvY2suZ2V0KCksIGFuY2VzdG9ycyk7CiAgICAgICAgIAogICAgICAgICBhcHBlbmRCbG9j
a1BsYWNlaG9sZGVyKGNsb25lSGllcmFyY2h5VW5kZXJOZXdCbG9jayhhbmNlc3RvcnMsIGJsb2Nr
VG9JbnNlcnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFy
YWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQ
YXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmgKaW5kZXggODBlNzc5NWVmNmRhYzVhNzEzMWY1ZDA3
MzE2YWY4MzVmZDUxYjQyOS4uODE1MTc2ZDE4NDkxODgwMjlmOGEyYzkzZmE3ODNmMzAxYjdiNjk5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBh
cmF0b3JDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3JDb21tYW5kLmgKQEAgLTQ2LDggKzQ2LDggQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgY2FsY3VsYXRlU3R5bGVCZWZvcmVJbnNlcnRpb24oY29uc3QgUG9zaXRpb24mKTsKICAgICB2
b2lkIGFwcGx5U3R5bGVBZnRlckluc2VydGlvbihOb2RlKiBvcmlnaW5hbEVuY2xvc2luZ0Jsb2Nr
KTsKLSAgICB2b2lkIGdldEFuY2VzdG9yc0luc2lkZUJsb2NrKGNvbnN0IE5vZGUqIGluc2VydGlv
bk5vZGUsIEVsZW1lbnQqIG91dGVyQmxvY2ssIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiYgYW5j
ZXN0b3JzKTsKLSAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNsb25lSGllcmFyY2h5VW5kZXJOZXdC
bG9jayhjb25zdCBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID4mIGFuY2VzdG9ycywgUGFzc1JlZlB0
cjxFbGVtZW50PiBibG9ja1RvSW5zZXJ0KTsKKyAgICB2b2lkIGdldEFuY2VzdG9yc0luc2lkZUJs
b2NrKGNvbnN0IE5vZGUqIGluc2VydGlvbk5vZGUsIEVsZW1lbnQqIG91dGVyQmxvY2ssIFZlY3Rv
cjxSZWZQdHI8RWxlbWVudD4+JiBhbmNlc3RvcnMpOworICAgIFBhc3NSZWZQdHI8RWxlbWVudD4g
Y2xvbmVIaWVyYXJjaHlVbmRlck5ld0Jsb2NrKGNvbnN0IFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+
JiBhbmNlc3RvcnMsIFBhc3NSZWZQdHI8RWxlbWVudD4gYmxvY2tUb0luc2VydCk7CiAKICAgICBi
b29sIHNob3VsZFVzZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KE5vZGUqKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHND
b21tYW5kLmNwcAppbmRleCAxOGExNTU1ZmNkNjkzMWFmMzVjOTQ3MDczODFhM2U5OGI0MDA3NWM3
Li5iMTY4NzIyYzBiMzkyMmMzNmNmZWI4ZTc4ZTY5Y2U1YTA0NDE2NjgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5k
LmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIE1lcmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5k
Ojpkb0FwcGx5KCkKIAogICAgIG1fYXRDaGlsZCA9IG1fZWxlbWVudDItPmZpcnN0Q2hpbGQoKTsK
IAotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBjaGlsZHJlbjsKKyAgICBWZWN0b3I8UmVmUHRy
PE5vZGU+PiBjaGlsZHJlbjsKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbV9lbGVtZW50MS0+Zmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAg
Y2hpbGRyZW4uYXBwZW5kKGNoaWxkKTsKIApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIE1lcmdlSWRl
bnRpY2FsRWxlbWVudHNDb21tYW5kOjpkb1VuYXBwbHkoKQogICAgIGlmIChlYykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGNoaWxkcmVuOworICAgIFZlY3Rv
cjxSZWZQdHI8Tm9kZT4+IGNoaWxkcmVuOwogICAgIGZvciAoTm9kZSogY2hpbGQgPSBtX2VsZW1l
bnQyLT5maXJzdENoaWxkKCk7IGNoaWxkICYmIGNoaWxkICE9IGF0Q2hpbGQ7IGNoaWxkID0gY2hp
bGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGNoaWxkcmVuLmFwcGVuZChjaGlsZCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGls
ZHJlbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlUHJlc2Vy
dmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKaW5kZXggY2E0ZmI3YjRlYWI0ZjAzMGFkMTQyZDdlOTgz
MWNmYTBiN2U0YTc0MC4uNTczNTMzMDA3OGVjMTYzMTY0MWM1NmRhZjk2ZTc4YjA3ZjVmYmZjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0No
aWxkcmVuQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2Rl
UHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVtb3ZlTm9k
ZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQ6OlJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5D
b21tYW5kKFBhc3NSZWYKIAogdm9pZCBSZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFu
ZDo6ZG9BcHBseSgpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGNoaWxkcmVuOworICAg
IFZlY3RvcjxSZWZQdHI8Tm9kZT4+IGNoaWxkcmVuOwogICAgIGZvciAoTm9kZSogY2hpbGQgPSBt
X25vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkp
CiAgICAgICAgIGNoaWxkcmVuLmFwcGVuZChjaGlsZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggMGUyMzE0ZDA1ZTMw
N2QwMGJmZWEzZWZkYzhmMjVjZWVkZTgyOTQ4OC4uNzU0MjZjYjc4ODk5ODIxMmMwMWMwNGJkM2Q2
MGVjMDg4YmNlMzhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFJlcGxhY2VtZW50
RnJhZ21lbnQ6OnJlc3RvcmVBbmRSZW1vdmVUZXN0UmVuZGVyaW5nTm9kZXNUb0ZyYWdtZW50KFN0
eWxlZEVsZQogCiB2b2lkIFJlcGxhY2VtZW50RnJhZ21lbnQ6OnJlbW92ZVVucmVuZGVyZWROb2Rl
cyhOb2RlKiBob2xkZXIpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IHVucmVuZGVyZWQ7
CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPj4gdW5yZW5kZXJlZDsKIAogICAgIGZvciAoTm9kZSog
bm9kZSA9IGhvbGRlci0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gTm9kZVRyYXZlcnNhbDo6
bmV4dChub2RlLCBob2xkZXIpKQogICAgICAgICBpZiAoIWlzTm9kZVJlbmRlcmVkKG5vZGUpICYm
ICFpc1RhYmxlU3RydWN0dXJlTm9kZShub2RlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU2ltcGxpZnlNYXJrdXBDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU2ltcGxpZnlNYXJrdXBDb21tYW5kLmNwcAppbmRleCAwMzkyY2Y0NGRlYzVhNzE5YjQ5MDhk
MzYyOTEzZGM4MGI0NmJlZjY0Li40MTA2ZDhmNmM5NmIxN2VlNzU0ZmYwYzlkYmIwYmYyMzhhM2Qy
MTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NpbXBsaWZ5TWFya3VwQ29t
bWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TaW1wbGlmeU1hcmt1cENvbW1h
bmQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFNpbXBsaWZ5TWFya3VwQ29tbWFuZDo6U2ltcGxpZnlN
YXJrdXBDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgTm9kZSogZmlyc3ROb2RlCiB2b2lkIFNp
bXBsaWZ5TWFya3VwQ29tbWFuZDo6ZG9BcHBseSgpCiB7CiAgICAgTm9kZSogcm9vdE5vZGUgPSBt
X2ZpcnN0Tm9kZS0+cGFyZW50Tm9kZSgpOwotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBub2Rl
c1RvUmVtb3ZlOworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IG5vZGVzVG9SZW1vdmU7CiAgICAg
CiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsK
IApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgU2ltcGxpZnlNYXJrdXBDb21tYW5kOjpkb0FwcGx5
KCkKICAgICB9CiB9CiAKLWludCBTaW1wbGlmeU1hcmt1cENvbW1hbmQ6OnBydW5lU3Vic2VxdWVu
dEFuY2VzdG9yc1RvUmVtb3ZlKFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgbm9kZXNUb1JlbW92ZSwg
c2l6ZV90IHN0YXJ0Tm9kZUluZGV4KQoraW50IFNpbXBsaWZ5TWFya3VwQ29tbWFuZDo6cHJ1bmVT
dWJzZXF1ZW50QW5jZXN0b3JzVG9SZW1vdmUoVmVjdG9yPFJlZlB0cjxOb2RlPj4mIG5vZGVzVG9S
ZW1vdmUsIHNpemVfdCBzdGFydE5vZGVJbmRleCkKIHsKICAgICBzaXplX3QgcGFzdExhc3ROb2Rl
VG9SZW1vdmUgPSBzdGFydE5vZGVJbmRleCArIDE7CiAgICAgZm9yICg7IHBhc3RMYXN0Tm9kZVRv
UmVtb3ZlIDwgbm9kZXNUb1JlbW92ZS5zaXplKCk7ICsrcGFzdExhc3ROb2RlVG9SZW1vdmUpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2ltcGxpZnlNYXJrdXBDb21tYW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NpbXBsaWZ5TWFya3VwQ29tbWFuZC5oCmluZGV4
IDdkY2MxNTAwNjRmYTA4N2U0YjFkYzQzZjI2OTQ1OGNlN2RkY2IyZDEuLmYxYzVkZWVhOWY2Mzc3
YjY3ZmEzMTcwOWI1NzI5MWM1ODMxM2M1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU2ltcGxpZnlNYXJrdXBDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TaW1wbGlmeU1hcmt1cENvbW1hbmQuaApAQCAtNDEsNyArNDEsNyBAQCBwcml2YXRlOgogICAg
IFNpbXBsaWZ5TWFya3VwQ29tbWFuZChEb2N1bWVudCYsIE5vZGUqIGZpcnN0Tm9kZSwgTm9kZSog
bm9kZUFmdGVyTGFzdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOwotICAgIGludCBw
cnVuZVN1YnNlcXVlbnRBbmNlc3RvcnNUb1JlbW92ZShWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIG5v
ZGVzVG9SZW1vdmUsIHNpemVfdCBzdGFydE5vZGVJbmRleCk7CisgICAgaW50IHBydW5lU3Vic2Vx
dWVudEFuY2VzdG9yc1RvUmVtb3ZlKFZlY3RvcjxSZWZQdHI8Tm9kZT4+JiBub2Rlc1RvUmVtb3Zl
LCBzaXplX3Qgc3RhcnROb2RlSW5kZXgpOwogCiAgICAgUmVmUHRyPE5vZGU+IG1fZmlyc3ROb2Rl
OwogICAgIFJlZlB0cjxOb2RlPiBtX25vZGVBZnRlckxhc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
cGVsbENoZWNrZXIuaAppbmRleCBiZGE3NzNkMGFhNTdkZTZiMDZkODIxN2U4Zjk1YmRhMTc5MGY4
ZTVhLi5hNjRiOTU3MDM1Y2ZkM2U2M2Y0ODdjNTA4YWE1YjM2ZWUzMzUwYWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAg
IH0KIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIERlcXVlPFJlZlB0cjxTcGVsbENoZWNrUmVxdWVz
dD4gPiBSZXF1ZXN0UXVldWU7CisgICAgdHlwZWRlZiBEZXF1ZTxSZWZQdHI8U3BlbGxDaGVja1Jl
cXVlc3Q+PiBSZXF1ZXN0UXVldWU7CiAKICAgICBib29sIGNhbkNoZWNrQXN5bmNocm9ub3VzbHko
UmFuZ2UqKSBjb25zdDsKICAgICBUZXh0Q2hlY2tlckNsaWVudCogY2xpZW50KCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcAppbmRleCA5
NmNjMjRhMTE0ZjcyOWIyMjQ3NmQzZjIwYTdiZDEwYzJkM2E3MDVhLi5lOWNjNTNmNjJjYTEwOTMx
NjY5NGUzYTIwMjEyOTkyZDgxZWIyYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBTcGxpdEVsZW1l
bnRDb21tYW5kOjpleGVjdXRlQXBwbHkoKQogICAgIGlmIChtX2F0Q2hpbGQtPnBhcmVudE5vZGUo
KSAhPSBtX2VsZW1lbnQyKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgVmVjdG9yPFJlZlB0
cjxOb2RlPiA+IGNoaWxkcmVuOworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IGNoaWxkcmVuOwog
ICAgIGZvciAoTm9kZSogbm9kZSA9IG1fZWxlbWVudDItPmZpcnN0Q2hpbGQoKTsgbm9kZSAhPSBt
X2F0Q2hpbGQ7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQogICAgICAgICBjaGlsZHJlbi5h
cHBlbmQobm9kZSk7CiAgICAgCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgU3BsaXRFbGVtZW50Q29t
bWFuZDo6ZG9VbmFwcGx5KCkKICAgICBpZiAoIW1fZWxlbWVudDEgfHwgIW1fZWxlbWVudDEtPnJl
bmRlcmVySXNFZGl0YWJsZSgpIHx8ICFtX2VsZW1lbnQyLT5yZW5kZXJlcklzRWRpdGFibGUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGNoaWxkcmVuOwor
ICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IGNoaWxkcmVuOwogICAgIGZvciAoTm9kZSogbm9kZSA9
IG1fZWxlbWVudDEtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5n
KCkpCiAgICAgICAgIGNoaWxkcmVuLmFwcGVuZChub2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQuY3BwCmlu
ZGV4IDdhMDNiNjRiNjJjNzgxZjI2YjFmNDBhZTVjYjRiZmEwZjA4NDdhNzMuLjUwYWY0MjI3ZmMw
MmUxZTczMWQzNDlhNTYwMWFmNDU1NzJmOGVjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kOjpXcmFwQ29udGVudHNJ
bkR1bW15U3BhbkNvbW1hbmQoUGFzc1JlZlB0cjxFbGVtZW4KIAogdm9pZCBXcmFwQ29udGVudHNJ
bkR1bW15U3BhbkNvbW1hbmQ6OmV4ZWN1dGVBcHBseSgpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxO
b2RlPiA+IGNoaWxkcmVuOworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IGNoaWxkcmVuOwogICAg
IGZvciAoTm9kZSogY2hpbGQgPSBtX2VsZW1lbnQtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGNoaWxkcmVuLmFwcGVuZChjaGlsZCk7
CiAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBXcmFwQ29udGVudHNJbkR1bW15U3BhbkNvbW1hbmQ6
OmRvVW5hcHBseSgpCiAgICAgaWYgKCFtX2R1bW15U3BhbiB8fCAhbV9lbGVtZW50LT5yZW5kZXJl
cklzRWRpdGFibGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPFJlZlB0cjxOb2Rl
PiA+IGNoaWxkcmVuOworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IGNoaWxkcmVuOwogICAgIGZv
ciAoTm9kZSogY2hpbGQgPSBtX2R1bW15U3Bhbi0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgY2hpbGRyZW4uYXBwZW5kKGNoaWxkKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvQWx0ZXJuYXRpdmVUZXh0
VUlDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRl
eHRVSUNvbnRyb2xsZXIuaAppbmRleCBjMTFkZTQ4MGI1OGM0NzcxYTY4MTdmZjRlOGU2NTI4MzFj
YTEwY2I2Li45OWVmOTYxOTg4MWRjMWVhOWJjYjYxZmU2ZTE5NDA4YzJhZjQ1NmVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9BbHRlcm5hdGl2ZVRleHRVSUNv
bnRyb2xsZXIuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgICAgICB2b2lkIHJlbW92
ZUFsdGVybmF0aXZlc0ZvckNvbnRleHQodWludDY0X3QgY29udGV4dCk7CiAgICAgICAgIHN0YXRp
YyBjb25zdCB1aW50NjRfdCBpbnZhbGlkQ29udGV4dCA9IDA7CiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVz
PiA+IEhhc2hNYXBUeXBlOworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJldGFp
blB0cjxOU1RleHRBbHRlcm5hdGl2ZXM+PiBIYXNoTWFwVHlwZTsKICAgICAgICAgSGFzaE1hcFR5
cGUgbV9hbHRlcm5hdGl2ZXNPYmplY3RNYXA7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
TGlzdC5oCmluZGV4IGVlODc1NWRjOTM4MjllMDlhMTE0Y2U0YjliNjM1ZWEyYjhhZGU5OWUuLjFl
OTgyZWU3N2E3MjMxMzhhMjUwMWY4YzJiZGQxOTdlZTRjYjZhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVMaXN0LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBGaWxl
TGlzdCgpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxGaWxlPiA+IG1fZmlsZXM7CisgICAgVmVjdG9y
PFJlZlB0cjxGaWxlPj4gbV9maWxlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oCmluZGV4IDI5MmY1MzI3MzQwYmQ3
MDVhMjFjZGNiYzVhYmQ3M2UxNzQxMmVlNDguLmI4Nzg1YTZjMDlkY2YzYjBlZmM2YzgxZDdkYTc4
Y2FkYmYxM2Q4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zvcndh
cmRMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaApA
QCAtMzYsOCArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7CiAKLXR5
cGVkZWYgVmVjdG9yPFJlZlB0cjxIaXN0b3J5SXRlbT4gPiBIaXN0b3J5SXRlbVZlY3RvcjsKLXR5
cGVkZWYgSGFzaFNldDxSZWZQdHI8SGlzdG9yeUl0ZW0+ID4gSGlzdG9yeUl0ZW1IYXNoU2V0Owor
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPEhpc3RvcnlJdGVtPj4gSGlzdG9yeUl0ZW1WZWN0b3I7Cit0
eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPEhpc3RvcnlJdGVtPj4gSGlzdG9yeUl0ZW1IYXNoU2V0Owog
CiBjbGFzcyBCYWNrRm9yd2FyZExpc3QgOiBwdWJsaWMgQmFja0ZvcndhcmRDbGllbnQgewogcHVi
bGljOiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKaW5kZXggZTE0ODA0OGQx
NDYzYTdlY2UwNGI4MzQ5YTQ0MDc3ZjNhMzUxM2FmNC4uYWQ4YmExYWYyOTUyOGNmZTc0MjFjNzMw
OTRkYWYzOWQ3OTBhYmVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0
b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAK
QEAgLTY3MCw3ICs2NzAsNyBAQCBWZWN0b3I8U3RyaW5nPiogSGlzdG9yeUl0ZW06OnJlZGlyZWN0
VVJMcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVkaXJlY3RVUkxzLmdldCgpOwogfQogCi12b2lk
IEhpc3RvcnlJdGVtOjpzZXRSZWRpcmVjdFVSTHMoUGFzc093blB0cjxWZWN0b3I8U3RyaW5nPiA+
IHJlZGlyZWN0VVJMcykKK3ZvaWQgSGlzdG9yeUl0ZW06OnNldFJlZGlyZWN0VVJMcyhQYXNzT3du
UHRyPFZlY3RvcjxTdHJpbmc+PiByZWRpcmVjdFVSTHMpCiB7CiAgICAgbV9yZWRpcmVjdFVSTHMg
PSByZWRpcmVjdFVSTHM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hp
c3RvcnlJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmgKaW5kZXgg
ZDQxZDVlMjUzMzhhYWYzYTRhMTZkZGRjN2MzNTRiZWJjODY3MTVkMC4uNzIwY2U2YTgzOWYyZjI4
YzAzZDc5ZGNmNzQxMGMxNDNmOWU4MjFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9IaXN0b3J5SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvSGlzdG9yeUl0
ZW0uaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBJbWFnZTsKIGNsYXNzIFVSTDsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIAotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEhpc3RvcnlJdGVtPiA+IEhp
c3RvcnlJdGVtVmVjdG9yOwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPEhpc3RvcnlJdGVtPj4gSGlz
dG9yeUl0ZW1WZWN0b3I7CiAKIGV4dGVybiB2b2lkICgqbm90aWZ5SGlzdG9yeUl0ZW1DaGFuZ2Vk
KShIaXN0b3J5SXRlbSopOwogCkBAIC0xNzcsNyArMTc3LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBhZGRSZWRpcmVjdFVSTChjb25zdCBTdHJpbmcmKTsKICAgICBWZWN0b3I8U3RyaW5nPiogcmVk
aXJlY3RVUkxzKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRSZWRpcmVjdFVSTHMoUGFzc093blB0cjxW
ZWN0b3I8U3RyaW5nPiA+KTsKKyAgICB2b2lkIHNldFJlZGlyZWN0VVJMcyhQYXNzT3duUHRyPFZl
Y3RvcjxTdHJpbmc+Pik7CiAKICAgICBib29sIGlzQ3VycmVudERvY3VtZW50KERvY3VtZW50Kikg
Y29uc3Q7CiAgICAgCkBAIC0yNDksNyArMjQ5LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8aW50
PiBtX2RhaWx5VmlzaXRDb3VudHM7CiAgICAgVmVjdG9yPGludD4gbV93ZWVrbHlWaXNpdENvdW50
czsKIAotICAgIE93blB0cjxWZWN0b3I8U3RyaW5nPiA+IG1fcmVkaXJlY3RVUkxzOworICAgIE93
blB0cjxWZWN0b3I8U3RyaW5nPj4gbV9yZWRpcmVjdFVSTHM7CiAKICAgICAvLyBJZiB0d28gSGlz
dG9yeUl0ZW1zIGhhdmUgdGhlIHNhbWUgaXRlbSBzZXF1ZW5jZSBudW1iZXIsIHRoZW4gdGhleSBh
cmUKICAgICAvLyBjbG9uZXMgb2Ygb25lIGFub3RoZXIuICBUcmF2ZXJzaW5nIGhpc3RvcnkgZnJv
bSBvbmUgc3VjaCBIaXN0b3J5SXRlbSB0bwpAQCAtMjc2LDcgKzI3Niw3IEBAIHByaXZhdGU6CiAg
ICAgCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxpZD4gbV92aWV3U3RhdGU7Ci0g
ICAgT3duUHRyPEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8aWQ+ID4gPiBtX3RyYW5zaWVudFBy
b3BlcnRpZXM7CisgICAgT3duUHRyPEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8aWQ+Pj4gbV90
cmFuc2llbnRQcm9wZXJ0aWVzOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShCTEFDS0JFUlJZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9tYWMvSGlzdG9yeUl0ZW1NYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L21hYy9IaXN0b3J5SXRlbU1hYy5tbQppbmRleCA5YjA3
N2ExZWY5NDJlOTljMjI3NmM4ZmFhZjA5NjM3NGUyMWE1YjJmLi5iYTkzZmJkMGU1M2FiMjZiZGZm
MWNkZWNjZTNiNDRlMWQ4NGUyMjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L21hYy9IaXN0b3J5SXRlbU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L21hYy9I
aXN0b3J5SXRlbU1hYy5tbQpAQCAtNTksNyArNTksNyBAQCB2b2lkIEhpc3RvcnlJdGVtOjpzZXRU
cmFuc2llbnRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIGtleSwgaWQgdmFsdWUpCiAgICAgICAgIH0K
ICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIW1fdHJhbnNpZW50UHJvcGVydGllcykKLSAgICAg
ICAgICAgIG1fdHJhbnNpZW50UHJvcGVydGllcyA9IGFkb3B0UHRyKG5ldyBIYXNoTWFwPFN0cmlu
ZywgUmV0YWluUHRyPGlkPiA+KTsKKyAgICAgICAgICAgIG1fdHJhbnNpZW50UHJvcGVydGllcyA9
IGFkb3B0UHRyKG5ldyBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPGlkPj4pOwogICAgICAgICBt
X3RyYW5zaWVudFByb3BlcnRpZXMtPnNldChrZXksIHZhbHVlKTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Db250cm9sbGVyLmgKaW5kZXggMmNlOTRkYzM0ODRhOWZlMTFlN2Q4YTdmYzcx
N2UwNzlkODY0MWQyNC4uOWRiY2E2MjUyNjllNGIyN2Q2M2NkNjRkMTg0NjJkMjNjMWRiZjIxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaApAQCAtOTYsNyArOTYsNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8SFRNTEZvcm1D
b250cm9sRWxlbWVudFdpdGhTdGF0ZT4sIDY0PiBGb3JtRWxlbWVudExpc3RIYXNoU2V0OwotICAg
IHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4sIE93blB0cjxTYXZlZEZv
cm1TdGF0ZT4gPiBTYXZlZEZvcm1TdGF0ZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRy
PEF0b21pY1N0cmluZ0ltcGw+LCBPd25QdHI8U2F2ZWRGb3JtU3RhdGU+PiBTYXZlZEZvcm1TdGF0
ZU1hcDsKIAogICAgIEZvcm1Db250cm9sbGVyKCk7CiAgICAgc3RhdGljIE93blB0cjxTYXZlZEZv
cm1TdGF0ZU1hcD4gY3JlYXRlU2F2ZWRGb3JtU3RhdGVNYXAoY29uc3QgRm9ybUVsZW1lbnRMaXN0
SGFzaFNldCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRl
eCBlMTc5NmI5NDQ5NjRmMzk2YTVkNjhkZDYxMWZmMzQ3YTRjYmEyZTYxLi42MGI5NTc3MDI3ODc3
YmM0MjMzNGUyZTAyNWI3OTI0MmM4ODkyNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
bmNob3JFbGVtZW50LmNwcApAQCAtNjE0LDcgKzYxNCw3IEBAIGJvb2wgSFRNTEFuY2hvckVsZW1l
bnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkKICAgICByZXR1cm4gaXNMaW5rKCkg
fHwgSFRNTEVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCk7CiB9CiAKLXR5
cGVkZWYgSGFzaE1hcDxjb25zdCBIVE1MQW5jaG9yRWxlbWVudCosIFJlZlB0cjxFbGVtZW50PiA+
IFJvb3RFZGl0YWJsZUVsZW1lbnRNYXA7Cit0eXBlZGVmIEhhc2hNYXA8Y29uc3QgSFRNTEFuY2hv
ckVsZW1lbnQqLCBSZWZQdHI8RWxlbWVudD4+IFJvb3RFZGl0YWJsZUVsZW1lbnRNYXA7CiAKIHN0
YXRpYyBSb290RWRpdGFibGVFbGVtZW50TWFwJiByb290RWRpdGFibGVFbGVtZW50TWFwKCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKaW5kZXggOTc3MjE1Y2RjY2Q2MzUy
NGRmMjE2YjY4NGQ0NDkyY2RmNzM3ZDk3OS4uYmE1M2Q1NjcxNmNiMTg3OWM1YTkwNjgyNjk5YjMx
YTg2ZGMyMGUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKQEAgLTY2
Myw3ICs2NjMsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBIVE1MQ29sbGVjdGlvbjo6dGFncyhj
b25zdCBTdHJpbmcmIG5hbWUpCiAKIHZvaWQgSFRNTENvbGxlY3Rpb246OmFwcGVuZChOb2RlQ2Fj
aGVNYXAmIG1hcCwgY29uc3QgQXRvbWljU3RyaW5nJiBrZXksIEVsZW1lbnQqIGVsZW1lbnQpCiB7
Ci0gICAgT3duUHRyPFZlY3RvcjxFbGVtZW50Kj4gPiYgdmVjdG9yID0gbWFwLmFkZChrZXkuaW1w
bCgpLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAgT3duUHRyPFZlY3RvcjxFbGVtZW50
Kj4+JiB2ZWN0b3IgPSBtYXAuYWRkKGtleS5pbXBsKCksIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1
ZTsKICAgICBpZiAoIXZlY3RvcikKICAgICAgICAgdmVjdG9yID0gYWRvcHRQdHIobmV3IFZlY3Rv
cjxFbGVtZW50Kj4pOwogICAgIHZlY3Rvci0+YXBwZW5kKGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5oCmluZGV4IGUxY2FkM2Y5YzhjOGNlZTg0NTJiNzRiMjUxNTRhMDBm
MzA0YjhlY2YuLjc2MDI5ZDkwNTE3ZDBlMDkwZjZkNTBmYjhkZTliZmQzNTc0ZTY5M2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHJvdGVjdGVk
OgogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0OwogCi0gICAgdHlw
ZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBPd25QdHI8VmVjdG9yPEVsZW1lbnQqPiA+
ID4gTm9kZUNhY2hlTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwg
T3duUHRyPFZlY3RvcjxFbGVtZW50Kj4+PiBOb2RlQ2FjaGVNYXA7CiAgICAgVmVjdG9yPEVsZW1l
bnQqPiogaWRDYWNoZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IHsgcmV0dXJuIG1f
aWRDYWNoZS5nZXQobmFtZS5pbXBsKCkpOyB9CiAgICAgVmVjdG9yPEVsZW1lbnQqPiogbmFtZUNh
Y2hlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QgeyByZXR1cm4gbV9uYW1lQ2FjaGUu
Z2V0KG5hbWUuaW1wbCgpKTsgfQogICAgIHZvaWQgYXBwZW5kSWRDYWNoZShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0IHsgYXBwZW5kKG1faWRDYWNoZSwg
bmFtZSwgZWxlbWVudCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCmluZGV4IDU3OGYyYmM5YTEyNDhiNmFmNmE0OGQwMmM1NTUyYmY4MGRhNjhl
MDguLjA0MzlhZTliNjgwNzMyNmE2MTkzZmFhYzhhMzJkNDFlNGFkMmFiNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNDA1LDcgKzQw
NSw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6aGlkZVZpc2libGVWYWxpZGF0aW9u
TWVzc2FnZSgpCiAgICAgICAgIG1fdmFsaWRhdGlvbk1lc3NhZ2UtPnJlcXVlc3RUb0hpZGVNZXNz
YWdlKCk7CiB9CiAKLWJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hlY2tWYWxpZGl0eShW
ZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4gPiogdW5oYW5kbGVkSW52YWxpZENv
bnRyb2xzKQorYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpjaGVja1ZhbGlkaXR5KFZlY3Rv
cjxSZWZQdHI8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Pj4qIHVuaGFuZGxlZEludmFsaWRDb250cm9s
cykKIHsKICAgICBpZiAoIXdpbGxWYWxpZGF0ZSgpIHx8IGlzVmFsaWRGb3JtQ29udHJvbEVsZW1l
bnQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oCmluZGV4IDU5ODViZDQ0NDg2ODQ1MjU1ZDQ5MjE1N2Q5Mzk1OWYx
ZTM0MDAxOWUuLjk5ZjA5ZTBkOTBhYzY2NzAxNTZjNGEwN2U3NmZjNjE0YzI2YzM0ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC04OCw3ICs4
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFZhbGlkYXRlKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdm9pZCB1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKICAgICB2
b2lkIGhpZGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKLSAgICBib29sIGNoZWNrVmFsaWRp
dHkoVmVjdG9yPFJlZlB0cjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQ+ID4qIHVuaGFuZGxlZEludmFs
aWRDb250cm9scyA9IDApOworICAgIGJvb2wgY2hlY2tWYWxpZGl0eShWZWN0b3I8UmVmUHRyPEZv
cm1Bc3NvY2lhdGVkRWxlbWVudD4+KiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMgPSAwKTsKICAg
ICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIHdoZW4gYSB2YWxpZGF0aW9uIGNvbnN0cmFpbnQgb3Ig
Y29udHJvbCB2YWx1ZSBpcyBjaGFuZ2VkLgogICAgIHZvaWQgc2V0TmVlZHNWYWxpZGl0eUNoZWNr
KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpIE9W
RVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IGY0MGEz
NDhhZmFiYjgxZDAwNTZmYmNlZGRhMzE0YTAwODM1N2JhZDUuLmIxN2I4N2U5YzliMTg2OGU2MTMz
ZWY4NWNjYWRlMDJjODM1MzRlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6dmFsaWRhdGVJ
bnRlcmFjdGl2ZWx5KEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQqPihtX2Fzc29jaWF0ZWRFbGVtZW50c1tpXSktPmhpZGVWaXNpYmxl
VmFsaWRhdGlvbk1lc3NhZ2UoKTsKICAgICB9CiAKLSAgICBWZWN0b3I8UmVmUHRyPEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudD4gPiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHM7CisgICAgVmVjdG9yPFJl
ZlB0cjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQ+PiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHM7CiAg
ICAgaWYgKCFjaGVja0ludmFsaWRDb250cm9sc0FuZENvbGxlY3RVbmhhbmRsZWQodW5oYW5kbGVk
SW52YWxpZENvbnRyb2xzKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgLy8gQmVjYXVzZSB0
aGUgZm9ybSBoYXMgaW52YWxpZCBjb250cm9scywgd2UgYWJvcnQgdGhlIGZvcm0gc3VibWlzc2lv
biBhbmQKQEAgLTU5MiwxNiArNTkyLDE2IEBAIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqIEhUTUxG
b3JtRWxlbWVudDo6ZGVmYXVsdEJ1dHRvbigpIGNvbnN0CiAKIGJvb2wgSFRNTEZvcm1FbGVtZW50
OjpjaGVja1ZhbGlkaXR5KCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxl
bWVudD4gPiBjb250cm9sczsKKyAgICBWZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dD4+IGNvbnRyb2xzOwogICAgIHJldHVybiAhY2hlY2tJbnZhbGlkQ29udHJvbHNBbmRDb2xsZWN0
VW5oYW5kbGVkKGNvbnRyb2xzKTsKIH0KIAotYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OmNoZWNrSW52
YWxpZENvbnRyb2xzQW5kQ29sbGVjdFVuaGFuZGxlZChWZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lh
dGVkRWxlbWVudD4gPiYgdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzKQorYm9vbCBIVE1MRm9ybUVs
ZW1lbnQ6OmNoZWNrSW52YWxpZENvbnRyb2xzQW5kQ29sbGVjdFVuaGFuZGxlZChWZWN0b3I8UmVm
UHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4+JiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMpCiB7
CiAgICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7CiAgICAgLy8gQ29weSBt
X2Fzc29jaWF0ZWRFbGVtZW50cyBiZWNhdXNlIGV2ZW50IGhhbmRsZXJzIGNhbGxlZCBmcm9tCiAg
ICAgLy8gSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hlY2tWYWxpZGl0eSgpIG1pZ2h0IGNoYW5n
ZSBtX2Fzc29jaWF0ZWRFbGVtZW50cy4KLSAgICBWZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVk
RWxlbWVudD4gPiBlbGVtZW50czsKKyAgICBWZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxl
bWVudD4+IGVsZW1lbnRzOwogICAgIGVsZW1lbnRzLnJlc2VydmVDYXBhY2l0eShtX2Fzc29jaWF0
ZWRFbGVtZW50cy5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Fzc29j
aWF0ZWRFbGVtZW50cy5zaXplKCk7ICsraSkKICAgICAgICAgZWxlbWVudHMuYXBwZW5kKG1fYXNz
b2NpYXRlZEVsZW1lbnRzW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmlu
ZGV4IDY2ZDg1YTcyMTQwYjM1ZjA3MjU5ODM2ZWFkMDhjY2U2YWUyOTExZjguLjc2MDNkODA5ODQ4
NGM0ZmIzZTg1Yjg0NDk1ODQ3MGI1NTBmZDc4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuaApAQCAtMTM4LDcgKzEzOCw3IEBAIHByaXZhdGU6CiAgICAgLy8gVmFsaWRhdGVz
IGVhY2ggb2YgdGhlIGNvbnRyb2xzLCBhbmQgc3RvcmVzIGNvbnRyb2xzIG9mIHdoaWNoICdpbnZh
bGlkJwogICAgIC8vIGV2ZW50IHdhcyBub3QgY2FuY2VsZWQgdG8gdGhlIHNwZWNpZmllZCB2ZWN0
b3IuIFJldHVybnMgdHJ1ZSBpZiB0aGVyZQogICAgIC8vIGFyZSBhbnkgaW52YWxpZCBjb250cm9s
cyBpbiB0aGlzIGZvcm0uCi0gICAgYm9vbCBjaGVja0ludmFsaWRDb250cm9sc0FuZENvbGxlY3RV
bmhhbmRsZWQoVmVjdG9yPFJlZlB0cjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQ+ID4mKTsKKyAgICBi
b29sIGNoZWNrSW52YWxpZENvbnRyb2xzQW5kQ29sbGVjdFVuaGFuZGxlZChWZWN0b3I8UmVmUHRy
PEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4+Jik7CiAKICAgICBIVE1MRWxlbWVudCogZWxlbWVudEZy
b21QYXN0TmFtZXNNYXAoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCBhZGRU
b1Bhc3ROYW1lc01hcChGb3JtTmFtZWRJdGVtKiwgY29uc3QgQXRvbWljU3RyaW5nJiBwYXN0TmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAzMmUwYjAw
YWZmYWU4ZTk0N2VlYzY1Yjc5NjRlMzc3Zjc3ZjA0Zjg5Li5iNWUyMjY5N2FiZGVkOGE5ZmExMTlm
N2RlOWU0MTgxYTk4ODY3NjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgY29uc3QgY2hhciogbWVkaWFTb3VyY2VC
bG9iUHJvdG9jb2wgPSAiYmxvYiI7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIAotdHlwZWRlZiBIYXNoTWFwPERvY3VtZW50KiwgSGFzaFNldDxIVE1M
TWVkaWFFbGVtZW50Kj4gPiBEb2N1bWVudEVsZW1lbnRTZXRNYXA7Cit0eXBlZGVmIEhhc2hNYXA8
RG9jdW1lbnQqLCBIYXNoU2V0PEhUTUxNZWRpYUVsZW1lbnQqPj4gRG9jdW1lbnRFbGVtZW50U2V0
TWFwOwogc3RhdGljIERvY3VtZW50RWxlbWVudFNldE1hcCYgZG9jdW1lbnRUb0VsZW1lbnRTZXRN
YXAoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoRG9jdW1lbnRFbGVtZW50U2V0TWFwLCBt
YXAsICgpKTsKQEAgLTEyNzYsNyArMTI3Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhkb3VibGUgbW92aWVUaW1lKQogICAgIC8vIDggLSBMZXQg
ZXZlbnRzIGJlIGEgbGlzdCBvZiB0YXNrcywgaW5pdGlhbGx5IGVtcHR5LiBFYWNoIHRhc2sgaW4g
dGhpcwogICAgIC8vIGxpc3Qgd2lsbCBiZSBhc3NvY2lhdGVkIHdpdGggYSB0ZXh0IHRyYWNrLCBh
IHRleHQgdHJhY2sgY3VlLCBhbmQgYSB0aW1lLAogICAgIC8vIHdoaWNoIGFyZSB1c2VkIHRvIHNv
cnQgdGhlIGxpc3QgYmVmb3JlIHRoZSB0YXNrcyBhcmUgcXVldWVkLgotICAgIFZlY3RvcjxzdGQ6
OnBhaXI8ZG91YmxlLCBUZXh0VHJhY2tDdWUqPiA+IGV2ZW50VGFza3M7CisgICAgVmVjdG9yPHN0
ZDo6cGFpcjxkb3VibGUsIFRleHRUcmFja0N1ZSo+PiBldmVudFRhc2tzOwogCiAgICAgLy8gOCAt
IExldCBhZmZlY3RlZCB0cmFja3MgYmUgYSBsaXN0IG9mIHRleHQgdHJhY2tzLCBpbml0aWFsbHkg
ZW1wdHkuCiAgICAgVmVjdG9yPFRleHRUcmFjayo+IGFmZmVjdGVkVHJhY2tzOwpAQCAtMjk3OCwx
MiArMjk3OCwxMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFRyYWNr
KFBhc3NSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+IHBsYXRmbwogICAgIHNldFNlbGVjdGVkVGV4
dFRyYWNrKHRleHRUcmFjayk7CiB9CiAKLVZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+
ID4gSFRNTE1lZGlhRWxlbWVudDo6cGxhdGZvcm1UZXh0VHJhY2tzKCkKK1ZlY3RvcjxSZWZQdHI8
UGxhdGZvcm1UZXh0VHJhY2s+PiBIVE1MTWVkaWFFbGVtZW50OjpwbGF0Zm9ybVRleHRUcmFja3Mo
KQogewogICAgIGlmICghbV90ZXh0VHJhY2tzIHx8ICFtX3RleHRUcmFja3MtPmxlbmd0aCgpKQot
ICAgICAgICByZXR1cm4gVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gPigpOworICAg
ICAgICByZXR1cm4gVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4+KCk7CiAgICAgCi0g
ICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gPiBwbGF0Zm9ybVRyYWNrczsKKyAg
ICBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4gcGxhdGZvcm1UcmFja3M7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kpCiAgICAg
ICAgIHBsYXRmb3JtVHJhY2tzLmFwcGVuZChtX3RleHRUcmFja3MtPml0ZW0oaSktPnBsYXRmb3Jt
VGV4dFRyYWNrKCkpOwogICAgIApAQCAtMzI0NCw3ICszMjQ0LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tHcm91cChjb25zdCBUcmFja0dyb3VwJiBncm91cCkK
ICAgICBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGUgZGlzcGxheU1v
ZGUgPSBjYXB0aW9uUHJlZmVyZW5jZXMgPyBjYXB0aW9uUHJlZmVyZW5jZXMtPmNhcHRpb25EaXNw
bGF5TW9kZSgpIDogQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6QXV0b21hdGljOwogCiAgICAgLy8g
Rmlyc3QsIGZpbmQgdGhlIHRyYWNrIGluIHRoZSBncm91cCB0aGF0IHNob3VsZCBiZSBlbmFibGVk
IChpZiBhbnkpLgotICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IGN1cnJlbnRseUVuYWJs
ZWRUcmFja3M7CisgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBjdXJyZW50bHlFbmFibGVk
VHJhY2tzOwogICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRyYWNrVG9FbmFibGU7CiAgICAgUmVmUHRy
PFRleHRUcmFjaz4gZGVmYXVsdFRyYWNrOwogICAgIFJlZlB0cjxUZXh0VHJhY2s+IGZhbGxiYWNr
VHJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDY4ZWViNzY5
YmRjYmJmMGFmZTBmZDBkYWFhYzRmYjdkZTkxYWY5ZTguLjU4MmYwMzU4M2ViOWY0NGYzMjc4YWE5
N2E1Nzk5MTg3YjljYzQ4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CkBAIC0yNjYsNyArMjY2LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJB
Q0tfTUVOVSkKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRUZXh0VHJhY2soUGFzc1JlZlB0
cjxQbGF0Zm9ybVRleHRUcmFjaz4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0
cjxQbGF0Zm9ybVRleHRUcmFjaz4gPiBwbGF0Zm9ybVRleHRUcmFja3MoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiBwbGF0Zm9ybVRleHRU
cmFja3MoKSBPVkVSUklERTsKICAgICBQbGF0Zm9ybVRleHRUcmFja01lbnVJbnRlcmZhY2UqIHBs
YXRmb3JtVGV4dFRyYWNrTWVudSgpOwogI2VuZGlmCiAKQEAgLTI4MSw3ICsyODEsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRy
YWNrPiA+IHRyYWNrczsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiB0cmFja3M7
CiAgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+IHZpc2libGVUcmFjazsKICAgICAgICAgUmVmUHRy
PFRleHRUcmFjaz4gZGVmYXVsdFRyYWNrOwogICAgICAgICBHcm91cEtpbmQga2luZDsKQEAgLTc0
NCw3ICs3NDQsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxBdWRpb1RyYWNrTGlzdD4gbV9hdWRp
b1RyYWNrczsKICAgICBSZWZQdHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0VHJhY2tzOwogICAgIFJl
ZlB0cjxWaWRlb1RyYWNrTGlzdD4gbV92aWRlb1RyYWNrczsKLSAgICBWZWN0b3I8UmVmUHRyPFRl
eHRUcmFjaz4gPiBtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbjsKKyAgICBW
ZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVjdGlv
bkJlZ2FuOwogCiAgICAgQ3VlSW50ZXJ2YWxUcmVlIG1fY3VlVHJlZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggNjBhNjhkOWIzODFm
OWZkZWVjNmFhM2U1YjZjM2VlZmZiODU0Mzc2OS4uY2M4MjU5MWExZTI0MjM5YTkzMzU5ZTc5MzY4
M2RiMWMzZTYwNjM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ+ID4gSFRNTFBsdWdJbkltYWdlRWxlbWVudExpc3Q7Cit0eXBlZGVmIFZl
Y3RvcjxSZWZQdHI8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4+IEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnRMaXN0OwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBNaW1lVHlwZVRvTG9jYWxp
emVkU3RyaW5nTWFwOwogCiBzdGF0aWMgY29uc3QgaW50IHNpemluZ1RpbnlEaW1lbnNpb25UaHJl
c2hvbGQgPSA0MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5k
ZXggNTRiMmMxODJkYThlODQzZjFjNzU3MzQ2MjZiZGU0OTdlMGY5ZmEzNi4uZWFhNzZjN2EzZDk5
OTBjZTM2OGZiOWY2ZjM2YWU1MTUyNzYwYzdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAKQEAgLTQ3Miw3ICs0NzIsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpzZXRMZW5ndGgodW5zaWduZWQgbmV3TGVuLCBFeGNlcHRpb25Db2RlJiBlYykKIAogICAg
ICAgICAvLyBSZW1vdmluZyBjaGlsZHJlbiBmaXJlcyBtdXRhdGlvbiBldmVudHMsIHdoaWNoIG1p
Z2h0IG11dGF0ZSB0aGUgRE9NIGZ1cnRoZXIsIHNvIHdlIGZpcnN0IGNvcHkgb3V0IGEgbGlzdAog
ICAgICAgICAvLyBvZiBlbGVtZW50cyB0aGF0IHdlIGludGVuZCB0byByZW1vdmUgdGhlbiBhdHRl
bXB0IHRvIHJlbW92ZSB0aGVtIG9uZSBhdCBhIHRpbWUuCi0gICAgICAgIFZlY3RvcjxSZWZQdHI8
RWxlbWVudD4gPiBpdGVtc1RvUmVtb3ZlOworICAgICAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+
PiBpdGVtc1RvUmVtb3ZlOwogICAgICAgICBzaXplX3Qgb3B0aW9uSW5kZXggPSAwOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAg
ICBFbGVtZW50KiBpdGVtID0gaXRlbXNbaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJv
bGxlci5jcHAKaW5kZXggMzdjMGU2MDIyYWM2OWZjZmU0ODEzZTBmZTU5NzM2YzczM2RkMDhhMy4u
MjdkOGUzYTkyMmFlMzM3YjQ4Mzg3NzE3MjE2YTBlMzM4N2ZmMjZjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcApAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgTWVkaWFD
b250cm9sbGVyOjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQog
CiB2b2lkIE1lZGlhQ29udHJvbGxlcjo6YXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8TWVkaWFD
b250cm9sbGVyPiopCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBwZW5kaW5nRXZlbnRz
OworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+PiBwZW5kaW5nRXZlbnRzOwogCiAgICAgbV9wZW5k
aW5nRXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7CiAgICAgc2l6ZV90IGNvdW50ID0gcGVuZGlu
Z0V2ZW50cy5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaAppbmRleCAx
YWE5Y2NjMjY0YWJjNWUyNjFkOGE5ZmRiZWMxNGMzODBiNzQxZTU5Li40OGMzYzQ1MmQxNmNkYTU5
ODE1MmNlMjAxMmQ1ZTlkZTg1YWZmZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L01lZGlhQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9s
bGVyLmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9tdXRlZDsKICAg
ICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKICAgICBQbGF5YmFja1N0YXRlIG1fcGxheWJhY2tT
dGF0ZTsKLSAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fcGVuZGluZ0V2ZW50czsKKyAgICBW
ZWN0b3I8UmVmUHRyPEV2ZW50Pj4gbV9wZW5kaW5nRXZlbnRzOwogICAgIFRpbWVyPE1lZGlhQ29u
dHJvbGxlcj4gbV9hc3luY0V2ZW50VGltZXI7CiAgICAgbXV0YWJsZSBUaW1lcjxNZWRpYUNvbnRy
b2xsZXI+IG1fY2xlYXJQb3NpdGlvblRpbWVyOwogICAgIFN0cmluZyBtX21lZGlhR3JvdXA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFnbWVudFVSSVBhcnNlci5oCmluZGV4IDkzMmM3
OTQ5YTVmYTQ0YWJjOWQ5ZDNjYzE0YWNjOTg3YjRhNGZkNDEuLmNlMzIyYWZlZDY5MGI2MGM5M2Ez
OTBlODMzNTZiYTZhZTdkMDNiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFGcmFnbWVudFVSSVBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFGcmFn
bWVudFVSSVBhcnNlci5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgVGltZUZvcm1h
dCBtX3RpbWVGb3JtYXQ7CiAgICAgZG91YmxlIG1fc3RhcnRUaW1lOwogICAgIGRvdWJsZSBtX2Vu
ZFRpbWU7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4gPiBtX2ZyYWdtZW50
czsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gbV9mcmFnbWVudHM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1ZhbGlkYXRpb25NZXNzYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmgKaW5kZXggZTlhYWI0M2VjODNiY2YxODMxNDZhNjA4YTNjYTQ1ZTliNGZjOGNlMC4u
YzQwZmRjM2Q5YzYzZjdjMWYyOGY1Mzk0MzI2NTBiNzU0ZmYzMDEwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogCiAg
ICAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogbV9lbGVtZW50OwogICAgIFN0cmluZyBtX21lc3Nh
Z2U7Ci0gICAgT3duUHRyPFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiA+IG1fdGltZXI7CisgICAg
T3duUHRyPFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPj4gbV90aW1lcjsKICAgICBSZWZQdHI8SFRN
TEVsZW1lbnQ+IG1fYnViYmxlOwogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9tZXNzYWdlSGVh
ZGluZzsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fbWVzc2FnZUJvZHk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKaW5kZXggMjAwNzBmOTczMzZh
Y2U1Mjk5OWU2OTMzNTkyMTkyNzg2YTMxMjYwOS4uMWEwM2RiOWMzOWE1YmNlNDk5Yzg5MDRiMmQ5
NmM0MTgwNGNlY2VmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJh
bWVidWZmZXIuaApAQCAtMTIyLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgLy8gQ2hlY2sgaWYg
YSBuZXcgZHJhd0J1ZmZlcnMgY2FsbCBzaG91bGQgYmUgaXNzdWVkLiBUaGlzIGlzIGNhbGxlZCB3
aGVuIHdlIGFkZCBvciByZW1vdmUgYW4gYXR0YWNobWVudC4KICAgICB2b2lkIGRyYXdCdWZmZXJz
SWZOZWNlc3NhcnkoYm9vbCBmb3JjZSk7CiAKLSAgICB0eXBlZGVmIFdURjo6SGFzaE1hcDxHQzNE
ZW51bSwgUmVmUHRyPFdlYkdMQXR0YWNobWVudD4gPiBBdHRhY2htZW50TWFwOworICAgIHR5cGVk
ZWYgV1RGOjpIYXNoTWFwPEdDM0RlbnVtLCBSZWZQdHI8V2ViR0xBdHRhY2htZW50Pj4gQXR0YWNo
bWVudE1hcDsKIAogICAgIEF0dGFjaG1lbnRNYXAgbV9hdHRhY2htZW50czsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggYjQxOGExN2RkYmNmOTUxMzNiM2RiNWM3NWFkNmYwNGM1M2VjZTI3Ny4uNGFiNDZmNmE3Y2Fh
YjViMDM4OWRlYmZhMDVkNWUzYzMyNWRiYWQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yMjY1LDcgKzIyNjUs
NyBAQCBQYXNzUmVmUHRyPFdlYkdMQWN0aXZlSW5mbz4gV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRBY3RpdmVVbmlmb3JtKFdlYkdMUHJvZ3JhbQogICAgIHJldHVybiBXZWJHTEFjdGl2ZUluZm86
OmNyZWF0ZShpbmZvLm5hbWUsIGluZm8udHlwZSwgaW5mby5zaXplKTsKIH0KIAotYm9vbCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0dGFjaGVkU2hhZGVycyhXZWJHTFByb2dyYW0qIHByb2dy
YW0sIFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFkZXI+ID4mIHNoYWRlck9iamVjdHMsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0dGFjaGVkU2hhZGVy
cyhXZWJHTFByb2dyYW0qIHByb2dyYW0sIFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFkZXI+PiYgc2hh
ZGVyT2JqZWN0cywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsK
ICAgICBzaGFkZXJPYmplY3RzLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IGM1YjgzN2Q1OWNkMDJjZjkxZmJl
OTk0ZjJjOWQ3Y2E0NzNiMzBlYmUuLjdhZDE5NzQzNTkzNmY1YjQ0MzhiNzc3YmViMWM1YzExMTZi
ZWJmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5oCkBAIC0xNjEsNyArMTYxLDcgQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0
cjxXZWJHTEFjdGl2ZUluZm8+IGdldEFjdGl2ZUF0dHJpYihXZWJHTFByb2dyYW0qLCBHQzNEdWlu
dCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFBhc3NSZWZQdHI8V2ViR0xBY3RpdmVJbmZv
PiBnZXRBY3RpdmVVbmlmb3JtKFdlYkdMUHJvZ3JhbSosIEdDM0R1aW50IGluZGV4LCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgYm9vbCBnZXRBdHRhY2hlZFNoYWRlcnMoV2ViR0xQcm9ncmFtKiwgVmVj
dG9yPFJlZlB0cjxXZWJHTFNoYWRlcj4gPiYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBib29sIGdl
dEF0dGFjaGVkU2hhZGVycyhXZWJHTFByb2dyYW0qLCBWZWN0b3I8UmVmUHRyPFdlYkdMU2hhZGVy
Pj4mLCBFeGNlcHRpb25Db2RlJik7CiAgICAgR0MzRGludCBnZXRBdHRyaWJMb2NhdGlvbihXZWJH
TFByb2dyYW0qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogICAgIFdlYkdMR2V0SW5mbyBnZXRCdWZm
ZXJQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIFBhc3NSZWZQdHI8V2ViR0xDb250ZXh0QXR0cmlidXRlcz4gZ2V0Q29udGV4dEF0
dHJpYnV0ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
VGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKaW5k
ZXggZTkxNzFlNzY1YzAzODIyOTk2NTE5YTgzYTM0NzNiMmMzZjFlZDFkZi4uNTA2MDRkYWUwZWRj
MjM2NDY0ZmI1MTk2NzQ2ZDAxMTkwNzA4MWIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xUZXh0dXJlLmgKQEAgLTExOCw3ICsxMTgsNyBAQCBwcml2YXRlOgogICAgIEdDM0Rl
bnVtIG1fd3JhcFM7CiAgICAgR0MzRGVudW0gbV93cmFwVDsKIAotICAgIFZlY3RvcjxWZWN0b3I8
TGV2ZWxJbmZvPiA+IG1faW5mbzsKKyAgICBWZWN0b3I8VmVjdG9yPExldmVsSW5mbz4+IG1faW5m
bzsKIAogICAgIGJvb2wgbV9pc05QT1Q7CiAgICAgYm9vbCBtX2lzQ29tcGxldGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5jcHAKaW5k
ZXggNDJjYzAxMTA3NWEyNWVkM2E5YjNhY2FjOTM1OTlhM2FkMWEwNmJjNy4uYmE4MDRjNWVhNDZh
YjkzZjQ4OWRhM2ExZjA1NThjMjIxNzNiMDU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0JhY2tncm91bmRIVE1MUGFyc2VyLmNwcApAQCAtNzQsNyArNzQsNyBAQCBz
dGF0aWMgdm9pZCBjaGVja1RoYXRQcmVsb2Fkc0FyZVNhZmVUb1NlbmRUb0Fub3RoZXJUaHJlYWQo
Y29uc3QgUHJlbG9hZFJlcXVlc3RTdAogCiAjZW5kaWYKIAotQmFja2dyb3VuZEhUTUxQYXJzZXI6
OkJhY2tncm91bmRIVE1MUGFyc2VyKFBhc3NSZWZQdHI8V2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5k
SFRNTFBhcnNlcj4gPiByZWZlcmVuY2UsIE93blB0cjxDb25maWd1cmF0aW9uPiBjb25maWcpCitC
YWNrZ3JvdW5kSFRNTFBhcnNlcjo6QmFja2dyb3VuZEhUTUxQYXJzZXIoUGFzc1JlZlB0cjxXZWFr
UmVmZXJlbmNlPEJhY2tncm91bmRIVE1MUGFyc2VyPj4gcmVmZXJlbmNlLCBPd25QdHI8Q29uZmln
dXJhdGlvbj4gY29uZmlnKQogICAgIDogbV93ZWFrRmFjdG9yeShyZWZlcmVuY2UsIHRoaXMpCiAg
ICAgLCBtX3Rva2VuKGFkb3B0UHRyKG5ldyBIVE1MVG9rZW4pKQogICAgICwgbV90b2tlbml6ZXIo
SFRNTFRva2VuaXplcjo6Y3JlYXRlKGNvbmZpZy0+b3B0aW9ucykpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9CYWNrZ3JvdW5kSFRNTFBhcnNlci5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvQmFja2dyb3VuZEhUTUxQYXJzZXIuaAppbmRleCBmYTMyMDMxMzY3
M2Y2NDVmYTZjZjMzMzk1ZDM2NTk5ZWMxOWEzODU0Li45ZTAwOWFjYmFmZjdmMDEzMWNmZjMxOWFj
ODJmZjgzZWY5NDVmZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9C
YWNrZ3JvdW5kSFRNTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0Jh
Y2tncm91bmRIVE1MUGFyc2VyLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgICAgICBP
d25QdHI8VG9rZW5QcmVsb2FkU2Nhbm5lcj4gcHJlbG9hZFNjYW5uZXI7CiAgICAgfTsKIAotICAg
IHN0YXRpYyB2b2lkIGNyZWF0ZShQYXNzUmVmUHRyPFdlYWtSZWZlcmVuY2U8QmFja2dyb3VuZEhU
TUxQYXJzZXI+ID4gcmVmZXJlbmNlLCBPd25QdHI8Q29uZmlndXJhdGlvbj4gY29uZmlnKQorICAg
IHN0YXRpYyB2b2lkIGNyZWF0ZShQYXNzUmVmUHRyPFdlYWtSZWZlcmVuY2U8QmFja2dyb3VuZEhU
TUxQYXJzZXI+PiByZWZlcmVuY2UsIE93blB0cjxDb25maWd1cmF0aW9uPiBjb25maWcpCiAgICAg
ewogICAgICAgICBuZXcgQmFja2dyb3VuZEhUTUxQYXJzZXIocmVmZXJlbmNlLCBjb25maWcpOwog
ICAgICAgICAvLyBDYWxsZXIgbXVzdCBmcmVlIGJ5IGNhbGxpbmcgc3RvcCgpLgpAQCAtODAsNyAr
ODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3JjZVBsYWludGV4dEZvclRleHREb2N1bWVudCgp
OwogCiBwcml2YXRlOgotICAgIEJhY2tncm91bmRIVE1MUGFyc2VyKFBhc3NSZWZQdHI8V2Vha1Jl
ZmVyZW5jZTxCYWNrZ3JvdW5kSFRNTFBhcnNlcj4gPiwgT3duUHRyPENvbmZpZ3VyYXRpb24+KTsK
KyAgICBCYWNrZ3JvdW5kSFRNTFBhcnNlcihQYXNzUmVmUHRyPFdlYWtSZWZlcmVuY2U8QmFja2dy
b3VuZEhUTUxQYXJzZXI+PiwgT3duUHRyPENvbmZpZ3VyYXRpb24+KTsKIAogICAgIHZvaWQgbWFy
a0VuZE9mRmlsZSgpOwogICAgIHZvaWQgcHVtcFRva2VuaXplcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggYzc5NzcwYjE1
ZmI2NDVjYjhmZDRjM2E2M2FlY2EyODYwZjlkZGE2My4uYTgzZTA2YzFiYjQ4ZjM4NjhjMjMxOTRi
NGFjNjE3N2JkMzMxMzJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC02NjYsNyArNjY2LDcgQEAgdm9pZCBIVE1MRG9jdW1l
bnRQYXJzZXI6OnN0YXJ0QmFja2dyb3VuZFBhcnNlcigpCiAKICAgICBIVE1MSWRlbnRpZmllcjo6
aW5pdCgpOwogCi0gICAgUmVmUHRyPFdlYWtSZWZlcmVuY2U8QmFja2dyb3VuZEhUTUxQYXJzZXI+
ID4gcmVmZXJlbmNlID0gV2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5kSFRNTFBhcnNlcj46OmNyZWF0
ZVVuYm91bmQoKTsKKyAgICBSZWZQdHI8V2Vha1JlZmVyZW5jZTxCYWNrZ3JvdW5kSFRNTFBhcnNl
cj4+IHJlZmVyZW5jZSA9IFdlYWtSZWZlcmVuY2U8QmFja2dyb3VuZEhUTUxQYXJzZXI+OjpjcmVh
dGVVbmJvdW5kKCk7CiAgICAgbV9iYWNrZ3JvdW5kUGFyc2VyID0gV2Vha1B0cjxCYWNrZ3JvdW5k
SFRNTFBhcnNlcj4ocmVmZXJlbmNlKTsKIAogICAgIE93blB0cjxCYWNrZ3JvdW5kSFRNTFBhcnNl
cjo6Q29uZmlndXJhdGlvbj4gY29uZmlnID0gYWRvcHRQdHIobmV3IEJhY2tncm91bmRIVE1MUGFy
c2VyOjpDb25maWd1cmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TERvY3VtZW50UGFyc2VyLmgKaW5kZXggOGQxODNlMzQyYjMxZWMzMjRhN2I4YmZjNDFiNDliOTVj
Nzc0NDExZS4uZTQ3NjQxZjJkYzU3MWY4MWJlZjViZjQ1NDQ4MzU2MmFkMDEyOGI4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAgLTE5
OCw3ICsxOTgsNyBAQCBwcml2YXRlOgogICAgIC8vIEZJWE1FOiBtX2xhc3RDaHVua0JlZm9yZVNj
cmlwdCwgbV90b2tlbml6ZXIsIG1fdG9rZW4sIGFuZCBtX2lucHV0IHNob3VsZCBiZSBjb21iaW5l
ZCBpbnRvIGEgc2luZ2xlIHN0YXRlIG9iamVjdAogICAgIC8vIHNvIHRoZXkgY2FuIGJlIHNldCBh
bmQgY2xlYXJlZCB0b2dldGhlciBhbmQgcGFzc2VkIGJldHdlZW4gdGhyZWFkcyB0b2dldGhlci4K
ICAgICBPd25QdHI8UGFyc2VkQ2h1bms+IG1fbGFzdENodW5rQmVmb3JlU2NyaXB0OwotICAgIERl
cXVlPE93blB0cjxQYXJzZWRDaHVuaz4gPiBtX3NwZWN1bGF0aW9uczsKKyAgICBEZXF1ZTxPd25Q
dHI8UGFyc2VkQ2h1bms+PiBtX3NwZWN1bGF0aW9uczsKICAgICBXZWFrUHRyRmFjdG9yeTxIVE1M
RG9jdW1lbnRQYXJzZXI+IG1fd2Vha0ZhY3Rvcnk7CiAgICAgV2Vha1B0cjxCYWNrZ3JvdW5kSFRN
TFBhcnNlcj4gbV9iYWNrZ3JvdW5kUGFyc2VyOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5oCmluZGV4IDRhMmM0NjE5OWUy
NzFhOTE3MjhkMjlhMjk5MDVkOWJiM2U0NzVmZDcuLjIxM2NmOWQ1OGQwODEwODFmZGU5ZjIyYzc1
NjI0ZmJjODdlZGJiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxNZXRhQ2hhcnNldFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxNZXRhQ2hhcnNldFBhcnNlci5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcoKSB7IHJldHVybiBtX2VuY29kaW5nOyB9CiAKLSAg
ICB0eXBlZGVmIFZlY3RvcjxwYWlyPFN0cmluZywgU3RyaW5nPiA+IEF0dHJpYnV0ZUxpc3Q7Cisg
ICAgdHlwZWRlZiBWZWN0b3I8cGFpcjxTdHJpbmcsIFN0cmluZz4+IEF0dHJpYnV0ZUxpc3Q7CiAg
ICAgLy8gVGhlIHJldHVybmVkIGVuY29kaW5nIG1pZ2h0IG5vdCBiZSB2YWxpZC4KICAgICBzdGF0
aWMgVGV4dEVuY29kaW5nIGVuY29kaW5nRnJvbU1ldGFBdHRyaWJ1dGVzKGNvbnN0IEF0dHJpYnV0
ZUxpc3QmCiApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2Fk
U2Nhbm5lci5jcHAKaW5kZXggNjQyMzU5Mzk4OTkzNWM4YjZmMzkzOWIyNWYxZmFhMmYwODU1YWZl
Ni4uOTg1OTMzYjk5MGNmNjdhNjNmYTM5MmMxODQzZmRiZTczZTg0NzFlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC0zMDEs
MjAgKzMwMSwyMCBAQCB2b2lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnJld2luZFRvKFRva2VuUHJl
bG9hZFNjYW5uZXJDaGVja3BvaW50IGNoZWNrcG9pbnRJbmRleAogICAgIG1fY2hlY2twb2ludHMu
Y2xlYXIoKTsKIH0KIAotdm9pZCBUb2tlblByZWxvYWRTY2FubmVyOjpzY2FuKGNvbnN0IEhUTUxU
b2tlbiYgdG9rZW4sIFZlY3RvcjxPd25QdHI8UHJlbG9hZFJlcXVlc3Q+ID4mIHJlcXVlc3RzKQor
dm9pZCBUb2tlblByZWxvYWRTY2FubmVyOjpzY2FuKGNvbnN0IEhUTUxUb2tlbiYgdG9rZW4sIFZl
Y3RvcjxPd25QdHI8UHJlbG9hZFJlcXVlc3Q+PiYgcmVxdWVzdHMpCiB7CiAgICAgc2NhbkNvbW1v
bih0b2tlbiwgcmVxdWVzdHMpOwogfQogCiAjaWYgRU5BQkxFKFRIUkVBREVEX0hUTUxfUEFSU0VS
KQotdm9pZCBUb2tlblByZWxvYWRTY2FubmVyOjpzY2FuKGNvbnN0IENvbXBhY3RIVE1MVG9rZW4m
IHRva2VuLCBWZWN0b3I8T3duUHRyPFByZWxvYWRSZXF1ZXN0PiA+JiByZXF1ZXN0cykKK3ZvaWQg
VG9rZW5QcmVsb2FkU2Nhbm5lcjo6c2Nhbihjb25zdCBDb21wYWN0SFRNTFRva2VuJiB0b2tlbiwg
VmVjdG9yPE93blB0cjxQcmVsb2FkUmVxdWVzdD4+JiByZXF1ZXN0cykKIHsKICAgICBzY2FuQ29t
bW9uKHRva2VuLCByZXF1ZXN0cyk7CiB9CiAjZW5kaWYKIAogdGVtcGxhdGU8dHlwZW5hbWUgVG9r
ZW4+Ci12b2lkIFRva2VuUHJlbG9hZFNjYW5uZXI6OnNjYW5Db21tb24oY29uc3QgVG9rZW4mIHRv
a2VuLCBWZWN0b3I8T3duUHRyPFByZWxvYWRSZXF1ZXN0PiA+JiByZXF1ZXN0cykKK3ZvaWQgVG9r
ZW5QcmVsb2FkU2Nhbm5lcjo6c2NhbkNvbW1vbihjb25zdCBUb2tlbiYgdG9rZW4sIFZlY3RvcjxP
d25QdHI8UHJlbG9hZFJlcXVlc3Q+PiYgcmVxdWVzdHMpCiB7CiAgICAgc3dpdGNoICh0b2tlbi50
eXBlKCkpIHsKICAgICBjYXNlIEhUTUxUb2tlbjo6Q2hhcmFjdGVyOiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5oCmluZGV4IDZlYjgw
MTZiNzE0ZjdhYWFjMmM0N2QwZTJlYjAwZmJjYjVkNmJhNDIuLmZmYjY0ZTU3MDA2MDcyOWE0MmY0
MzlmNTMyZmY1NmI2NjY2OWQ1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2Nyb3NzT3JpZ2luTW9kZUFsbG93c0Nvb2tpZXM7CiB9OwogCi10eXBlZGVmIFZl
Y3RvcjxPd25QdHI8UHJlbG9hZFJlcXVlc3Q+ID4gUHJlbG9hZFJlcXVlc3RTdHJlYW07Cit0eXBl
ZGVmIFZlY3RvcjxPd25QdHI8UHJlbG9hZFJlcXVlc3Q+PiBQcmVsb2FkUmVxdWVzdFN0cmVhbTsK
IAogY2xhc3MgSFRNTFJlc291cmNlUHJlbG9hZGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShIVE1MUmVzb3VyY2VQcmVsb2FkZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaAppbmRleCAzMjFlNmUxYTVmMzBlOGQxNTRh
OTAzMDc2MWU2MTE3MWVhNzlkNTYxLi4xOWI3NWQ3YzAxMmM4N2Y1MDM5MWJmYWFhMGM1Mzg4OTU1
MjU3MTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oCkBAIC0xMTMs
NyArMTEzLDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX2RlY29kZWRVUkw7CiAgICAgU3Ry
aW5nIG1fZGVjb2RlZEhUVFBCb2R5OwotICAgIE93blB0cjxTdWZmaXhUcmVlPEFTQ0lJQ29kZWJv
b2s+ID4gbV9kZWNvZGVkSFRUUEJvZHlTdWZmaXhUcmVlOworICAgIE93blB0cjxTdWZmaXhUcmVl
PEFTQ0lJQ29kZWJvb2s+PiBtX2RlY29kZWRIVFRQQm9keVN1ZmZpeFRyZWU7CiAKICAgICBTdGF0
ZSBtX3N0YXRlOwogICAgIFN0cmluZyBtX2NhY2hlZERlY29kZWRTbmlwcGV0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKaW5kZXggMDI3
MDkzZGJjNzVmYmZhOGM2OTJjYjMyMmIxNTgyYWY1ODgyYWFjYy4uYWI3MWE2NzI1Yzk0ZTQzNTY1
ZGU0ZDgzMjM1MmY0N2IwN2M3YzdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHZvaWQgQ29udGVu
dERpc3RyaWJ1dG9yOjppbnZhbGlkYXRlSW5zZXJ0aW9uUG9pbnRMaXN0KCkKICAgICBtX2luc2Vy
dGlvblBvaW50TGlzdC5jbGVhcigpOwogfQogCi1jb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlv
blBvaW50PiA+JiBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZUluc2VydGlvblBvaW50TGlzdChT
aGFkb3dSb290KiBzaGFkb3dSb290KQorY29uc3QgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2lu
dD4+JiBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZUluc2VydGlvblBvaW50TGlzdChTaGFkb3dS
b290KiBzaGFkb3dSb290KQogewogICAgIGlmIChtX2luc2VydGlvblBvaW50TGlzdElzVmFsaWQp
CiAgICAgICAgIHJldHVybiBtX2luc2VydGlvblBvaW50TGlzdDsKQEAgLTc5LDcgKzc5LDcgQEAg
dm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGUoRWxlbWVudCogaG9zdCkKICAgICBt
X3ZhbGlkaXR5ID0gVmFsaWQ7CiAKICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGhvc3QtPnNo
YWRvd1Jvb3QoKSkgewotICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50
PiA+JiBpbnNlcnRpb25Qb2ludHMgPSBlbnN1cmVJbnNlcnRpb25Qb2ludExpc3Qocm9vdCk7Cisg
ICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+PiYgaW5zZXJ0aW9uUG9p
bnRzID0gZW5zdXJlSW5zZXJ0aW9uUG9pbnRMaXN0KHJvb3QpOwogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGluc2VydGlvblBvaW50cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAg
SW5zZXJ0aW9uUG9pbnQqIHBvaW50ID0gaW5zZXJ0aW9uUG9pbnRzW2ldLmdldCgpOwogICAgICAg
ICAgICAgaWYgKCFwb2ludC0+aXNBY3RpdmUoKSkKQEAgLTk2LDcgKzk2LDcgQEAgYm9vbCBDb250
ZW50RGlzdHJpYnV0b3I6OmludmFsaWRhdGUoRWxlbWVudCogaG9zdCkKICAgICBib29sIG5lZWRz
UmVhdHRhY2ggPSAobV92YWxpZGl0eSA9PSBVbmRldGVybWluZWQpIHx8ICFtX25vZGVUb0luc2Vy
dGlvblBvaW50LmlzRW1wdHkoKTsKIAogICAgIGlmIChTaGFkb3dSb290KiByb290ID0gaG9zdC0+
c2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8SW5zZXJ0aW9uUG9p
bnQ+ID4mIGluc2VydGlvblBvaW50cyA9IGVuc3VyZUluc2VydGlvblBvaW50TGlzdChyb290KTsK
KyAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4+JiBpbnNlcnRpb25Q
b2ludHMgPSBlbnN1cmVJbnNlcnRpb25Qb2ludExpc3Qocm9vdCk7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaW5zZXJ0aW9uUG9pbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAg
ICBuZWVkc1JlYXR0YWNoID0gdHJ1ZTsKICAgICAgICAgICAgIGluc2VydGlvblBvaW50c1tpXS0+
Y2xlYXJEaXN0cmlidXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0NvbnRlbnREaXN0cmlidXRvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29u
dGVudERpc3RyaWJ1dG9yLmgKaW5kZXggOGNkYjNmM2Y3ODdlYjk3MDkyNDdjMzQ4Yjk5ZDRiYzcx
MGFhYzg4Ni4uZjBlZDhhZjBkYmViODAyMWVjOTJkM2E1YzM5YzAxY2I0NGJkZTAyMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmgKQEAgLTcx
LDcgKzcxLDcgQEAgcHVibGljOgogICAgIGJvb2wgbmVlZHNEaXN0cmlidXRpb24oKSBjb25zdDsK
IAogcHJpdmF0ZToKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50PiA+JiBl
bnN1cmVJbnNlcnRpb25Qb2ludExpc3QoU2hhZG93Um9vdCopOworICAgIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+PiYgZW5zdXJlSW5zZXJ0aW9uUG9pbnRMaXN0KFNoYWRvd1Jv
b3QqKTsKIAogICAgIGJvb2wgaW52YWxpZGF0ZShFbGVtZW50KiBob3N0KTsKIApAQCAtNzksOCAr
NzksOCBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdmFs
aWRpdHkgPT0gVmFsaWQ7IH0KICAgICBib29sIG5lZWRzSW52YWxpZGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWxpZGl0eSAhPSBJbnZhbGlkYXRlZDsgfQogCi0gICAgVmVjdG9yPFJlZlB0cjxJ
bnNlcnRpb25Qb2ludD4gPiBtX2luc2VydGlvblBvaW50TGlzdDsKLSAgICBIYXNoTWFwPGNvbnN0
IE5vZGUqLCBSZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+ID4gbV9ub2RlVG9JbnNlcnRpb25Qb2ludDsK
KyAgICBWZWN0b3I8UmVmUHRyPEluc2VydGlvblBvaW50Pj4gbV9pbnNlcnRpb25Qb2ludExpc3Q7
CisgICAgSGFzaE1hcDxjb25zdCBOb2RlKiwgUmVmUHRyPEluc2VydGlvblBvaW50Pj4gbV9ub2Rl
VG9JbnNlcnRpb25Qb2ludDsKICAgICBib29sIG1faW5zZXJ0aW9uUG9pbnRMaXN0SXNWYWxpZDsK
ICAgICB1bnNpZ25lZCBtX3ZhbGlkaXR5IDogMjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXggMzdlZTE0NDA0NGVl
NDgwMDgxY2Y2MDkxYTUyNWIyZTIxOWE4N2EwNi4uOWYwMjFjYjkzMDcyYzJjNmU5ZDM2M2I1ZjU3
ZDUyODdhODkyM2Q3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtODk1LDcgKzg5NSw3IEBAIHZvaWQgTWVkaWFDb250
cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpyZWJ1aWxkVHJhY2tMaXN0TWVudSgp
CiAgICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogICAgIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXMqIGNhcHRpb25QcmVmZXJlbmNlcyA9IGRvY3VtZW50KCkucGFnZSgp
LT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpOwotICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRy
YWNrPiA+IHRyYWNrc0Zvck1lbnUgPSBjYXB0aW9uUHJlZmVyZW5jZXMtPnNvcnRlZFRyYWNrTGlz
dEZvck1lbnUodHJhY2tMaXN0KTsKKyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IHRyYWNr
c0Zvck1lbnUgPSBjYXB0aW9uUHJlZmVyZW5jZXMtPnNvcnRlZFRyYWNrTGlzdEZvck1lbnUodHJh
Y2tMaXN0KTsKIAogICAgIFJlZlB0cjxFbGVtZW50PiBjYXB0aW9uc0hlYWRlciA9IGRvY3VtZW50
KCkuY3JlYXRlRWxlbWVudChoM1RhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgY2FwdGlv
bnNIZWFkZXItPmFwcGVuZENoaWxkKGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUodGV4dFRyYWNr
U3VidGl0bGVzVGV4dCgpKSk7CkBAIC0xMjQyLDcgKzEyNDIsNyBAQCB2b2lkIE1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogICAgIEhUTUxWaWRl
b0VsZW1lbnQqIHZpZGVvID0gdG9IVE1MVmlkZW9FbGVtZW50KG1lZGlhRWxlbWVudCk7CiAKICAg
ICAvLyAzLiBMZXQgb3V0cHV0IGJlIGFuIGVtcHR5IGxpc3Qgb2YgYWJzb2x1dGVseSBwb3NpdGlv
bmVkIENTUyBibG9jayBib3hlcy4KLSAgICBWZWN0b3I8UmVmUHRyPEhUTUxEaXZFbGVtZW50PiA+
IG91dHB1dDsKKyAgICBWZWN0b3I8UmVmUHRyPEhUTUxEaXZFbGVtZW50Pj4gb3V0cHV0OwogCiAg
ICAgLy8gNC4gSWYgdGhlIHVzZXIgYWdlbnQgaXMgZXhwb3NpbmcgYSB1c2VyIGludGVyZmFjZSBm
b3IgdmlkZW8sIGFkZCB0bwogICAgIC8vIG91dHB1dCBvbmUgb3IgbW9yZSBjb21wbGV0ZWx5IHRy
YW5zcGFyZW50IHBvc2l0aW9uZWQgQ1NTIGJsb2NrIGJveGVzIHRoYXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCmluZGV4IDVhZTg2ZTE1
ZDYwNjJiYzRhYWQ4ZGQ3Njk2OTQ4ZWMxODJmMjQ3OTEuLmM4ZDA4MmNlN2YwMjM3NWU1OWRhMDk3
NTY5MzE5NjA2ZDQ5MzJmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuaApAQCAtMzE2LDEwICszMTYsMTAgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIE9WRVJS
SURFOwogCi0gICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID4gVHJhY2tNZW51SXRl
bXM7CisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+PiBUcmFja01lbnVJdGVtczsK
ICAgICBUcmFja01lbnVJdGVtcyBtX21lbnVJdGVtczsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxFbGVtZW50PiwgUmVmUHRyPFRleHRUcmFjaz4g
PiBNZW51SXRlbVRvVHJhY2tNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxFbGVtZW50
PiwgUmVmUHRyPFRleHRUcmFjaz4+IE1lbnVJdGVtVG9UcmFja01hcDsKICAgICBNZW51SXRlbVRv
VHJhY2tNYXAgbV9tZW51VG9UcmFja01hcDsKICNlbmRpZgogICAgIE1lZGlhQ29udHJvbHMqIG1f
Y29udHJvbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdl
bmVyaWNUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJp
Y1RleHRUcmFjay5oCmluZGV4IGIyZjFhYjMzOTUwOGRiMjg2ZDI0MjQxY2I1YjdiMDBlNDY3MmI5
YmEuLmY0M2Q4YTgzNzRkYmRjMDBmYWE0YzI5MWEyZWIxYzM4NThlYzIyMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kR2VuZXJpY1RleHRUcmFjay5oCkBAIC01
Miw4ICs1Miw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZUdlbmVyaWM+
IGZpbmQoR2VuZXJpY0N1ZURhdGEqKTsKIAogcHJpdmF0ZToKLSAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPFRleHRUcmFja0N1ZT4sIFJlZlB0cjxHZW5lcmljQ3VlRGF0YT4gPiBDdWVUb0RhdGFN
YXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxHZW5lcmljQ3VlRGF0YT4sIFJlZlB0cjxU
ZXh0VHJhY2tDdWVHZW5lcmljPiA+IEN1ZURhdGFUb0N1ZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFRleHRUcmFja0N1ZT4sIFJlZlB0cjxHZW5lcmljQ3VlRGF0YT4+IEN1ZVRvRGF0
YU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPEdlbmVyaWNDdWVEYXRhPiwgUmVmUHRy
PFRleHRUcmFja0N1ZUdlbmVyaWM+PiBDdWVEYXRhVG9DdWVNYXA7CiAKICAgICBDdWVUb0RhdGFN
YXAgbV9jdWVUb0RhdGFNYXA7CiAgICAgQ3VlRGF0YVRvQ3VlTWFwIG1fZGF0YVRvQ3VlTWFwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJh
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2su
Y3BwCmluZGV4IGQ1NjkwZWYyZmJhMGYyMmZhOTI4ZDdhYTA5NDEzNTZiYjRiZmZkODguLjI4YTc5
YWQ0Mzg0Y2M5NWYzODAzYjM1MTY3MDNmMTI1NTJhNWNmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5jcHAKQEAgLTYwLDcgKzYw
LDcgQEAgdm9pZCBJbmJhbmRXZWJWVFRUZXh0VHJhY2s6OnBhcnNlV2ViVlRUQ3VlRGF0YShJbmJh
bmRUZXh0VHJhY2tQcml2YXRlKiB0cmFja1ByaXYKIAogdm9pZCBJbmJhbmRXZWJWVFRUZXh0VHJh
Y2s6Om5ld0N1ZXNQYXJzZWQoKQogewotICAgIFZlY3RvcjxSZWZQdHI8V2ViVlRUQ3VlRGF0YT4g
PiBjdWVzOworICAgIFZlY3RvcjxSZWZQdHI8V2ViVlRUQ3VlRGF0YT4+IGN1ZXM7CiAgICAgbV93
ZWJWVFRQYXJzZXItPmdldE5ld0N1ZXMoY3Vlcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjdWVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJWVFRDdWVEYXRhPiBjdWVE
YXRhID0gY3Vlc1tpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9h
ZGFibGVUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRl
eHRUcmFjay5jcHAKaW5kZXggY2VkNmM4NjJlODAzMThhM2E5MDBjNTcyNTQyNzk5NGQ0NDZlMzc4
ZC4uN2U2Y2EyOTlhOGM3OTM0YWJkNmYwZTU4MzgzZTg2MTg1MzEyM2NlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5jcHAKQEAgLTEwMyw3ICsx
MDMsNyBAQCB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKFRleHRUcmFj
a0xvYWRlciogbG9hZGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQobG9hZGVyLCBtX2xvYWRlciA9
PSBsb2FkZXIpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4gbmV3Q3VlczsK
KyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4+IG5ld0N1ZXM7CiAgICAgbV9sb2FkZXIt
PmdldE5ld0N1ZXMobmV3Q3Vlcyk7CiAKICAgICBpZiAoIW1fY3VlcykKQEAgLTEzOCw3ICsxMzgs
NyBAQCB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpuZXdSZWdpb25zQXZhaWxhYmxlKFRleHRUcmFj
a0xvYWRlciogbG9hZGVyKQogewogICAgIEFTU0VSVF9VTlVTRUQobG9hZGVyLCBtX2xvYWRlciA9
PSBsb2FkZXIpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tSZWdpb24+ID4gbmV3UmVn
aW9uczsKKyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFja1JlZ2lvbj4+IG5ld1JlZ2lvbnM7CiAg
ICAgbV9sb2FkZXItPmdldE5ld1JlZ2lvbnMobmV3UmVnaW9ucyk7CiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG5ld1JlZ2lvbnMuc2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmgKaW5kZXggMjk3Nzg3ZjJlNjhiM2JmN2U5M2Y3
MjJlYjExZGE4ODc2MmJkYzRhOS4uODQ3OGZhMzFmNWIzMmU3MDI0NWY2OGY3NDdkNDg3MTYwNWYx
OThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVMaXN0LmgK
QEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyKCk7CiAgICAgdm9pZCBp
bnZhbGlkYXRlQ3VlSW5kZXhlcyhzaXplX3QpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJh
Y2tDdWU+ID4gbV9saXN0OworICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPj4gbV9saXN0
OwogICAgIFJlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBtX2FjdGl2ZUN1ZXM7CiAKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAppbmRleCBkNzI1NzZjMWYx
OGIwMzhhMDNjNzcwYjFjMWZlMjk5ZjgxMTYxYTE5Li5hNDNjODJlOTc4MTc1MTIwMzE0MjIyMjU2
ZDBkMWIxZjU2MzYzYmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0xpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBUZXh0VHJhY2sqIFRleHRUcmFja0xpc3Q6Oml0
ZW0odW5zaWduZWQgaW5kZXgpCiAKIHZvaWQgVGV4dFRyYWNrTGlzdDo6aW52YWxpZGF0ZVRyYWNr
SW5kZXhlc0FmdGVyVHJhY2soVGV4dFRyYWNrKiB0cmFjaykKIHsKLSAgICBWZWN0b3I8UmVmUHRy
PFRyYWNrQmFzZT4gPiogdHJhY2tzID0gMDsKKyAgICBWZWN0b3I8UmVmUHRyPFRyYWNrQmFzZT4+
KiB0cmFja3MgPSAwOwogCiAgICAgaWYgKHRyYWNrLT50cmFja1R5cGUoKSA9PSBUZXh0VHJhY2s6
OlRyYWNrRWxlbWVudCkgewogICAgICAgICB0cmFja3MgPSAmbV9lbGVtZW50VHJhY2tzOwpAQCAt
MTgzLDcgKzE4Myw3IEBAIHZvaWQgVGV4dFRyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8VGV4
dFRyYWNrPiBwcnBUcmFjaykKIHZvaWQgVGV4dFRyYWNrTGlzdDo6cmVtb3ZlKFRyYWNrQmFzZSog
dHJhY2spCiB7CiAgICAgVGV4dFRyYWNrKiB0ZXh0VHJhY2sgPSB0b1RleHRUcmFjayh0cmFjayk7
Ci0gICAgVmVjdG9yPFJlZlB0cjxUcmFja0Jhc2U+ID4qIHRyYWNrcyA9IDA7CisgICAgVmVjdG9y
PFJlZlB0cjxUcmFja0Jhc2U+PiogdHJhY2tzID0gMDsKICAgICBpZiAodGV4dFRyYWNrLT50cmFj
a1R5cGUoKSA9PSBUZXh0VHJhY2s6OlRyYWNrRWxlbWVudCkKICAgICAgICAgdHJhY2tzID0gJm1f
ZWxlbWVudFRyYWNrczsKICAgICBlbHNlIGlmICh0ZXh0VHJhY2stPnRyYWNrVHlwZSgpID09IFRl
eHRUcmFjazo6QWRkVHJhY2spCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBUZXh0VHJhY2tMaXN0
OjpyZW1vdmUoVHJhY2tCYXNlKiB0cmFjaykKIAogYm9vbCBUZXh0VHJhY2tMaXN0Ojpjb250YWlu
cyhUcmFja0Jhc2UqIHRyYWNrKSBjb25zdAogewotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8VHJh
Y2tCYXNlPiA+KiB0cmFja3MgPSAwOworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8VHJhY2tCYXNl
Pj4qIHRyYWNrcyA9IDA7CiAgICAgVGV4dFRyYWNrOjpUZXh0VHJhY2tUeXBlIHR5cGUgPSB0b1Rl
eHRUcmFjayh0cmFjayktPnRyYWNrVHlwZSgpOwogICAgIGlmICh0eXBlID09IFRleHRUcmFjazo6
VHJhY2tFbGVtZW50KQogICAgICAgICB0cmFja3MgPSAmbV9lbGVtZW50VHJhY2tzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAppbmRleCA0ODJlZTNlN2U0YmRmMTlj
NDE3MzJhMGQxMDhmN2Y4Y2ZjNjQxNTA3Li40NWE5NTdkOTcwMjJlYWMyNjQ4MTUxMDI3OWYwODk2
OWRmNDY3N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0xpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaApA
QCAtNTksOCArNTksOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpbnZhbGlkYXRlVHJhY2tJbmRl
eGVzQWZ0ZXJUcmFjayhUZXh0VHJhY2sqKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8VHJhY2tCYXNl
PiA+IG1fYWRkVHJhY2tUcmFja3M7Ci0gICAgVmVjdG9yPFJlZlB0cjxUcmFja0Jhc2U+ID4gbV9l
bGVtZW50VHJhY2tzOworICAgIFZlY3RvcjxSZWZQdHI8VHJhY2tCYXNlPj4gbV9hZGRUcmFja1Ry
YWNrczsKKyAgICBWZWN0b3I8UmVmUHRyPFRyYWNrQmFzZT4+IG1fZWxlbWVudFRyYWNrczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Ry
YWNrTGlzdEJhc2UuY3BwCmluZGV4IDIyOTA5N2YxOTgwNmNmZWMyMzMyYzlhNjc3N2QxNzE1NDFk
YTQ2OWYuLmI1MDhkYmVkOGI4OTVmMjA5ZjQxNDI4OGYxMmI5NzhhZDQyZDJkNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcApAQCAtMTcwLDcgKzE3MCw3
IEBAIHZvaWQgVHJhY2tMaXN0QmFzZTo6c2NoZWR1bGVDaGFuZ2VFdmVudCgpCiAKIHZvaWQgVHJh
Y2tMaXN0QmFzZTo6YXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8VHJhY2tMaXN0QmFzZT4qKQog
ewotICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gcGVuZGluZ0V2ZW50czsKKyAgICBWZWN0b3I8
UmVmUHRyPEV2ZW50Pj4gcGVuZGluZ0V2ZW50czsKIAogICAgICsrbV9kaXNwYXRjaGluZ0V2ZW50
czsKICAgICBtX3BlbmRpbmdFdmVudHMuc3dhcChwZW5kaW5nRXZlbnRzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKaW5kZXggOTJhYTU2ODdmNDdmZWJjNTlkOTdm
YzhkZTllNmM1MDBjZTRhNzgwMi4uYjcyYmMyNDIyYjNhZjA2ZWJjYjhhYTM4ZTg2MzFiYzhkOTgw
MjlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKQEAgLTc0
LDcgKzc0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2NoZWR1bGVBZGRUcmFja0V2ZW50KFBh
c3NSZWZQdHI8VHJhY2tCYXNlPik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbW92ZVRyYWNrRXZlbnQo
UGFzc1JlZlB0cjxUcmFja0Jhc2U+KTsKIAotICAgIFZlY3RvcjxSZWZQdHI8VHJhY2tCYXNlPiA+
IG1faW5iYW5kVHJhY2tzOworICAgIFZlY3RvcjxSZWZQdHI8VHJhY2tCYXNlPj4gbV9pbmJhbmRU
cmFja3M7CiAKIHByaXZhdGU6CiAKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CiAgICAgSFRNTE1lZGlhRWxlbWVudCogbV9l
bGVtZW50OwogCi0gICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX3BlbmRpbmdFdmVudHM7Cisg
ICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+IG1fcGVuZGluZ0V2ZW50czsKICAgICBUaW1lcjxUcmFj
a0xpc3RCYXNlPiBtX3BlbmRpbmdFdmVudFRpbWVyOwogCiAgICAgaW50IG1fZGlzcGF0Y2hpbmdF
dmVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXgg
ZTQ0YTEzYjUwNDk2NjRmY2NiZjA4OTQyMDVmZGNmNWMxYmFmNWJjMS4uODIwZWY1NjczMWViN2Zl
ZDE5NDNjOWM1YzljMjQ3MTgyNzI0NzExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
V2ViVlRUUGFyc2VyLmNwcApAQCAtMTI2LDE0ICsxMjYsMTQgQEAgV2ViVlRUUGFyc2VyOjpXZWJW
VFRQYXJzZXIoV2ViVlRUUGFyc2VyQ2xpZW50KiBjbGllbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGMKIHsKIH0KIAotdm9pZCBXZWJWVFRQYXJzZXI6OmdldE5ld0N1ZXMoVmVjdG9yPFJlZlB0
cjxXZWJWVFRDdWVEYXRhPiA+JiBvdXRwdXRDdWVzKQordm9pZCBXZWJWVFRQYXJzZXI6OmdldE5l
d0N1ZXMoVmVjdG9yPFJlZlB0cjxXZWJWVFRDdWVEYXRhPj4mIG91dHB1dEN1ZXMpCiB7CiAgICAg
b3V0cHV0Q3VlcyA9IG1fY3VlbGlzdDsKICAgICBtX2N1ZWxpc3QuY2xlYXIoKTsKIH0KIAogI2lm
IEVOQUJMRShXRUJWVFRfUkVHSU9OUykKLXZvaWQgV2ViVlRUUGFyc2VyOjpnZXROZXdSZWdpb25z
KFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrUmVnaW9uPiA+JiBvdXRwdXRSZWdpb25zKQordm9pZCBX
ZWJWVFRQYXJzZXI6OmdldE5ld1JlZ2lvbnMoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tSZWdpb24+
PiYgb3V0cHV0UmVnaW9ucykKIHsKICAgICBvdXRwdXRSZWdpb25zID0gbV9yZWdpb25MaXN0Owog
ICAgIG1fcmVnaW9uTGlzdC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRU
UGFyc2VyLmgKaW5kZXggYzA5YmI0MzJkMmEzZGQ3NjNmZDMxM2ExZDNlNTZhNWFhOTE3ZWJhNS4u
MDhjMDdiM2Y0ZDMyZTY0Mjc2MDQ2NTI5YWZiZjA4Njc0YzJjYTNiOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oCkBAIC0xNDYsOSArMTQ2LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgcGFyc2VCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwog
CiAgICAgLy8gVHJhbnNmZXJzIG93bmVyc2hpcCBvZiBsYXN0IHBhcnNlZCBjdWVzIHRvIGNhbGxl
ci4KLSAgICB2b2lkIGdldE5ld0N1ZXMoVmVjdG9yPFJlZlB0cjxXZWJWVFRDdWVEYXRhPiA+Jik7
CisgICAgdm9pZCBnZXROZXdDdWVzKFZlY3RvcjxSZWZQdHI8V2ViVlRUQ3VlRGF0YT4+Jik7CiAj
aWYgRU5BQkxFKFdFQlZUVF9SRUdJT05TKQotICAgIHZvaWQgZ2V0TmV3UmVnaW9ucyhWZWN0b3I8
UmVmUHRyPFRleHRUcmFja1JlZ2lvbj4gPiYpOworICAgIHZvaWQgZ2V0TmV3UmVnaW9ucyhWZWN0
b3I8UmVmUHRyPFRleHRUcmFja1JlZ2lvbj4+Jik7CiAjZW5kaWYKIAogICAgIFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRG9jdW1lbnRGcmFnbWVudEZyb21DdWVUZXh0KGNvbnN0
IFN0cmluZyYpOwpAQCAtMTk5LDEwICsxOTksMTAgQEAgcHJpdmF0ZToKICAgICBXZWJWVFRQYXJz
ZXJDbGllbnQqIG1fY2xpZW50OwogCiAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gbV9sYW5ndWFn
ZVN0YWNrOwotICAgIFZlY3RvcjxSZWZQdHI8V2ViVlRUQ3VlRGF0YT4gPiBtX2N1ZWxpc3Q7Cisg
ICAgVmVjdG9yPFJlZlB0cjxXZWJWVFRDdWVEYXRhPj4gbV9jdWVsaXN0OwogCiAjaWYgRU5BQkxF
KFdFQlZUVF9SRUdJT05TKQotICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrUmVnaW9uPiA+IG1f
cmVnaW9uTGlzdDsKKyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFja1JlZ2lvbj4+IG1fcmVnaW9u
TGlzdDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvbnNvbGVNZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVz
c2FnZS5jcHAKaW5kZXggM2EyM2NmYWZiNTMyMDU3ODJhZWM1M2M3M2M3ZTg1NjFkZWIzMDhlYy4u
OTEzNGI3ZjMyY2VmZGE0MTg5OTNjMTU3ZWNkOTE3NDJhMmIwZmU0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9p
ZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZDo6Q29uc29s
ZSogZnJvbnRlbmQsIEluamVjdGUKICAgICBpZiAobV9hcmd1bWVudHMgJiYgbV9hcmd1bWVudHMt
PmFyZ3VtZW50Q291bnQoKSkgewogICAgICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCA9IGluamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3IobV9hcmd1bWVudHMt
Pmdsb2JhbFN0YXRlKCkpOwogICAgICAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUo
KSkgewotICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiA+IGpzb25BcmdzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+OjpjcmVhdGUoKTsKKyAgICAgICAgICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4+IGpzb25BcmdzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGlmIChtX3R5cGUgPT0gVGFi
bGVNZXNzYWdlVHlwZSAmJiBnZW5lcmF0ZVByZXZpZXcgJiYgbV9hcmd1bWVudHMtPmFyZ3VtZW50
Q291bnQoKSkgewogICAgICAgICAgICAgICAgIFNjcmlwdFZhbHVlIHRhYmxlID0gbV9hcmd1bWVu
dHMtPmFyZ3VtZW50QXQoMCk7CiAgICAgICAgICAgICAgICAgU2NyaXB0VmFsdWUgY29sdW1ucyA9
IG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkgPiAxID8gbV9hcmd1bWVudHMtPmFyZ3VtZW50
QXQoMSkgOiBTY3JpcHRWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbnRlbnRTZWFyY2hVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
dGVudFNlYXJjaFV0aWxzLmNwcAppbmRleCA5NTFkZGQ2ODk1YTQ4MDM0ZGRjNWE2MDk0NzcwZGQ5
YzYzNjBkNjkwLi41NDU3ZTVkOWFhMTg0Y2JlZWQ0N2JjZGUyNTExYjlkNGYwMGY5N2I2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxzLmNwcApAQCAt
ODAsMTMgKzgwLDEzIEBAIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHNpemVf
dCBvZmZzZXQsIGNvbnN0IFZlY3RvcjxzaXplX3Q+JiBsaW5lRW5kCiAgICAgcmV0dXJuIFRleHRQ
b3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tWmVyb0Jhc2VkSW50KGxpbmVJbmRleCksIE9yZGlu
YWxOdW1iZXI6OmZyb21aZXJvQmFzZWRJbnQoY29sdW1uKSk7CiB9CiAKLXN0YXRpYyBWZWN0b3I8
cGFpcjxpbnQsIFN0cmluZz4gPiBnZXRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXNCeUxpbmVzKGNv
bnN0IFJlZ3VsYXJFeHByZXNzaW9uJiByZWdleCwgY29uc3QgU3RyaW5nJiB0ZXh0KQorc3RhdGlj
IFZlY3RvcjxwYWlyPGludCwgU3RyaW5nPj4gZ2V0UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlM
aW5lcyhjb25zdCBSZWd1bGFyRXhwcmVzc2lvbiYgcmVnZXgsIGNvbnN0IFN0cmluZyYgdGV4dCkK
IHsKLSAgICBWZWN0b3I8cGFpcjxpbnQsIFN0cmluZz4gPiByZXN1bHQ7CisgICAgVmVjdG9yPHBh
aXI8aW50LCBTdHJpbmc+PiByZXN1bHQ7CiAgICAgaWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogCi0gICAgT3duUHRyPFZlY3RvcjxzaXplX3Q+ID4gZW5kaW5ncyhs
aW5lRW5kaW5ncyh0ZXh0KSk7CisgICAgT3duUHRyPFZlY3RvcjxzaXplX3Q+PiBlbmRpbmdzKGxp
bmVFbmRpbmdzKHRleHQpKTsKICAgICBzaXplX3Qgc2l6ZSA9IGVuZGluZ3MtPnNpemUoKTsKICAg
ICB1bnNpZ25lZCBzdGFydCA9IDA7CiAgICAgZm9yIChzaXplX3QgbGluZU51bWJlciA9IDA7IGxp
bmVOdW1iZXIgPCBzaXplOyArK2xpbmVOdW1iZXIpIHsKQEAgLTEwNCw5ICsxMDQsOSBAQCBzdGF0
aWMgVmVjdG9yPHBhaXI8aW50LCBTdHJpbmc+ID4gZ2V0UmVndWxhckV4cHJlc3Npb25NYXRjaGVz
QnlMaW5lcyhjb25zdCBSZWd1bAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3NPd25QdHI8
VmVjdG9yPHNpemVfdD4gPiBsaW5lRW5kaW5ncyhjb25zdCBTdHJpbmcmIHRleHQpCitQYXNzT3du
UHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncyhjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0g
ICAgT3duUHRyPFZlY3RvcjxzaXplX3Q+ID4gcmVzdWx0KGFkb3B0UHRyKG5ldyBWZWN0b3I8c2l6
ZV90PigpKSk7CisgICAgT3duUHRyPFZlY3RvcjxzaXplX3Q+PiByZXN1bHQoYWRvcHRQdHIobmV3
IFZlY3RvcjxzaXplX3Q+KCkpKTsKIAogICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKICAgICB3aGls
ZSAoc3RhcnQgPCB0ZXh0Lmxlbmd0aCgpKSB7CkBAIC0xNTUsMTQgKzE1NSwxNCBAQCBpbnQgY291
bnRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXMoY29uc3QgUmVndWxhckV4cHJlc3Npb24mIHJlZ2V4
LCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPiA+IHNlYXJjaElu
VGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25z
dCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCkKK1Bhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4+IHNlYXJjaElu
VGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25z
dCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCkKIHsKLSAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hNYXRjaD4gPiByZXN1
bHQgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPjo6
Y3JlYXRlKCk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFn
ZTo6U2VhcmNoTWF0Y2g+PiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OlBhZ2U6OlNlYXJjaE1hdGNoPjo6Y3JlYXRlKCk7CiAKICAgICBSZWd1bGFyRXhwcmVzc2lvbiBy
ZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsczo6Y3JlYXRlU2VhcmNoUmVnZXgocXVlcnksIGNhc2VT
ZW5zaXRpdmUsIGlzUmVnZXgpOwotICAgIFZlY3RvcjxwYWlyPGludCwgU3RyaW5nPiA+IG1hdGNo
ZXMgPSBnZXRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXNCeUxpbmVzKHJlZ2V4LCB0ZXh0KTsKKyAg
ICBWZWN0b3I8cGFpcjxpbnQsIFN0cmluZz4+IG1hdGNoZXMgPSBnZXRSZWd1bGFyRXhwcmVzc2lv
bk1hdGNoZXNCeUxpbmVzKHJlZ2V4LCB0ZXh0KTsKIAotICAgIGZvciAoVmVjdG9yPHBhaXI8aW50
LCBTdHJpbmc+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWF0Y2hlcy5iZWdpbigpOyBpdCAhPSBt
YXRjaGVzLmVuZCgpOyArK2l0KQorICAgIGZvciAoVmVjdG9yPHBhaXI8aW50LCBTdHJpbmc+Pjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXRjaGVzLmJlZ2luKCk7IGl0ICE9IG1hdGNoZXMuZW5kKCk7
ICsraXQpCiAgICAgICAgIHJlc3VsdC0+YWRkSXRlbShidWlsZE9iamVjdEZvclNlYXJjaE1hdGNo
KGl0LT5maXJzdCwgaXQtPnNlY29uZCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbHMuaAppbmRleCBkMGJjYjkyM2U1
YWRiM2VhOTZhMDFlYmRkZDcwYTVmNGY3Y2E3NTViLi42MGFkNjc4YTRjM2IxNDQxNTkxYWQxM2Q4
NTM4YTcxYWQ5MTUxNmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29u
dGVudFNlYXJjaFV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnRlbnRT
ZWFyY2hVdGlscy5oCkBAIC00NSw5ICs0NSw5IEBAIG5hbWVzcGFjZSBDb250ZW50U2VhcmNoVXRp
bHMgewogCiBSZWd1bGFyRXhwcmVzc2lvbiBjcmVhdGVTZWFyY2hSZWdleChjb25zdCBTdHJpbmcm
IHF1ZXJ5LCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdleCk7CiBpbnQgY291bnRSZWd1
bGFyRXhwcmVzc2lvbk1hdGNoZXMoY29uc3QgUmVndWxhckV4cHJlc3Npb24mLCBjb25zdCBTdHJp
bmcmKTsKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpT
ZWFyY2hNYXRjaD4gPiBzZWFyY2hJblRleHRCeUxpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlz
UmVnZXgpOworUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6
OlNlYXJjaE1hdGNoPj4gc2VhcmNoSW5UZXh0QnlMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wgY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCBp
c1JlZ2V4KTsKIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHNpemVfdCBvZmZz
ZXQsIGNvbnN0IFZlY3RvcjxzaXplX3Q+JiBsaW5lRW5kaW5ncyk7Ci1QYXNzT3duUHRyPFZlY3Rv
cjxzaXplX3Q+ID4gbGluZUVuZGluZ3MoY29uc3QgU3RyaW5nJik7CitQYXNzT3duUHRyPFZlY3Rv
cjxzaXplX3Q+PiBsaW5lRW5kaW5ncyhjb25zdCBTdHJpbmcmKTsKIAogU3RyaW5nIGZpbmRTY3Jp
cHRTb3VyY2VVUkwoY29uc3QgU3RyaW5nJiBjb250ZW50KTsKIFN0cmluZyBmaW5kU2NyaXB0U291
cmNlTWFwVVJMKGNvbnN0IFN0cmluZyYgY29udGVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCmluZGV4IDNjZTIzNGYyMDY1ZDk5ZDdjZDQ1MGZhMjU0
NmExYWE1ZGUxZTY4ZjMuLjQ0NzlkOGFiMTVhZmVhYWRiYTQ2ZGRhNzgxZjYyYzJhNjM4YTgxNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCkBAIC02
OCw3ICs2OCw3IEBAIHN0cnVjdCBET01QYXRjaFN1cHBvcnQ6OkRpZ2VzdCB7CiAgICAgU3RyaW5n
IG1fc2hhMTsKICAgICBTdHJpbmcgbV9hdHRyc1NIQTE7CiAgICAgTm9kZSogbV9ub2RlOwotICAg
IFZlY3RvcjxPd25QdHI8RGlnZXN0PiA+IG1fY2hpbGRyZW47CisgICAgVmVjdG9yPE93blB0cjxE
aWdlc3Q+PiBtX2NoaWxkcmVuOwogfTsKIAogdm9pZCBET01QYXRjaFN1cHBvcnQ6OnBhdGNoRG9j
dW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG1hcmt1cCkKQEAgLTE0Myw3
ICsxNDMsNyBAQCBOb2RlKiBET01QYXRjaFN1cHBvcnQ6OnBhdGNoTm9kZShOb2RlJiBub2RlLCBj
b25zdCBTdHJpbmcmIG1hcmt1cCwgRXhjZXB0aW9uQ29kZQogCiAgICAgLy8gQ29tcG9zZSB0aGUg
bmV3IGxpc3QuCiAgICAgU3RyaW5nIG1hcmt1cENvcHkgPSBtYXJrdXAubG93ZXIoKTsKLSAgICBW
ZWN0b3I8T3duUHRyPERpZ2VzdD4gPiBuZXdMaXN0OworICAgIFZlY3RvcjxPd25QdHI8RGlnZXN0
Pj4gbmV3TGlzdDsKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gcGFyZW50Tm9kZS0+Zmlyc3RDaGls
ZCgpOyBjaGlsZCAhPSAmbm9kZTsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAg
ICAgbmV3TGlzdC5hcHBlbmQoY3JlYXRlRGlnZXN0KGNoaWxkLCAwKSk7CiAgICAgZm9yIChOb2Rl
KiBjaGlsZCA9IGZyYWdtZW50LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpKSB7CkBAIC0yMTQsNyArMjE0LDcgQEAgYm9vbCBET01QYXRjaFN1cHBvcnQ6
OmlubmVyUGF0Y2hOb2RlKERpZ2VzdCogb2xkRGlnZXN0LCBEaWdlc3QqIG5ld0RpZ2VzdCwgRXhj
ZXAKIH0KIAogcGFpcjxET01QYXRjaFN1cHBvcnQ6OlJlc3VsdE1hcCwgRE9NUGF0Y2hTdXBwb3J0
OjpSZXN1bHRNYXA+Ci1ET01QYXRjaFN1cHBvcnQ6OmRpZmYoY29uc3QgVmVjdG9yPE93blB0cjxE
aWdlc3Q+ID4mIG9sZExpc3QsIGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0PiA+JiBuZXdMaXN0
KQorRE9NUGF0Y2hTdXBwb3J0OjpkaWZmKGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0Pj4mIG9s
ZExpc3QsIGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0Pj4mIG5ld0xpc3QpCiB7CiAgICAgUmVz
dWx0TWFwIG5ld01hcChuZXdMaXN0LnNpemUoKSk7CiAgICAgUmVzdWx0TWFwIG9sZE1hcChvbGRM
aXN0LnNpemUoKSk7CkBAIC0yNDUsNyArMjQ1LDcgQEAgRE9NUGF0Y2hTdXBwb3J0OjpkaWZmKGNv
bnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0PiA+JiBvbGRMaXN0LCBjb25zdCBWZWN0b3I8T3duUHQK
ICAgICAgICAgbmV3TWFwW25ld0luZGV4XS5zZWNvbmQgPSBvbGRJbmRleDsKICAgICB9CiAKLSAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8c2l6ZV90PiA+IERpZmZUYWJsZTsKKyAg
ICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8c2l6ZV90Pj4gRGlmZlRhYmxlOwogICAg
IERpZmZUYWJsZSBuZXdUYWJsZTsKICAgICBEaWZmVGFibGUgb2xkVGFibGU7CiAKQEAgLTMwMSw3
ICszMDEsNyBAQCBET01QYXRjaFN1cHBvcnQ6OmRpZmYoY29uc3QgVmVjdG9yPE93blB0cjxEaWdl
c3Q+ID4mIG9sZExpc3QsIGNvbnN0IFZlY3RvcjxPd25QdAogICAgIHJldHVybiBtYWtlX3BhaXIo
b2xkTWFwLCBuZXdNYXApOwogfQogCi1ib29sIERPTVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaENo
aWxkcmVuKENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFZlY3RvcjxPd25QdHI8RGln
ZXN0PiA+JiBvbGRMaXN0LCBjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4gPiYgbmV3TGlzdCwg
RXhjZXB0aW9uQ29kZSYgZWMpCitib29sIERPTVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaENoaWxk
cmVuKENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0
Pj4mIG9sZExpc3QsIGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0Pj4mIG5ld0xpc3QsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIHBhaXI8UmVzdWx0TWFwLCBSZXN1bHRNYXA+IHJlc3VsdE1h
cHMgPSBkaWZmKG9sZExpc3QsIG5ld0xpc3QpOwogICAgIFJlc3VsdE1hcCYgb2xkTWFwID0gcmVz
dWx0TWFwcy5maXJzdDsKQEAgLTMxMiw3ICszMTIsNyBAQCBib29sIERPTVBhdGNoU3VwcG9ydDo6
aW5uZXJQYXRjaENoaWxkcmVuKENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFZlY3Rv
cgogCiAgICAgLy8gMS4gRmlyc3Qgc3RyaXAgZXZlcnl0aGluZyBleGNlcHQgZm9yIHRoZSBub2Rl
cyB0aGF0IHJldGFpbi4gQ29sbGVjdCBwZW5kaW5nIG1lcmdlcy4KICAgICBIYXNoTWFwPERpZ2Vz
dCosIERpZ2VzdCo+IG1lcmdlczsKLSAgICBIYXNoU2V0PHNpemVfdCwgV1RGOjpJbnRIYXNoPHNp
emVfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8c2l6ZV90PiA+IHVzZWRO
ZXdPcmRpbmFsczsKKyAgICBIYXNoU2V0PHNpemVfdCwgV1RGOjpJbnRIYXNoPHNpemVfdD4sIFdU
Rjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8c2l6ZV90Pj4gdXNlZE5ld09yZGluYWxz
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2xkTGlzdC5zaXplKCk7ICsraSkgewogICAg
ICAgICBpZiAob2xkTWFwW2ldLmZpcnN0KSB7CiAgICAgICAgICAgICBpZiAoIXVzZWROZXdPcmRp
bmFscy5jb250YWlucyhvbGRNYXBbaV0uc2Vjb25kKSkgewpAQCAtMzUxLDcgKzM1MSw3IEBAIGJv
b2wgRE9NUGF0Y2hTdXBwb3J0Ojppbm5lclBhdGNoQ2hpbGRyZW4oQ29udGFpbmVyTm9kZSogcGFy
ZW50Tm9kZSwgY29uc3QgVmVjdG9yCiAgICAgfQogCiAgICAgLy8gTWFyayByZXRhaW5lZCBub2Rl
cyBhcyB1c2VkLCBkbyBub3QgcmV1c2Ugbm9kZSBtb3JlIHRoYW4gb25jZS4KLSAgICBIYXNoU2V0
PHNpemVfdCwgV1RGOjpJbnRIYXNoPHNpemVfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8c2l6ZV90PiA+ICB1c2VkT2xkT3JkaW5hbHM7CisgICAgSGFzaFNldDxzaXplX3Qs
IFdURjo6SW50SGFzaDxzaXplX3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHNpemVfdD4+ICB1c2VkT2xkT3JkaW5hbHM7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
ZXdMaXN0LnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmICghbmV3TWFwW2ldLmZpcnN0KQogICAg
ICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NUGF0Y2hTdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBw
b3J0LmgKaW5kZXggN2E4MjJkZGMxMjlmMWM1ZjBlNjg5NDYyNThhZDU2YzlkZDc2ZjBhNC4uNWEy
Y2EwNTU4ZjRjYjQ3ZThmNzBjOWExOTY4OTAwY2IwNTU4NjFhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuaApAQCAtNjEsMTIgKzYxLDEyIEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgRGlnZXN0OwotICAgIHR5cGVkZWYgVmVjdG9yPHBhaXI8
RGlnZXN0Kiwgc2l6ZV90PiA+IFJlc3VsdE1hcDsKKyAgICB0eXBlZGVmIFZlY3RvcjxwYWlyPERp
Z2VzdCosIHNpemVfdD4+IFJlc3VsdE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBE
aWdlc3QqPiBVbnVzZWROb2Rlc01hcDsKIAogICAgIGJvb2wgaW5uZXJQYXRjaE5vZGUoRGlnZXN0
KiBvbGROb2RlLCBEaWdlc3QqIG5ld05vZGUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGQ6OnBh
aXI8UmVzdWx0TWFwLCBSZXN1bHRNYXA+IGRpZmYoY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+
ID4mIG9sZENoaWxkcmVuLCBjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4gPiYgbmV3Q2hpbGRy
ZW4pOwotICAgIGJvb2wgaW5uZXJQYXRjaENoaWxkcmVuKENvbnRhaW5lck5vZGUqLCBjb25zdCBW
ZWN0b3I8T3duUHRyPERpZ2VzdD4gPiYgb2xkQ2hpbGRyZW4sIGNvbnN0IFZlY3RvcjxPd25QdHI8
RGlnZXN0PiA+JiBuZXdDaGlsZHJlbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0ZDo6cGFpcjxS
ZXN1bHRNYXAsIFJlc3VsdE1hcD4gZGlmZihjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBv
bGRDaGlsZHJlbiwgY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiYgbmV3Q2hpbGRyZW4pOwor
ICAgIGJvb2wgaW5uZXJQYXRjaENoaWxkcmVuKENvbnRhaW5lck5vZGUqLCBjb25zdCBWZWN0b3I8
T3duUHRyPERpZ2VzdD4+JiBvbGRDaGlsZHJlbiwgY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+
PiYgbmV3Q2hpbGRyZW4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzT3duUHRyPERpZ2VzdD4g
Y3JlYXRlRGlnZXN0KE5vZGUqLCBVbnVzZWROb2Rlc01hcCopOwogICAgIGJvb2wgaW5zZXJ0QmVm
b3JlQW5kTWFya0FzVXNlZChDb250YWluZXJOb2RlKiwgRGlnZXN0KiwgTm9kZSogYW5jaG9yLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCByZW1vdmVDaGlsZEFuZE1vdmVUb05ldyhEaWdlc3Qq
LCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0LmNwcAppbmRleCBjMjU1NjM4MWMzMmIyMmY0NjA5MzA0Y2RhZmE1NDFjNjAwMTczYTA0Li43
N2Y3ODBjMWE2OGFmZWU1NTNiOTYzNDMzZDJhZDA0OWZkYjVkOTg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lk
IEluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcmCiAgICAgKnJlc3VsdCA9IEZ1bmN0aW9uRGV0YWlsczo6cnVudGlt
ZUNhc3QocmVzdWx0VmFsdWUpOwogfQogCi12b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0
aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9v
bCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8QXJyYXk8UHJvcGVydHlEZXNjcmlwdG9yPiA+KiBwcm9w
ZXJ0aWVzKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywg
UmVmUHRyPEFycmF5PFByb3BlcnR5RGVzY3JpcHRvcj4+KiBwcm9wZXJ0aWVzKQogewogICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0UHJv
cGVydGllcyIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKQEAgLTEy
NSw3ICsxMjUsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplYwogICAgICpwcm9wZXJ0aWVzID0g
QXJyYXk8UHJvcGVydHlEZXNjcmlwdG9yPjo6cnVudGltZUNhc3QocmVzdWx0KTsKIH0KIAotdm9p
ZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgUmVmUHRyPEFycmF5PEludGVybmFsUHJv
cGVydHlEZXNjcmlwdG9yPiA+KiBwcm9wZXJ0aWVzKQordm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0
SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBvYmplY3RJZCwgUmVmUHRyPEFycmF5PEludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4qIHBy
b3BlcnRpZXMpCiB7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2Ny
aXB0T2JqZWN0KCksICJnZXRJbnRlcm5hbFByb3BlcnRpZXMiKTsKICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChvYmplY3RJZCk7CkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBJbmplY3RlZFNj
cmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW4KICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBSZWZQdHI8QXJyYXk8SW50ZXJuYWxQcm9wZXJ0eURlc2Ny
aXB0b3I+ID4gYXJyYXkgPSBBcnJheTxJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj46OnJ1bnRp
bWVDYXN0KHJlc3VsdCk7CisgICAgUmVmUHRyPEFycmF5PEludGVybmFsUHJvcGVydHlEZXNjcmlw
dG9yPj4gYXJyYXkgPSBBcnJheTxJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj46OnJ1bnRpbWVD
YXN0KHJlc3VsdCk7CiAgICAgaWYgKGFycmF5LT5sZW5ndGgoKSA+IDApCiAgICAgICAgICpwcm9w
ZXJ0aWVzID0gYXJyYXk7CiB9CkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dDo6cmVsZWFzZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogfQogCiAjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCi1QYXNzUmVmUHRyPEFycmF5PENhbGxGcmFtZT4gPiBJbmpl
Y3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMoY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMp
CitQYXNzUmVmUHRyPEFycmF5PENhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZy
YW1lcyhjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcykKIHsKICAgICBBU1NFUlQoIWhhc05v
VmFsdWUoKSk7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0
T2JqZWN0KCksICJ3cmFwQ2FsbEZyYW1lcyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHQuaAppbmRleCBlMDJkYmM5YWU2ZjJkYWEyMjRhZDQzYWNiZjk5NmU2MGZlMjk5
ZmJmLi45YjZhZDJmOGNlZDdiM2Q0M2VmNDE4OTgyYjFmZmQ2NmUyMzE5MGJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaApAQCAtODEsMTMgKzgxLDEzIEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CiAgICAgdm9pZCBn
ZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQs
IFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4qIHJlc3VsdCk7
Ci0gICAgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RJZCwgYm9vbCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+ID4qIHJlc3VsdCk7Ci0gICAgdm9p
ZCBnZXRJbnRlcm5hbFByb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVj
dElkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRl
cm5hbFByb3BlcnR5RGVzY3JpcHRvcj4gPiogcmVzdWx0KTsKKyAgICB2b2lkIGdldFByb3BlcnRp
ZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3BlcnRp
ZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlByb3Bl
cnR5RGVzY3JpcHRvcj4+KiByZXN1bHQpOworICAgIHZvaWQgZ2V0SW50ZXJuYWxQcm9wZXJ0aWVz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+
PiogcmVzdWx0KTsKICAgICBOb2RlKiBub2RlRm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYmpl
Y3RJZCk7CiAgICAgdm9pZCByZWxlYXNlT2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpOwog
CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+ID4gd3JhcENhbGxG
cmFtZXMoY29uc3QgU2NyaXB0VmFsdWUmKTsKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IHdyYXBDYWxsRnJhbWVzKGNv
bnN0IFNjcmlwdFZhbHVlJik7CiAjZW5kaWYKIAogICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gd3JhcE9iamVjdChjb25zdCBTY3JpcHRWYWx1ZSYsIGNv
bnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBib29sIGdlbmVyYXRlUHJldmlldyA9IGZhbHNlKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhv
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaAppbmRl
eCAzMDM0YzVlYjMwZDY4ZTNjMzRiZDY4NjliOTQ1YjI2ZTM4OTNhYjI5Li5iOTExZWQwZjI5YTdi
MmE3ZTY5YWRjY2U4MjVjMTgwMzQ4NGM5ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KiBtX2RlYnVnZ2VyQWdlbnQ7CiAjZW5kaWYKLSAgICBWZWN0b3I8T3duUHRyPEluc3BlY3RhYmxl
T2JqZWN0PiA+IG1faW5zcGVjdGVkT2JqZWN0czsKKyAgICBWZWN0b3I8T3duUHRyPEluc3BlY3Rh
YmxlT2JqZWN0Pj4gbV9pbnNwZWN0ZWRPYmplY3RzOwogICAgIE93blB0cjxJbnNwZWN0YWJsZU9i
amVjdD4gbV9kZWZhdWx0SW5zcGVjdGFibGVPYmplY3Q7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAppbmRleCBkNDA5YTk3MWQ1OGJjMjRlMGEzMWY4
OTgxZWZhYmY0MTFlYWNmZDIzLi42ZTk4ZTgyZGYzNDJjZjk1YWE3N2RjNzFmNTcxMWFiOTNhNjQ5
NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKQEAg
LTEyNCw3ICsxMjQsNyBAQCB2b2lkIEluc3BlY3RvckFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcq
KQogICAgIGlmIChtX3BlbmRpbmdJbnNwZWN0RGF0YS5maXJzdCkKICAgICAgICAgaW5zcGVjdCht
X3BlbmRpbmdJbnNwZWN0RGF0YS5maXJzdCwgbV9wZW5kaW5nSW5zcGVjdERhdGEuc2Vjb25kKTsK
IAotICAgIGZvciAoVmVjdG9yPHBhaXI8bG9uZywgU3RyaW5nPiA+OjppdGVyYXRvciBpdCA9IG1f
cGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzLmJlZ2luKCk7IG1fZnJvbnRlbmQgJiYgaXQgIT0g
bV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHMuZW5kKCk7ICsraXQpCisgICAgZm9yIChWZWN0
b3I8cGFpcjxsb25nLCBTdHJpbmc+Pjo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdFdmFsdWF0ZVRl
c3RDb21tYW5kcy5iZWdpbigpOyBtX2Zyb250ZW5kICYmIGl0ICE9IG1fcGVuZGluZ0V2YWx1YXRl
VGVzdENvbW1hbmRzLmVuZCgpOyArK2l0KQogICAgICAgICBtX2Zyb250ZW5kLT5pbnNwZWN0b3Io
KS0+ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChzdGF0aWNfY2FzdDxpbnQ+KCgqaXQpLmZpcnN0
KSwgKCppdCkuc2Vjb25kKTsKICAgICBtX3BlbmRpbmdFdmFsdWF0ZVRlc3RDb21tYW5kcy5jbGVh
cigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcAppbmRleCBhNGQxNWZiZWJiZWRhYzc5MjIwZmIz
ZTViYzIzZGY2NDlhYjcyODIxLi43MjA4ZmUwN2RlNmFhYjhjNDRjYTNmYmUyYzQzZjI2MGI4MWM1
OWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OjpuZXR3b3JrU3RhdGVDaGFuZ2VkKCkKICAgICBt
X2Zyb250ZW5kLT5uZXR3b3JrU3RhdGVVcGRhdGVkKGlzTm93T25saW5lKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJy
b3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNh
dGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4gPiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcq
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hl
OjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpCiB7CiAgICAgcmVzdWx0ID0gVHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVz
dD46OmNyZWF0ZSgpOwogCkBAIC0xNzIsOSArMTcyLDkgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZT4gSW5zcGVjdG9yQXBwbGljYXRp
b24KICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZT4gPiBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ6OmJ1aWxkQXJyYXlGb3JBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VzKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUlu
Zm9MaXN0JiBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VzKQorUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZT4+IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6YnVpbGRBcnJheUZvckFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMoY29uc3QgQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291
cmNlSW5mb0xpc3QmIGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMpCiB7Ci0gICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRp
b25DYWNoZVJlc291cmNlPiA+IHJlc291cmNlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPjo6Y3JlYXRl
KCk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXBwbGljYXRp
b25DYWNoZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj4gcmVzb3VyY2VzID0gVHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U+OjpjcmVhdGUoKTsKIAogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJj
ZUluZm9MaXN0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBhcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Vz
LmVuZCgpOwogICAgIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0Ojpjb25z
dF9pdGVyYXRvciBpdCA9IGFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZXMuYmVnaW4oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQuaAppbmRleCAzM2I4OWMyOGVmM2RmYWM3Zjg2ODUxOWUwNDQzNDI5OThiZTY0YTIw
Li5iMDU4OWNiOTdhNjJmNDU5NzE1OTE1NWVlMzAxMzQxY2Q1OWFjMTNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5oCkBAIC02OSwxNCArNjksMTQgQEAgcHVibGljOgogCiAgICAgLy8gQXBwbGljYXRpb25D
YWNoZSBBUEkgZm9yIEluc3BlY3RvckZyb250ZW5kCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShF
cnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVy
cm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXBwbGlj
YXRpb25DYWNoZTo6RnJhbWVXaXRoTWFuaWZlc3Q+ID4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2
b2lkIGdldEZyYW1lc1dpdGhNYW5pZmVzdHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVz
dD4+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRNYW5pZmVzdEZvckZyYW1lKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBTdHJpbmcqIG1hbmlmZXN0VVJMKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBmcmFtZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2Fj
aGU6OkFwcGxpY2F0aW9uQ2FjaGU+Jik7CiAKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JDb21wb3NpdGVT
dGF0ZSosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+IGJ1aWxkT2JqZWN0Rm9yQXBwbGlj
YXRpb25DYWNoZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYs
IGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8mKTsKLSAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlPiA+IGJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2VzKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0Jik7CisgICAg
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2Fj
aGU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IGJ1aWxkQXJyYXlGb3JBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VzKGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm9MaXN0
Jik7CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25DYWNoZTo6QXBwbGlj
YXRpb25DYWNoZVJlc291cmNlPiBidWlsZE9iamVjdEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvJik7CiAKICAgICBEb2N1
bWVudExvYWRlciogYXNzZXJ0RnJhbWVXaXRoRG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcqLCBT
dHJpbmcgZnJhbWVJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFzZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFz
ZUFnZW50LmgKaW5kZXggNjY1ZmRkNjc1OTdlNjViYzkzZmNmYzZjNGUwMmRkOTg2ZmIzODA2Mi4u
NjZmMzlkNjNlNjQwZWZhNDZkMWU0MzY4ZDA1M2MzNGM1YmE5NzZjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhc2VBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYXNlQWdlbnQuaApAQCAtNzYsNyArNzYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaXNjYXJkQWdlbnRzKCk7CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9y
PE93blB0cjxJbnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZhY2U+ID4gbV9hZ2VudHM7CisgICAgVmVj
dG9yPE93blB0cjxJbnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZhY2U+PiBtX2FnZW50czsKIH07CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50LmNwcAppbmRleCAzN2NhNmRhNmE3MWEwNzlhNjg4ZWMyNWQ0YjQ1MmZjZDQ2
ODY4NDQ0Li4yNmI0Mjc0ZjM0ZTg0Y2YyYTNmN2E2ZmZkN2JkNmY0NDk4MmY3ZTk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTIxMyw3
ICsyMTMsNyBAQCBpbmxpbmUgdm9pZCBTZWxlY3RvclByb2ZpbGU6OmNvbW1pdFNlbGVjdG9yVGlt
ZSgpCiAKIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiBTZWxl
Y3RvclByb2ZpbGU6OnRvSW5zcGVjdG9yT2JqZWN0KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZUVudHJ5PiA+
IHNlbGVjdG9yUHJvZmlsZURhdGEgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6U2VsZWN0b3JQcm9maWxlRW50cnk+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZUVudHJ5Pj4gc2VsZWN0
b3JQcm9maWxlRGF0YSA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxl
Y3RvclByb2ZpbGVFbnRyeT46OmNyZWF0ZSgpOwogICAgIGZvciAoUnVsZU1hdGNoaW5nU3RhdHNN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9ydWxlTWF0Y2hpbmdTdGF0cy5iZWdpbigpOyBpdCAh
PSBtX3J1bGVNYXRjaGluZ1N0YXRzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIFJlZlB0cjxUeXBl
QnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRyeT4gZW50cnkgPSBUeXBlQnVpbGRlcjo6
Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRyeTo6Y3JlYXRlKCkKICAgICAgICAgICAgIC5zZXRTZWxl
Y3RvcihpdC0+dmFsdWUuc2VsZWN0b3IpCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBVcGRhdGVS
ZWdpb25MYXlvdXRUYXNrOjpyZXNldCgpCiB2b2lkIFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6Om9u
VGltZXIoVGltZXI8VXBkYXRlUmVnaW9uTGF5b3V0VGFzaz4qKQogewogICAgIC8vIFRoZSB0aW1l
ciBpcyBzdG9wcGVkIG9uIG1fY3NzQWdlbnQgZGVzdHJ1Y3Rpb24sIHNvIHRoaXMgbWV0aG9kIHdp
bGwgbmV2ZXIgYmUgY2FsbGVkIGFmdGVyIG1fY3NzQWdlbnQgaGFzIGJlZW4gZGVzdHJveWVkLgot
ICAgIFZlY3RvcjxzdGQ6OnBhaXI8V2ViS2l0TmFtZWRGbG93KiwgaW50PiA+IG5hbWVkRmxvd3M7
CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxXZWJLaXROYW1lZEZsb3cqLCBpbnQ+PiBuYW1lZEZsb3dz
OwogCiAgICAgZm9yIChIYXNoTWFwPFdlYktpdE5hbWVkRmxvdyosIGludD46Oml0ZXJhdG9yIGl0
ID0gbV9uYW1lZEZsb3dzLmJlZ2luKCksIGVuZCA9IG1fbmFtZWRGbG93cy5lbmQoKTsgaXQgIT0g
ZW5kOyArK2l0KQogICAgICAgICBuYW1lZEZsb3dzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpdC0+
a2V5LCBpdC0+dmFsdWUpKTsKQEAgLTgwMyw3ICs4MDMsNyBAQCBib29sIEluc3BlY3RvckNTU0Fn
ZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1
ZG9UeQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hlZFN0eWxl
c0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBib29s
KiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4gPiYgbWF0Y2hlZENT
U1J1bGVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVk
b0lkTWF0Y2hlcz4gPiYgcHNldWRvSWRNYXRjaGVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+ID4mIGluaGVyaXRlZEVudHJp
ZXMpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IGJvb2wqIGluY2x1ZGVQc2V1
ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYg
cHNldWRvSWRNYXRjaGVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpD
U1M6OkluaGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmllcykKIHsKICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlm
ICghZWxlbWVudCkKQEAgLTgxMSwxNCArODExLDE0IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5v
CiAKICAgICAvLyBNYXRjaGVkIHJ1bGVzLgogICAgIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIgPSBlbGVtZW50LT5kb2N1bWVudCgpLmVuc3VyZVN0eWxlUmVzb2x2ZXIoKTsKLSAgICBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4gbWF0Y2hlZFJ1bGVzID0gc3R5bGVSZXNvbHZlci5z
dHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBTdHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7
CisgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4gbWF0Y2hlZFJ1bGVzID0gc3R5bGVS
ZXNvbHZlci5zdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBTdHlsZVJlc29sdmVyOjpBbGxD
U1NSdWxlcyk7CiAgICAgbWF0Y2hlZENTU1J1bGVzID0gYnVpbGRBcnJheUZvck1hdGNoZWRSdWxl
TGlzdChtYXRjaGVkUnVsZXMsIHN0eWxlUmVzb2x2ZXIsIGVsZW1lbnQpOwogCiAgICAgLy8gUHNl
dWRvIGVsZW1lbnRzLgogICAgIGlmICghaW5jbHVkZVBzZXVkbyB8fCAqaW5jbHVkZVBzZXVkbykg
ewotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlBz
ZXVkb0lkTWF0Y2hlcz4gPiBwc2V1ZG9FbGVtZW50cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiBw
c2V1ZG9FbGVtZW50cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1
ZG9JZE1hdGNoZXM+OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChQc2V1ZG9JZCBwc2V1ZG9JZCA9
IEZJUlNUX1BVQkxJQ19QU0VVRE9JRDsgcHNldWRvSWQgPCBBRlRFUl9MQVNUX0lOVEVSTkFMX1BT
RVVET0lEOyBwc2V1ZG9JZCA9IHN0YXRpY19jYXN0PFBzZXVkb0lkPihwc2V1ZG9JZCArIDEpKSB7
Ci0gICAgICAgICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4gbWF0Y2hlZFJ1bGVz
ID0gc3R5bGVSZXNvbHZlci5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBwc2V1
ZG9JZCwgU3R5bGVSZXNvbHZlcjo6QWxsQ1NTUnVsZXMpOworICAgICAgICAgICAgVmVjdG9yPFJl
ZlB0cjxTdHlsZVJ1bGVCYXNlPj4gbWF0Y2hlZFJ1bGVzID0gc3R5bGVSZXNvbHZlci5wc2V1ZG9T
dHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBwc2V1ZG9JZCwgU3R5bGVSZXNvbHZlcjo6QWxs
Q1NTUnVsZXMpOwogICAgICAgICAgICAgaWYgKCFtYXRjaGVkUnVsZXMuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4g
bWF0Y2hlcyA9IFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlczo6Y3JlYXRlKCkKICAg
ICAgICAgICAgICAgICAgICAgLnNldFBzZXVkb0lkKHN0YXRpY19jYXN0PGludD4ocHNldWRvSWQp
KQpAQCAtODMyLDExICs4MzIsMTEgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TWF0Y2hl
ZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm8KIAogICAgIC8v
IEluaGVyaXRlZCBzdHlsZXMuCiAgICAgaWYgKCFpbmNsdWRlSW5oZXJpdGVkIHx8ICppbmNsdWRl
SW5oZXJpdGVkKSB7Ci0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4gPiBlbnRyaWVzID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxlRW50cnk+OjpjcmVhdGUoKTsKKyAg
ICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpJbmhlcml0
ZWRTdHlsZUVudHJ5Pj4gZW50cmllcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pjo6Y3JlYXRlKCk7CiAgICAgICAgIEVsZW1lbnQqIHBh
cmVudEVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCk7CiAgICAgICAgIHdoaWxlIChw
YXJlbnRFbGVtZW50KSB7CiAgICAgICAgICAgICBTdHlsZVJlc29sdmVyJiBwYXJlbnRTdHlsZVJl
c29sdmVyID0gcGFyZW50RWxlbWVudC0+ZG9jdW1lbnQoKS5lbnN1cmVTdHlsZVJlc29sdmVyKCk7
Ci0gICAgICAgICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4gcGFyZW50TWF0Y2hl
ZFJ1bGVzID0gcGFyZW50U3R5bGVSZXNvbHZlci5zdHlsZVJ1bGVzRm9yRWxlbWVudChwYXJlbnRF
bGVtZW50LCBTdHlsZVJlc29sdmVyOjpBbGxDU1NSdWxlcyk7CisgICAgICAgICAgICBWZWN0b3I8
UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiBwYXJlbnRNYXRjaGVkUnVsZXMgPSBwYXJlbnRTdHlsZVJl
c29sdmVyLnN0eWxlUnVsZXNGb3JFbGVtZW50KHBhcmVudEVsZW1lbnQsIFN0eWxlUmVzb2x2ZXI6
OkFsbENTU1J1bGVzKTsKICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpJbmhl
cml0ZWRTdHlsZUVudHJ5PiBlbnRyeSA9IFR5cGVCdWlsZGVyOjpDU1M6OkluaGVyaXRlZFN0eWxl
RW50cnk6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgLnNldE1hdGNoZWRDU1NSdWxlcyhidWls
ZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KHBhcmVudE1hdGNoZWRSdWxlcywgc3R5bGVSZXNvbHZl
ciwgcGFyZW50RWxlbWVudCkpOwogICAgICAgICAgICAgaWYgKHBhcmVudEVsZW1lbnQtPnN0eWxl
KCkgJiYgcGFyZW50RWxlbWVudC0+c3R5bGUoKS0+bGVuZ3RoKCkpIHsKQEAgLTg2OCw3ICs4Njgs
NyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZAogICAgIGF0dHJpYnV0ZXNTdHlsZSA9IGF0dHJp
YnV0ZXMgPyBhdHRyaWJ1dGVzLnJlbGVhc2UoKSA6IDA7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OmdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NDb21wdXRlZFN0eWxlUHJvcGVydHk+ID4mIHN0eWxlKQordm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
bm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU0Nv
bXB1dGVkU3R5bGVQcm9wZXJ0eT4+JiBzdHlsZSkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0g
ZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKQEAg
LTg3OSw3ICs4NzksNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRDb21wdXRlZFN0eWxl
Rm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBubwogICAgIHN0eWxlID0gaW5z
cGVjdG9yU3R5bGUtPmJ1aWxkQXJyYXlGb3JDb21wdXRlZFN0eWxlKCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiA+
JiBzdHlsZUluZm9zKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5bGVTaGVldHMo
RXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVJbmZvcykKIHsKICAgICBzdHlsZUluZm9zID0g
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+
OjpjcmVhdGUoKTsKICAgICBWZWN0b3I8RG9jdW1lbnQqPiBkb2N1bWVudHMgPSBtX2RvbUFnZW50
LT5kb2N1bWVudHMoKTsKQEAgLTEwMTMsOSArMTAxMyw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBpbnQgY29udGV4dE5v
ZGVJCiAgICAgcmVzdWx0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JSdWxl
KHJ1bGUpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9w
ZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+ID4mIGNzc1Byb3BlcnRpZXMpCit2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYg
Y3NzUHJvcGVydGllcykKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4gPiBwcm9wZXJ0aWVzID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz46OmNyZWF0ZSgpOworICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZv
Pj4gcHJvcGVydGllcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQ
cm9wZXJ0eUluZm8+OjpjcmVhdGUoKTsKICAgICBmb3IgKGludCBpID0gZmlyc3RDU1NQcm9wZXJ0
eTsgaSA8PSBsYXN0Q1NTUHJvcGVydHk7ICsraSkgewogICAgICAgICBDU1NQcm9wZXJ0eUlEIGlk
ID0gY29udmVydFRvQ1NTUHJvcGVydHlJRChpKTsKICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4gcHJvcGVydHkgPSBUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQ
cm9wZXJ0eUluZm86OmNyZWF0ZSgpCkBAIC0xMDI2LDcgKzEwMjYsNyBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRy
PFR5cGVCdWlsZAogICAgICAgICAgICAgcHJvcGVydGllcy0+YWRkSXRlbShwcm9wZXJ0eS5yZWxl
YXNlKCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4gbG9uZ2hhbmRzID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFN0cmluZz4+IGxvbmdoYW5kcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUo
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHNob3J0aGFuZC5sZW5ndGgoKTsg
KytqKSB7CiAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIGxvbmdoYW5kSUQgPSBzaG9ydGhhbmQu
cHJvcGVydGllcygpW2pdOwogICAgICAgICAgICAgbG9uZ2hhbmRzLT5hZGRJdGVtKGdldFByb3Bl
cnR5TmFtZVN0cmluZyhsb25naGFuZElEKSk7CkBAIC0xMDU3LDcgKzEwNTcsNyBAQCB2b2lkIElu
c3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgaW50IG5vZGVJZCwgYwogICAgIGVsZW1lbnQtPmRvY3VtZW50KCkuc3R5bGVSZXNvbHZlckNo
YW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
ZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6TmFtZWRGbG93PiA+JiByZXN1bHQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1l
ZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGRvY3VtZW50Tm9k
ZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxv
dz4+JiByZXN1bHQpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9kb21BZ2VudC0+YXNz
ZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkKTsKICAgICBpZiAoIWRvY3Vt
ZW50KQpAQCAtMTA2NSwxMCArMTA2NSwxMCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRO
YW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGRvYwogCiAg
ICAgbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5hZGQoZG9jdW1lbnROb2RlSWQpOwog
Ci0gICAgVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+ID4gbmFtZWRGbG93c1ZlY3RvciA9
IGRvY3VtZW50LT5uYW1lZEZsb3dzKCktPm5hbWVkRmxvd3MoKTsKLSAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gPiBuYW1lZEZsb3dzID0g
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz46OmNyZWF0ZSgp
OworICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93Pj4gbmFtZWRGbG93c1ZlY3RvciA9
IGRvY3VtZW50LT5uYW1lZEZsb3dzKCktPm5hbWVkRmxvd3MoKTsKKyAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4+IG5hbWVkRmxvd3MgPSBU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93Pjo6Y3JlYXRlKCk7
CiAKLSAgICBmb3IgKFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiA+OjppdGVyYXRvciBp
dCA9IG5hbWVkRmxvd3NWZWN0b3IuYmVnaW4oKTsgaXQgIT0gbmFtZWRGbG93c1ZlY3Rvci5lbmQo
KTsgKytpdCkKKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93Pj46Oml0ZXJh
dG9yIGl0ID0gbmFtZWRGbG93c1ZlY3Rvci5iZWdpbigpOyBpdCAhPSBuYW1lZEZsb3dzVmVjdG9y
LmVuZCgpOyArK2l0KQogICAgICAgICBuYW1lZEZsb3dzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9y
TmFtZWRGbG93KGVycm9yU3RyaW5nLCBpdC0+Z2V0KCksIGRvY3VtZW50Tm9kZUlkKSk7CiAKICAg
ICByZXN1bHQgPSBuYW1lZEZsb3dzLnJlbGVhc2UoKTsKQEAgLTEyOTIsOSArMTI5Miw5IEBAIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yUnVsZShDU1NTCiAgICAgcmV0dXJuIGluc3BlY3RvclN0eWxlU2hlZXQgPyBp
bnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUocnVsZSkgOiAwOwogfQogCi1Q
YXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiA+
IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1
bGVMaXN0KQorUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZT4+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVs
ZUxpc3QqIHJ1bGVMaXN0KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTUnVsZT4gPiByZXN1bHQgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTUnVsZT46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPjo6Y3JlYXRlKCk7CiAgICAgaWYgKCFydWxl
TGlzdCkKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAKQEAgLTEzMDgsOSArMTMw
OCw5IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1J1bGU+ID4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
KCk7CiB9CiAKLVBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6
OlJ1bGVNYXRjaD4gPiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvck1hdGNoZWRSdWxl
TGlzdChjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4mIG1hdGNoZWRSdWxlcywg
U3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgRWxlbWVudCogZWxlbWVudCkKK1Bhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+IEluc3Bl
Y3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZlY3RvcjxS
ZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiBtYXRjaGVkUnVsZXMsIFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+ID4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD46OmNyZWF0ZSgpOworICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1hdGNoPj4gcmVzdWx0
ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD46OmNyZWF0
ZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNoZWRSdWxlcy5zaXplKCk7
ICsraSkgewogICAgICAgICBpZiAoIW1hdGNoZWRSdWxlc1tpXS0+aXNTdHlsZVJ1bGUoKSkKQEAg
LTEzMTksNyArMTMxOSw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OlJ1bGVNYXRjaD4gPiBJbnNwZWN0b3JDU1NBZ2VudDo6CiAgICAgICAgIFJlZlB0
cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBydWxlT2JqZWN0ID0gYnVpbGRPYmplY3RGb3JS
dWxlKG1hdGNoZWRTdHlsZVJ1bGUsIHN0eWxlUmVzb2x2ZXIpOwogICAgICAgICBpZiAoIXJ1bGVP
YmplY3QpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxpbnQ+ID4gbWF0Y2hpbmdTZWxlY3RvcnMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8aW50
Pjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gbWF0
Y2hpbmdTZWxlY3RvcnMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7CiAgICAg
ICAgIGNvbnN0IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JMaXN0ID0gbWF0Y2hlZFN0eWxlUnVs
ZS0+c2VsZWN0b3JMaXN0KCk7CiAgICAgICAgIGxvbmcgaW5kZXggPSAwOwogICAgICAgICBmb3Ig
KGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHNlbGVjdG9yTGlzdC5maXJzdCgpOyBzZWxl
Y3Rvcjsgc2VsZWN0b3IgPSBDU1NTZWxlY3Rvckxpc3Q6Om5leHQoc2VsZWN0b3IpKSB7CkBAIC0x
MzU0LDkgKzEzNTQsOSBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJ
bnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JBdHRyaWJ1dAogICAgIHJldHVybiBpbnNw
ZWN0b3JTdHlsZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+ID4gSW5zcGVjdG9yQ1NTQWdl
bnQ6OmJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4gcmVnaW9uTGlzdCwgaW50IGRvY3VtZW50Tm9kZUlkKQorUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPj4gSW5zcGVjdG9y
Q1NTQWdlbnQ6OmJ1aWxkQXJyYXlGb3JSZWdpb25zKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
UGFzc1JlZlB0cjxOb2RlTGlzdD4gcmVnaW9uTGlzdCwgaW50IGRvY3VtZW50Tm9kZUlkKQogewot
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPiA+
IHJlZ2lvbnMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPjo6
Y3JlYXRlKCk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NT
OjpSZWdpb24+PiByZWdpb25zID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6
OlJlZ2lvbj46OmNyZWF0ZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlZ2lv
bkxpc3QtPmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgVHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9u
OjpSZWdpb25PdmVyc2V0OjpFbnVtIHJlZ2lvbk92ZXJzZXQ7CkBAIC0xMzkyLDcgKzEzOTIsNyBA
QCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+
ID4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aQogUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpO
YW1lZEZsb3c+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmxvdyhFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIFdlYktpdE5hbWVkRmxvdyogd2Via2l0TmFtZWRGbG93LCBp
bnQgZG9jdW1lbnROb2RlSWQpCiB7CiAgICAgUmVmUHRyPE5vZGVMaXN0PiBjb250ZW50TGlzdCA9
IHdlYmtpdE5hbWVkRmxvdy0+Z2V0Q29udGVudCgpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8aW50PiA+IGNvbnRlbnQgPSBUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pjo6Y3JlYXRlKCk7
CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+PiBjb250ZW50ID0gVHlwZUJ1aWxk
ZXI6OkFycmF5PGludD46OmNyZWF0ZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGNvbnRlbnRMaXN0LT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIC8vIGRvY3VtZW50Tm9kZUlk
IHdhcyBwcmV2aW91c2x5IGFzc2VydGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oCmluZGV4IDVjMDZlZmY2YWRjMDg4MzI4NmM2MTliNzlmOTBhZmYyOTM5
ZGUyMGQuLjNjODJhMmZjMTMwYjZmMzUxZDhlNDQ2NjE5Y2FhMjgxOTAwZTRiMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0xMTEsMTAgKzEx
MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDaGFuZ2VSZWdpb25PdmVyc2V0KERvY3VtZW50
KiwgV2ViS2l0TmFtZWRGbG93Kik7CiAgICAgdm9pZCByZWdpb25PdmVyc2V0Q2hhbmdlZChXZWJL
aXROYW1lZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOwogCi0gICAgdmlydHVhbCB2b2lkIGdl
dENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVy
dHk+ID4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JT
dHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdl
dElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlcyk7Ci0gICAgdmlydHVhbCB2b2lkIGdldE1hdGNo
ZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogaW5j
bHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+ID4mIG1hdGNoZWRDU1NSdWxl
cywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpQc2V1ZG9JZE1h
dGNoZXM+ID4mIHBzZXVkb0lkTWF0Y2hlcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5PiA+JiBpbmhlcml0ZWRFbnRyaWVzKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+
ID4mIHN0eWxlU2hlZXRJbmZvcyk7CisgICAgdmlydHVhbCB2b2lkIGdldE1hdGNoZWRTdHlsZXNG
b3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogaW5jbHVkZVBzZXVk
bywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiBw
c2V1ZG9JZE1hdGNoZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVzKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVTaGVl
dEluZm9zKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5
bGVTaGVldEJvZHk+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTdHlsZVNoZWV0VGV4
dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBTdHJpbmcqIHJlc3Vs
dCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYgdGV4dCk7CkBAIC0xMjMsOSAr
MTIzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQcm9wZXJ0eShFcnJvclN0
cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVy
dHlJbmRleCwgYm9vbCBkaXNhYmxlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+
JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcq
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNl
bGVjdG9yLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCk7CiAgICAg
dmlydHVhbCB2b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcqLCBpbnQgY29udGV4dE5vZGVJZCwgY29u
c3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+JiBy
ZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQ
cm9wZXJ0eUluZm8+ID4mIHJlc3VsdCk7CisgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZENT
U1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9p
ZCBmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRy
PEluc3BlY3RvckFycmF5PiYgZm9yY2VkUHNldWRvQ2xhc3Nlcyk7Ci0gICAgdmlydHVhbCB2b2lk
IGdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqLCBpbnQgZG9jdW1lbnROb2RlSWQs
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiA+
JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9y
U3RyaW5nKiwgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpOwogCiAgICAgdmlydHVhbCB2b2lk
IHN0YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBz
dG9wU2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NT
OjpTZWxlY3RvclByb2ZpbGU+Jik7CkBAIC0xNDcsMTAgKzE0NywxMCBAQCBwcml2YXRlOgogCiAg
ICAgSW5zcGVjdG9yQ1NTQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvckNvbXBv
c2l0ZVN0YXRlKiwgSW5zcGVjdG9yRE9NQWdlbnQqKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0PiA+IElkVG9JbnNwZWN0b3JTdHlsZVNo
ZWV0OwotICAgIHR5cGVkZWYgSGFzaE1hcDxDU1NTdHlsZVNoZWV0KiwgUmVmUHRyPEluc3BlY3Rv
clN0eWxlU2hlZXQ+ID4gQ1NTU3R5bGVTaGVldFRvSW5zcGVjdG9yU3R5bGVTaGVldDsKLSAgICB0
eXBlZGVmIEhhc2hNYXA8Tm9kZSosIFJlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5l
U3R5bGU+ID4gTm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldDsgLy8gYm9ndXMgInN0eWxlc2hlZXRz
IiB3aXRoIGVsZW1lbnRzJyBpbmxpbmUgc3R5bGVzCi0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxEb2N1bWVudD4sIFJlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0PiA+IERvY3VtZW50VG9WaWFJ
bnNwZWN0b3JTdHlsZVNoZWV0OyAvLyAidmlhIGluc3BlY3RvciIgc3R5bGVzaGVldHMKKyAgICB0
eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldD4+IElkVG9J
bnNwZWN0b3JTdHlsZVNoZWV0OworICAgIHR5cGVkZWYgSGFzaE1hcDxDU1NTdHlsZVNoZWV0Kiwg
UmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXQ+PiBDU1NTdHlsZVNoZWV0VG9JbnNwZWN0b3JTdHls
ZVNoZWV0OworICAgIHR5cGVkZWYgSGFzaE1hcDxOb2RlKiwgUmVmUHRyPEluc3BlY3RvclN0eWxl
U2hlZXRGb3JJbmxpbmVTdHlsZT4+IE5vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQ7IC8vIGJvZ3Vz
ICJzdHlsZXNoZWV0cyIgd2l0aCBlbGVtZW50cycgaW5saW5lIHN0eWxlcworICAgIHR5cGVkZWYg
SGFzaE1hcDxSZWZQdHI8RG9jdW1lbnQ+LCBSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldD4+IERv
Y3VtZW50VG9WaWFJbnNwZWN0b3JTdHlsZVNoZWV0OyAvLyAidmlhIGluc3BlY3RvciIgc3R5bGVz
aGVldHMKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCB1bnNpZ25lZD4gTm9kZUlkVG9Gb3JjZWRQ
c2V1ZG9TdGF0ZTsKIAogICAgIHZvaWQgcmVzZXROb25QZXJzaXN0ZW50RGF0YSgpOwpAQCAtMTY2
LDEwICsxNjYsMTAgQEAgcHJpdmF0ZToKIAogICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUnVsZT4gYnVpbGRPYmplY3RGb3JSdWxlKFN0eWxlUnVsZSosIFN0eWxlUmVzb2x2ZXIm
KTsKICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IGJ1aWxkT2JqZWN0
Rm9yUnVsZShDU1NTdHlsZVJ1bGUqKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiA+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NS
dWxlTGlzdCopOwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpDU1M6OlJ1bGVNYXRjaD4gPiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KGNvbnN0IFZl
Y3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4gPiYsIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50Kik7
CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UnVsZT4+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCopOworICAgIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxk
QXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNl
Pj4mLCBTdHlsZVJlc29sdmVyJiwgRWxlbWVudCopOwogICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKEVsZW1lbnQq
KTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpS
ZWdpb24+ID4gYnVpbGRBcnJheUZvclJlZ2lvbnMoRXJyb3JTdHJpbmcqLCBQYXNzUmVmUHRyPE5v
ZGVMaXN0PiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpSZWdpb24+PiBidWlsZEFycmF5Rm9yUmVnaW9ucyhF
cnJvclN0cmluZyosIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+LCBpbnQgZG9jdW1lbnROb2RlSWQpOwog
ICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiBidWlsZE9iamVjdEZv
ck5hbWVkRmxvdyhFcnJvclN0cmluZyosIFdlYktpdE5hbWVkRmxvdyosIGludCBkb2N1bWVudE5v
ZGVJZCk7CiAKICAgICAvLyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIgaW1wbGVtZW50
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuaAppbmRleCA4OWNhMDAwOTM0YTE2YTkyYmExNGU2YThmYmM3NDY2YWYwNjZjYzI5Li5iNDI4
NWExZGZjZTA2NjgxZTMwNTQ3NDA5Nzc1OTBlZjg1NDY2MmMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCkBAIC0xMDUsNyArMTA1LDcg
QEAgcHJvdGVjdGVkOgogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXI7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkNvbnNvbGUqIG1fZnJvbnRlbmQ7CiAg
ICAgQ29uc29sZU1lc3NhZ2UqIG1fcHJldmlvdXNNZXNzYWdlOwotICAgIFZlY3RvcjxPd25QdHI8
Q29uc29sZU1lc3NhZ2U+ID4gbV9jb25zb2xlTWVzc2FnZXM7CisgICAgVmVjdG9yPE93blB0cjxD
b25zb2xlTWVzc2FnZT4+IG1fY29uc29sZU1lc3NhZ2VzOwogICAgIGludCBtX2V4cGlyZWRDb25z
b2xlTWVzc2FnZUNvdW50OwogICAgIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gbV9jb3VudHM7
CiAgICAgSGFzaE1hcDxTdHJpbmcsIGRvdWJsZT4gbV90aW1lczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGQ1OGVmMGRjZjFiM2ZiNTA4
ZmNiNjJmNWYyYTU3MGMxMmE2YzBjMDYuLjAwODEzNjMyMGU0ZWQxOTQ1ZDZjOGM3NTQ1MTRiYTE1
YTk3ZDVlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5zcGVj
dG9yRE9NQWdlbnQqIG1fZG9tQWdlbnQ7CiAgICAgVGltZXI8UmV2YWxpZGF0ZVN0eWxlQXR0cmli
dXRlVGFzaz4gbV90aW1lcjsKLSAgICBIYXNoU2V0PFJlZlB0cjxFbGVtZW50PiA+IG1fZWxlbWVu
dHM7CisgICAgSGFzaFNldDxSZWZQdHI8RWxlbWVudD4+IG1fZWxlbWVudHM7CiB9OwogCiBSZXZh
bGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrOjpSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrKElu
c3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCkKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIFJldmFs
aWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s6Om9uVGltZXIoVGltZXI8UmV2YWxpZGF0ZVN0eWxlQXR0
cmlidXRlVGFzaz4qKQogewogICAgIC8vIFRoZSB0aW1lciBpcyBzdG9wcGVkIG9uIG1fZG9tQWdl
bnQgZGVzdHJ1Y3Rpb24sIHNvIHRoaXMgbWV0aG9kIHdpbGwgbmV2ZXIgYmUgY2FsbGVkIGFmdGVy
IG1fZG9tQWdlbnQgaGFzIGJlZW4gZGVzdHJveWVkLgogICAgIFZlY3RvcjxFbGVtZW50Kj4gZWxl
bWVudHM7Ci0gICAgZm9yIChIYXNoU2V0PFJlZlB0cjxFbGVtZW50PiA+OjppdGVyYXRvciBpdCA9
IG1fZWxlbWVudHMuYmVnaW4oKSwgZW5kID0gbV9lbGVtZW50cy5lbmQoKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgIGZvciAoSGFzaFNldDxSZWZQdHI8RWxlbWVudD4+OjppdGVyYXRvciBpdCA9IG1f
ZWxlbWVudHMuYmVnaW4oKSwgZW5kID0gbV9lbGVtZW50cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KQogICAgICAgICBlbGVtZW50cy5hcHBlbmQoaXQtPmdldCgpKTsKICAgICBtX2RvbUFnZW50LT5z
dHlsZUF0dHJpYnV0ZUludmFsaWRhdGVkKGVsZW1lbnRzKTsKIApAQCAtNDcyLDcgKzQ3Miw3IEBA
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChpbnQgbm9k
ZUlkLCBpbnQgZGVwdGgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+ID4gY2hpbGRyZW4gPSBidWls
ZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgZGVwdGgsIG5vZGVNYXApOworICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVu
ID0gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2RlTWFwKTsK
ICAgICBtX2Zyb250ZW5kLT5zZXRDaGlsZE5vZGVzKG5vZGVJZCwgY2hpbGRyZW4ucmVsZWFzZSgp
KTsKIH0KIApAQCAtNTk4LDcgKzU5OCw3IEBAIGludCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5v
ZGVQYXRoVG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogICAgICAgICAgICAgT3duUHRyPE5v
ZGVUb0lkTWFwPiBuZXdNYXAgPSBhZG9wdFB0cihuZXcgTm9kZVRvSWRNYXApOwogICAgICAgICAg
ICAgZGFuZ2xpbmdNYXAgPSBuZXdNYXAuZ2V0KCk7CiAgICAgICAgICAgICBtX2RhbmdsaW5nTm9k
ZVRvSWRNYXBzLmFwcGVuZChuZXdNYXAucmVsZWFzZSgpKTsKLSAgICAgICAgICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gPiBjaGlsZHJlbiA9IFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CisgICAg
ICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+
PiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPjo6
Y3JlYXRlKCk7CiAgICAgICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShidWlsZE9iamVjdEZvck5v
ZGUobm9kZSwgMCwgZGFuZ2xpbmdNYXApKTsKICAgICAgICAgICAgIG1fZnJvbnRlbmQtPnNldENo
aWxkTm9kZXMoMCwgY2hpbGRyZW4pOwogICAgICAgICAgICAgYnJlYWs7CkBAIC04MjUsNyArODI1
LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0Tm9kZVZhbHVlKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QKICAgICBtX2RvbUVkaXRvci0+cmVwbGFjZVdo
b2xlVGV4dCh0b1RleHQobm9kZSksIHZhbHVlLCBlcnJvclN0cmluZyk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gPiYgbGlz
dGVuZXJzQXJyYXkpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zv
ck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcq
IG9iamVjdEdyb3VwLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006
OkV2ZW50TGlzdGVuZXI+PiYgbGlzdGVuZXJzQXJyYXkpCiB7CiAgICAgbGlzdGVuZXJzQXJyYXkg
PSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRMaXN0ZW5lcj46OmNy
ZWF0ZSgpOwogICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2RlSWQp
OwpAQCAtMTAwOCw3ICsxMDA4LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNl
YXJjaChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW0KICAgICB9CiAK
ICAgICAqc2VhcmNoSWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKTsK
LSAgICBTZWFyY2hSZXN1bHRzOjppdGVyYXRvciByZXN1bHRzSXQgPSBtX3NlYXJjaFJlc3VsdHMu
YWRkKCpzZWFyY2hJZCwgVmVjdG9yPFJlZlB0cjxOb2RlPiA+KCkpLml0ZXJhdG9yOworICAgIFNl
YXJjaFJlc3VsdHM6Oml0ZXJhdG9yIHJlc3VsdHNJdCA9IG1fc2VhcmNoUmVzdWx0cy5hZGQoKnNl
YXJjaElkLCBWZWN0b3I8UmVmUHRyPE5vZGU+PigpKS5pdGVyYXRvcjsKIAogICAgIGZvciAoTGlz
dEhhc2hTZXQ8Tm9kZSo+OjppdGVyYXRvciBpdCA9IHJlc3VsdENvbGxlY3Rvci5iZWdpbigpOyBp
dCAhPSByZXN1bHRDb2xsZWN0b3IuZW5kKCk7ICsraXQpCiAgICAgICAgIHJlc3VsdHNJdC0+dmFs
dWUuYXBwZW5kKCppdCk7CkBAIC0xMDE2LDcgKzEwMTYsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNwYWNl
VHJpbQogICAgICpyZXN1bHRDb3VudCA9IHJlc3VsdHNJdC0+dmFsdWUuc2l6ZSgpOwogfQogCi12
b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5k
ZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50PiA+JiBub2RlSWRzKQordm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6Z2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+JiBub2RlSWRzKQogewogICAgIFNlYXJjaFJlc3Vs
dHM6Oml0ZXJhdG9yIGl0ID0gbV9zZWFyY2hSZXN1bHRzLmZpbmQoc2VhcmNoSWQpOwogICAgIGlm
IChpdCA9PSBtX3NlYXJjaFJlc3VsdHMuZW5kKCkpIHsKQEAgLTEzMjEsNyArMTMyMSw3IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgaW50IG5vZGVJZCwgY29uc3QKICAgICByZXN1bHQgPSBvYmplY3Q7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OmdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPiYgcmVzdWx0KQor
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0QXR0cmlidXRlcyhFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIHJl
c3VsdCkKIHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gYXNzZXJ0RWxlbWVudChlcnJvclN0cmlu
Zywgbm9kZUlkKTsKICAgICBpZiAoIWVsZW1lbnQpCkBAIC0xMzkyLDcgKzEzOTIsNyBAQCBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9i
amVjdEZvck5vZGUoTm9kZSogbgogICAgIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkgewog
ICAgICAgICBpbnQgbm9kZUNvdW50ID0gaW5uZXJDaGlsZE5vZGVDb3VudChub2RlKTsKICAgICAg
ICAgdmFsdWUtPnNldENoaWxkTm9kZUNvdW50KG5vZGVDb3VudCk7Ci0gICAgICAgIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gPiBjaGlsZHJlbiA9IGJ1
aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwgbm9kZXNNYXApOworICAg
ICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBj
aGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwgbm9k
ZXNNYXApOwogICAgICAgICBpZiAoY2hpbGRyZW4tPmxlbmd0aCgpID4gMCkKICAgICAgICAgICAg
IHZhbHVlLT5zZXRDaGlsZHJlbihjaGlsZHJlbi5yZWxlYXNlKCkpOwogICAgIH0KQEAgLTE0MTEs
NyArMTQxMSw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gSW5zcGVjdG9y
RE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBuCiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGVsZW1lbnQtPnNoYWRvd1Jvb3QoKSkgewotICAgICAg
ICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiA+
IHNoYWRvd1Jvb3RzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+
OjpjcmVhdGUoKTsKKyAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkRPTTo6Tm9kZT4+IHNoYWRvd1Jvb3RzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpET006Ok5vZGU+OjpjcmVhdGUoKTsKICAgICAgICAgICAgIHNoYWRvd1Jvb3RzLT5h
ZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShyb290LCAwLCBub2Rlc01hcCkpOwogICAgICAgICAg
ICAgdmFsdWUtPnNldFNoYWRvd1Jvb3RzKHNoYWRvd1Jvb3RzKTsKICAgICAgICAgfQpAQCAtMTQz
OSw5ICsxNDM5LDkgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiBJbnNwZWN0
b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqIG4KICAgICByZXR1cm4gdmFsdWUu
cmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4g
SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50
KiBlbGVtZW50KQorUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhFbGVtZW50KiBlbGVt
ZW50KQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+IGF0dHJpYnV0
ZXNWYWx1ZSA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGF0dHJpYnV0ZXNWYWx1ZSA9IFR5cGVCdWls
ZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAvLyBHbyB0aHJvdWdoIGFsbCBhdHRy
aWJ1dGVzIGFuZCBzZXJpYWxpemUgdGhlbS4KICAgICBpZiAoIWVsZW1lbnQtPmhhc0F0dHJpYnV0
ZXMoKSkKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNWYWx1ZS5yZWxlYXNlKCk7CkBAIC0xNDU1
LDkgKzE0NTUsOSBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXJyYXlGb3JFbGVtZW50QQogICAgIHJldHVybiBhdHRyaWJ1
dGVzVmFsdWUucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6RE9NOjpOb2RlPiA+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9y
Q29udGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lkTWFw
KiBub2Rlc01hcCkKK1Bhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpE
T006Ok5vZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxk
cmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCiB7
Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiA+
IGNoaWxkcmVuID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+Ojpj
cmVhdGUoKTsKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006
Ok5vZGU+PiBjaGlsZHJlbiA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpO
b2RlPjo6Y3JlYXRlKCk7CiAgICAgaWYgKGRlcHRoID09IDApIHsKICAgICAgICAgLy8gU3BlY2lh
bC1jYXNlIHRoZSBvbmx5IHRleHQgY2hpbGQgLSBwcmV0ZW5kIHRoYXQgY29udGFpbmVyJ3MgY2hp
bGRyZW4gaGF2ZSBiZWVuIHJlcXVlc3RlZC4KICAgICAgICAgTm9kZSogZmlyc3RDaGlsZCA9IGNv
bnRhaW5lci0+Zmlyc3RDaGlsZCgpOwpAQCAtMTY5Nyw3ICsxNjk3LDcgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NQXR0cihFbGVtZW50KiBlbGVtZW50LCBjb25zdCBBdG9t
aWNTdHJpbmcmIG4KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZh
bGlkYXRlZChjb25zdCBWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW50cykKIHsKLSAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PGludD4gPiBub2RlSWRzID0gVHlwZUJ1aWxkZXI6OkFycmF5PGlu
dD46OmNyZWF0ZSgpOworICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4gbm9kZUlk
cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+OjpjcmVhdGUoKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwLCBzaXplID0gZWxlbWVudHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAg
IEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50cy5hdChpKTsKICAgICAgICAgaW50IGlkID0gYm91
bmROb2RlSWQoZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oCmluZGV4IGNmNzliMmU1Mzc4ZjE5ZDkwOGE4ZThkODU2MDExYmRmNjdmNGVkNzMu
LmJlZWUzNDNmNzNhYmJjNzRlMTRhZDlkODM2ZTc0ODJmZmE0MzJjNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0xMjIsNyArMTIyLDcgQEAg
cHVibGljOgogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgZnJvbnRlbmQgZm9yIERP
TSBub2RlcyBpbnNwZWN0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBxdWVyeVNlbGVjdG9yKEVycm9y
U3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIGludCogZWxlbWVu
dElkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyosIGlu
dCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PGludD4gPiYgcmVzdWx0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcXVlcnlTZWxlY3RvckFsbChF
cnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRE
b2N1bWVudChFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiYgcm9v
dCk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGlsZE5vZGVzKEVycm9yU3RyaW5nKiwgaW50
IG5vZGVJZCwgY29uc3QgaW50KiBkZXB0aCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0
ZVZhbHVlKEVycm9yU3RyaW5nKiwgaW50IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHZhbHVlKTsKQEAgLTEzMywxMiArMTMzLDEyIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0T3V0ZXJIVE1MKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgV1RGOjpT
dHJpbmcqIG91dGVySFRNTCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE91dGVySFRNTChFcnJvclN0
cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgb3V0ZXJIVE1MKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Tm9kZVZhbHVlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSk7Ci0gICAgdmlydHVhbCB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJv
clN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBvYmplY3RHcm91cCwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVyPiA+
JiBsaXN0ZW5lcnNBcnJheSk7CisgICAgdmlydHVhbCB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9y
Tm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBvYmplY3RH
cm91cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExp
c3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KTsKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVNlYXJj
aChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgU3Ry
aW5nKiBzZWFyY2hJZCwgaW50KiByZXN1bHRDb3VudCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNl
YXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkLCBpbnQgZnJv
bUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+ID4mKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PGludD4+Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRTZWFyY2hSZXN1
bHRzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCk7CiAgICAgdmlydHVhbCB2
b2lkIHJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBv
YmplY3RHcm91cCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nKiwgaW50
IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4mIHJlc3VsdCk7Cisg
ICAgdmlydHVhbCB2b2lkIGdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBoaWdobGlnaHRDb25maWcpOwogICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Tm9kZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQs
IGludCogbm9kZUlkKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5k
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBpbnQqIG5vZGVJZCk7CkBAIC0yMzMs
OCArMjMzLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9k
ZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gZGVzY3JpcHRpb24pOwogCiAgICAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6RE9NOjpOb2RlPiBidWlsZE9iamVjdEZvck5vZGUoTm9kZSosIGludCBkZXB0aCwgTm9k
ZVRvSWRNYXAqKTsKLSAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4g
YnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZW1lbnQqKTsKLSAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiA+IGJ1aWxkQXJyYXlG
b3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRN
YXAqIG5vZGVzTWFwKTsKKyAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+
PiBidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCopOworICAgIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBidWlsZEFycmF5
Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgsIE5vZGVUb0lk
TWFwKiBub2Rlc01hcCk7CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExp
c3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXImLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSosIGNvbnN0IFN0
cmluZyogb2JqZWN0R3JvdXBJZCk7CiAKICAgICBOb2RlKiBub2RlRm9yUGF0aChjb25zdCBTdHJp
bmcmIHBhdGgpOwpAQCAtMjUzLDE1ICsyNTMsMTUgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhh
c2hNYXA8UmVmUHRyPE5vZGU+LCBCYWNrZW5kTm9kZUlkPiBOb2RlVG9CYWNrZW5kSWRNYXA7CiAg
ICAgSGFzaE1hcDxTdHJpbmcsIE5vZGVUb0JhY2tlbmRJZE1hcD4gbV9ub2RlR3JvdXBUb0JhY2tl
bmRJZE1hcDsKICAgICAvLyBPd25zIG5vZGUgbWFwcGluZ3MgZm9yIGRhbmdsaW5nIG5vZGVzLgot
ICAgIFZlY3RvcjxPd25QdHI8Tm9kZVRvSWRNYXA+ID4gbV9kYW5nbGluZ05vZGVUb0lkTWFwczsK
KyAgICBWZWN0b3I8T3duUHRyPE5vZGVUb0lkTWFwPj4gbV9kYW5nbGluZ05vZGVUb0lkTWFwczsK
ICAgICBIYXNoTWFwPGludCwgTm9kZSo+IG1faWRUb05vZGU7CiAgICAgSGFzaE1hcDxpbnQsIE5v
ZGVUb0lkTWFwKj4gbV9pZFRvTm9kZXNNYXA7CiAgICAgSGFzaFNldDxpbnQ+IG1fY2hpbGRyZW5S
ZXF1ZXN0ZWQ7Ci0gICAgSGFzaE1hcDxCYWNrZW5kTm9kZUlkLCBzdGQ6OnBhaXI8Tm9kZSosIFN0
cmluZz4gPiBtX2JhY2tlbmRJZFRvTm9kZTsKKyAgICBIYXNoTWFwPEJhY2tlbmROb2RlSWQsIHN0
ZDo6cGFpcjxOb2RlKiwgU3RyaW5nPj4gbV9iYWNrZW5kSWRUb05vZGU7CiAgICAgaW50IG1fbGFz
dE5vZGVJZDsKICAgICBCYWNrZW5kTm9kZUlkIG1fbGFzdEJhY2tlbmROb2RlSWQ7CiAgICAgUmVm
UHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZl
Y3RvcjxSZWZQdHI8Tm9kZT4gPiA+IFNlYXJjaFJlc3VsdHM7CisgICAgdHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgVmVjdG9yPFJlZlB0cjxOb2RlPj4+IFNlYXJjaFJlc3VsdHM7CiAgICAgU2VhcmNo
UmVzdWx0cyBtX3NlYXJjaFJlc3VsdHM7CiAgICAgT3duUHRyPFJldmFsaWRhdGVTdHlsZUF0dHJp
YnV0ZVRhc2s+IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2s7CiAgICAgUmVmUHRyPE5vZGU+IG1f
bm9kZVRvRm9jdXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDk4ZTMzNWIyMjFlMWFjNzQ4OTZhYmI4YWRkNmMw
ZTc5MDFkMWQ3NjQuLjE5MzBmM2Y0MGJkY2Q4MWI5OGQ1MDU3ZjQyYmQ2NGQ2YzdiOTNiNjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oRE9NU3Rv
cmFnZUFnZW50U3RhdGU6OmRvbVN0b3JhZ2VBZ2VudEVuYWJsZWQsIGZhbHNlKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQs
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPiA+
JiBpdGVtcykKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRl
bXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiYgc3RvcmFnZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpBcnJh
eTxTdHJpbmc+Pj4mIGl0ZW1zKQogewogICAgIEZyYW1lKiBmcmFtZTsKICAgICBSZWZQdHI8U3Rv
cmFnZUFyZWE+IHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVhKGVycm9yU3RyaW5nLCBzdG9y
YWdlSWQsIGZyYW1lKTsKQEAgLTExMCwxMyArMTEwLDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4gPiBzdG9yYWdlSXRlbXMgPSBUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPjo6Y3JlYXRlKCk7CisgICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4+IHN0
b3JhZ2VJdGVtcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5n
Pj46OmNyZWF0ZSgpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0b3JhZ2VBcmVh
LT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIFN0cmluZyBrZXkgPSBzdG9yYWdlQXJlYS0+a2V5
KGkpOwogICAgICAgICBTdHJpbmcgdmFsdWUgPSBzdG9yYWdlQXJlYS0+aXRlbShrZXkpOwogCi0g
ICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+IGVudHJ5ID0gVHlwZUJ1
aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFN0cmluZz4+IGVudHJ5ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNy
ZWF0ZSgpOwogICAgICAgICBlbnRyeS0+YWRkSXRlbShrZXkpOwogICAgICAgICBlbnRyeS0+YWRk
SXRlbSh2YWx1ZSk7CiAgICAgICAgIHN0b3JhZ2VJdGVtcy0+YWRkSXRlbShlbnRyeS5yZWxlYXNl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudC5oCmluZGV4IGVjNzZlYTVhZjIzN2M3OTM4YzA5ZjNkNzBhMDZkZDZiNGFhNjhhZmIu
LjNjOGYwMGI1ZmViNzkxYTk5M2E5MmQ4OWNjMWQ4NmQyNzc0ZDc4ZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKQEAgLTY0
LDcgKzY0LDcgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCiAg
ICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3JhZ2VJdGVt
cyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQs
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPiA+
JiBpdGVtcyk7CisgICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oRXJy
b3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgc3RvcmFnZUlkLCBjb25z
dCBTdHJpbmcmIGtleSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRleCAyMzA0YTFlMDYwMTJjOGEwNDJhMGZmYmQ0NDdh
YmNmZTU3YzgyYTM4Li43Mzk0NzM0OTg4NzE3N2IxMzEyMTc2ZTZjNTkzNDA5NWZkNDU2ZTliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdl
bnQuY3BwCkBAIC04NCwxMiArODQsMTIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgU1FMUmVz
dWx0U2V0Um93TGlzdCogcm93TGlzdCA9IHJlc3VsdFNldC0+cm93cygpOwogCi0gICAgICAgIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+IGNvbHVtbk5hbWVzID0gVHlwZUJ1aWxk
ZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFN0cmluZz4+IGNvbHVtbk5hbWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46
OmNyZWF0ZSgpOwogICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29sdW1ucyA9IHJvd0xp
c3QtPmNvbHVtbk5hbWVzKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29sdW1u
cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIGNvbHVtbk5hbWVzLT5hZGRJdGVtKGNvbHVtbnNb
aV0pOwogCi0gICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yVmFsdWU+
ID4gdmFsdWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3RvclZhbHVlPjo6Y3JlYXRlKCk7
CisgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yVmFsdWU+PiB2YWx1
ZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yVmFsdWU+OjpjcmVhdGUoKTsKICAgICAg
ICAgY29uc3QgVmVjdG9yPFNRTFZhbHVlPiYgZGF0YSA9IHJvd0xpc3QtPnZhbHVlcygpOwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGEuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
ICAgIGNvbnN0IFNRTFZhbHVlJiB2YWx1ZSA9IHJvd0xpc3QtPnZhbHVlcygpW2ldOwpAQCAtMjYy
LDcgKzI2Miw3IEBAIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6cmVzdG9yZSgpCiAgICAg
bV9lbmFibGVkID0gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihEYXRhYmFzZUFnZW50U3RhdGU6OmRhdGFi
YXNlQWdlbnRFbmFibGVkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpnZXRE
YXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+JiBuYW1lcykKK3ZvaWQg
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5n
KiBlcnJvciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFN0cmluZz4+JiBuYW1lcykKIHsKICAgICBpZiAoIW1fZW5hYmxlZCkgewogICAgICAgICAq
ZXJyb3IgPSAiRGF0YWJhc2UgYWdlbnQgaXMgbm90IGVuYWJsZWQiOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKaW5kZXggYzI0YTgzMDlm
YmQ0NjE4NzU0MWZkMjFmOGYxZTNmNmYyZmIxM2Y1Yi4uZDM0NTNhMDY3NmRlYjFjMzI1YTg2Mzkx
YjcyMWNmY2Q2MjQyYjg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICAvLyBD
YWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JT
dHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwotICAgIHZp
cnR1YWwgdm9pZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+JiBuYW1l
cyk7CisgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJp
bmc+PiYgbmFtZXMpOwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBQYXNzUmVmUHRy
PEV4ZWN1dGVTUUxDYWxsYmFjaz4pOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGluamVjdGVk
IHNjcmlwdC4KQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JEYXRhYmFz
ZVJlc291cmNlKiBmaW5kQnlGaWxlTmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKIAogICAg
IEluc3BlY3RvckZyb250ZW5kOjpEYXRhYmFzZSogbV9mcm9udGVuZDsKLSAgICB0eXBlZGVmIEhh
c2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4gPiBEYXRhYmFz
ZVJlc291cmNlc01hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVj
dG9yRGF0YWJhc2VSZXNvdXJjZT4+IERhdGFiYXNlUmVzb3VyY2VzTWFwOwogICAgIERhdGFiYXNl
UmVzb3VyY2VzTWFwIG1fcmVzb3VyY2VzOwogICAgIGJvb2wgbV9lbmFibGVkOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApp
bmRleCA1MGY3ZDRjNDc4NjNhYjViYjFhMGRlZDUyMjcxOGYxZDRjZWYzMmJkLi4yMzQ5YTg4MDNh
MTA3Nzg2ZWNiN2NhYzg4NWI0NGI2MWU0Zjk5NjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0yODMsNyArMjgzLDcg
QEAgc3RhdGljIGJvb2wgYnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2woRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBSZWZQdHI8SW5zcGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVS
TCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIGNvbnN0
IG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3B0
aW9ucywgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJ
ZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0
aW9uPiA+JiBsb2NhdGlvbnMpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFr
cG9pbnRCeVVybChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFs
VVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJy
ZWFrcG9pbnRJZCogb3V0QnJlYWtwb2ludElkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKQogewogICAgIGxvY2F0
aW9ucyA9IEFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+OjpjcmVhdGUoKTsK
ICAgICBpZiAoIW9wdGlvbmFsVVJMID09ICFvcHRpb25hbFVSTFJlZ2V4KSB7CkBAIC00NDYsNyAr
NDQ2LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBzY3JpcHRUb0luc3Bl
Y3Rvck9iamVjdChTY3JpcHRPYmplY3Qgc2NyaXB0T2IKICAgICByZXR1cm4gdmFsdWUtPmFzT2Jq
ZWN0KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2VhcmNoSW5Db250ZW50
KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZCwgY29uc3QgU3RyaW5n
JiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBi
b29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxBcnJheTxXZWJDb3JlOjpUeXBlQnVp
bGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+ID4mIHJlc3VsdHMpCit2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlv
bmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQ
dHI8QXJyYXk8V2ViQ29yZTo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4mIHJlc3Vs
dHMpCiB7CiAgICAgYm9vbCBpc1JlZ2V4ID0gb3B0aW9uYWxJc1JlZ2V4ID8gKm9wdGlvbmFsSXNS
ZWdleCA6IGZhbHNlOwogICAgIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IG9wdGlvbmFsQ2FzZVNlbnNp
dGl2ZSA/ICpvcHRpb25hbENhc2VTZW5zaXRpdmUgOiBmYWxzZTsKQEAgLTQ1OCw3ICs0NTgsNyBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudChFcnJvclN0cmlu
ZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgcwogICAgICAgICAqZXJyb3IgPSAiTm8gc2NyaXB0IGZv
ciBpZDogIiArIHNjcmlwdElkOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNl
dFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQs
IGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgY29uc3QgYm9vbCogY29uc3QgcHJldmlldywgUmVm
UHRyPEFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPiA+JiBuZXdDYWxsRnJh
bWVzLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJp
bmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJvb2wqIGNvbnN0
IHByZXZpZXcsIFJlZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+
JiBuZXdDYWxsRnJhbWVzLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcmVzdWx0KQogewogICAg
IGJvb2wgcHJldmlld09ubHkgPSBwcmV2aWV3ICYmICpwcmV2aWV3OwogICAgIFNjcmlwdE9iamVj
dCByZXN1bHRPYmplY3Q7CkBAIC02NjQsNyArNjY0LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzY3JpcHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3Rp
dmUKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpD
YWxsRnJhbWU+ID4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVudENhbGxGcmFtZXMoKQor
UGFzc1JlZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKCkKIHsKICAgICBpZiAoIW1fcGF1
c2VkU2NyaXB0U3RhdGUpCiAgICAgICAgIHJldHVybiBBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggOWJkMmY0ZWRhZWU5MTFlMDdlY2UwMTM1
ZTQzOWFlMzc3YTRhNzAxZS4uYjE2MTllMTk1ZThjZGQwOGVjNTJjYWQ4MjFlYTM1MTVhN2Y1NmZj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oCkBAIC04NCwxMyArODQsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNh
YmxlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZl
KEVycm9yU3RyaW5nKiwgYm9vbCBhY3RpdmUpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEJyZWFr
cG9pbnRCeVVybChFcnJvclN0cmluZyosIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIG9w
dGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogb3B0
aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25z
LCBUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gPiYgbG9jYXRpb25zKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiwgaW50IGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogb3B0aW9u
YWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtw
b2ludElkKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RGVidWdnZXI6
OkxvY2F0aW9uPj4mIGxvY2F0aW9ucyk7CiAgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnQo
RXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9u
PiYgYWN0dWFsTG9jYXRpb24pOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVCcmVha3BvaW50KEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQpOwogICAgIHZpcnR1YWwgdm9p
ZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYgbG9jYXRpb24pOwogCi0gICAgdmlydHVhbCB2b2lkIHNlYXJjaEluQ29udGVudChF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIGNvbnN0IFN0cmluZyYgcXVlcnks
IGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJ
c1JlZ2V4LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFy
Y2hNYXRjaD4gPiYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNv
bnN0IGJvb2wqIHByZXZpZXcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkRlYnVnZ2VyOjpDYWxsRnJhbWU+ID4mIG5ld0NhbGxGcmFtZXMsIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+JiByZXN1bHQpOworICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25z
dCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdl
eCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0
Y2g+PiYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHNjcmlwdElkLCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIGNvbnN0IGJv
b2wqIHByZXZpZXcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVn
Z2VyOjpDYWxsRnJhbWU+PiYgbmV3Q2FsbEZyYW1lcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
IHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGdldFNjcmlwdFNvdXJjZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgc2NyaXB0SWQsIFN0cmluZyogc2NyaXB0U291cmNlKTsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBm
dW5jdGlvbklkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+
Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlKEVycm9yU3RyaW5nKik7CkBAIC0xNDksNyArMTQ5
LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBib29sIGVuYWJsZWQoKTsKIAotICAgIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZy
YW1lPiA+IGN1cnJlbnRDYWxsRnJhbWVzKCk7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBjdXJyZW50Q2FsbEZyYW1l
cygpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZFBhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgc2Ny
aXB0SWQsIGNvbnN0IFNjcmlwdCYpOwogICAgIHZpcnR1YWwgdm9pZCBmYWlsZWRUb1BhcnNlU291
cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUs
IGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKQEAgLTE2NCw3ICsx
NjQsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29uc3Qg
U2NyaXB0Jik7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBTY3JpcHQ+IFNjcmlwdHNN
YXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFN0cmluZz4gPiBCcmVha3Bv
aW50SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkc01hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4gQnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFrcG9p
bnRJZHNNYXA7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOwogICAgIEluc3BlY3RvckZyb250ZW5kOjpEZWJ1Z2dlciogbV9mcm9udGVuZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVy
QWdlbnQuY3BwCmluZGV4IGI2ZTg1YzQ0ZWUzMGRmNzQ2MTljN2NjMDliMmFiNTdhNWY0NGE1MDgu
Ljc2MjNiMjI0Y2I1NzZlYzBjYzc5MDUzNDRmMmZkZDU4YzY2NTczZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNw
cApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6Omhh
c0hlYXBQcm9maWxlcihFcnJvclN0cmluZyosIGJvb2wqIHJlc3VsdCkKICAgICAqcmVzdWx0ID0g
U2NyaXB0UHJvZmlsZXI6Omhhc0hlYXBQcm9maWxlcigpOwogfQogCi12b2lkIEluc3BlY3Rvckhl
YXBQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkhlYXBQcm9maWxlcjo6UHJvZmlsZUhlYWRl
cj4gPiYgaGVhZGVycykKK3ZvaWQgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmdldFByb2Zp
bGVIZWFkZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPj4mIGhlYWRlcnMpCiB7CiAgICAgbV9z
dGF0ZS0+c2V0Qm9vbGVhbihIZWFwUHJvZmlsZXJBZ2VudFN0YXRlOjpwcm9maWxlSGVhZGVyc1Jl
cXVlc3RlZCwgdHJ1ZSk7CiAgICAgaGVhZGVycyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVp
bGRlcjo6SGVhcFByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPjo6Y3JlYXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oCmlu
ZGV4IGRjMzFkODg4MmExNjVjMTlkNTNhZWQ4ODgwNzVlMzMwZWU0ZWY5ODkuLjI3ZDJhNzc0M2Q2
NmEyMTYzYzQzMDYxMmZmODA5ZjUwYjE4MGY1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oCkBAIC02MSw3ICs2MSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBoYXNIZWFwUHJvZmlsZXIoRXJyb3JTdHJp
bmcqLCBib29sKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JT
dHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpIZWFwUHJvZmls
ZXI6OlByb2ZpbGVIZWFkZXI+ID4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZmlsZUhlYWRl
cnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpI
ZWFwUHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+PiYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFw
U25hcHNob3QoRXJyb3JTdHJpbmcqLCBpbnQgdWlkKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
UHJvZmlsZShFcnJvclN0cmluZyosIGludCB1aWQpOwogCkBAIC03Nyw3ICs3Nyw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
Kik7CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIFJlZlB0cjxTY3JpcHRIZWFwU25h
cHNob3Q+ID4gSWRUb0hlYXBTbmFwc2hvdE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWdu
ZWQsIFJlZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+PiBJZFRvSGVhcFNuYXBzaG90TWFwOwogCiAg
ICAgdm9pZCByZXNldEZyb250ZW5kUHJvZmlsZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JIaXN0b3J5LmgKaW5kZXggY2I3MmE0YTJhMmJmNDg5MGExNWRkMmFlY2Rj
ZTJiNTU5NjhlYTRhNS4uNzIyNGEzOTNlZmJiNWE5ZmFjMWViYWU5NmQzMTMxNTI1N2M0ZDZkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5oCkBAIC03OSw3
ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0KCk7CiAKIHByaXZhdGU6Ci0gICAgVmVj
dG9yPE93blB0cjxBY3Rpb24+ID4gbV9oaXN0b3J5OworICAgIFZlY3RvcjxPd25QdHI8QWN0aW9u
Pj4gbV9oaXN0b3J5OwogICAgIHNpemVfdCBtX2FmdGVyTGFzdEFjdGlvbkluZGV4OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2Vu
dC5jcHAKaW5kZXggMzc0OGZkMDA2Y2NkZjg3MGYwZThhN2IzY2IxMWQ2MDI2NjI2NmUyOC4uNDUz
MDQxZjY4YTU1NDY1MWU0M2VmZjA2YmE1OWJlMDQ2OGQ0MzA4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC0xMjgs
NyArMTI4LDcgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgUmVmUHRyPERPTVN0cmlu
Z0xpc3Q+IGRhdGFiYXNlTmFtZXNMaXN0ID0gcmVxdWVzdFJlc3VsdC0+ZG9tU3RyaW5nTGlzdCgp
OwotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPiBkYXRhYmFzZU5h
bWVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz46OmNyZWF0ZSgpOworICAgICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IGRhdGFiYXNlTmFtZXMgPSBUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZGF0YWJhc2VOYW1lc0xpc3QtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBkYXRhYmFz
ZU5hbWVzLT5hZGRJdGVtKGRhdGFiYXNlTmFtZXNMaXN0LT5pdGVtKGkpKTsKICAgICAgICAgbV9y
ZXF1ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKGRhdGFiYXNlTmFtZXMucmVsZWFzZSgpKTsKQEAg
LTI1NSw3ICsyNTUsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlQYXRoPiBrZXlQYXRoRnJvbUlE
QktleVBhdGgoY29uc3QgSURCS2V5UGF0aCYgaWRiS2V5UGF0aCkKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBJREJLZXlQYXRoOjpBcnJheVR5cGU6IHsKICAgICAgICAga2V5UGF0aCA9IEtleVBh
dGg6OmNyZWF0ZSgpLnNldFR5cGUoS2V5UGF0aDo6VHlwZTo6QXJyYXkpOwotICAgICAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPiBhcnJheSA9IFR5cGVCdWlsZGVyOjpBcnJh
eTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+PiBhcnJheSA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAg
ICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0cmluZ0FycmF5ID0gaWRiS2V5UGF0aC5hcnJh
eSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmluZ0FycmF5LnNpemUoKTsg
KytpKQogICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0oc3RyaW5nQXJyYXlbaV0pOwpAQCAtMjkw
LDEyICsyOTAsMTIgQEAgcHVibGljOgogCiAgICAgICAgIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRh
dGEgZGF0YWJhc2VNZXRhZGF0YSA9IGlkYkRhdGFiYXNlLT5tZXRhZGF0YSgpOwogCi0gICAgICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0
U3RvcmU+ID4gb2JqZWN0U3RvcmVzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpJ
bmRleGVkREI6Ok9iamVjdFN0b3JlPjo6Y3JlYXRlKCk7CisgICAgICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3RvcmU+PiBvYmplY3RT
dG9yZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0
U3RvcmU+OjpjcmVhdGUoKTsKIAogICAgICAgICBmb3IgKElEQkRhdGFiYXNlTWV0YWRhdGE6Ok9i
amVjdFN0b3JlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGRhdGFiYXNlTWV0YWRhdGEub2JqZWN0
U3RvcmVzLmJlZ2luKCk7IGl0ICE9IGRhdGFiYXNlTWV0YWRhdGEub2JqZWN0U3RvcmVzLmVuZCgp
OyArK2l0KSB7CiAgICAgICAgICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmpl
Y3RTdG9yZU1ldGFkYXRhID0gaXQtPnZhbHVlOwogCi0gICAgICAgICAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg+ID4g
aW5kZXhlcyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpPYmpl
Y3RTdG9yZUluZGV4Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3JlSW5kZXg+PiBpbmRleGVz
ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpJbmRleGVkREI6Ok9iamVjdFN0b3Jl
SW5kZXg+OjpjcmVhdGUoKTsKIAogICAgICAgICAgICAgZm9yIChJREJPYmplY3RTdG9yZU1ldGFk
YXRhOjpJbmRleE1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBvYmplY3RTdG9yZU1ldGFkYXRhLmlu
ZGV4ZXMuYmVnaW4oKTsgaXQgIT0gb2JqZWN0U3RvcmVNZXRhZGF0YS5pbmRleGVzLmVuZCgpOyAr
K2l0KSB7CiAgICAgICAgICAgICAgICAgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRh
ZGF0YSA9IGl0LT52YWx1ZTsKQEAgLTQ5NSw3ICs0OTUsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKICAgICBpbnQgbV9za2lw
Q291bnQ7CiAgICAgdW5zaWduZWQgbV9wYWdlU2l6ZTsKLSAgICBSZWZQdHI8QXJyYXk8RGF0YUVu
dHJ5PiA+IG1fcmVzdWx0OworICAgIFJlZlB0cjxBcnJheTxEYXRhRW50cnk+PiBtX3Jlc3VsdDsK
IH07CiAKIGNsYXNzIERhdGFMb2FkZXIgOiBwdWJsaWMgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVl
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFn
ZW50LmNwcAppbmRleCBlNjYwY2MzMWE5OWE0NjY2MmJlM2IwYzFmNjk1OTY5MjcwMmZjNzc5Li5h
YTNkMmUyMjI3MTYwNDIxZjcwNzI2MDQ2ZDQyOThiNWU3NjY4MTAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKQEAgLTEx
OCw3ICsxMTgsNyBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50Ojpwc2V1ZG9FbGVtZW50
RGVzdHJveWVkKFBzZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1lbgogICAgIHVuYmluZFBzZXVkb0Vs
ZW1lbnQocHNldWRvRWxlbWVudCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6
OmxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiA+JiBs
YXllcnMpCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpsYXllcnNGb3JOb2RlKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCiB7CiAgICAgbGF5ZXJz
ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPjo6Y3Jl
YXRlKCk7CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50
OjpsYXllcnNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZAogICAg
IGdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGllcmFyY2h5KGVycm9yU3RyaW5nLCByZW5k
ZXJlciwgbGF5ZXJzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVy
TGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RIaWVyYXJjaHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiA+JiBsYXllcnMpCit2b2lkIEluc3BlY3RvckxheWVy
VHJlZUFnZW50OjpnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNoeShFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYgbGF5ZXJzKQogewog
ICAgIGlmIChyZW5kZXJlci0+aGFzTGF5ZXIoKSkgewogICAgICAgICBnYXRoZXJMYXllcnNVc2lu
Z1JlbmRlckxheWVySGllcmFyY2h5KGVycm9yU3RyaW5nLCB0b1JlbmRlckxheWVyTW9kZWxPYmpl
Y3QocmVuZGVyZXIpLT5sYXllcigpLCBsYXllcnMpOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQg
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0SGll
cmFyY2h5KEVycm9yU3RyaW5nCiAgICAgICAgIGdhdGhlckxheWVyc1VzaW5nUmVuZGVyT2JqZWN0
SGllcmFyY2h5KGVycm9yU3RyaW5nLCByZW5kZXJlciwgbGF5ZXJzKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJMYXllckhpZXJhcmNo
eShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlckxheWVyKiByZW5kZXJMYXllciwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gPiYg
bGF5ZXJzKQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6Z2F0aGVyTGF5ZXJzVXNpbmdS
ZW5kZXJMYXllckhpZXJhcmNoeShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIFJlbmRlckxheWVy
KiByZW5kZXJMYXllciwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5
ZXJUcmVlOjpMYXllcj4+JiBsYXllcnMpCiB7CiAgICAgaWYgKHJlbmRlckxheWVyLT5pc0NvbXBv
c2l0ZWQoKSkKICAgICAgICAgbGF5ZXJzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTGF5ZXIoZXJy
b3JTdHJpbmcsIHJlbmRlckxheWVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCmluZGV4IGVjNzkxODc3ZDMzMzlhZGZmYjIwNDdl
NGI1ZTQ4ZmFkNTI4ODcyMDIuLmNjMDlkZTQzZmQ5YmFhYmNlNTc5ZmM1N2UyZTA3MTliYzNlOTUw
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgZnJvbSB0
aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBs
YXllcnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4gPiYpOworICAgIHZpcnR1YWwg
dm9pZCBsYXllcnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7CiAgICAgdmly
dHVhbCB2b2lkIHJlYXNvbnNGb3JDb21wb3NpdGluZ0xheWVyKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBsYXllcklkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6Q29tcG9zaXRp
bmdSZWFzb25zPiYpOwogCiBwcml2YXRlOgpAQCAtNzcsOCArNzcsOCBAQCBwcml2YXRlOgogICAg
IFN0cmluZyBiaW5kKGNvbnN0IFJlbmRlckxheWVyKik7CiAgICAgdm9pZCB1bmJpbmQoY29uc3Qg
UmVuZGVyTGF5ZXIqKTsKIAotICAgIHZvaWQgZ2F0aGVyTGF5ZXJzVXNpbmdSZW5kZXJPYmplY3RI
aWVyYXJjaHkoRXJyb3JTdHJpbmcqLCBSZW5kZXJPYmplY3QqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiA+Jik7Ci0gICAgdm9pZCBnYXRo
ZXJMYXllcnNVc2luZ1JlbmRlckxheWVySGllcmFyY2h5KEVycm9yU3RyaW5nKiwgUmVuZGVyTGF5
ZXIqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6Okxh
eWVyPiA+Jik7CisgICAgdm9pZCBnYXRoZXJMYXllcnNVc2luZ1JlbmRlck9iamVjdEhpZXJhcmNo
eShFcnJvclN0cmluZyosIFJlbmRlck9iamVjdCosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8
VHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+PiYpOworICAgIHZvaWQgZ2F0aGVyTGF5ZXJz
VXNpbmdSZW5kZXJMYXllckhpZXJhcmNoeShFcnJvclN0cmluZyosIFJlbmRlckxheWVyKiwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7
CiAKICAgICBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBidWlsZE9i
amVjdEZvckxheWVyKEVycm9yU3RyaW5nKiwgUmVuZGVyTGF5ZXIqKTsKICAgICBQYXNzUmVmUHRy
PFR5cGVCdWlsZGVyOjpMYXllclRyZWU6OkludFJlY3Q+IGJ1aWxkT2JqZWN0Rm9ySW50UmVjdChj
b25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JN
ZW1vcnlBZ2VudC5oCmluZGV4IDRiYWZhOTk0ZDQzMDI4ODgwNjU4NmU4NzQxMmUwYmZiZGZmNWQ1
YmEuLmU4ODQ3OTAxZDBjMzBhYzkxYTc2OWY0NGIyYWI0YjRmZGQwZTYxNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCkBAIC00OSw3ICs0
OSw3IEBAIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogY2xhc3MgSW5zcGVjdG9yTWVtb3J5
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rvck1lbW9yeUFnZW50Piwg
cHVibGljIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpNZW1vcnlDb21tYW5kSGFuZGxlciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yTWVtb3J5QWdlbnQpOwogcHVibGlj
OgotICAgIHR5cGVkZWYgVmVjdG9yPE93blB0cjxJbnNwZWN0b3JCYXNlQWdlbnRJbnRlcmZhY2U+
ID4gSW5zcGVjdG9yQWdlbnRzOworICAgIHR5cGVkZWYgVmVjdG9yPE93blB0cjxJbnNwZWN0b3JC
YXNlQWdlbnRJbnRlcmZhY2U+PiBJbnNwZWN0b3JBZ2VudHM7CiAKICAgICBzdGF0aWMgUGFzc093
blB0cjxJbnNwZWN0b3JNZW1vcnlBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvckNvbXBvc2l0ZVN0YXRlKiBzdGF0ZSk7CiAgICAg
dmlydHVhbCB+SW5zcGVjdG9yTWVtb3J5QWdlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggYTlhNDkzYmFmZjQ1MDQ1MGM3YzRi
ZGZjYjYyODg5NTE0ZmMxZjg0My4uNGIzYzhkMmY2YzE5OTQxZjQ5ZjRlMmFhZTdkODE2OTg2N2Nm
M2ZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKQEAgLTUyMiw5ICs1MjIsOSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
UGFnZTo6Q29va2llPiBidWlsZE9iamVjdEZvckNvb2tpZShjb25zdCBDb29raWUmCiAgICAgICAg
IC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPiA+IGJ1aWxkQXJyYXlGb3JDb29raWVzKExpc3RIYXNo
U2V0PENvb2tpZT4mIGNvb2tpZXNMaXN0KQorc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+PiBidWlsZEFycmF5Rm9yQ29va2llcyhM
aXN0SGFzaFNldDxDb29raWU+JiBjb29raWVzTGlzdCkKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+ID4gY29va2llcyA9IFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPjo6Y3JlYXRlKCk7CisgICAgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPj4gY29va2ll
cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPjo6Y3JlYXRl
KCk7CiAKICAgICBMaXN0SGFzaFNldDxDb29raWU+OjppdGVyYXRvciBlbmQgPSBjb29raWVzTGlz
dC5lbmQoKTsKICAgICBMaXN0SGFzaFNldDxDb29raWU+OjppdGVyYXRvciBpdCA9IGNvb2tpZXNM
aXN0LmJlZ2luKCk7CkBAIC01NzUsNyArNTc1LDcgQEAgc3RhdGljIFZlY3RvcjxVUkw+IGFsbFJl
c291cmNlc1VSTHNGb3JGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+ID4mIGNvb2tp
ZXMsIFdURjo6U3RyaW5nKiBjb29raWVzU3RyaW5nKQordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpQYWdlOjpDb29raWU+PiYgY29va2llcywgV1RGOjpTdHJpbmcqIGNvb2tpZXNTdHJp
bmcpCiB7CiAgICAgLy8gSWYgd2UgY2FuIGdldCByYXcgY29va2llcy4KICAgICBMaXN0SGFzaFNl
dDxDb29raWU+IHJhd0Nvb2tpZXNMaXN0OwpAQCAtNjU0LDcgKzY1NCw3IEBAIHN0YXRpYyBib29s
IHRleHRDb250ZW50Rm9yQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291
cmNlLCBTdHJpbmcqCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6c2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJ
ZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNv
bnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1Jl
Z2V4LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hN
YXRjaD4gPiYgcmVzdWx0cykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFyY2hJblJlc291
cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vu
c2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaE1hdGNoPj4mIHJlc3VsdHMpCiB7
CiAgICAgcmVzdWx0cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2Vh
cmNoTWF0Y2g+OjpjcmVhdGUoKTsKIApAQCAtNjk3LDkgKzY5Nyw5IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNo
UmVzdWx0KGNvCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjpzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdGV4dCwg
Y29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25z
dCBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OlBhZ2U6OlNlYXJjaFJlc3VsdD4gPiYgcmVzdWx0cykKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50
OjpzZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgYm9vbCogY29uc3Qgb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBjb25zdCBv
cHRpb25hbElzUmVnZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBh
Z2U6OlNlYXJjaFJlc3VsdD4+JiByZXN1bHRzKQogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdD4gPiBzZWFyY2hSZXN1bHRzID0g
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+OjpjcmVh
dGUoKTsKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpT
ZWFyY2hSZXN1bHQ+PiBzZWFyY2hSZXN1bHRzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpQYWdlOjpTZWFyY2hSZXN1bHQ+OjpjcmVhdGUoKTsKIAogICAgIGJvb2wgaXNSZWdleCA9
IG9wdGlvbmFsSXNSZWdleCA/ICpvcHRpb25hbElzUmVnZXggOiBmYWxzZTsKICAgICBib29sIGNh
c2VTZW5zaXRpdmUgPSBvcHRpb25hbENhc2VTZW5zaXRpdmUgPyAqb3B0aW9uYWxDYXNlU2Vuc2l0
aXZlIDogZmFsc2U7CkBAIC0xMTIzLDcgKzExMjMsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVy
OjpQYWdlOjpGcmFtZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEZvckZyYW1lKEZy
YQogUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IEluc3Bl
Y3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3RGb3JGcmFtZVRyZWUoRnJhbWUqIGZyYW1lKQogewog
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0ID0gYnVpbGRP
YmplY3RGb3JGcmFtZShmcmFtZSk7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU6OlJlc291cmNlcz4gPiBzdWJyZXNvdXJj
ZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VU
cmVlOjpSZXNvdXJjZXM+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6UmVzb3VyY2VzPj4gc3VicmVz
b3VyY2VzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291
cmNlVHJlZTo6UmVzb3VyY2VzPjo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpQ
YWdlOjpGcmFtZVJlc291cmNlVHJlZT4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1l
UmVzb3VyY2VUcmVlOjpjcmVhdGUoKQogICAgICAgICAgLnNldEZyYW1lKGZyYW1lT2JqZWN0KQog
ICAgICAgICAgLnNldFJlc291cmNlcyhzdWJyZXNvdXJjZXMpOwpAQCAtMTE0Niw3ICsxMTQ2LDcg
QEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IEluc3Bl
Y3RvclBhZ2VBZ2VudDo6YnVpbGRPYmplY3QKICAgICAgICAgc3VicmVzb3VyY2VzLT5hZGRJdGVt
KHJlc291cmNlT2JqZWN0KTsKICAgICB9CiAKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4gPiBjaGlsZHJlbkFycmF5Owor
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVz
b3VyY2VUcmVlPj4gY2hpbGRyZW5BcnJheTsKICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZyYW1l
LT50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRT
aWJsaW5nKCkpIHsKICAgICAgICAgaWYgKCFjaGlsZHJlbkFycmF5KSB7CiAgICAgICAgICAgICBj
aGlsZHJlbkFycmF5ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpGcmFt
ZVJlc291cmNlVHJlZT46OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDNjYjk1NGI2Mjc3MTdiMDA4YmUyMjc2ZGQ0NjEzNWNi
YTdjODRmNjQuLmMzMDY5YWQ4ZTE0MGVkNjc1MjRmOTg4NjNmNjYyY2I5MmE1YzQwNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTEwMiwx
MiArMTAyLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2NyaXB0VG9FdmFs
dWF0ZU9uTG9hZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CiAgICAg
dmlydHVhbCB2b2lkIHJlbG9hZChFcnJvclN0cmluZyosIGNvbnN0IGJvb2wqIG9wdGlvbmFsSWdu
b3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkLCBj
b25zdCBTdHJpbmcqIG9wdGlvbmFsU2NyaXB0UHJlcHJvY2Vzc29yKTsKICAgICB2aXJ0dWFsIHZv
aWQgbmF2aWdhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgdmlydHVh
bCB2b2lkIGdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+ID4mIGNvb2tpZXMsIFdURjo6U3RyaW5nKiBjb29r
aWVzU3RyaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29va2llcyhFcnJvclN0cmluZyosIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+JiBjb29r
aWVzLCBXVEY6OlN0cmluZyogY29va2llc1N0cmluZyk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZUNvb2tpZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3Ry
aW5nJiB1cmwpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcq
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYpOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2
NEVuY29kZWQpOwotICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJblJlc291cmNlKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBv
cHRpb25hbElzUmVnZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlBh
Z2U6OlNlYXJjaE1hdGNoPiA+Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNlYXJjaEluUmVzb3VyY2Vz
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwg
Y29uc3QgYm9vbCogaXNSZWdleCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6UGFnZTo6U2VhcmNoUmVzdWx0PiA+Jik7CisgICAgdmlydHVhbCB2b2lkIHNlYXJjaEluUmVz
b3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRp
dmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+PiYpOworICAgIHZpcnR1YWwgdm9pZCBz
ZWFyY2hJblJlc291cmNlcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYsIGNvbnN0IGJvb2wq
IGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGlzUmVnZXgsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jik7CiAgICAgdmlydHVhbCB2
b2lkIHNldERvY3VtZW50Q29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJ
ZCwgY29uc3QgU3RyaW5nJiBodG1sKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuT3ZlcnJpZGVEZXZp
Y2VNZXRyaWNzKEVycm9yU3RyaW5nKiwgYm9vbCopOwogICAgIHZpcnR1YWwgdm9pZCBzZXREZXZp
Y2VNZXRyaWNzT3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGRv
dWJsZSBmb250U2NhbGVGYWN0b3IsIGJvb2wgZml0V2luZG93KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAppbmRleCBiMDk1ODA1
NmQxMmFhM2JmNzEwODE2Zjk2MmFiYjY5ZTA1ZDA0MDVlLi5mYTk1YmY4MmZkNDYxNTE4MGQzNDhi
YmI2NzhmZTE3ZmI3MjVlYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC0yNTEsNyArMjUxLDcgQEAgU3RyaW5nIElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUo
Ym9vbCBpbmNyZW1lbnQKICAgICByZXR1cm4gbWFrZVN0cmluZyhVc2VySW5pdGlhdGVkUHJvZmls
ZU5hbWUsICcuJywgU3RyaW5nOjpudW1iZXIobV9jdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVO
dW1iZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpnZXRQcm9maWxlSGVh
ZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPiA+JiBoZWFkZXJzKQordm9pZCBJbnNwZWN0b3JQcm9m
aWxlckFnZW50OjpnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPj4mIGhlYWRl
cnMpCiB7CiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQcm9maWxlckFnZW50U3RhdGU6OnByb2Zp
bGVIZWFkZXJzUmVxdWVzdGVkLCB0cnVlKTsKICAgICBoZWFkZXJzID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj46OmNyZWF0ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKaW5k
ZXggMWRjNWIwNjg2MTQ2OWI0M2Q1NjkwZDcyODhjZDQ2MWZhYzAxYTI5Yi4uZTkwZmQyNDcxNGU2
NTAxMGI1ZDE4MGYyNzE2OWE2NzdmZDUzNjg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCkBAIC04Niw3ICs4Niw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGVuYWJsZShib29sIHNraXBSZWNvbXBpbGUpOwogICAgIGJvb2wgZW5hYmxl
ZCgpIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIFN0cmluZyBnZXRDdXJyZW50VXNlckluaXRp
YXRlZFByb2ZpbGVOYW1lKGJvb2wgaW5jcmVtZW50UHJvZmlsZU51bWJlciA9IGZhbHNlKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQcm9maWxlcjo6UHJvZmlsZUhlYWRlcj4gPiYp
OworICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVy
Pj4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0Q1BVUHJvZmlsZShFcnJvclN0cmluZyosIGludCB1
aWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OkNQVVByb2ZpbGU+Jik7CiAgICAgdmly
dHVhbCB2b2lkIGdldEhlYXBTbmFwc2hvdChFcnJvclN0cmluZyosIGludCB1aWQpOwogICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVQcm9maWxlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB0eXBl
LCBpbnQgdWlkKTsKQEAgLTEwNyw4ICsxMDcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHN0b3BQcm9maWxpbmcoY29uc3QgU3RyaW5nJiB0aXRs
ZSkgPSAwOwogCiBwcml2YXRlOgotICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCBpbnQsIFJl
ZlB0cjxTY3JpcHRQcm9maWxlPiA+IFByb2ZpbGVzTWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDx1
bnNpZ25lZCBpbnQsIFJlZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+ID4gSGVhcFNuYXBzaG90c01h
cDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQgaW50LCBSZWZQdHI8U2NyaXB0UHJvZmls
ZT4+IFByb2ZpbGVzTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCBpbnQsIFJlZlB0
cjxTY3JpcHRIZWFwU25hcHNob3Q+PiBIZWFwU25hcHNob3RzTWFwOwogCiAgICAgdm9pZCByZXNl
dEZyb250ZW5kUHJvZmlsZXMoKTsKICAgICB2b2lkIHJlc3RvcmVFbmFibGVtZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRl
eCA1N2EyMWZhOTM1ODQxNGQxYjM2ZDlmZGM5NDQ2NGE1MjU3YTExN2QyLi44MjBhN2UzMDM2MmRi
ZWVlOWNjNmE5ZWU4ZDYyMzE0Yjc0ODViNzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTE2Myw3ICsxNjMsNyBAQCBwcml2
YXRlOgogICAgIE93blB0cjxOZXR3b3JrUmVzb3VyY2VzRGF0YT4gbV9yZXNvdXJjZXNEYXRhOwog
ICAgIGJvb2wgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNseTsKIAotICAgIHR5cGVkZWYgSGFzaE1h
cDxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgUmVmUHRyPFhIUlJlcGxheURhdGE+ID4gUGVuZGlu
Z1hIUlJlcGxheURhdGFNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFRocmVhZGFibGVMb2FkZXJD
bGllbnQqLCBSZWZQdHI8WEhSUmVwbGF5RGF0YT4+IFBlbmRpbmdYSFJSZXBsYXlEYXRhTWFwOwog
ICAgIFBlbmRpbmdYSFJSZXBsYXlEYXRhTWFwIG1fcGVuZGluZ1hIUlJlcGxheURhdGE7CiAgICAg
Ly8gRklYTUU6IEluc3BlY3RvclJlc291cmNlQWdlbnQgc2hvdWxkIG5vdyBiZSBhd2FyZSBvZiBz
dHlsZSByZWNhbGN1bGF0aW9uLgogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5p
dGlhdG9yPiBtX3N0eWxlUmVjYWxjdWxhdGlvbkluaXRpYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggYjYwYjRmYzcz
YWM1M2VlZTE5MDIwNmNkMDA5MmZlZmZmMjRhODVmMS4uYTllYTYzMTZhZjZkMWFkODA4YTcwMzIx
ODRjZTkzOTBhOTNmNjIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIEluc3BlY3Rv
clJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbgogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFBy
b3BlcnRpZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElk
LCBjb25zdCBib29sKiBjb25zdCBvd25Qcm9wZXJ0aWVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+ID4mIHJlc3VsdCwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQ
cm9wZXJ0eURlc2NyaXB0b3I+ID4mIGludGVybmFsUHJvcGVydGllcykKK3ZvaWQgSW5zcGVjdG9y
UnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogY29uc3Qgb3duUHJvcGVydGllcywgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNj
cmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVz
KQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgIGlmIChp
bmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAppbmRleCBkMmNlNDQwOWEzOTU0MDhlNWZlMzZi
NTQ1MmU2Yzg4NGYzNGQ3Yjk5Li42OGUxOGQ3OGMxYjUzNzM5ZjkwYTFkYmQxZDkxZDBjOWY2N2Vl
YjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJ1bnRpbWVB
Z2VudC5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhy
b3duKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZU9iamVjdChFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogb3duUHJvcGVydGll
cywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVy
dHlEZXNjcmlwdG9yPiA+JiByZXN1bHQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPiA+JiBpbnRlcm5hbFBy
b3BlcnRpZXMpOworICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogb3duUHJvcGVydGllcywgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlw
dG9yPj4mIHJlc3VsdCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVu
dGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RHcm91cCk7CiAgICAgdmlydHVhbCB2b2lkIHJ1bihFcnJvclN0cmluZyop
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5oCmluZGV4IDFlYTVk
ZjU3MjM5MDk0ZDU3NzY4NTk5MGNlYWI2YzI1YmZlM2UxZDEuLjI0ZDc5OWI1NjdmMWZmNTNiMGU2
ZmZhNDI3YTQ0YzYwMmFiMTY3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdGF0ZS5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZEZyb21D
b29raWUoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgT3duUHRyPEluc3BlY3RvclN0YXRlPiA+IEluc3BlY3RvclN0YXRlTWFwOworICAgIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIE93blB0cjxJbnNwZWN0b3JTdGF0ZT4+IEluc3BlY3RvclN0
YXRlTWFwOwogCiAgICAgLy8gRnJvbSBJbnNwZWN0b3JTdGF0ZVVwZGF0ZUxpc3RlbmVyLgogICAg
IHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JTdGF0ZVVwZGF0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCAxMzkwYTAxZTJjMDk1
OTk1NzQ0N2MyNDJlMmZhMDg4MGE4YjkyM2FkLi5lNjRhYjQyZDYxNmI0ZmQ1YzZjZWQ5ZDBlNzA1
ZmFkMjEwMzBlYTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NT
UnVsZUxpc3Q+IGFzQ1NTUnVsZUxpc3QoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCkKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8U3RhdGljQ1NTUnVsZUxpc3Q+IGxpc3QgPSBTdGF0
aWNDU1NSdWxlTGlzdDo6Y3JlYXRlKCk7Ci0gICAgVmVjdG9yPFJlZlB0cjxDU1NSdWxlPiA+JiBs
aXN0UnVsZXMgPSBsaXN0LT5ydWxlcygpOworICAgIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZT4+JiBs
aXN0UnVsZXMgPSBsaXN0LT5ydWxlcygpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUg
PSBzdHlsZVNoZWV0LT5sZW5ndGgoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBDU1NSdWxl
KiBpdGVtID0gc3R5bGVTaGVldC0+aXRlbShpKTsKICAgICAgICAgaWYgKGl0ZW0tPnR5cGUoKSA9
PSBDU1NSdWxlOjpDSEFSU0VUX1JVTEUpCkBAIC0zMzIsOSArMzMyLDkgQEAgUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OmJ1aWxkT2JqZWN0Rm9y
U3R5bGUoKSBjb24KICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVBy
b3BlcnR5PiA+IEluc3BlY3RvclN0eWxlOjpidWlsZEFycmF5Rm9yQ29tcHV0ZWRTdHlsZSgpIGNv
bnN0CitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1ND
b21wdXRlZFN0eWxlUHJvcGVydHk+PiBJbnNwZWN0b3JTdHlsZTo6YnVpbGRBcnJheUZvckNvbXB1
dGVkU3R5bGUoKSBjb25zdAogewotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5PiA+IHJlc3VsdCA9IFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+Ojpj
cmVhdGUoKTsKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6
OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+OjpjcmVhdGUoKTsKICAg
ICBWZWN0b3I8SW5zcGVjdG9yU3R5bGVQcm9wZXJ0eT4gcHJvcGVydGllczsKICAgICBwb3B1bGF0
ZUFsbFByb3BlcnRpZXMoJnByb3BlcnRpZXMpOwogCkBAIC01MjQsMTMgKzUyNCwxMyBAQCBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVX
aXRoUHJvcGVydGllcygpIGNvbgogICAgIFZlY3RvcjxJbnNwZWN0b3JTdHlsZVByb3BlcnR5PiBw
cm9wZXJ0aWVzOwogICAgIHBvcHVsYXRlQWxsUHJvcGVydGllcygmcHJvcGVydGllcyk7CiAKLSAg
ICBSZWZQdHI8QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+ID4gcHJvcGVydGll
c09iamVjdCA9IEFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5Pjo6Y3JlYXRlKCk7
Ci0gICAgUmVmUHRyPEFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OlNob3J0aGFuZEVudHJ5PiA+IHNo
b3J0aGFuZEVudHJpZXMgPSBBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT46
OmNyZWF0ZSgpOwotICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUHJvcGVydHk+ID4gcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5OworICAg
IFJlZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eT4+IHByb3BlcnRpZXNP
YmplY3QgPSBBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eT46OmNyZWF0ZSgpOwor
ICAgIFJlZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT4+IHNob3J0
aGFuZEVudHJpZXMgPSBBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpTaG9ydGhhbmRFbnRyeT46OmNy
ZWF0ZSgpOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UHJvcGVydHk+PiBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHk7CiAgICAgSGFz
aFNldDxTdHJpbmc+IGZvdW5kU2hvcnRoYW5kczsKICAgICBTdHJpbmcgcHJldmlvdXNQcmlvcml0
eTsKICAgICBTdHJpbmcgcHJldmlvdXNTdGF0dXM7Ci0gICAgT3duUHRyPFZlY3RvcjxzaXplX3Q+
ID4gbGluZUVuZGluZ3MobV9wYXJlbnRTdHlsZVNoZWV0ID8gbV9wYXJlbnRTdHlsZVNoZWV0LT5s
aW5lRW5kaW5ncygpIDogUGFzc093blB0cjxWZWN0b3I8c2l6ZV90PiA+KCkpOworICAgIE93blB0
cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MobV9wYXJlbnRTdHlsZVNoZWV0ID8gbV9wYXJl
bnRTdHlsZVNoZWV0LT5saW5lRW5kaW5ncygpIDogUGFzc093blB0cjxWZWN0b3I8c2l6ZV90Pj4o
KSk7CiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBzb3VyY2VEYXRhID0gZXh0cmFjdFNv
dXJjZURhdGEoKTsKICAgICB1bnNpZ25lZCBydWxlQm9keVJhbmdlU3RhcnQgPSBzb3VyY2VEYXRh
ID8gc291cmNlRGF0YS0+cnVsZUJvZHlSYW5nZS5zdGFydCA6IDA7CiAKQEAgLTU3Myw3ICs1NzMs
NyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHls
ZTo6c3R5bGVXaXRoUHJvcGVydGllcygpIGNvbgogICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJZCA9IGNzc1Byb3BlcnR5SUQobmFtZSk7CiAgICAgICAgICAgICAgICAgLy8g
Q2Fub25pY2FsaXplIHByb3BlcnR5IG5hbWVzIHRvIHRyZWF0IG5vbi1wcmVmaXhlZCBhbmQgdmVu
ZG9yLXByZWZpeGVkIHByb3BlcnR5IG5hbWVzIHRoZSBzYW1lIChvcGFjaXR5IHZzLiAtd2Via2l0
LW9wYWNpdHkpLgogICAgICAgICAgICAgICAgIFN0cmluZyBjYW5vbmljYWxQcm9wZXJ0eU5hbWUg
PSBwcm9wZXJ0eUlkID8gZ2V0UHJvcGVydHlOYW1lU3RyaW5nKHByb3BlcnR5SWQpIDogbmFtZTsK
LSAgICAgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6
OkNTU1Byb3BlcnR5PiA+OjppdGVyYXRvciBhY3RpdmVJdCA9IHByb3BlcnR5TmFtZVRvUHJldmlv
dXNBY3RpdmVQcm9wZXJ0eS5maW5kKGNhbm9uaWNhbFByb3BlcnR5TmFtZSk7CisgICAgICAgICAg
ICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0
eT4+OjppdGVyYXRvciBhY3RpdmVJdCA9IHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9w
ZXJ0eS5maW5kKGNhbm9uaWNhbFByb3BlcnR5TmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFj
dGl2ZUl0ICE9IHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5lbmQoKSkgewog
ICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHlFbnRyeS5wYXJzZWRPaykgewogICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzUHJpb3JpdHkgPSBhY3RpdmVJdC0+dmFsdWUt
PmdldFN0cmluZyhUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eTo6UHJpb3JpdHksICZwcmV2
aW91c1ByaW9yaXR5KTsKQEAgLTEwMDIsMTAgKzEwMDIsMTAgQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWls
ZE9iamUKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAotc3RhdGljIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4gPiBzZWxlY3RvcnNGcm9tU291cmNlKGNvbnN0
IENTU1J1bGVTb3VyY2VEYXRhKiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNoZWV0VGV4dCkK
K3N0YXRpYyBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiBzZWxlY3RvcnNG
cm9tU291cmNlKGNvbnN0IENTU1J1bGVTb3VyY2VEYXRhKiBzb3VyY2VEYXRhLCBjb25zdCBTdHJp
bmcmIHNoZWV0VGV4dCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZ3VsYXJFeHByZXNz
aW9uLCBjb21tZW50LCAoIi9cXCpbXl0qP1xcKi8iLCBUZXh0Q2FzZVNlbnNpdGl2ZSwgTXVsdGls
aW5lRW5hYmxlZCkpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPiA+IHJl
c3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFN0cmluZz4+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+OjpjcmVhdGUoKTsKICAgICBjb25zdCBTZWxlY3RvclJhbmdlTGlzdCYgcmFuZ2VzID0g
c291cmNlRGF0YS0+c2VsZWN0b3JSYW5nZXM7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUg
PSByYW5nZXMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGNvbnN0IFNvdXJjZVJh
bmdlJiByYW5nZSA9IHJhbmdlcy5hdChpKTsKQEAgLTEwMjMsNyArMTAyMyw3IEBAIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpi
dWlsZE9iamVjdEZvclNlCiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBzb3VyY2VEYXRh
OwogICAgIGlmIChlbnN1cmVQYXJzZWREYXRhUmVhZHkoKSkKICAgICAgICAgc291cmNlRGF0YSA9
IHJ1bGVTb3VyY2VEYXRhRm9yKHJ1bGUtPnN0eWxlKCkpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8U3RyaW5nPiA+IHNlbGVjdG9yczsKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFN0cmluZz4+IHNlbGVjdG9yczsKIAogICAgIC8vIFRoaXMgaW50ZW50aW9uYWxseSBkb2Vz
IG5vdCByZWx5IG9uIHRoZSBzb3VyY2UgZGF0YSB0byBhdm9pZCBjYXRjaGluZyB0aGUgdHJhaWxp
bmcgY29tbWVudHMgKGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gc3RhcnRpbmcgJ3snKS4KICAgICBT
dHJpbmcgc2VsZWN0b3JUZXh0ID0gcnVsZS0+c2VsZWN0b3JUZXh0KCk7CkBAIC0xMDY3LDcgKzEw
NjcsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvclN0
eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShDUwogICAgICAgICAgICAgcmVzdWx0LT5zZXRS
dWxlSWQoaWQuYXNQcm90b2NvbFZhbHVlPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGVJZD4oKSk7
CiAgICAgfQogCi0gICAgUmVmUHRyPEFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU01lZGlhPiA+
IG1lZGlhQXJyYXkgPSBBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT46OmNyZWF0ZSgp
OworICAgIFJlZlB0cjxBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT4+IG1lZGlhQXJy
YXkgPSBBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NNZWRpYT46OmNyZWF0ZSgpOwogCiAgICAg
ZmlsbE1lZGlhTGlzdENoYWluKHJ1bGUsIG1lZGlhQXJyYXkuZ2V0KCkpOwogICAgIGlmIChtZWRp
YUFycmF5LT5sZW5ndGgoKSkKQEAgLTEyMjAsMTAgKzEyMjAsMTAgQEAgUmVmUHRyPENTU1J1bGVT
b3VyY2VEYXRhPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpydWxlU291cmNlRGF0YUZvcihDU1NTdHls
ZURlY2xhcmEKICAgICByZXR1cm4gbV9wYXJzZWRTdHlsZVNoZWV0LT5ydWxlU291cmNlRGF0YUF0
KHJ1bGVJbmRleEJ5U3R5bGUoc3R5bGUpKTsKIH0KIAotUGFzc093blB0cjxWZWN0b3I8c2l6ZV90
PiA+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmxpbmVFbmRpbmdzKCkgY29uc3QKK1Bhc3NPd25QdHI8
VmVjdG9yPHNpemVfdD4+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmxpbmVFbmRpbmdzKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fcGFyc2VkU3R5bGVTaGVldC0+aGFzVGV4dCgpKQotICAgICAgICByZXR1
cm4gUGFzc093blB0cjxWZWN0b3I8c2l6ZV90PiA+KCk7CisgICAgICAgIHJldHVybiBQYXNzT3du
UHRyPFZlY3RvcjxzaXplX3Q+PigpOwogICAgIHJldHVybiBDb250ZW50U2VhcmNoVXRpbHM6Omxp
bmVFbmRpbmdzKG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpKTsKIH0KIApAQCAtMTQwNiw5ICsx
NDA2LDkgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjppbmxpbmVTdHlsZVNoZWV0VGV4dChT
dHJpbmcqIHJlc3VsdCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4gPiBJbnNwZWN0b3JT
dHlsZVNoZWV0OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QoQ1NTUnVsZUxpc3QqIHJ1bGVMaXN0KQor
UGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUnVsZT4+
IEluc3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCog
cnVsZUxpc3QpCiB7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NSdWxlPiA+IHJlc3VsdCA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NSdWxlPjo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPj4gcmVzdWx0ID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+OjpjcmVhdGUoKTsKICAgICBpZiAoIXJ1bGVMaXN0KQog
ICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIApAQCAtMTQ4OSw3ICsxNDg5LDcgQEAg
Ym9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OnNldFN0eWxlVGV4dChDU1NT
dHlsZURlY2xhcmF0aW9uKiBzdHlsZSwKICAgICByZXR1cm4gIWVjOwogfQogCi1QYXNzT3duUHRy
PFZlY3RvcjxzaXplX3Q+ID4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpsaW5l
RW5kaW5ncygpIGNvbnN0CitQYXNzT3duUHRyPFZlY3RvcjxzaXplX3Q+PiBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmxpbmVFbmRpbmdzKCkgY29uc3QKIHsKICAgICByZXR1cm4g
Q29udGVudFNlYXJjaFV0aWxzOjpsaW5lRW5kaW5ncyhlbGVtZW50U3R5bGVUZXh0KCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKaW5kZXgg
ZGZjYzZkM2I1YjliMzZkODA1NzJlNzk4MTFmZDE1ZWM2NzUxODA0MC4uZjUwMzliNDQyOTcyZDk2
YzI4YjgyZmU5ZDZiZmNlNWZmOGI3YzY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogCiAg
ICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogY3NzU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxl
LmdldCgpOyB9CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gYnVp
bGRPYmplY3RGb3JTdHlsZSgpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4gPiBidWlsZEFy
cmF5Rm9yQ29tcHV0ZWRTdHlsZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+IGJ1aWxk
QXJyYXlGb3JDb21wdXRlZFN0eWxlKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNEaXNhYmxlZFByb3Bl
cnRpZXMoKSBjb25zdCB7IHJldHVybiAhbV9kaXNhYmxlZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9
CiAgICAgYm9vbCBzZXRQcm9wZXJ0eVRleHQodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0cmluZyYg
dGV4dCwgYm9vbCBvdmVyd3JpdGUsIFN0cmluZyogb2xkVGV4dCwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIGJvb2wgdG9nZ2xlUHJvcGVydHkodW5zaWduZWQgaW5kZXgsIGJvb2wgZGlzYWJsZSwgRXhj
ZXB0aW9uQ29kZSYpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVh
bCB2b2lkIHN0eWxlU2hlZXRDaGFuZ2VkKEluc3BlY3RvclN0eWxlU2hlZXQqKSA9IDA7CiAgICAg
fTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxDU1NTdHlsZURlY2xhcmF0aW9uKiwgUmVmUHRyPElu
c3BlY3RvclN0eWxlPiA+IEluc3BlY3RvclN0eWxlTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxD
U1NTdHlsZURlY2xhcmF0aW9uKiwgUmVmUHRyPEluc3BlY3RvclN0eWxlPj4gSW5zcGVjdG9yU3R5
bGVNYXA7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldD4gY3JlYXRl
KEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8Q1NTU3R5
bGVTaGVldD4gcGFnZVN0eWxlU2hlZXQsIFR5cGVCdWlsZGVyOjpDU1M6OlN0eWxlU2hlZXRPcmln
aW46OkVudW0sIGNvbnN0IFN0cmluZyYgZG9jdW1lbnRVUkwsIExpc3RlbmVyKik7CiAgICAgc3Rh
dGljIFN0cmluZyBzdHlsZVNoZWV0VVJMKENTU1N0eWxlU2hlZXQqIHBhZ2VTdHlsZVNoZWV0KTsK
IApAQCAtMjI3LDEwICsyMjcsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gQWxzbyBhY2Nlc3Nl
ZCBieSBmcmllbmQgY2xhc3MgSW5zcGVjdG9yU3R5bGUuCiAgICAgdmlydHVhbCBib29sIHNldFN0
eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29k
ZSYpOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxWZWN0b3I8c2l6ZV90PiA+IGxpbmVFbmRpbmdz
KCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5k
aW5ncygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxDU1NT
dHlsZVJ1bGU+ID4gQ1NTU3R5bGVSdWxlVmVjdG9yOworICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0
cjxDU1NTdHlsZVJ1bGU+PiBDU1NTdHlsZVJ1bGVWZWN0b3I7CiAgICAgZnJpZW5kIGNsYXNzIElu
c3BlY3RvclN0eWxlOwogCiAgICAgc3RhdGljIHZvaWQgY29sbGVjdEZsYXRSdWxlcyhQYXNzUmVm
UHRyPENTU1J1bGVMaXN0PiwgQ1NTU3R5bGVSdWxlVmVjdG9yKiByZXN1bHQpOwpAQCAtMjQzLDcg
KzI0Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBvcmlnaW5hbFN0eWxlU2hlZXRUZXh0KFN0cmlu
ZyogcmVzdWx0KSBjb25zdDsKICAgICBib29sIHJlc291cmNlU3R5bGVTaGVldFRleHQoU3RyaW5n
KiByZXN1bHQpIGNvbnN0OwogICAgIGJvb2wgaW5saW5lU3R5bGVTaGVldFRleHQoU3RyaW5nKiBy
ZXN1bHQpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1J1bGU+ID4gYnVpbGRBcnJheUZvclJ1bGVMaXN0KENTU1J1bGVMaXN0Kik7
CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
UnVsZT4+IGJ1aWxkQXJyYXlGb3JSdWxlTGlzdChDU1NSdWxlTGlzdCopOwogICAgIFBhc3NSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JMaXN0PiBidWlsZE9iamVjdEZvclNlbGVjdG9y
TGlzdChDU1NTdHlsZVJ1bGUqKTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdl
bnQ7CkBAIC0yNzksNyArMjc5LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gQWxzbyBhY2Nlc3Nl
ZCBieSBmcmllbmQgY2xhc3MgSW5zcGVjdG9yU3R5bGUuCiAgICAgdmlydHVhbCBib29sIHNldFN0
eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29k
ZSYpOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxWZWN0b3I8c2l6ZV90PiA+IGxpbmVFbmRpbmdz
KCkgY29uc3Q7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5k
aW5ncygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIGlubGlu
ZVN0eWxlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuY3BwCmluZGV4IDdlZjZhMjJiY2ZlMTFiZjlkYWNhM2EzMTcwZGI3ZDdiYjE1YTRkMTYuLjhm
Y2UzMmRiZjBmMDM5NTNhYTFlZTFiNjYyMGJiNjk2NTI5ODc4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCkBAIC03NzMsNyArNzczLDcgQEAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQXJyYXlCYXNlOjphc0FycmF5KCkKIHZv
aWQgSW5zcGVjdG9yQXJyYXlCYXNlOjp3cml0ZUpTT04oU3RyaW5nQnVpbGRlciogb3V0cHV0KSBj
b25zdAogewogICAgIG91dHB1dC0+YXBwZW5kKCdbJyk7Ci0gICAgZm9yIChWZWN0b3I8UmVmUHRy
PEluc3BlY3RvclZhbHVlPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YS5iZWdpbigpOyBp
dCAhPSBtX2RhdGEuZW5kKCk7ICsraXQpIHsKKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGEuYmVnaW4oKTsgaXQgIT0gbV9k
YXRhLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIGlmIChpdCAhPSBtX2RhdGEuYmVnaW4oKSkKICAg
ICAgICAgICAgIG91dHB1dC0+YXBwZW5kKCcsJyk7CiAgICAgICAgICgqaXQpLT53cml0ZUpTT04o
b3V0cHV0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAppbmRl
eCA3OWZhYzYzNjUzMWMyZGUzOWZlNTkyNDY0MGY0MWU1MGIwODI2OGNmLi5jYmI3ZjcxMWIxMDUy
MTBhMzA4NTE2NTI4ZDlhZGU3YmFmYmYyZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclZhbHVlcy5oCkBAIC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0ZToKIAogY2xhc3Mg
SW5zcGVjdG9yT2JqZWN0QmFzZSA6IHB1YmxpYyBJbnNwZWN0b3JWYWx1ZSB7CiBwcml2YXRlOgot
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gPiBEaWN0
aW9uYXJ5OworICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxJbnNwZWN0b3JWYWx1
ZT4+IERpY3Rpb25hcnk7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIERpY3Rpb25hcnk6Oml0ZXJh
dG9yIGl0ZXJhdG9yOwpAQCAtMjIyLDggKzIyMiw4IEBAIHB1YmxpYzoKIAogY2xhc3MgSW5zcGVj
dG9yQXJyYXlCYXNlIDogcHVibGljIEluc3BlY3RvclZhbHVlIHsKIHB1YmxpYzoKLSAgICB0eXBl
ZGVmIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yVmFsdWU+ID46Oml0ZXJhdG9yIGl0ZXJhdG9yOwot
ICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gPjo6Y29uc3RfaXRlcmF0
b3IgY29uc3RfaXRlcmF0b3I7CisgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEluc3BlY3RvclZh
bHVlPj46Oml0ZXJhdG9yIGl0ZXJhdG9yOworICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4+Ojpjb25zdF9pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKIAogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYXNBcnJheSgpIE9WRVJSSURFOwogCkBAIC0y
NTUsNyArMjU1LDcgQEAgcHJvdGVjdGVkOgogICAgIEluc3BlY3RvckFycmF5QmFzZSgpOwogCiBw
cml2YXRlOgotICAgIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yVmFsdWU+ID4gbV9kYXRhOworICAg
IFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yVmFsdWU+PiBtX2RhdGE7CiB9OwogCiBjbGFzcyBJbnNw
ZWN0b3JBcnJheSA6IHB1YmxpYyBJbnNwZWN0b3JBcnJheUJhc2UgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuY3BwCmluZGV4IGU0MDFiNjA3OTlkY2E4Mzkw
OTE0MWUzMjQxNjY2ZmRiMjVkODk4ZDIuLmExZjBhYjk4NDE5ZTZmNTBiMjI2YjRlNzc5ZDk2Yjk1
MjJmOGM5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGlt
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2Vu
dC5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OnVubXV0ZUNv
bnNvbGUoKQogCiB2b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OnJlcG9ydEV4ZWN1dGlvbkNvbnRleHRD
cmVhdGlvbigpCiB7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxKU0M6OkV4ZWNTdGF0ZSosIFNlY3Vy
aXR5T3JpZ2luKj4gPiBpc29sYXRlZENvbnRleHRzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8SlND
OjpFeGVjU3RhdGUqLCBTZWN1cml0eU9yaWdpbio+PiBpc29sYXRlZENvbnRleHRzOwogICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gJm1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKCFmcmFt
ZS0+c2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQog
ICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2suY3BwCmluZGV4IDU2ZmE1MmM2M2Y4NTRjNDUzNGE1MmQyYzNjYzI3NGI3MjZjZWRk
YjIuLmU2OTRiZjE2ZDMxYmQ5Y2YzMjNkNTA2NDQzNjgzNzg0OGRhYmUyNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCkBAIC03OSw5ICs3OSw5IEBA
IGJvb2wgU2NyaXB0Q2FsbFN0YWNrOjppc0VxdWFsKFNjcmlwdENhbGxTdGFjayogbykgY29uc3QK
IH0KIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1QYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJh
eTxUeXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPiA+IFNjcmlwdENhbGxTdGFjazo6YnVp
bGRJbnNwZWN0b3JBcnJheSgpIGNvbnN0CitQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6Q29uc29sZTo6Q2FsbEZyYW1lPj4gU2NyaXB0Q2FsbFN0YWNrOjpidWlsZElu
c3BlY3RvckFycmF5KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+ID4gZnJhbWVzID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKKyAgICBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDb25zb2xlOjpDYWxsRnJhbWU+PiBm
cmFtZXMgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFt
ZT46OmNyZWF0ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgp
OyBpKyspCiAgICAgICAgIGZyYW1lcy0+YWRkSXRlbShtX2ZyYW1lcy5hdChpKS5idWlsZEluc3Bl
Y3Rvck9iamVjdCgpKTsKICAgICByZXR1cm4gZnJhbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1NjcmlwdENhbGxTdGFjay5oCmluZGV4IDM1YTdjOThlODM0MGNiM2QzMzU1NmEwYzIyNzU5
NzU0N2QxOGYzODEuLmUwZDdmZDU2Y2ZhMjhmZWRhNjgzNmJlMzFmNjEzNmJmYjljMDkzYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmgKQEAgLTU4LDcgKzU4
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNFcXVhbChTY3JpcHRDYWxsU3RhY2sqKSBjb25zdDsK
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkNvbnNvbGU6OkNhbGxGcmFtZT4gPiBidWlsZEluc3BlY3RvckFycmF5
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkNvbnNvbGU6OkNhbGxGcmFtZT4+IGJ1aWxkSW5zcGVjdG9yQXJyYXkoKSBjb25zdDsKICNlbmRp
ZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3Jp
Z2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgKaW5kZXggZDRjNDgyY2U0OGZjMDdjNWZmYzY2YWFl
NTAyZGIzOTczMjc5NmIxYi4uMWM5NWE0MzlmZTk3MjRkNjcwYmU1MmRjZGM3MzMxMmRhN2FmNmVi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0
UmVzdWx0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZS5oCkBAIC03OCw3ICs3OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBwcml2YXRlOgogICAgICAgICBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlKCkg
eyB9CiAKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjxTdHJpbmcsIFVSTD4sIE93
blB0cjxDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlSXRlbT4gPiBDcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdEhhc2hNYXA7CisgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8
U3RyaW5nLCBVUkw+LCBPd25QdHI8Q3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZUl0ZW0+
PiBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdEhhc2hNYXA7CiAKICAgICAgICAgQ3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRIYXNoTWFwIG1fcHJlZmxpZ2h0SGFzaE1hcDsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggNzJkYTQ1MDAxMjc1NjNj
YzU1NTUyMDE0NjNhNjkyYmZhZjJkMTFiZC4uZDhiYTEzYmQwZjczNGNkZDM5YjA4MjEwZjJkYzlm
M2YwYmY0MThmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBA
IC03OSw3ICs3OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgY2FuY2Vs
QWxsKGNvbnN0IFJlc291cmNlTG9hZGVyU2V0JiBsb2FkZXJzKQogewotICAgIFZlY3RvcjxSZWZQ
dHI8UmVzb3VyY2VMb2FkZXI+ID4gbG9hZGVyc0NvcHk7CisgICAgVmVjdG9yPFJlZlB0cjxSZXNv
dXJjZUxvYWRlcj4+IGxvYWRlcnNDb3B5OwogICAgIGNvcHlUb1ZlY3Rvcihsb2FkZXJzLCBsb2Fk
ZXJzQ29weSk7CiAgICAgc2l6ZV90IHNpemUgPSBsb2FkZXJzQ29weS5zaXplKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyB2
b2lkIGNhbmNlbEFsbChjb25zdCBSZXNvdXJjZUxvYWRlclNldCYgbG9hZGVycykKIAogc3RhdGlj
IHZvaWQgc2V0QWxsRGVmZXJzTG9hZGluZyhjb25zdCBSZXNvdXJjZUxvYWRlclNldCYgbG9hZGVy
cywgYm9vbCBkZWZlcnMpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gPiBs
b2FkZXJzQ29weTsKKyAgICBWZWN0b3I8UmVmUHRyPFJlc291cmNlTG9hZGVyPj4gbG9hZGVyc0Nv
cHk7CiAgICAgY29weVRvVmVjdG9yKGxvYWRlcnMsIGxvYWRlcnNDb3B5KTsKICAgICBzaXplX3Qg
c2l6ZSA9IGxvYWRlcnNDb3B5LnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNp
emU7ICsraSkKQEAgLTEwNzUsNyArMTA3NSw3IEBAIFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNl
PiBEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAg
cmV0dXJuIEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGRhdGEtPnNoYXJlZEJ1ZmZlcigpLCB1cmws
IHJlc291cmNlLT5yZXNwb25zZSgpKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6Z2V0U3Vi
cmVzb3VyY2VzKFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiYgc3VicmVzb3Vy
Y2VzKSBjb25zdAordm9pZCBEb2N1bWVudExvYWRlcjo6Z2V0U3VicmVzb3VyY2VzKFZlY3RvcjxQ
YXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+JiBzdWJyZXNvdXJjZXMpIGNvbnN0CiB7CiAgICAg
aWYgKCFpc0NvbW1pdHRlZCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5oCmluZGV4IDU2MmNjYWNjNjhhZTJjODE1MzQxYTMwOTNjYjVkODNkM2Fm
MTRiOWIuLjAxYjM5M2I2ODkxMzg4NWFkMzA5NjM1MWEwYjgxMjEwYjFiYWFkYzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC03NCw3ICs3NCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTaGFyZWRCdWZmZXI7CiAgICAgY2xhc3MgU3Vic3RpdHV0
ZVJlc291cmNlOwogCi0gICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4g
PiBSZXNvdXJjZUxvYWRlclNldDsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFJlc291cmNl
TG9hZGVyPj4gUmVzb3VyY2VMb2FkZXJTZXQ7CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVzb3VyY2VS
ZXNwb25zZT4gUmVzcG9uc2VWZWN0b3I7CiAKICAgICBjbGFzcyBEb2N1bWVudExvYWRlciA6IHB1
YmxpYyBSZWZDb3VudGVkPERvY3VtZW50TG9hZGVyPiwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudCB7CkBAIC0xNTYsNyArMTU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAvLyBSZXR1cm4gYW4gQXJjaGl2ZVJlc291cmNlIGZvciB0aGUgVVJMLCBlaXRoZXIgY3JlYXRp
bmcgZnJvbSBsaXZlIGRhdGEgb3IKICAgICAgICAgLy8gcHVsbGluZyBmcm9tIHRoZSBBcmNoaXZl
UmVzb3VyY2VDb2xsZWN0aW9uCiAgICAgICAgIFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBz
dWJyZXNvdXJjZShjb25zdCBVUkwmKSBjb25zdDsKLSAgICAgICAgdm9pZCBnZXRTdWJyZXNvdXJj
ZXMoVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+JikgY29uc3Q7CisgICAgICAg
IHZvaWQgZ2V0U3VicmVzb3VyY2VzKFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+
JikgY29uc3Q7CiAKIAogI2lmbmRlZiBOREVCVUcKQEAgLTM3MSw3ICszNzEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFJlc3BvbnNlVmVjdG9yIG1fcmVzcG9uc2VzOwogICAgICAg
ICBib29sIG1fc3RvcFJlY29yZGluZ1Jlc3BvbnNlczsKICAgICAgICAgCi0gICAgICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8UmVzb3VyY2VMb2FkZXI+LCBSZWZQdHI8U3Vic3RpdHV0ZVJlc291
cmNlPiA+IFN1YnN0aXR1dGVSZXNvdXJjZU1hcDsKKyAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFJl
ZlB0cjxSZXNvdXJjZUxvYWRlcj4sIFJlZlB0cjxTdWJzdGl0dXRlUmVzb3VyY2U+PiBTdWJzdGl0
dXRlUmVzb3VyY2VNYXA7CiAgICAgICAgIFN1YnN0aXR1dGVSZXNvdXJjZU1hcCBtX3BlbmRpbmdT
dWJzdGl0dXRlUmVzb3VyY2VzOwogICAgICAgICBUaW1lcjxEb2N1bWVudExvYWRlcj4gbV9zdWJz
dGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN0YXRlLmgK
aW5kZXggOTY0NzY2Yjg1Yjg4ZWZmOTljMzUyZjViY2Q4Y2VlYTk2ODBjOGFkMy4uNmY1NTk0M2Zl
N2Y0ODU0NTFkMTc1ZWIwOTI1MTMxMjc1YjM4MDVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Zvcm1TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3Rh
dGUuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE5vdFN1
Ym1pdHRlZEJ5SmF2YVNjcmlwdAogICAgIH07CiAgICAgCi0gICAgdHlwZWRlZiBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgU3RyaW5nPiA+IFN0cmluZ1BhaXJWZWN0b3I7CisgICAgdHlwZWRlZiBW
ZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gU3RyaW5nUGFpclZlY3RvcjsKIAogICAg
IGNsYXNzIEZvcm1TdGF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPEZvcm1TdGF0ZT4gewogICAgIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCmluZGV4IGNkY2Q5
Yzc2MDk0MWFlZTQ3YzBlZjNlZDljNTU0NzY1Nzg0ODdjMWQuLmE4OTUxNjg5ZGEwZmRhOGUxMzk5
YzYyODVhOGQ0MWNjYmFiYTRmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
b3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IEZv
cm1TdWJtaXNzaW9uOjpjcmVhdGUoSFRNTEZvcm1FbGVtZW50KiBmb3JtLCBjb25zdCBBCiAKICAg
ICBUZXh0RW5jb2RpbmcgZGF0YUVuY29kaW5nID0gaXNNYWlsdG9Gb3JtID8gVVRGOEVuY29kaW5n
KCkgOiBGb3JtRGF0YUJ1aWxkZXI6OmVuY29kaW5nRnJvbUFjY2VwdENoYXJzZXQoY29waWVkQXR0
cmlidXRlcy5hY2NlcHRDaGFyc2V0KCksIGRvY3VtZW50KTsKICAgICBSZWZQdHI8RE9NRm9ybURh
dGE+IGRvbUZvcm1EYXRhID0gRE9NRm9ybURhdGE6OmNyZWF0ZShkYXRhRW5jb2RpbmcuZW5jb2Rp
bmdGb3JGb3JtU3VibWlzc2lvbigpKTsKLSAgICBWZWN0b3I8cGFpcjxTdHJpbmcsIFN0cmluZz4g
PiBmb3JtVmFsdWVzOworICAgIFZlY3RvcjxwYWlyPFN0cmluZywgU3RyaW5nPj4gZm9ybVZhbHVl
czsKIAogICAgIGJvb2wgY29udGFpbnNQYXNzd29yZERhdGEgPSBmYWxzZTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZm9ybS0+YXNzb2NpYXRlZEVsZW1lbnRzKCkuc2l6ZSgpOyArK2kp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIuaAppbmRleCAzM2E1MTkxY2Vl
MWQ0ZDE5YmNmOTRlZDYwZmFmZDJiOTFlZWE3YTlkLi41Y2VhOTEyYTJiNWJmOTJjM2RmMjBkMGIx
NWI2MWMyZTQzMDJhMzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJvZ3Jl
c3NUcmFja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5o
CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEZyYW1lPiBtX29yaWdpbmF0
aW5nUHJvZ3Jlc3NGcmFtZTsKICAgICAKICAgICBpbnQgbV9udW1Qcm9ncmVzc1RyYWNrZWRGcmFt
ZXM7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBPd25QdHI8UHJvZ3Jlc3NJdGVtPiA+IG1f
cHJvZ3Jlc3NJdGVtczsKKyAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIE93blB0cjxQcm9ncmVz
c0l0ZW0+PiBtX3Byb2dyZXNzSXRlbXM7CiAKICAgICBUaW1lcjxQcm9ncmVzc1RyYWNrZXI+IG1f
cHJvZ3Jlc3NIZWFydGJlYXRUaW1lcjsKICAgICB1bnNpZ25lZCBtX2hlYXJ0YmVhdHNXaXRoTm9Q
cm9ncmVzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aAppbmRleCAyZGJmNjUwNmE4ZDhlNGI4YmRjNTZiMzA5MmQwNmQwMzY2NjQ1YzIzLi42MDVmMzRj
YzU4OWViNWU2M2Q3OTgyOGI0MWQyYjZkN2U5YmM2ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC04OCwxMiArODgsMTIgQEAgcHJpdmF0
ZToKICAgICAgICAgYm9vbCBoYXNSZXF1ZXN0cygpIGNvbnN0OwogICAgICAgICBib29sIGxpbWl0
UmVxdWVzdHMoUmVzb3VyY2VMb2FkUHJpb3JpdHkpIGNvbnN0OwogCi0gICAgICAgIHR5cGVkZWYg
RGVxdWU8UmVmUHRyPFJlc291cmNlTG9hZGVyPiA+IFJlcXVlc3RRdWV1ZTsKKyAgICAgICAgdHlw
ZWRlZiBEZXF1ZTxSZWZQdHI8UmVzb3VyY2VMb2FkZXI+PiBSZXF1ZXN0UXVldWU7CiAgICAgICAg
IFJlcXVlc3RRdWV1ZSYgcmVxdWVzdHNQZW5kaW5nKFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9y
aXR5KSB7IHJldHVybiBtX3JlcXVlc3RzUGVuZGluZ1twcmlvcml0eV07IH0KIAogICAgIHByaXZh
dGU6ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgUmVxdWVzdFF1ZXVlIG1fcmVxdWVzdHNQ
ZW5kaW5nW1Jlc291cmNlTG9hZFByaW9yaXR5SGlnaGVzdCArIDFdOwotICAgICAgICB0eXBlZGVm
IEhhc2hTZXQ8UmVmUHRyPFJlc291cmNlTG9hZGVyPiA+IFJlcXVlc3RNYXA7CisgICAgICAgIHR5
cGVkZWYgSGFzaFNldDxSZWZQdHI8UmVzb3VyY2VMb2FkZXI+PiBSZXF1ZXN0TWFwOwogICAgICAg
ICBSZXF1ZXN0TWFwIG1fcmVxdWVzdHNMb2FkaW5nOwogICAgICAgICBjb25zdCBTdHJpbmcgbV9u
YW1lOwogICAgICAgICBjb25zdCBpbnQgbV9tYXhSZXF1ZXN0c0luRmxpZ2h0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCA0ZmEwNzY4ZTNiODE1YzYxMGMy
ZmQyNDE1MTNlYmRjODlkMGNjOTczLi4wYmVjMGI0ODZkZDJhNTYyYjMyMmVhNzgwMjcyZTZiZjU2
ZmQ5MGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcApAQCAt
MjA3LDExICsyMDcsMTEgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OmZpbGVGYWlsZWRUb1BhcnNl
KCkKICAgICBjYW5jZWxMb2FkKCk7CiB9CiAKLXZvaWQgVGV4dFRyYWNrTG9hZGVyOjpnZXROZXdD
dWVzKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVzKQordm9pZCBUZXh0
VHJhY2tMb2FkZXI6OmdldE5ld0N1ZXMoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+PiYgb3V0
cHV0Q3VlcykKIHsKICAgICBBU1NFUlQobV9jdWVQYXJzZXIpOwogICAgIGlmIChtX2N1ZVBhcnNl
cikgewotICAgICAgICBWZWN0b3I8UmVmUHRyPFdlYlZUVEN1ZURhdGE+ID4gbmV3Q3VlczsKKyAg
ICAgICAgVmVjdG9yPFJlZlB0cjxXZWJWVFRDdWVEYXRhPj4gbmV3Q3VlczsKICAgICAgICAgbV9j
dWVQYXJzZXItPmdldE5ld0N1ZXMobmV3Q3Vlcyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbmV3Q3Vlcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgUmVmUHRyPFdlYlZUVEN1
ZURhdGE+IGRhdGEgPSBuZXdDdWVzW2ldOwpAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgVGV4dFRy
YWNrTG9hZGVyOjpnZXROZXdDdWVzKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBvdXRw
dXRDdWVzKQogfQogCiAjaWYgRU5BQkxFKFdFQlZUVF9SRUdJT05TKQotdm9pZCBUZXh0VHJhY2tM
b2FkZXI6OmdldE5ld1JlZ2lvbnMoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tSZWdpb24+ID4mIG91
dHB1dFJlZ2lvbnMpCit2b2lkIFRleHRUcmFja0xvYWRlcjo6Z2V0TmV3UmVnaW9ucyhWZWN0b3I8
UmVmUHRyPFRleHRUcmFja1JlZ2lvbj4+JiBvdXRwdXRSZWdpb25zKQogewogICAgIEFTU0VSVCht
X2N1ZVBhcnNlcik7CiAgICAgaWYgKG1fY3VlUGFyc2VyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRUcmFja0xvYWRlci5oCmluZGV4IDkzNTdlMTBjOTYwZTUyMGFjZTViYmUyMjIwMDUyOGU2Nzc4
YTg0NTkuLmIwNTYwMTExN2I3ZTZkMTI2Nzc3NGQ3YTBlNzIxNTIxYzQzMzIwYmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgKQEAgLTY2LDkgKzY2LDkgQEAgcHVibGlj
OgogICAgIAogICAgIGJvb2wgbG9hZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNyb3NzT3Jp
Z2luTW9kZSk7CiAgICAgdm9pZCBjYW5jZWxMb2FkKCk7Ci0gICAgdm9pZCBnZXROZXdDdWVzKFZl
Y3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVzKTsKKyAgICB2b2lkIGdldE5l
d0N1ZXMoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+PiYgb3V0cHV0Q3Vlcyk7CiAjaWYgRU5B
QkxFKFdFQlZUVF9SRUdJT05TKQotICAgIHZvaWQgZ2V0TmV3UmVnaW9ucyhWZWN0b3I8UmVmUHRy
PFRleHRUcmFja1JlZ2lvbj4gPiYgb3V0cHV0UmVnaW9ucyk7CisgICAgdm9pZCBnZXROZXdSZWdp
b25zKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrUmVnaW9uPj4mIG91dHB1dFJlZ2lvbnMpOwogI2Vu
ZGlmCiBwcml2YXRlOgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFk
YWJsZUxvYWRlci5jcHAKaW5kZXggZmE5N2QyY2U3OWQ0NDdjNDI3ODQ0MmQ4NzZhY2RlNjBlODE0
M2IzYy4uYjdiNmY3YTgwYWIyMDliYzFkN2FmYzI0ZWYzNzMxYjlkMDk2NDkwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTkw
LDcgKzE5MCw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcKICAgICBtX2xvYWRlclByb3h5LnBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3Jr
ZXJHbG9iYWxTY29wZURpZFJlY2VpdmVSZXNwb25zZSwgbV93b3JrZXJDbGllbnRXcmFwcGVyLCBp
ZGVudGlmaWVyLCByZXNwb25zZSksIG1fdGFza01vZGUpOwogfQogCi1zdGF0aWMgdm9pZCB3b3Jr
ZXJHbG9iYWxTY29wZURpZFJlY2VpdmVEYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3Jh
cHBlciwgUGFzc093blB0cjxWZWN0b3I8Y2hhcj4gPiB2ZWN0b3JEYXRhKQorc3RhdGljIHZvaWQg
d29ya2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVu
dFdyYXBwZXIsIFBhc3NPd25QdHI8VmVjdG9yPGNoYXI+PiB2ZWN0b3JEYXRhKQogewogICAgIEFT
U0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC0+aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAg
ICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YSh2ZWN0b3JEYXRhLT5kYXRhKCks
IHZlY3RvckRhdGEtPnNpemUoKSk7CkBAIC0xOTgsNyArMTk4LDcgQEAgc3RhdGljIHZvaWQgd29y
a2VyR2xvYmFsU2NvcGVEaWRSZWNlaXZlRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBSZWYKIAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdl
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKIHsKLSAg
ICBPd25QdHI8VmVjdG9yPGNoYXI+ID4gdmVjdG9yID0gYWRvcHRQdHIobmV3IFZlY3RvcjxjaGFy
PihkYXRhTGVuZ3RoKSk7IC8vIG5lZWRzIHRvIGJlIGFuIE93blB0ciBmb3IgdXNhZ2Ugd2l0aCBj
cmVhdGVDYWxsYmFja1Rhc2suCisgICAgT3duUHRyPFZlY3RvcjxjaGFyPj4gdmVjdG9yID0gYWRv
cHRQdHIobmV3IFZlY3RvcjxjaGFyPihkYXRhTGVuZ3RoKSk7IC8vIG5lZWRzIHRvIGJlIGFuIE93
blB0ciBmb3IgdXNhZ2Ugd2l0aCBjcmVhdGVDYWxsYmFja1Rhc2suCiAgICAgbWVtY3B5KHZlY3Rv
ci0+ZGF0YSgpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNr
Rm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoY3JlYXRlQ2FsbGJhY2tUYXNrKCZ3b3JrZXJHbG9i
YWxTY29wZURpZFJlY2VpdmVEYXRhLCBtX3dvcmtlckNsaWVudFdyYXBwZXIsIHZlY3Rvci5yZWxl
YXNlKCkpLCBtX3Rhc2tNb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCA4NTI4OWIzMzk4MjM4MjNkZGQyZDcw
YWRlYzE0YWYyOTZmNDlhZGIyLi5lMTFmYjc5NjM4YzU4YzgwMDg2YTAyNjVhMDYyN2U5MTM3ZDVl
Zjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGUuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlOjph
ZGRSZXNvdXJjZShQYXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gcmVzb3VyY2UK
IAogdW5zaWduZWQgQXBwbGljYXRpb25DYWNoZTo6cmVtb3ZlUmVzb3VyY2UoY29uc3QgU3RyaW5n
JiB1cmwpCiB7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U+ID46Oml0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuZmluZCh1cmwpOworICAgIEhhc2hN
YXA8U3RyaW5nLCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj46Oml0ZXJhdG9yIGl0
ID0gbV9yZXNvdXJjZXMuZmluZCh1cmwpOwogICAgIGlmIChpdCA9PSBtX3Jlc291cmNlcy5lbmQo
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTIyMyw5ICsyMjMsOSBAQCBpbnQ2NF90IEFwcGxp
Y2F0aW9uQ2FjaGU6OmRpc2tVc2FnZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbiogb3JpZ2luKQog
I2lmbmRlZiBOREVCVUcKIHZvaWQgQXBwbGljYXRpb25DYWNoZTo6ZHVtcCgpCiB7Ci0gICAgSGFz
aE1hcDxTdHJpbmcsIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+ID46OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IG1fcmVzb3VyY2VzLmVuZCgpOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQ
dHI8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcmVz
b3VyY2VzLmVuZCgpOwogICAgIAotICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2U+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgZm9yIChIYXNoTWFwPFN0cmluZywgUmVm
UHRyPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcmVz
b3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBwcmludGYoIiVzICIs
IGl0LT5rZXkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmR1bXBUeXBlKGl0LT52YWx1ZS0+dHlwZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGUuaAppbmRleCBmZmU0ODIxODcw
YjY5NWMyMzgxM2RlNzM2N2Y5MDNmZjAxMjhmZjNmLi42ODA2MzVkZWZiMjljMDg4Nzk4MjliNzZl
YTYwMGUxYWU0NmRmYjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgVVJMOwogY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAKLXR5cGVkZWYgVmVjdG9y
PHN0ZDo6cGFpcjxVUkwsIFVSTD4gPiBGYWxsYmFja1VSTFZlY3RvcjsKK3R5cGVkZWYgVmVjdG9y
PHN0ZDo6cGFpcjxVUkwsIFVSTD4+IEZhbGxiYWNrVVJMVmVjdG9yOwogCiBjbGFzcyBBcHBsaWNh
dGlvbkNhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8QXBwbGljYXRpb25DYWNoZT4gewogcHVibGlj
OgpAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wKCk7CiAjZW5kaWYKIAot
ICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U+ID4gUmVzb3VyY2VNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4+IFJlc291cmNlTWFwOwogICAgIFJlc291cmNlTWFwOjpj
b25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VzLmJlZ2luKCk7
IH0KICAgICBSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNvdXJjZXMuZW5kKCk7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCmluZGV4IDNjNjI0
ZGY0NDdiZmUxYWEzMjU5NzExZmRiYTJjZWM5MjQyMmQ1NzguLjEzYmVkMGZhYjNlNTc4Zjk4OTY3
ZjFhZmIwZjc3ODdhY2U0MTUzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMTUxMiw3ICsx
NTEyLDcgQEAgbG9uZyBsb25nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpmbGF0RmlsZUFyZWFT
aXplKCkKICAgICByZXR1cm4gdG90YWxTaXplOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpnZXRPcmlnaW5zV2l0aENhY2hlKEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiA+JiBvcmlnaW5zKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Z2V0T3JpZ2luc1dp
dGhDYWNoZShIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQogewogICAg
IFZlY3RvcjxVUkw+IHVybHM7CiAgICAgaWYgKCFtYW5pZmVzdFVSTHMoJnVybHMpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmUuY3BwCmluZGV4IGVhNzZhMTE0ZDFlODU4
YTMzMThiYWM0MDZiYWFlZmI1YjQyMDAyMTYuLjg2ZDc1NThlMTg3MThiMjJlMDRjMWU3MDJkYjdl
MzQyMDZmMGY0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmUuY3Bw
CkBAIC0zNywxMyArMzcsMTMgQEAgQXJjaGl2ZTo6fkFyY2hpdmUoKQogCiB2b2lkIEFyY2hpdmU6
OmNsZWFyQWxsU3ViZnJhbWVBcmNoaXZlcygpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxBcmNoaXZl
PiA+IGNsZWFyZWRBcmNoaXZlczsKKyAgICBWZWN0b3I8UmVmUHRyPEFyY2hpdmU+PiBjbGVhcmVk
QXJjaGl2ZXM7CiAgICAgY2xlYXJBbGxTdWJmcmFtZUFyY2hpdmVzSW1wbCgmY2xlYXJlZEFyY2hp
dmVzKTsKIH0KIAotdm9pZCBBcmNoaXZlOjpjbGVhckFsbFN1YmZyYW1lQXJjaGl2ZXNJbXBsKFZl
Y3RvcjxSZWZQdHI8QXJjaGl2ZT4gPiogY2xlYXJlZEFyY2hpdmVzKQordm9pZCBBcmNoaXZlOjpj
bGVhckFsbFN1YmZyYW1lQXJjaGl2ZXNJbXBsKFZlY3RvcjxSZWZQdHI8QXJjaGl2ZT4+KiBjbGVh
cmVkQXJjaGl2ZXMpCiB7Ci0gICAgZm9yIChWZWN0b3I8UmVmUHRyPEFyY2hpdmU+ID46Oml0ZXJh
dG9yIGl0ID0gbV9zdWJmcmFtZUFyY2hpdmVzLmJlZ2luKCk7IGl0ICE9IG1fc3ViZnJhbWVBcmNo
aXZlcy5lbmQoKTsgKytpdCkgeworICAgIGZvciAoVmVjdG9yPFJlZlB0cjxBcmNoaXZlPj46Oml0
ZXJhdG9yIGl0ID0gbV9zdWJmcmFtZUFyY2hpdmVzLmJlZ2luKCk7IGl0ICE9IG1fc3ViZnJhbWVB
cmNoaXZlcy5lbmQoKTsgKytpdCkgewogICAgICAgICBpZiAoIWNsZWFyZWRBcmNoaXZlcy0+Y29u
dGFpbnMoKml0KSkgewogICAgICAgICAgICAgY2xlYXJlZEFyY2hpdmVzLT5hcHBlbmQoKml0KTsK
ICAgICAgICAgICAgICgqaXQpLT5jbGVhckFsbFN1YmZyYW1lQXJjaGl2ZXNJbXBsKGNsZWFyZWRB
cmNoaXZlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlLmgKaW5kZXggYjc2
NTZlNTc5Y2JmYjFkYmY5ZDY1MzQxMmU4YTA3NzllODAyZmQwZi4uMTVmNmI3NTYzNzI0MGRjYjRk
MmEyNTBiMDY4YjdjODMwNjZmZDZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0Fy
Y2hpdmUuaApAQCAtNDcsOCArNDcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QXJjaGl2ZSgp
OwogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwogICAgIEFyY2hpdmVSZXNvdXJj
ZSogbWFpblJlc291cmNlKCkgeyByZXR1cm4gbV9tYWluUmVzb3VyY2UuZ2V0KCk7IH0KLSAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiYgc3VicmVzb3VyY2VzKCkgY29u
c3QgeyByZXR1cm4gbV9zdWJyZXNvdXJjZXM7IH0KLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEFy
Y2hpdmU+ID4mIHN1YmZyYW1lQXJjaGl2ZXMoKSBjb25zdCB7IHJldHVybiBtX3N1YmZyYW1lQXJj
aGl2ZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+JiBzdWJy
ZXNvdXJjZXMoKSBjb25zdCB7IHJldHVybiBtX3N1YnJlc291cmNlczsgfQorICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8QXJjaGl2ZT4+JiBzdWJmcmFtZUFyY2hpdmVzKCkgY29uc3QgeyByZXR1cm4g
bV9zdWJmcmFtZUFyY2hpdmVzOyB9CiAKIHByb3RlY3RlZDoKICAgICAvLyBUaGVzZSBtZXRob2Rz
IGFyZSBtZWFudCBmb3Igc3ViY2xhc3NlcyBmb3IgZGlmZmVyZW50IGFyY2hpdmUgdHlwZXMgdG8g
YWRkIHJlc291cmNlcyBpbiB0byB0aGUgYXJjaGl2ZSwKQEAgLTYwLDExICs2MCwxMSBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBjbGVhckFsbFN1YmZyYW1lQXJjaGl2ZXMoKTsKIAogcHJpdmF0ZToK
LSAgICB2b2lkIGNsZWFyQWxsU3ViZnJhbWVBcmNoaXZlc0ltcGwoVmVjdG9yPFJlZlB0cjxBcmNo
aXZlPiA+KiBjbGVhcmVkQXJjaGl2ZXMpOworICAgIHZvaWQgY2xlYXJBbGxTdWJmcmFtZUFyY2hp
dmVzSW1wbChWZWN0b3I8UmVmUHRyPEFyY2hpdmU+PiogY2xlYXJlZEFyY2hpdmVzKTsKIAogICAg
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IG1fbWFpblJlc291cmNlOwotICAgIFZlY3RvcjxSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiA+IG1fc3VicmVzb3VyY2VzOwotICAgIFZlY3RvcjxSZWZQdHI8
QXJjaGl2ZT4gPiBtX3N1YmZyYW1lQXJjaGl2ZXM7CisgICAgVmVjdG9yPFJlZlB0cjxBcmNoaXZl
UmVzb3VyY2U+PiBtX3N1YnJlc291cmNlczsKKyAgICBWZWN0b3I8UmVmUHRyPEFyY2hpdmU+PiBt
X3N1YmZyYW1lQXJjaGl2ZXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCmluZGV4IDY0
ZWMyOGRhNWNkZDg4Y2ZmNWYyN2JhNGQ5NzUyYzk0MGRmYWUzNmEuLmFjOWUzNzdiNTZjNDFkODBj
YWFmMWIxZmE3NjMwNWFjYzU5NzQyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uY3BwCkBAIC00MSwx
MiArNDEsMTIgQEAgdm9pZCBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uOjphZGRBbGxSZXNvdXJj
ZXMoQXJjaGl2ZSogYXJjaGl2ZSkKICAgICBpZiAoIWFyY2hpdmUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+JiBzdWJyZXNvdXJj
ZXMgPSBhcmNoaXZlLT5zdWJyZXNvdXJjZXMoKTsKLSAgICBmb3IgKFZlY3RvcjxSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiA+Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvciA9IHN1YnJlc291cmNlcy5i
ZWdpbigpOyBpdGVyYXRvciAhPSBzdWJyZXNvdXJjZXMuZW5kKCk7ICsraXRlcmF0b3IpCisgICAg
Y29uc3QgVmVjdG9yPFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiYgc3VicmVzb3VyY2VzID0gYXJj
aGl2ZS0+c3VicmVzb3VyY2VzKCk7CisgICAgZm9yIChWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4+Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvciA9IHN1YnJlc291cmNlcy5iZWdpbigpOyBp
dGVyYXRvciAhPSBzdWJyZXNvdXJjZXMuZW5kKCk7ICsraXRlcmF0b3IpCiAgICAgICAgIG1fc3Vi
cmVzb3VyY2VzLnNldCgoKml0ZXJhdG9yKS0+dXJsKCksIGl0ZXJhdG9yLT5nZXQoKSk7CiAKLSAg
ICBjb25zdCBWZWN0b3I8UmVmUHRyPEFyY2hpdmU+ID4mIHN1YmZyYW1lcyA9IGFyY2hpdmUtPnN1
YmZyYW1lQXJjaGl2ZXMoKTsKLSAgICBmb3IgKFZlY3RvcjxSZWZQdHI8QXJjaGl2ZT4gPjo6Y29u
c3RfaXRlcmF0b3IgaXRlcmF0b3IgPSBzdWJmcmFtZXMuYmVnaW4oKTsgaXRlcmF0b3IgIT0gc3Vi
ZnJhbWVzLmVuZCgpOyArK2l0ZXJhdG9yKSB7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxBcmNo
aXZlPj4mIHN1YmZyYW1lcyA9IGFyY2hpdmUtPnN1YmZyYW1lQXJjaGl2ZXMoKTsKKyAgICBmb3Ig
KFZlY3RvcjxSZWZQdHI8QXJjaGl2ZT4+Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvciA9IHN1YmZy
YW1lcy5iZWdpbigpOyBpdGVyYXRvciAhPSBzdWJmcmFtZXMuZW5kKCk7ICsraXRlcmF0b3IpIHsK
ICAgICAgICAgUmVmUHRyPEFyY2hpdmU+IGFyY2hpdmUgPSAqaXRlcmF0b3I7CiAgICAgICAgIEFT
U0VSVChhcmNoaXZlLT5tYWluUmVzb3VyY2UoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaAppbmRleCA1
YWU0YjJkNDA1Zjg3YmI4YTAwZDBlMzBjMGU1YTlhOWI3Y2E1ZWY3Li4xOTI3YTg5NTI3MzQzZGE4
YWQ3ODRhMTc2ODI1M2VjYzJmNDM1NDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi5oCkBAIC01MSw4ICs1
MSw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEFyY2hpdmU+IHBvcFN1YmZyYW1lQXJjaGl2
ZShjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgVVJMJik7CiAgICAgCiBwcml2YXRlOiAg
ICAKLSAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiBtX3N1YnJl
c291cmNlczsKLSAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFyY2hpdmU+ID4gbV9zdWJmcmFt
ZXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiBtX3N1YnJl
c291cmNlczsKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEFyY2hpdmU+PiBtX3N1YmZyYW1l
czsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggZTEyZTk4ZDg4YjFjYWQ4YjY1MmFjYzk0YjQ5MGY2
ZmVkMjZiNTJlOS4uY2M1Y2ZiMmE0NzMwYjUwZTAxNzJkZGQ2NmU2MmNlMWMzMGViMTIxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2
ZU1haW5SZXNvdXJjZUtleSwgbWFpblJlc291cmNlRGljdC5nZXQoKSk7CiAKICAgICBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IHN1YnJlc291cmNlc0FycmF5ID0gYWRvcHRDRihDRkFycmF5
Q3JlYXRlTXV0YWJsZSgwLCBhcmNoaXZlLT5zdWJyZXNvdXJjZXMoKS5zaXplKCksICZrQ0ZUeXBl
QXJyYXlDYWxsQmFja3MpKTsKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gPiYgc3VicmVzb3VyY2VzKGFyY2hpdmUtPnN1YnJlc291cmNlcygpKTsKKyAgICBjb25zdCBW
ZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+JiBzdWJyZXNvdXJjZXMoYXJjaGl2ZS0+c3Vi
cmVzb3VyY2VzKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdWJyZXNvdXJjZXMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gc3VicmVz
b3VyY2UgPSBjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihzdWJyZXNvdXJjZXNbaV0u
Z2V0KCksIFN1YnJlc291cmNlKTsKICAgICAgICAgaWYgKHN1YnJlc291cmNlKQpAQCAtMTQ0LDcg
KzE0NCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVN1YnJlc291cmNlc0tl
eSwgc3VicmVzb3VyY2VzQXJyYXkuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZUFy
cmF5UmVmPiBzdWJmcmFtZXNBcnJheSA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwg
YXJjaGl2ZS0+c3ViZnJhbWVBcmNoaXZlcygpLnNpemUoKSwgJmtDRlR5cGVBcnJheUNhbGxCYWNr
cykpOwotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8QXJjaGl2ZT4gPiYgc3ViZnJhbWVBcmNoaXZl
cyhhcmNoaXZlLT5zdWJmcmFtZUFyY2hpdmVzKCkpOworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8
QXJjaGl2ZT4+JiBzdWJmcmFtZUFyY2hpdmVzKGFyY2hpdmUtPnN1YmZyYW1lQXJjaGl2ZXMoKSk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN1YmZyYW1lQXJjaGl2ZXMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gc3ViZnJhbWVBcmNoaXZl
ID0gY3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oc3ViZnJhbWVBcmNoaXZlc1tpXS5n
ZXQoKSk7CiAgICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmUpCkBAIC0yMzYsNyArMjM2LDcgQEAg
UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKQog
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGVnYWN5V2ViQXJjaGl2ZSk7CiB9CiAKLVBhc3NSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UsIFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gPiYgc3VicmVzb3VyY2VzLCBWZWN0b3I8UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiA+JiBzdWJmcmFtZUFyY2hpdmVzKQorUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IG1haW5S
ZXNvdXJjZSwgVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4mIHN1YnJlc291cmNl
cywgVmVjdG9yPFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4+JiBzdWJmcmFtZUFyY2hpdmVz
KQogewogICAgIEFTU0VSVChtYWluUmVzb3VyY2UpOwogICAgIGlmICghbWFpblJlc291cmNlKQpA
QCAtNDM1LDcgKzQzNSw3IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2Vi
QXJjaGl2ZTo6Y3JlYXRlKE5vZGUqIG5vZGUsIEZyYW1lRmlsdGVyKiBmCiAgICAgLy8gSWYgdGhl
IHBhZ2Ugd2FzIGxvYWRlZCB3aXRoIGphdmFzY3JpcHQgZW5hYmxlZCwgd2UgZG9uJ3Qgd2FudCB0
byBhcmNoaXZlIDxub3NjcmlwdD4gdGFncwogICAgIC8vIEluIHByYWN0aWNlIHdlIGRvbid0IGFj
dHVhbGx5IGtub3cgd2hldGhlciBzY3JpcHRpbmcgd2FzIGVuYWJsZWQgd2hlbiB0aGUgcGFnZSB3
YXMgb3JpZ2luYWxseSBsb2FkZWQKICAgICAvLyBidXQgd2UgY2FuIGFwcHJveGltYXRlIHRoYXQg
YnkgY2hlY2tpbmcgaWYgc2NyaXB0aW5nIGlzIGVuYWJsZWQgcmlnaHQgbm93LgotICAgIE93blB0
cjxWZWN0b3I8UXVhbGlmaWVkTmFtZT4gPiB0YWdOYW1lc1RvRmlsdGVyOworICAgIE93blB0cjxW
ZWN0b3I8UXVhbGlmaWVkTmFtZT4+IHRhZ05hbWVzVG9GaWx0ZXI7CiAgICAgaWYgKGZyYW1lLT5w
YWdlKCkgJiYgZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS5pc1NjcmlwdEVuYWJsZWQoKSkgewog
ICAgICAgICB0YWdOYW1lc1RvRmlsdGVyID0gYWRvcHRQdHIobmV3IFZlY3RvcjxRdWFsaWZpZWRO
YW1lPik7CiAgICAgICAgIHRhZ05hbWVzVG9GaWx0ZXItPmFwcGVuZChIVE1MTmFtZXM6Om5vc2Ny
aXB0VGFnKTsKQEAgLTQ1OSw3ICs0NTksNyBAQCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShGcmFtZSogZnJhbWUpCiAgICAgaWYgKCFkb2N1bWVu
dExvYWRlcikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIAotICAgIFZlY3RvcjxQYXNzUmVm
UHRyPExlZ2FjeVdlYkFyY2hpdmU+ID4gc3ViZnJhbWVBcmNoaXZlczsKKyAgICBWZWN0b3I8UGFz
c1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4gc3ViZnJhbWVBcmNoaXZlczsKICAgICAKICAgICB1
bnNpZ25lZCBjaGlsZHJlbiA9IGZyYW1lLT50cmVlKCkuY2hpbGRDb3VudCgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBjaGlsZHJlbjsgKytpKSB7CkBAIC00NjgsNyArNDY4LDcgQEAg
UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoRnJh
bWUqIGZyYW1lKQogICAgICAgICAgICAgc3ViZnJhbWVBcmNoaXZlcy5hcHBlbmQoY2hpbGRGcmFt
ZUFyY2hpdmUucmVsZWFzZSgpKTsKICAgICB9CiAKLSAgICBWZWN0b3I8UGFzc1JlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+ID4gc3VicmVzb3VyY2VzOworICAgIFZlY3RvcjxQYXNzUmVmUHRyPEFyY2hp
dmVSZXNvdXJjZT4+IHN1YnJlc291cmNlczsKICAgICBkb2N1bWVudExvYWRlci0+Z2V0U3VicmVz
b3VyY2VzKHN1YnJlc291cmNlcyk7CiAKICAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50TG9hZGVy
LT5tYWluUmVzb3VyY2UoKSwgc3VicmVzb3VyY2VzLCBzdWJmcmFtZUFyY2hpdmVzKTsKQEAgLTUx
MCw4ICs1MTAsOCBAQCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZwogICAgICAgICAKICAgICBSZWZQ
dHI8QXJjaGl2ZVJlc291cmNlPiBtYWluUmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0
ZSh1dGY4QnVmZmVyKG1hcmt1cFN0cmluZyksIHJlc3BvbnNlVVJMLCByZXNwb25zZS5taW1lVHlw
ZSgpLCAiVVRGLTgiLCBmcmFtZS0+dHJlZSgpLnVuaXF1ZU5hbWUoKSk7CiAKLSAgICBWZWN0b3I8
UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiA+IHN1YmZyYW1lQXJjaGl2ZXM7Ci0gICAgVmVj
dG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+IHN1YnJlc291cmNlczsKKyAgICBWZWN0
b3I8UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4gc3ViZnJhbWVBcmNoaXZlczsKKyAgICBW
ZWN0b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiBzdWJyZXNvdXJjZXM7CiAgICAgSGFz
aFNldDxVUkw+IHVuaXF1ZVN1YnJlc291cmNlczsKIAogICAgIHNpemVfdCBub2Rlc1NpemUgPSBu
b2Rlcy5zaXplKCk7ICAgIApAQCAtNjEwLDkgKzYxMCw5IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJh
bWUpCiAgICAgU3RyaW5nIGlmcmFtZU1hcmt1cCA9ICI8aWZyYW1lIGZyYW1lYm9yZGVyPVwibm9c
IiBtYXJnaW53aWR0aD1cIjBcIiBtYXJnaW5oZWlnaHQ9XCIwXCIgd2lkdGg9XCI5OCUlXCIgaGVp
Z2h0PVwiOTglJVwiIHNyYz1cIiIgKyBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
cmVzcG9uc2UoKS51cmwoKS5zdHJpbmcoKSArICJcIj48L2lmcmFtZT4iOwogICAgIFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IGlmcmFtZVJlc291cmNlID0gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUo
dXRmOEJ1ZmZlcihpZnJhbWVNYXJrdXApLCBibGFua1VSTCgpLCAidGV4dC9odG1sIiwgIlVURi04
IiwgU3RyaW5nKCkpOwogCi0gICAgVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+
IHN1YnJlc291cmNlczsKKyAgICBWZWN0b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiBz
dWJyZXNvdXJjZXM7CiAKLSAgICBWZWN0b3I8UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiA+
IHN1YmZyYW1lQXJjaGl2ZXM7CisgICAgVmVjdG9yPFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4+IHN1YmZyYW1lQXJjaGl2ZXM7CiAgICAgc3ViZnJhbWVBcmNoaXZlcy5hcHBlbmQoYXJjaGl2
ZSk7CiAgICAgCiAgICAgYXJjaGl2ZSA9IGNyZWF0ZShpZnJhbWVSZXNvdXJjZS5yZWxlYXNlKCks
IHN1YnJlc291cmNlcywgc3ViZnJhbWVBcmNoaXZlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKaW5kZXggM2ZmNWI5MmE4NWUz
MjU4M2UxMjNjNzU0NWEzYThjMDIwMDQyMTcwMy4uODBlNDNiOWZhZDM4ZjhhYzhjYTg4NDdjNTk4
YWI5ZGQ1MGIzM2FkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUv
Y2YvTGVnYWN5V2ViQXJjaGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKCk7CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKFNoYXJlZEJ1ZmZlciopOwogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBTaGFy
ZWRCdWZmZXIqKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVh
dGUoUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IG1haW5SZXNvdXJjZSwgVmVjdG9yPFBhc3NS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+JiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxQYXNzUmVmUHRy
PExlZ2FjeVdlYkFyY2hpdmU+ID4mIHN1YmZyYW1lQXJjaGl2ZXMpOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJj
ZT4gbWFpblJlc291cmNlLCBWZWN0b3I8UGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+PiYgc3Vi
cmVzb3VyY2VzLCBWZWN0b3I8UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPj4mIHN1YmZyYW1l
QXJjaGl2ZXMpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0
ZShOb2RlKiwgRnJhbWVGaWx0ZXIqID0gMCk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gY3JlYXRlKEZyYW1lKik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TGVnYWN5
V2ViQXJjaGl2ZT4gY3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmgKaW5kZXggMWJkM2ZlZWY4
YmRhZThiZjNlMGNkYmY4NmVlMTc2ZmU2OWFiM2ExMS4uNGYxYjEyNmJjOGVmZjQxNDI5YTkzMDNh
MTA3ODQ1NTViNDEyZjQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvbWh0bWwvTUhUTUxQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5oCkBAIC02Myw4ICs2Myw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBhZGRSZXNvdXJjZVRvQXJjaGl2ZShBcmNoaXZlUmVzb3VyY2UqLCBNSFRNTEFyY2hpdmUqKTsK
IAogICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIG1fbGluZVJlYWRlcjsKLSAgICBWZWN0b3I8
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiBtX3Jlc291cmNlczsKLSAgICBWZWN0b3I8UmVmUHRy
PE1IVE1MQXJjaGl2ZT4gPiBtX2ZyYW1lczsKKyAgICBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4+IG1fcmVzb3VyY2VzOworICAgIFZlY3RvcjxSZWZQdHI8TUhUTUxBcmNoaXZlPj4gbV9m
cmFtZXM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCmluZGV4IGZkYTRkZDk2OWJkM2MxYzQxZGQ3OTQ5MTY4MDQ3ZDkxOGFmYWZhNzcuLmI1
YjVhNWM5YjJhOTRmNTI3NTFhYWVjMDk2ODJmY2Q5NmQyNjAwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0yODgsNyArMjg4LDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudCogbV9jbGllbnQ7CiAgICAgICAg
IFRpbWVyPENhY2hlZFJlc291cmNlQ2FsbGJhY2s+IG1fY2FsbGJhY2tUaW1lcjsKICAgICB9Owot
ICAgIEhhc2hNYXA8Q2FjaGVkUmVzb3VyY2VDbGllbnQqLCBPd25QdHI8Q2FjaGVkUmVzb3VyY2VD
YWxsYmFjaz4gPiBtX2NsaWVudHNBd2FpdGluZ0NhbGxiYWNrOworICAgIEhhc2hNYXA8Q2FjaGVk
UmVzb3VyY2VDbGllbnQqLCBPd25QdHI8Q2FjaGVkUmVzb3VyY2VDYWxsYmFjaz4+IG1fY2xpZW50
c0F3YWl0aW5nQ2FsbGJhY2s7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXNvdXJjZVJlcXVl
c3Q7CiAgICAgU3RyaW5nIG1fYWNjZXB0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCA5Yzk1OWM0NmI2NGVmMDZlMGRlOTZj
NjNlZGFlNTk0MGFmMWNjMjNlLi45ZGI5YjU5MTNlMjlhNjRiOTkzM2I2YThkMDBiOTJhZDQzYjlm
YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICBDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OwogICAgIENhY2hlZFJl
c291cmNlKiBjYWNoZWRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkgY29uc3Q7CiAgICAgCi0gICAg
dHlwZWRlZiBIYXNoTWFwPFN0cmluZywgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3Vy
Y2U+ID4gRG9jdW1lbnRSZXNvdXJjZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IERvY3VtZW50UmVzb3VyY2VNYXA7
CiAgICAgY29uc3QgRG9jdW1lbnRSZXNvdXJjZU1hcCYgYWxsQ2FjaGVkUmVzb3VyY2VzKCkgY29u
c3QgeyByZXR1cm4gbV9kb2N1bWVudFJlc291cmNlczsgfQogCiAgICAgYm9vbCBhdXRvTG9hZElt
YWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b0xvYWRJbWFnZXM7IH0KQEAgLTE2Nyw3ICsxNjcs
NyBAQCBwcml2YXRlOgogICAgIAogICAgIGludCBtX3JlcXVlc3RDb3VudDsKICAgICAKLSAgICBP
d25QdHI8TGlzdEhhc2hTZXQ8Q2FjaGVkUmVzb3VyY2UqPiA+IG1fcHJlbG9hZHM7CisgICAgT3du
UHRyPExpc3RIYXNoU2V0PENhY2hlZFJlc291cmNlKj4+IG1fcHJlbG9hZHM7CiAgICAgc3RydWN0
IFBlbmRpbmdQcmVsb2FkIHsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OlR5cGUgbV90eXBlOwog
ICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAppbmRleCAzZDRkMmE2MjVhNjcwYzM1MGU5MWQ3YzI1
OGM0YTcxODI2N2U3ZjkwLi4zZjhiNjE2YjE5ZjJmMGNmMjZlZGE1YzAzZTZiYWJlNTRjNjY4MDRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAtODIsNyAr
ODIsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENhY2hlZFJlc291cmNlKj4gQ2FjaGVkUmVzb3VyY2VJdGVt
OwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIE93blB0cjxDYWNoZWRSZXNvdXJjZUl0ZW0+
ID4gQ2FjaGVkUmVzb3VyY2VNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgT3duUHRy
PENhY2hlZFJlc291cmNlSXRlbT4+IENhY2hlZFJlc291cmNlTWFwOwogI2Vsc2UKICAgICB0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBDYWNoZWRSZXNvdXJjZSo+IENhY2hlZFJlc291cmNlTWFwOwog
I2VuZGlmCkBAIC0xNzcsNyArMTc3LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcmVzb3Vy
Y2VBY2Nlc3NlZChDYWNoZWRSZXNvdXJjZSopOwogCi0gICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gPiBTZWN1cml0eU9yaWdpblNldDsKKyAgICB0eXBlZGVmIEhhc2hT
ZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gU2VjdXJpdHlPcmlnaW5TZXQ7CiAgICAgdm9pZCBy
ZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CiAgICAgdm9pZCBnZXRP
cmlnaW5zV2l0aENhY2hlKFNlY3VyaXR5T3JpZ2luU2V0JiBvcmlnaW5zKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggMmE1OTNkYzkwYWUzMjAw
ZTRmZjQxYTE0YWIyMGQyZTA3ZTFkODdiNi4uYjFkYmEzMzIyYTMxMmU1OTg1NTZlYmJjYjkyZGI4
OGM2NzNhYzI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2Uu
Y3BwCkBAIC04MjMsOCArODIzLDggQEAgdm9pZCBJY29uRGF0YWJhc2U6Om5vdGlmeVBlbmRpbmdM
b2FkRGVjaXNpb25zKCkKICAgICBBU1NFUlQobV9pY29uVVJMSW1wb3J0Q29tcGxldGUpOwogICAg
IExPRyhJY29uRGF0YWJhc2UsICJOb3RpZnlpbmcgYWxsIERvY3VtZW50TG9hZGVycyB0aGF0IHdl
cmUgd2FpdGluZyBvbiBhIGxvYWQgZGVjaXNpb24gZm9yIHRoZWlyIGljb25zIik7CiAgICAgCi0g
ICAgSGFzaFNldDxSZWZQdHI8RG9jdW1lbnRMb2FkZXI+ID46Oml0ZXJhdG9yIGkgPSBtX2xvYWRl
cnNQZW5kaW5nRGVjaXNpb24uYmVnaW4oKTsKLSAgICBIYXNoU2V0PFJlZlB0cjxEb2N1bWVudExv
YWRlcj4gPjo6aXRlcmF0b3IgZW5kID0gbV9sb2FkZXJzUGVuZGluZ0RlY2lzaW9uLmVuZCgpOwor
ICAgIEhhc2hTZXQ8UmVmUHRyPERvY3VtZW50TG9hZGVyPj46Oml0ZXJhdG9yIGkgPSBtX2xvYWRl
cnNQZW5kaW5nRGVjaXNpb24uYmVnaW4oKTsKKyAgICBIYXNoU2V0PFJlZlB0cjxEb2N1bWVudExv
YWRlcj4+OjppdGVyYXRvciBlbmQgPSBtX2xvYWRlcnNQZW5kaW5nRGVjaXNpb24uZW5kKCk7CiAg
ICAgCiAgICAgZm9yICg7IGkgIT0gZW5kOyArK2kpCiAgICAgICAgIGlmICgoKmkpLT5yZWZDb3Vu
dCgpID4gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRh
YmFzZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKaW5kZXgg
Yzc3N2RkNGYyN2YwMjcwZDc4YmJiNzYzYWJjYTcxMTIzMGJhMmM3Ny4uM2ZlZGUzMGNiMDU1MDhm
NmMxNGVlNzEzYzA4YzBkZGIyZjBkZTAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24v
SWNvbkRhdGFiYXNlLmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwcml2YXRlOgogICAgIFRocmVhZElk
ZW50aWZpZXIgbV9zeW5jVGhyZWFkOwogICAgIGJvb2wgbV9zeW5jVGhyZWFkUnVubmluZzsKICAg
ICAKLSAgICBIYXNoU2V0PFJlZlB0cjxEb2N1bWVudExvYWRlcj4gPiBtX2xvYWRlcnNQZW5kaW5n
RGVjaXNpb247CisgICAgSGFzaFNldDxSZWZQdHI8RG9jdW1lbnRMb2FkZXI+PiBtX2xvYWRlcnNQ
ZW5kaW5nRGVjaXNpb247CiAKICAgICBSZWZQdHI8SWNvblJlY29yZD4gbV9kZWZhdWx0SWNvblJl
Y29yZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNZWRpYUFGLmNwcAppbmRleCBlNTRmZThjZTk2MzgwM2ZiMjM4NTJjYzRlOTU3OTdmMTY4
ZDEyNjY1Li5hMTA1ZGE5OWY3OTBiMzU3YzdhZGJjNjIwMmY1NjNkMmQ2N2U5ZjE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFG
LmNwcApAQCAtNzYxLDExICs3NjEsMTEgQEAgc3RhdGljIGJvb2wgdGV4dFRyYWNrQ29tcGFyZShj
b25zdCBSZWZQdHI8VGV4dFRyYWNrPiYgYSwgY29uc3QgUmVmUHRyPFRleHRUcmFjaz4KICAgICBy
ZXR1cm4gY29kZVBvaW50Q29tcGFyZSh0cmFja0Rpc3BsYXlOYW1lKGEuZ2V0KCkpLCB0cmFja0Rp
c3BsYXlOYW1lKGIuZ2V0KCkpKSA8IDA7CiB9CiAKLVZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KFRl
eHRUcmFja0xpc3QqIHRyYWNrTGlzdCkKK1ZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRyYWNr
TGlzdCogdHJhY2tMaXN0KQogewogICAgIEFTU0VSVCh0cmFja0xpc3QpOwogCi0gICAgVmVjdG9y
PFJlZlB0cjxUZXh0VHJhY2s+ID4gdHJhY2tzRm9yTWVudTsKKyAgICBWZWN0b3I8UmVmUHRyPFRl
eHRUcmFjaz4+IHRyYWNrc0Zvck1lbnU7CiAgICAgSGFzaFNldDxTdHJpbmc+IGxhbmd1YWdlc0lu
Y2x1ZGVkOwogICAgIGJvb2wgcHJlZmVyc0FjY2Vzc2liaWxpdHlUcmFja3MgPSB1c2VyUHJlZmVy
c0NhcHRpb25zKCk7CiAgICAgYm9vbCBmaWx0ZXJUcmFja0xpc3QgPSBzaG91bGRGaWx0ZXJUcmFj
a01lbnUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUYuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUYuaAppbmRleCAzZDRmNTczZTQxOGM0YmMwOWQ1MWEzMGY4Yjk3NjgyNmM1Nzli
Mjc3Li5iOWJmMmRmMmFmNWJmNDRlNWFmMmFkMTcyZmNiZDFhZmQ4YzVjN2ZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5oCkBA
IC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgU3RyaW5nIGNhcHRpb25zU3R5
bGVTaGVldE92ZXJyaWRlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBpbnQgdGV4dFRy
YWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiwgSFRNTE1lZGlhRWxlbWVudCopIGNvbnN0IE9W
RVJSSURFOwotICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gc29ydGVkVHJh
Y2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBWZWN0
b3I8UmVmUHRyPFRleHRUcmFjaz4+IHNvcnRlZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRyYWNrTGlz
dCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGRpc3BsYXlOYW1lRm9yVHJhY2soVGV4
dFRyYWNrKikgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAppbmRleCBlZGUwZjhkYjE1YjJmMGFhZjhjZjUyYWE3MThkZjlhYjMzYmU1NWE3Li5l
NDM2MTA2MWY2ZTM1YmYwZThiMTQ0M2ExNDQzY2ExMTI0ODdmMGQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKQEAgLTM1OCw3ICszNTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBT
dHJpbmcgcGx1Z0luRXh0cmFTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0K
ICAgICB2aXJ0dWFsIFN0cmluZyBwbHVnSW5FeHRyYVNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzKGNv
bnN0IFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiYpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
QXNzb2NpYXRlRm9ybUNvbnRyb2xzKGNvbnN0IFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+JikgeyB9
OwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGROb3RpZnlPbkZvcm1DaGFuZ2VzKCkgeyByZXR1cm4g
ZmFsc2U7IH07CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkSGVhZGVyTGF5ZXIoR3JhcGhpY3NM
YXllciopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAppbmRleCBjYTA5YTUzN2Y2ZGRjMTBhMzZhNDNi
MTE2NjhjN2I3YjY4MzcyMzBhLi4zMzMyZDAxYjBmY2Y3MDEyYmZmNjdmZDM3Yjc5ZTI1M2Y2Y2M1
NWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBQYWdlOwog
Y2xhc3MgU2NyaXB0QXJndW1lbnRzOwogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
Ci10eXBlZGVmIFZlY3RvcjxSZWZQdHI8U2NyaXB0UHJvZmlsZT4gPiBQcm9maWxlc0FycmF5Owor
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPFNjcmlwdFByb2ZpbGU+PiBQcm9maWxlc0FycmF5OwogI2Vu
ZGlmCiAKIGNsYXNzIENvbnNvbGUgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVm
Q291bnRlZDxDb25zb2xlPiwgcHVibGljIERPTVdpbmRvd1Byb3BlcnR5IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5oCmluZGV4IDJlYTg4ZjIzM2QzOTdmMTBm
MGQzZTgzY2Q5NDA5MWM1NzYxMWNmOGQuLmE4MzRiYmJmNjUxZTA5ZjJiOGJkYmE1NjViYzEzNWM2
ZGUzNGU2NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5
UG9saWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3ku
aApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiAKIHR5cGVkZWYgaW50IFNhbmRib3hGbGFnczsKLXR5cGVkZWYgVmVj
dG9yPE93blB0cjxDU1BEaXJlY3RpdmVMaXN0PiA+IENTUERpcmVjdGl2ZUxpc3RWZWN0b3I7Cit0
eXBlZGVmIFZlY3RvcjxPd25QdHI8Q1NQRGlyZWN0aXZlTGlzdD4+IENTUERpcmVjdGl2ZUxpc3RW
ZWN0b3I7CiAKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMmM5ZTE5NTY5ZDg1
NzM4ZmFmNzI3MjE2NTA0M2U0MjE4ZDExYjZlNS4uOGM3ZDBkYTk0Zjk3MTc2YjcxYTc5ZWQ1Y2Q5
NzhlMDc1ZmVkM2QzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTM2Myw3ICsx
MzYzLDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gRE9NV2luZG93OjpnZXRNYXRjaGVkQ1NT
UnVsZXMoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3QKIAogICAgIFBzZXVkb0lkIHBzZXVkb0lk
ID0gQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKHBzZXVkb1R5cGUpOwogCi0gICAgVmVjdG9yPFJlZlB0
cjxTdHlsZVJ1bGVCYXNlPiA+IG1hdGNoZWRSdWxlcyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmVu
c3VyZVN0eWxlUmVzb2x2ZXIoKS5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBw
c2V1ZG9JZCwgcnVsZXNUb0luY2x1ZGUpOworICAgIFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFz
ZT4+IG1hdGNoZWRSdWxlcyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmVuc3VyZVN0eWxlUmVzb2x2
ZXIoKS5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBwc2V1ZG9JZCwgcnVsZXNU
b0luY2x1ZGUpOwogICAgIGlmIChtYXRjaGVkUnVsZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZXZpY2VDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGV2aWNlQ29udHJvbGxlci5jcHAKaW5kZXggMDJh
ODgyNDc3YWU3ZDJjMTU2M2YyZjQzYTE1OWZkNzZmYmZlMzE3MC4uMjkzZDJkMDA2N2Y1NWE0NDEw
NDg1ODliNzE0ZmMzNTA4ZjcwYWJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
ZXZpY2VDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RldmljZUNvbnRy
b2xsZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgRGV2aWNlQ29udHJvbGxlcjo6cmVtb3Zl
QWxsRGV2aWNlRXZlbnRMaXN0ZW5lcnMoRE9NV2luZG93KiB3aW5kb3cpCiB2b2lkIERldmljZUNv
bnRyb2xsZXI6OmRpc3BhdGNoRGV2aWNlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQp
CiB7CiAgICAgUmVmUHRyPEV2ZW50PiBldmVudCA9IHBycEV2ZW50OwotICAgIFZlY3RvcjxSZWZQ
dHI8RE9NV2luZG93PiA+IGxpc3RlbmVyVmVjdG9yOworICAgIFZlY3RvcjxSZWZQdHI8RE9NV2lu
ZG93Pj4gbGlzdGVuZXJWZWN0b3I7CiAgICAgY29weVRvVmVjdG9yKG1fbGlzdGVuZXJzLCBsaXN0
ZW5lclZlY3Rvcik7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0ZW5lclZlY3Rvci5z
aXplKCk7ICsraSkgewogICAgICAgICBpZiAobGlzdGVuZXJWZWN0b3JbaV0tPmRvY3VtZW50KCkK
QEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBEZXZpY2VDb250cm9sbGVyOjpmaXJlRGV2aWNlRXZlbnQo
VGltZXI8RGV2aWNlQ29udHJvbGxlcj4qIHRpbWVyKQogICAgIEFTU0VSVChoYXNMYXN0RGF0YSgp
KTsKIAogICAgIG1fdGltZXIuc3RvcCgpOwotICAgIFZlY3RvcjxSZWZQdHI8RE9NV2luZG93PiA+
IGxpc3RlbmVyVmVjdG9yOworICAgIFZlY3RvcjxSZWZQdHI8RE9NV2luZG93Pj4gbGlzdGVuZXJW
ZWN0b3I7CiAgICAgY29weVRvVmVjdG9yKG1fbGFzdEV2ZW50TGlzdGVuZXJzLCBsaXN0ZW5lclZl
Y3Rvcik7CiAgICAgbV9sYXN0RXZlbnRMaXN0ZW5lcnMuY2xlYXIoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGxpc3RlbmVyVmVjdG9yLnNpemUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RldmljZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRGV2aWNlQ29udHJvbGxlci5oCmluZGV4IGI3ZmY3ODIyZDE2YWI2M2ZhMGVlMjJkN2MxNmM3
NGQ5YTExYjlkN2YuLjU1NWI2MzBlMzFkNzIxYWMyNjljYjVkOWYzN2Y4MDExY2Q5NmJjZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGV2aWNlQ29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRGV2aWNlQ29udHJvbGxlci5oCkBAIC01Nyw4ICs1Nyw4IEBAIHB1
YmxpYzoKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpcmVEZXZpY2VFdmVudChUaW1lcjxEZXZpY2VD
b250cm9sbGVyPiopOwogCi0gICAgSGFzaENvdW50ZWRTZXQ8UmVmUHRyPERPTVdpbmRvdz4gPiBt
X2xpc3RlbmVyczsKLSAgICBIYXNoQ291bnRlZFNldDxSZWZQdHI8RE9NV2luZG93PiA+IG1fbGFz
dEV2ZW50TGlzdGVuZXJzOworICAgIEhhc2hDb3VudGVkU2V0PFJlZlB0cjxET01XaW5kb3c+PiBt
X2xpc3RlbmVyczsKKyAgICBIYXNoQ291bnRlZFNldDxSZWZQdHI8RE9NV2luZG93Pj4gbV9sYXN0
RXZlbnRMaXN0ZW5lcnM7CiAgICAgRGV2aWNlQ2xpZW50KiBtX2NsaWVudDsKICAgICBUaW1lcjxE
ZXZpY2VDb250cm9sbGVyPiBtX3RpbWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5o
CmluZGV4IDM4NTc2NmU2ODIyZWRjNWU4YzFmYTg0NGFmZDRiMDZmNTE5ZjcwMDUuLjJkNWE0ODE3
ZGU5YjFjYmUwZWQxZGIyYjJmN2EzNDVhNTdjMTRkZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JD
bGllbnQuaApAQCAtODksNyArODksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEVu
ZEVkaXRpbmcoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZChSYW5nZSopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmRE
YXRhRm9yUmFuZ2UoUmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gPiYgcGFzdGVib2FyZERhdGEpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShSYW5nZSosIFZlY3RvcjxT
dHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIHBh
c3RlYm9hcmREYXRhKSA9IDA7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVW5kb1N0
ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJS
ZWRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPikgPSAwOwpAQCAtMTE1LDcgKzExNSw3IEBAIHB1
YmxpYzoKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2aXJ0dWFsIE5TU3RyaW5nKiB1c2VyVmlz
aWJsZVN0cmluZyhOU1VSTCopID0gMDsKLSAgICB2aXJ0dWFsIERvY3VtZW50RnJhZ21lbnQqIGRv
Y3VtZW50RnJhZ21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcqLCBW
ZWN0b3I8IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+ID4mKSA9IDA7CisgICAgdmlydHVhbCBEb2N1
bWVudEZyYWdtZW50KiBkb2N1bWVudEZyYWdtZW50RnJvbUF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRy
aWJ1dGVkU3RyaW5nKiwgVmVjdG9yPCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4mKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgTlNVUkwqIGNhbm9uaWNhbGl6ZVVSTChOU1VS
TCopID0gMDsKICAgICB2aXJ0dWFsIE5TVVJMKiBjYW5vbmljYWxpemVVUkxTdHJpbmcoTlNTdHJp
bmcqKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggYjBkOWE4ZTNj
YjdhOGYyYmRiNjIwMGZjYWRlMGExNzRhM2Q1ZmVhMy4uYWE5YzhmMzk1NWJmNTZjZWQ5NmE5NjQ1
NTdlODk0YjYxNGM2MjVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAt
MzU1MywxMSArMzU1MywxMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChj
b25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50KQogCiAgICAgLy8gQSBkaWZmZXJlbnQgdmll
dyBvbiB0aGUgJ3RvdWNoZXMnIGxpc3QgYWJvdmUsIGZpbHRlcmVkIGFuZCBncm91cGVkIGJ5IGV2
ZW50IHRhcmdldC4gVXNlZCBmb3IgdGhlCiAgICAgLy8gJ3RhcmdldFRvdWNoZXMnIGxpc3QgaW4g
dGhlIEpTIGV2ZW50LgotICAgIHR5cGVkZWYgSGFzaE1hcDxFdmVudFRhcmdldCosIFJlZlB0cjxU
b3VjaExpc3Q+ID4gVGFyZ2V0VG91Y2hlc01hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8RXZlbnRU
YXJnZXQqLCBSZWZQdHI8VG91Y2hMaXN0Pj4gVGFyZ2V0VG91Y2hlc01hcDsKICAgICBUYXJnZXRU
b3VjaGVzTWFwIHRvdWNoZXNCeVRhcmdldDsKIAogICAgIC8vIEFycmF5IG9mIHRvdWNoZXMgcGVy
IHN0YXRlLCB1c2VkIHRvIGFzc2VtYmxlIHRoZSAnY2hhbmdlZFRvdWNoZXMnIGxpc3QgaW4gdGhl
IEpTIGV2ZW50LgotICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8RXZlbnRUYXJnZXQ+ID4gRXZl
bnRUYXJnZXRTZXQ7CisgICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxFdmVudFRhcmdldD4+IEV2
ZW50VGFyZ2V0U2V0OwogICAgIHN0cnVjdCB7CiAgICAgICAgIC8vIFRoZSB0b3VjaGVzIGNvcnJl
c3BvbmRpbmcgdG8gdGhlIHBhcnRpY3VsYXIgY2hhbmdlIHN0YXRlIHRoaXMgc3RydWN0IGluc3Rh
bmNlIHJlcHJlc2VudHMuCiAgICAgICAgIFJlZlB0cjxUb3VjaExpc3Q+IG1fdG91Y2hlczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDExNjY1Y2Y5MmYyYWNkMTJjMWQ1NGM3ZjYx
MjBhYjRkZjAxZjNlMDIuLjM0YzAwOTU5NDFlODAxOTU5MTkyODE3ZjIyMjM4MTM4ZDMzMDlkNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtNDU4LDcgKzQ1OCw3IEBAIHByaXZh
dGU6CiAgICAgaW50IG1fYWN0aXZhdGlvbkV2ZW50TnVtYmVyOwogI2VuZGlmCiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKLSAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8RXZlbnRUYXJn
ZXQ+ID4gVG91Y2hUYXJnZXRNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPEV2
ZW50VGFyZ2V0Pj4gVG91Y2hUYXJnZXRNYXA7CiAgICAgVG91Y2hUYXJnZXRNYXAgbV9vcmlnaW5h
dGluZ1RvdWNoUG9pbnRUYXJnZXRzOwogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9vcmlnaW5hdGlu
Z1RvdWNoUG9pbnREb2N1bWVudDsKICAgICB1bnNpZ25lZCBtX29yaWdpbmF0aW5nVG91Y2hQb2lu
dFRhcmdldEtleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA4N2FlOTUyNWVhZTEw
YmRhNTRmMzJmMzY2YTVkMGZlYjc0ZThhMjhkLi43M2E4NmNkMDNjNWFlMWM5ZGI4ZWU4NWZiODVl
OGYyMTkwM2MwZjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0yNDc5LDcgKzI0
NzksNyBAQCB2b2lkIEZyYW1lVmlldzo6c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhkb3VibGUg
bW9ub3RvbmljQW5pbWF0aW9uU3RhcnRUaW1lKQogICAgICAgICBmcmFtZS0+YW5pbWF0aW9uKCku
c2VydmljZUFuaW1hdGlvbnMoKTsKICAgICB9CiAKLSAgICBWZWN0b3I8UmVmUHRyPERvY3VtZW50
PiA+IGRvY3VtZW50czsKKyAgICBWZWN0b3I8UmVmUHRyPERvY3VtZW50Pj4gZG9jdW1lbnRzOwog
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKICAgICAgICAgZG9jdW1lbnRzLmFwcGVuZChmcmFt
ZS0+ZG9jdW1lbnQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDAzZGVjYjQ2NmJhY2RiODBh
NzA1MzQ4NTRjNDgyNzRiMWRmY2NjMWYuLjZjYTBmMGY4N2M3YzhjNzEwYWVlNDNiNTlkMjk3OWM2
ODRjZDIwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNTc2LDcgKzU3Niw3IEBAIGJvb2wgUGFn
ZTo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucykK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUGFnZTo6ZmluZFN0cmluZ01hdGNoaW5nUmFu
Z2VzKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zLCBpbnQgbGltaXQs
IFZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4qIG1hdGNoUmFuZ2VzLCBpbnQmIGluZGV4Rm9yU2VsZWN0
aW9uKQordm9pZCBQYWdlOjpmaW5kU3RyaW5nTWF0Y2hpbmdSYW5nZXMoY29uc3QgU3RyaW5nJiB0
YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMsIGludCBsaW1pdCwgVmVjdG9yPFJlZlB0cjxSYW5n
ZT4+KiBtYXRjaFJhbmdlcywgaW50JiBpbmRleEZvclNlbGVjdGlvbikKIHsKICAgICBpbmRleEZv
clNlbGVjdGlvbiA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNTExYjZjZWQwYWE3ODUyMmEwZWE1
NDc0MmM3MTU0MmQ3ZjljNTA5OS4uMjU5MTg2ZTI3YTVkYmJmMzEyMDhiOGI2ODQ2MjlhYjBlZTAz
MDIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTI1MCw3ICsyNTAsNyBAQCBwdWJsaWM6CiAgICAgLy8g
dGhlIGluZGV4IG9mIHRoZSBmaXJzdCByYW5nZSBhZnRlciB0aGUgdXNlciBzZWxlY3Rpb24KICAg
ICAvLyBOb01hdGNoQWZ0ZXJVc2VyU2VsZWN0aW9uIGlmIHRoZXJlIGlzIG5vIG1hdGNoaW5nIHRl
eHQgYWZ0ZXIgdGhlIHVzZXIgc2VsZWN0aW9uLgogICAgIGVudW0geyBOb01hdGNoQWZ0ZXJVc2Vy
U2VsZWN0aW9uID0gLTEgfTsKLSAgICB2b2lkIGZpbmRTdHJpbmdNYXRjaGluZ1Jhbmdlcyhjb25z
dCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgaW50IG1heENvdW50LCBWZWN0b3I8UmVmUHRyPFJhbmdl
PiA+KiwgaW50JiBpbmRleEZvclNlbGVjdGlvbik7CisgICAgdm9pZCBmaW5kU3RyaW5nTWF0Y2hp
bmdSYW5nZXMoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIGludCBtYXhDb3VudCwgVmVjdG9y
PFJlZlB0cjxSYW5nZT4+KiwgaW50JiBpbmRleEZvclNlbGVjdGlvbik7CiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIHZvaWQgYWRkU2NoZWR1bGVQYWlyKFBhc3NSZWZQdHI8U2NoZWR1bGVQYWlyPik7
CiAgICAgdm9pZCByZW1vdmVTY2hlZHVsZVBhaXIoUGFzc1JlZlB0cjxTY2hlZHVsZVBhaXI+KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VHcm91cC5oCmluZGV4IGNmYmMwZWQ1MDEyMjY0OGYyYTk5NzhmZDJhMzU3
MTBhY2Y1MmI4OTkuLjA4ZmE3NGE1NmU0NmFkOTZjMGY4Y2Y3ODM1OTYwOTE4MmE2ZThiMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlR3JvdXAuaApAQCAtMTIwLDcgKzEyMCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICB1bnNpZ25lZCBtX2lkZW50aWZpZXI7CiAgICAgICAgIFJlZlB0cjxT
dG9yYWdlTmFtZXNwYWNlPiBtX2xvY2FsU3RvcmFnZTsKLSAgICAgICAgSGFzaE1hcDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+LCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gPiBtX3RyYW5zaWVudExv
Y2FsU3RvcmFnZU1hcDsKKyAgICAgICAgSGFzaE1hcDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBS
ZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4+IG1fdHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwOwogCiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxVc2VyU2NyaXB0TWFwPiBtX3VzZXJTY3JpcHRzOwogICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VXNlclN0eWxlU2hlZXRNYXA+IG1fdXNlclN0eWxlU2hlZXRz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAppbmRleCAxODBiZDhjM2MxOWI5NTEyYWVm
OGVkNjVhNTAxNzA2MmRmNTg0NTUyLi5iNDM3MmY2MTg4ZTBlZDBhNWJkNjE2YzczZGUwNGFiNzVh
ZmVjOTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcApAQCAtMTE2LDcgKzExNiw3
IEBAIFBhc3NSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeUxpc3Q+IFBlcmZvcm1hbmNlOjp3ZWJraXRH
ZXRFbnRyaWVzQnlUeXBlKGNvbnN0IFN0cmluCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVElNSU5H
KQogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbnRyeVR5cGUsICJyZXNvdXJjZSIpKQotICAg
ICAgICBmb3IgKFZlY3RvcjxSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeT4gPjo6Y29uc3RfaXRlcmF0
b3IgcmVzb3VyY2UgPSBtX3Jlc291cmNlVGltaW5nQnVmZmVyLmJlZ2luKCk7IHJlc291cmNlICE9
IG1fcmVzb3VyY2VUaW1pbmdCdWZmZXIuZW5kKCk7ICsrcmVzb3VyY2UpCisgICAgICAgIGZvciAo
VmVjdG9yPFJlZlB0cjxQZXJmb3JtYW5jZUVudHJ5Pj46OmNvbnN0X2l0ZXJhdG9yIHJlc291cmNl
ID0gbV9yZXNvdXJjZVRpbWluZ0J1ZmZlci5iZWdpbigpOyByZXNvdXJjZSAhPSBtX3Jlc291cmNl
VGltaW5nQnVmZmVyLmVuZCgpOyArK3Jlc291cmNlKQogICAgICAgICAgICAgZW50cmllcy0+YXBw
ZW5kKCpyZXNvdXJjZSk7CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX1RJTUlORykKIApAQCAt
MTM5LDcgKzEzOSw3IEBAIFBhc3NSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeUxpc3Q+IFBlcmZvcm1h
bmNlOjp3ZWJraXRHZXRFbnRyaWVzQnlOYW1lKGNvbnN0IFN0cmluCiAKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfVElNSU5HKQogICAgIGlmIChlbnRyeVR5cGUuaXNOdWxsKCkgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UoZW50cnlUeXBlLCAicmVzb3VyY2UiKSkKLSAgICAgICAgZm9yIChWZWN0b3I8UmVmUHRy
PFBlcmZvcm1hbmNlRW50cnk+ID46OmNvbnN0X2l0ZXJhdG9yIHJlc291cmNlID0gbV9yZXNvdXJj
ZVRpbWluZ0J1ZmZlci5iZWdpbigpOyByZXNvdXJjZSAhPSBtX3Jlc291cmNlVGltaW5nQnVmZmVy
LmVuZCgpOyArK3Jlc291cmNlKQorICAgICAgICBmb3IgKFZlY3RvcjxSZWZQdHI8UGVyZm9ybWFu
Y2VFbnRyeT4+Ojpjb25zdF9pdGVyYXRvciByZXNvdXJjZSA9IG1fcmVzb3VyY2VUaW1pbmdCdWZm
ZXIuYmVnaW4oKTsgcmVzb3VyY2UgIT0gbV9yZXNvdXJjZVRpbWluZ0J1ZmZlci5lbmQoKTsgKyty
ZXNvdXJjZSkKICAgICAgICAgICAgIGlmICgoKnJlc291cmNlKS0+bmFtZSgpID09IG5hbWUpCiAg
ICAgICAgICAgICAgICAgZW50cmllcy0+YXBwZW5kKCpyZXNvdXJjZSk7CiAjZW5kaWYgLy8gRU5B
QkxFKFJFU09VUkNFX1RJTUlORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaAppbmRleCA1YWY1
OTVmYTNmNGFhZDFlYTdkNmZhM2MzMmU0YjE0ZDY1YTQ2ZjBmLi41YTUzYjRiYWQzZGI4MzI3MGZm
NWRiOWIwZTE1NzUwNThiMzdmN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5oCkBAIC0x
MDEsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJlZlB0cjxQZXJmb3JtYW5jZVRp
bWluZz4gbV90aW1pbmc7CiAgICAgCiAjaWYgRU5BQkxFKFJFU09VUkNFX1RJTUlORykKLSAgICBW
ZWN0b3I8UmVmUHRyPFBlcmZvcm1hbmNlRW50cnk+ID4gbV9yZXNvdXJjZVRpbWluZ0J1ZmZlcjsK
KyAgICBWZWN0b3I8UmVmUHRyPFBlcmZvcm1hbmNlRW50cnk+PiBtX3Jlc291cmNlVGltaW5nQnVm
ZmVyOwogICAgIHVuc2lnbmVkIG1fcmVzb3VyY2VUaW1pbmdCdWZmZXJTaXplOwogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeUxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZUVudHJ5TGlzdC5jcHAKaW5kZXggZjM5
OWUwNzY0NTY1MDk5MDc3N2JlYThlMTlkMWU5MmFmN2U3NmJiNC4uZDlmYTA1NTc3ZGQ1NzllOWNh
ODI3NGRkNzhiNGFjZTM0YmM3OTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
ZXJmb3JtYW5jZUVudHJ5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZUVudHJ5TGlzdC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBQZXJmb3JtYW5jZUVudHJ5
TGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeT4gZW50cnkpCiAgICAgbV9l
bnRyaWVzLmFwcGVuZChlbnRyeSk7CiB9CiAKLXZvaWQgUGVyZm9ybWFuY2VFbnRyeUxpc3Q6OmFw
cGVuZEFsbChjb25zdCBWZWN0b3I8UmVmUHRyPFBlcmZvcm1hbmNlRW50cnk+ID4mIGVudHJpZXMp
Cit2b2lkIFBlcmZvcm1hbmNlRW50cnlMaXN0OjphcHBlbmRBbGwoY29uc3QgVmVjdG9yPFJlZlB0
cjxQZXJmb3JtYW5jZUVudHJ5Pj4mIGVudHJpZXMpCiB7CiAgICAgbV9lbnRyaWVzLmFwcGVuZFZl
Y3RvcihlbnRyaWVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VFbnRyeUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeUxp
c3QuaAppbmRleCA0ZmViNGU3ZjEyODgzMTY5NTUwOGY3MDcwYTVmOWEzNDA2NGQwYjI4Li5kOTAw
Mjg3YWRkYmRkNTFkZDRhMzI4YWRjYzk5N2FlYjE3MTY0ODdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlRW50cnlMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZUVudHJ5TGlzdC5oCkBAIC01MiwxNCArNTIsMTQgQEAgcHVibGljOgog
ICAgIFBlcmZvcm1hbmNlRW50cnkqIGl0ZW0odW5zaWduZWQgaW5kZXgpOwogCiAgICAgdm9pZCBh
cHBlbmQoUGFzc1JlZlB0cjxQZXJmb3JtYW5jZUVudHJ5Pik7Ci0gICAgdm9pZCBhcHBlbmRBbGwo
Y29uc3QgVmVjdG9yPFJlZlB0cjxQZXJmb3JtYW5jZUVudHJ5PiA+Jik7CisgICAgdm9pZCBhcHBl
bmRBbGwoY29uc3QgVmVjdG9yPFJlZlB0cjxQZXJmb3JtYW5jZUVudHJ5Pj4mKTsKIAogICAgIHZv
aWQgc29ydCgpOwogCiBwcml2YXRlOgogICAgIFBlcmZvcm1hbmNlRW50cnlMaXN0KCk7CiAKLSAg
ICBWZWN0b3I8UmVmUHRyPFBlcmZvcm1hbmNlRW50cnk+ID4gbV9lbnRyaWVzOworICAgIFZlY3Rv
cjxSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeT4+IG1fZW50cmllczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5IYXNoLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luSGFzaC5oCmluZGV4
IDk2Yjg3NTQ3ZTRhZGJmZGI5MjQxYTNlMTk4OTlmOTVlZDQwMWZiYzUuLjk4ODZjN2QwNDM5ZTZj
ZWUwMTQ2YTBkOGRiZGU4ZGU3MTA3MTZjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW5IYXNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbkhhc2guaApAQCAtNzcsNyArNzcsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5IYXNo
IHsKIG5hbWVzcGFjZSBXVEYgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgRGVmYXVs
dEhhc2g7CiAKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+ID4geworICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNo
PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IHsKICAgICAgICAgdHlwZWRlZiBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkhhc2ggSGFzaDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IGIyNGNhOTQ0NzQ1MmJhMzI0ZTJlNDNmNWU2Yzk0YzNh
ZGRjMDBlNTYuLjk3ZTA3MDZkM2Q5ZmJmYzFlMTEyZDk1OTU3NTNkMjA3NWU2YzY2MTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBTZWN1cml0eVBvbGljeTo6TG9jYWxMb2FkUG9saWN5IGxv
Y2FsTG9hZFBvbGljeSA9IFNlY3VyaXR5UG9saWN5OjpBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbE9u
bHk7CiAKIHR5cGVkZWYgVmVjdG9yPE9yaWdpbkFjY2Vzc0VudHJ5PiBPcmlnaW5BY2Nlc3NXaGl0
ZUxpc3Q7Ci10eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBPd25QdHI8T3JpZ2luQWNjZXNzV2hpdGVM
aXN0PiA+IE9yaWdpbkFjY2Vzc01hcDsKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIE93blB0cjxP
cmlnaW5BY2Nlc3NXaGl0ZUxpc3Q+PiBPcmlnaW5BY2Nlc3NNYXA7CiAKIHN0YXRpYyBPcmlnaW5B
Y2Nlc3NNYXAmIG9yaWdpbkFjY2Vzc01hcCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NwZWVjaElucHV0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwZWVjaElu
cHV0UmVzdWx0LmgKaW5kZXggODk1ZjEyMmNiMGRlZTJkY2FiMzhmZmVhYmMxZmMxZjdmZDNkNmZi
ZS4uMTA3MGUxMjU3YTdhYTcxOTQ5NmMxZjlmOGRiNjI0M2U0NzA3NmJkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TcGVlY2hJbnB1dFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHQuaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgog
ICAgIGRvdWJsZSBtX2NvbmZpZGVuY2U7CiB9OwogCi10eXBlZGVmIFZlY3RvcjxSZWZQdHI8U3Bl
ZWNoSW5wdXRSZXN1bHQ+ID4gU3BlZWNoSW5wdXRSZXN1bHRBcnJheTsKK3R5cGVkZWYgVmVjdG9y
PFJlZlB0cjxTcGVlY2hJbnB1dFJlc3VsdD4+IFNwZWVjaElucHV0UmVzdWx0QXJyYXk7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBiNzExZTg1MjJkMDc2YmRiOTU0
NmEwZjUwMDVmYWM1OWEwYzZhODJkLi42ZmJjNDZlZTJhOGM3YWVkOGY5ZDEyYjIzOTk0OWZmN2M2
MmE3NGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRp
b25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25Db250cm9sbGVyLmNwcApAQCAtMTc5LDggKzE3OSw4IEBAIHZvaWQgQW5pbWF0aW9uQ29u
dHJvbGxlclByaXZhdGU6OmZpcmVFdmVudHNBbmRVcGRhdGVTdHlsZSgpCiAgICAgfQogCiAgICAg
Ly8gY2FsbCBzZXRDaGFuZ2VkIG9uIGFsbCB0aGUgZWxlbWVudHMKLSAgICBWZWN0b3I8UmVmUHRy
PE5vZGU+ID46OmNvbnN0X2l0ZXJhdG9yIG5vZGVDaGFuZ2VzVG9EaXNwYXRjaEVuZCA9IG1fbm9k
ZUNoYW5nZXNUb0Rpc3BhdGNoLmVuZCgpOwotICAgIGZvciAoVmVjdG9yPFJlZlB0cjxOb2RlPiA+
Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fbm9kZUNoYW5nZXNUb0Rpc3BhdGNoLmJlZ2luKCk7IGl0
ICE9IG5vZGVDaGFuZ2VzVG9EaXNwYXRjaEVuZDsgKytpdCkKKyAgICBWZWN0b3I8UmVmUHRyPE5v
ZGU+Pjo6Y29uc3RfaXRlcmF0b3Igbm9kZUNoYW5nZXNUb0Rpc3BhdGNoRW5kID0gbV9ub2RlQ2hh
bmdlc1RvRGlzcGF0Y2guZW5kKCk7CisgICAgZm9yIChWZWN0b3I8UmVmUHRyPE5vZGU+Pjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX25vZGVDaGFuZ2VzVG9EaXNwYXRjaC5iZWdpbigpOyBpdCAhPSBu
b2RlQ2hhbmdlc1RvRGlzcGF0Y2hFbmQ7ICsraXQpCiAgICAgICAgICgqaXQpLT5zZXROZWVkc1N0
eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKIAogICAgIG1fbm9kZUNoYW5nZXNUb0Rp
c3BhdGNoLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUuaAppbmRleCA5NWYxNjQyYzNjN2JiNmJj
MWViYjcwODgxMzAyNzIxYTZiYTIwYzQxLi41Njk5ZWQzNGQzYTZmM2UwZjU2NWVjZDkxODBmYmIy
YmQ4NGI3YjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Bbmlt
YXRpb25Db250cm9sbGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmgKQEAgLTEzNCwxMSArMTM0LDExIEBAIHBy
aXZhdGU6CiAgICAgfTsKICAgICAKICAgICBWZWN0b3I8RXZlbnRUb0Rpc3BhdGNoPiBtX2V2ZW50
c1RvRGlzcGF0Y2g7Ci0gICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG1fbm9kZUNoYW5nZXNUb0Rp
c3BhdGNoOworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IG1fbm9kZUNoYW5nZXNUb0Rpc3BhdGNo
OwogICAgIAogICAgIGRvdWJsZSBtX2JlZ2luQW5pbWF0aW9uVXBkYXRlVGltZTsKIAotICAgIHR5
cGVkZWYgSGFzaFNldDxSZWZQdHI8QW5pbWF0aW9uQmFzZT4gPiBXYWl0aW5nQW5pbWF0aW9uc1Nl
dDsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPEFuaW1hdGlvbkJhc2U+PiBXYWl0aW5nQW5p
bWF0aW9uc1NldDsKICAgICBXYWl0aW5nQW5pbWF0aW9uc1NldCBtX2FuaW1hdGlvbnNXYWl0aW5n
Rm9yU3R5bGU7CiAgICAgV2FpdGluZ0FuaW1hdGlvbnNTZXQgbV9hbmltYXRpb25zV2FpdGluZ0Zv
clN0YXJ0VGltZVJlc3BvbnNlOwogICAgIGJvb2wgbV93YWl0aW5nRm9yQXN5bmNTdGFydE5vdGlm
aWNhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCAzNTg5MGIxZDcxYzJhZmIyYzRmN2IzZTZjZWM3YmRl
YjI0MDFmYTUyLi5lZDM1ZWMzM2FlZTg0NDE0NmUwNTMwNjU1ZTRjNTgzNzc5NzA2MWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwCkBAIC0xMjcwLDcgKzEyNzAsNyBAQCBDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBw
ZXJNYXA6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1hcCgpCiAgICAgICAgIG5ldyBQcm9w
ZXJ0eVdyYXBwZXJTVkdQYWludChDU1NQcm9wZXJ0eVN0cm9rZSwgJlJlbmRlclN0eWxlOjpzdHJv
a2VQYWludFR5cGUsICZSZW5kZXJTdHlsZTo6c3Ryb2tlUGFpbnRDb2xvciwgJlJlbmRlclN0eWxl
OjpzZXRTdHJva2VQYWludENvbG9yKSwKICAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlcjxmbG9h
dD4oQ1NTUHJvcGVydHlTdHJva2VPcGFjaXR5LCAmUmVuZGVyU3R5bGU6OnN0cm9rZU9wYWNpdHks
ICZSZW5kZXJTdHlsZTo6c2V0U3Ryb2tlT3BhY2l0eSksCiAgICAgICAgIG5ldyBQcm9wZXJ0eVdy
YXBwZXI8U1ZHTGVuZ3RoPihDU1NQcm9wZXJ0eVN0cm9rZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnN0
cm9rZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldFN0cm9rZVdpZHRoKSwKLSAgICAgICAgbmV3IFBy
b3BlcnR5V3JhcHBlcjwgVmVjdG9yPFNWR0xlbmd0aD4gPihDU1NQcm9wZXJ0eVN0cm9rZURhc2hh
cnJheSwgJlJlbmRlclN0eWxlOjpzdHJva2VEYXNoQXJyYXksICZSZW5kZXJTdHlsZTo6c2V0U3Ry
b2tlRGFzaEFycmF5KSwKKyAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlcjwgVmVjdG9yPFNWR0xl
bmd0aD4+KENTU1Byb3BlcnR5U3Ryb2tlRGFzaGFycmF5LCAmUmVuZGVyU3R5bGU6OnN0cm9rZURh
c2hBcnJheSwgJlJlbmRlclN0eWxlOjpzZXRTdHJva2VEYXNoQXJyYXkpLAogICAgICAgICBuZXcg
UHJvcGVydHlXcmFwcGVyPFNWR0xlbmd0aD4oQ1NTUHJvcGVydHlTdHJva2VEYXNob2Zmc2V0LCAm
UmVuZGVyU3R5bGU6OnN0cm9rZURhc2hPZmZzZXQsICZSZW5kZXJTdHlsZTo6c2V0U3Ryb2tlRGFz
aE9mZnNldCksCiAgICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXI8ZmxvYXQ+KENTU1Byb3BlcnR5
U3Ryb2tlTWl0ZXJsaW1pdCwgJlJlbmRlclN0eWxlOjpzdHJva2VNaXRlckxpbWl0LCAmUmVuZGVy
U3R5bGU6OnNldFN0cm9rZU1pdGVyTGltaXQpLAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5oCmluZGV4IDE1ZTkwNTM1NWI1OGVlZmRk
Y2U1ZDIyNTNmZWUxNTk1NTU3YWI3ZTAuLjhlMTg3NzRlYzBiY2I1MjRhZGM2ZmM2YTg1MjMwYzA5
YmM0YzY4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBv
c2l0ZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBv
c2l0ZUFuaW1hdGlvbi5oCkBAIC04NSw4ICs4NSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRh
dGVUcmFuc2l0aW9ucyhSZW5kZXJFbGVtZW50KiwgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwg
UmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlKTsKICAgICB2b2lkIHVwZGF0ZUtleWZyYW1lQW5pbWF0
aW9ucyhSZW5kZXJFbGVtZW50KiwgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5
bGUqIHRhcmdldFN0eWxlKTsKICAgICAKLSAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8
SW1wbGljaXRBbmltYXRpb24+ID4gQ1NTUHJvcGVydHlUcmFuc2l0aW9uc01hcDsKLSAgICB0eXBl
ZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIFJlZlB0cjxLZXlmcmFtZUFuaW1hdGlvbj4g
PiAgQW5pbWF0aW9uTmFtZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8SW1w
bGljaXRBbmltYXRpb24+PiBDU1NQcm9wZXJ0eVRyYW5zaXRpb25zTWFwOworICAgIHR5cGVkZWYg
SGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgUmVmUHRyPEtleWZyYW1lQW5pbWF0aW9uPj4gIEFu
aW1hdGlvbk5hbWVNYXA7CiAKICAgICBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZSogbV9hbmlt
YXRpb25Db250cm9sbGVyOwogICAgIENTU1Byb3BlcnR5VHJhbnNpdGlvbnNNYXAgbV90cmFuc2l0
aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZU5vZGUuY3BwCmluZGV4IGI3MjVlYjcyZWExMjk5ZGEzMzkyYzA5ZDljODI5MDFhZjQzNWRk
ZjIuLjQwZGM0MmI4Mzg3ZWRjZjUxNmVkNTUxMjlmN2U2ZjI3NzJlMmU0NjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcApA
QCAtODcsNyArODcsNyBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6YXBwZW5kQ2hpbGQoUGFz
c093blB0cjxTY3JvbGxpbmdTdGF0ZU5vZGU+IGNoaWxkTm9kZSkKICAgICBjaGlsZE5vZGUtPnNl
dFBhcmVudCh0aGlzKTsKIAogICAgIGlmICghbV9jaGlsZHJlbikKLSAgICAgICAgbV9jaGlsZHJl
biA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8T3duUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4gPik7Cisg
ICAgICAgIG1fY2hpbGRyZW4gPSBhZG9wdFB0cihuZXcgVmVjdG9yPE93blB0cjxTY3JvbGxpbmdT
dGF0ZU5vZGU+Pik7CiAKICAgICBtX2NoaWxkcmVuLT5hcHBlbmQoY2hpbGROb2RlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmgK
aW5kZXggYzI2NWJmOGM3NjUxMzg5M2M1YmY0ZWZkZjY4MDJiOGQ5OGUwMmRmYy4uZDI2ZmIzNDQw
NDEwNjdiZGJiY2Q3MDczZTNjMWFkZmY2ZjUyM2MxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmgKQEAgLTgzLDcgKzgzLDcgQEAg
cHVibGljOgogICAgIFNjcm9sbGluZ1N0YXRlTm9kZSogcGFyZW50KCkgY29uc3QgeyByZXR1cm4g
bV9wYXJlbnQ7IH0KICAgICB2b2lkIHNldFBhcmVudChTY3JvbGxpbmdTdGF0ZU5vZGUqIHBhcmVu
dCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogCi0gICAgVmVjdG9yPE93blB0cjxTY3JvbGxpbmdT
dGF0ZU5vZGU+ID4qIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbi5nZXQoKTsg
fQorICAgIFZlY3RvcjxPd25QdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4qIGNoaWxkcmVuKCkgY29u
c3QgeyByZXR1cm4gbV9jaGlsZHJlbi5nZXQoKTsgfQogCiAgICAgdm9pZCBhcHBlbmRDaGlsZChQ
YXNzT3duUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4pOwogICAgIHZvaWQgcmVtb3ZlQ2hpbGQoU2Ny
b2xsaW5nU3RhdGVOb2RlKik7CkBAIC0xMDcsNyArMTA3LDcgQEAgcHJpdmF0ZToKICAgICBDaGFu
Z2VkUHJvcGVydGllcyBtX2NoYW5nZWRQcm9wZXJ0aWVzOwogCiAgICAgU2Nyb2xsaW5nU3RhdGVO
b2RlKiBtX3BhcmVudDsKLSAgICBPd25QdHI8VmVjdG9yPE93blB0cjxTY3JvbGxpbmdTdGF0ZU5v
ZGU+ID4gPiBtX2NoaWxkcmVuOworICAgIE93blB0cjxWZWN0b3I8T3duUHRyPFNjcm9sbGluZ1N0
YXRlTm9kZT4+PiBtX2NoaWxkcmVuOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0
cjxQbGF0Zm9ybUxheWVyPiBtX3BsYXRmb3JtU2Nyb2xsTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAppbmRleCA1ZDMxZWRjYWIx
NjE4MzZlMjNlMDA3ZjMxM2U2MGM5ZDdlZTFhZWM2Li40NWU3ODhjY2IxMTcxMjgzMjJiYWI2MDVk
MGI1M2VmNWFkYzc3OGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RocmVhZC5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFNjcm9sbGluZ1Ro
cmVhZDo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tU2Nyb2xsaW5nVGhyZWFkKCkKIHsKICAgICBBU1NF
UlQoaXNDdXJyZW50VGhyZWFkKCkpOwogCi0gICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4gPiBm
dW5jdGlvbnM7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IGZ1bmN0aW9uczsKICAgICAK
ICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2Z1bmN0aW9uc011dGV4KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKaW5kZXgg
NzU4MTgyZWI5NzBlM2U3YWFhMWQ3MjM2NTVhMTdmNzc1OGFkMGFhMC4uOWQzZWRkNzZhNGY5Zjg4
ZTZjZmNkZTYyMGViYzNmZjVlZjAzZjczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAg
ICBNdXRleCBtX2luaXRpYWxpemVSdW5Mb29wQ29uZGl0aW9uTXV0ZXg7CiAKICAgICBNdXRleCBt
X2Z1bmN0aW9uc011dGV4OwotICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKCk+ID4gbV9mdW5jdGlv
bnM7CisgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IG1fZnVuY3Rpb25zOwogCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIFdlYkNvcmU6OlJ1bkxvb3Ag
aGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5j
cHAKaW5kZXggMjI4YWUzZTM2NjM4YTM4NmFlN2MyMmQ5MjhjMzBkN2Y5MTAxNmY5Yi4uZTI4NDNm
NDZjOTFiMzVmNTgwMjM5ZmRhNzMzOTAxMmZiOTg2YjBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2
b2lkIFNjcm9sbGluZ1RyZWU6OnVwZGF0ZVRyZWVGcm9tU3RhdGVOb2RlKFNjcm9sbGluZ1N0YXRl
Tm9kZSogc3RhdGVOb2RlKQogICAgIH0KIAogICAgIC8vIE5vdyB1cGRhdGUgdGhlIGNoaWxkcmVu
IGlmIHdlIGhhdmUgYW55LgotICAgIFZlY3RvcjxPd25QdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPiA+
KiBzdGF0ZU5vZGVDaGlsZHJlbiA9IHN0YXRlTm9kZS0+Y2hpbGRyZW4oKTsKKyAgICBWZWN0b3I8
T3duUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4+KiBzdGF0ZU5vZGVDaGlsZHJlbiA9IHN0YXRlTm9k
ZS0+Y2hpbGRyZW4oKTsKICAgICBpZiAoc3RhdGVOb2RlQ2hpbGRyZW4pIHsKICAgICAgICAgc2l6
ZV90IHNpemUgPSBzdGF0ZU5vZGVDaGlsZHJlbi0+c2l6ZSgpOwogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmNwcAppbmRleCBkODEwYjQwOGY2Y2NhNzFlNjI4NTgw
NDRhOGY3N2M3NTMxYWY0Y2FlLi4wNDEyZTA1YmVhNTg1MWQ1NzVjN2Q2ODcxMWFiMDQ4MTYwMzAx
YWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZU5vZGUuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU5vZGU6OmFw
cGVuZENoaWxkKFBhc3NPd25QdHI8U2Nyb2xsaW5nVHJlZU5vZGU+IGNoaWxkTm9kZSkKICAgICBj
aGlsZE5vZGUtPnNldFBhcmVudCh0aGlzKTsKIAogICAgIGlmICghbV9jaGlsZHJlbikKLSAgICAg
ICAgbV9jaGlsZHJlbiA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8T3duUHRyPFNjcm9sbGluZ1RyZWVO
b2RlPiA+KTsKKyAgICAgICAgbV9jaGlsZHJlbiA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8T3duUHRy
PFNjcm9sbGluZ1RyZWVOb2RlPj4pOwogCiAgICAgbV9jaGlsZHJlbi0+YXBwZW5kKGNoaWxkTm9k
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZU5vZGUuaAppbmRleCA1NmUxMDBkMGVmMDlmYjdlNTQxZjE3ZTg2YTgzODM4YjkxMmE2YzA2Li5h
NTI2ZWRiMGJjMTcxZmExYjcyNDE3YWNjMjY1MjAwMTM3ODY2OTY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmgKQEAgLTYwLDcgKzYw
LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFNjcm9sbGluZ1RyZWUqIHNjcm9sbGluZ1Ry
ZWUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGluZ1RyZWU7IH0KIAotICAgIHR5cGVkZWYgVmVj
dG9yPE93blB0cjxTY3JvbGxpbmdUcmVlTm9kZT4gPiBTY3JvbGxpbmdUcmVlQ2hpbGRyZW5WZWN0
b3I7CisgICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPFNjcm9sbGluZ1RyZWVOb2RlPj4gU2Nyb2xs
aW5nVHJlZUNoaWxkcmVuVmVjdG9yOwogICAgIE93blB0cjxTY3JvbGxpbmdUcmVlQ2hpbGRyZW5W
ZWN0b3I+IG1fY2hpbGRyZW47CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KaW5k
ZXggZWE4MmEyOWY1OGRjYzhlNTQ4MjUzOTgxYmVhNjlkMDYxNjIwZjUxNS4uZGUzNzE2ZDUxZDJi
MjAzMDJkNDc3NTY3Y2Y3MDYzNWRiZDNmYTVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQpA
QCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OnN5bmNDaGls
ZFBvc2l0aW9ucyhjb25zdCBMYXlvdXRSZWN0JiB2aWV3cG9ydFJlY3QpCiAgICAgaWYgKCFtX3Nj
cm9sbGluZ1N0YXRlVHJlZS0+cm9vdFN0YXRlTm9kZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBWZWN0b3I8T3duUHRyPFNjcm9sbGluZ1N0YXRlTm9kZT4gPiogY2hpbGRyZW4gPSBtX3Njcm9s
bGluZ1N0YXRlVHJlZS0+cm9vdFN0YXRlTm9kZSgpLT5jaGlsZHJlbigpOworICAgIFZlY3RvcjxP
d25QdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPj4qIGNoaWxkcmVuID0gbV9zY3JvbGxpbmdTdGF0ZVRy
ZWUtPnJvb3RTdGF0ZU5vZGUoKS0+Y2hpbGRyZW4oKTsKICAgICBpZiAoIWNoaWxkcmVuKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3Nz
VGhyZWFkQ29waWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29w
aWVyLmNwcAppbmRleCAyZTg2MTFiMGI0Y2U0NDE0ZjJhYzEzZTEyNWIxMGQyNzA5MWFiYTE1Li41
ZThiYTc5NDBhOGIwNmQzNjYwMGM0Y2JhZTlmMzZiZmM4OTZmZDk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCkBAIC03NSwxMiArNzUsMTIgQEAg
Y2xhc3MgQ29waWVyVGhyZWFkU2FmZVJlZkNvdW50ZWRUZXN0IDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPENvcGllclRocmVhZFMKIAogQ09NUElMRV9BU1NFUlQoKHN0ZDo6aXNfc2FtZTwK
ICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Q29waWVyVGhyZWFkU2FmZVJlZkNvdW50ZWRU
ZXN0PiwKLSAgICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVyPFBhc3NSZWZQdHI8Q29w
aWVyVGhyZWFkU2FmZVJlZkNvdW50ZWRUZXN0PiA+OjpUeXBlCisgICAgICAgICAgICAgICAgICBD
cm9zc1RocmVhZENvcGllcjxQYXNzUmVmUHRyPENvcGllclRocmVhZFNhZmVSZWZDb3VudGVkVGVz
dD4+OjpUeXBlCiAgICAgICAgICAgICAgICAgICA+Ojp2YWx1ZSksCiAgICAgICAgICAgICAgICBQ
YXNzUmVmUHRyVGVzdCk7CiBDT01QSUxFX0FTU0VSVCgoc3RkOjppc19zYW1lPAogICAgICAgICAg
ICAgICAgICAgUGFzc1JlZlB0cjxDb3BpZXJUaHJlYWRTYWZlUmVmQ291bnRlZFRlc3Q+LAotICAg
ICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8UmVmUHRyPENvcGllclRocmVhZFNhZmVS
ZWZDb3VudGVkVGVzdD4gPjo6VHlwZQorICAgICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3Bp
ZXI8UmVmUHRyPENvcGllclRocmVhZFNhZmVSZWZDb3VudGVkVGVzdD4+OjpUeXBlCiAgICAgICAg
ICAgICAgICAgICA+Ojp2YWx1ZSksCiAgICAgICAgICAgICAgICBSZWZQdHJUZXN0KTsKIENPTVBJ
TEVfQVNTRVJUKChzdGQ6OmlzX3NhbWU8CkBAIC0xMDEsMTMgKzEwMSwxMyBAQCBjbGFzcyBDb3Bp
ZXJSZWZDb3VudGVkVGVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPENvcGllclJlZkNvdW50ZWRUZXN0
PiB7CiAKIENPTVBJTEVfQVNTRVJUKChzdGQ6OmlzX3NhbWU8CiAgICAgICAgICAgICAgICAgICBp
bnQsCi0gICAgICAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQYXNzUmVmUHRyPENvcGll
clJlZkNvdW50ZWRUZXN0PiA+OjpUeXBlCisgICAgICAgICAgICAgICAgICBDcm9zc1RocmVhZENv
cGllcjxQYXNzUmVmUHRyPENvcGllclJlZkNvdW50ZWRUZXN0Pj46OlR5cGUKICAgICAgICAgICAg
ICAgICAgID46OnZhbHVlKSwKICAgICAgICAgICAgICAgIFBhc3NSZWZQdHJSZWZDb3VudGVkVGVz
dCk7CiAKIENPTVBJTEVfQVNTRVJUKChzdGQ6OmlzX3NhbWU8CiAgICAgICAgICAgICAgICAgICBp
bnQsCi0gICAgICAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxSZWZQdHI8Q29waWVyUmVm
Q291bnRlZFRlc3Q+ID46OlR5cGUKKyAgICAgICAgICAgICAgICAgIENyb3NzVGhyZWFkQ29waWVy
PFJlZlB0cjxDb3BpZXJSZWZDb3VudGVkVGVzdD4+OjpUeXBlCiAgICAgICAgICAgICAgICAgICA+
Ojp2YWx1ZSksCiAgICAgICAgICAgICAgICBSZWZQdHJSZWZDb3VudGVkVGVzdCk7CiAKQEAgLTEy
MCwxNCArMTIwLDE0IEBAIENPTVBJTEVfQVNTRVJUKChzdGQ6OmlzX3NhbWU8CiAvLyBWZXJpZnkg
dGhhdCBQYXNzT3duUHRyIGdldHMgcGFzc2VkIHRocm91Z2guCiBDT01QSUxFX0FTU0VSVCgoc3Rk
Ojppc19zYW1lPAogICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxmbG9hdD4sCi0gICAgICAg
ICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQYXNzT3duUHRyPGZsb2F0PiA+OjpUeXBlCisg
ICAgICAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxQYXNzT3duUHRyPGZsb2F0Pj46OlR5
cGUKICAgICAgICAgICAgICAgICAgID46OnZhbHVlKSwKICAgICAgICAgICAgICAgIFBhc3NPd25Q
dHJUZXN0KTsKIAogLy8gVmVyaWZ5IHRoYXQgUGFzc093blB0ciBkb2VzIG5vdCBnZXQgcGFzc2Vk
IHRocm91Z2guCiBDT01QSUxFX0FTU0VSVCgoc3RkOjppc19zYW1lPAogICAgICAgICAgICAgICAg
ICAgaW50LAotICAgICAgICAgICAgICAgICAgQ3Jvc3NUaHJlYWRDb3BpZXI8T3duUHRyPGZsb2F0
PiA+OjpUeXBlCisgICAgICAgICAgICAgICAgICBDcm9zc1RocmVhZENvcGllcjxPd25QdHI8Zmxv
YXQ+Pjo6VHlwZQogICAgICAgICAgICAgICAgICAgPjo6dmFsdWUpLAogICAgICAgICAgICAgICAg
T3duUHRyVGVzdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3Nz
VGhyZWFkQ29waWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGll
ci5oCmluZGV4IGFlMmVmMjRhMTBiYTdkOGIyNWYyMDBmYjc0ZTI2OThiMGYyMDdlY2YuLmM3N2M5
MWI2ODMyNzA5MDgwODA1NTM3Yzg2MjNiYTNjNDdjYTllNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaApAQCAtMTEyLDcgKzExMiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgfQogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgUGFzc093blB0cjxU
PiA+IHsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJC
YXNlPGZhbHNlLCBmYWxzZSwgUGFzc093blB0cjxUPj4gewogICAgICAgICB0eXBlZGVmIFBhc3NP
d25QdHI8VD4gVHlwZTsKICAgICAgICAgc3RhdGljIFR5cGUgY29weShUeXBlIG93blB0cikKICAg
ICAgICAgewpAQCAtMTU3LDcgKzE1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
VCogbV92YWx1ZTsKICAgICB9OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENy
b3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3NX
cmFwcGVyPFQ+ID4geworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDcm9zc1RocmVh
ZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzV3JhcHBlcjxU
Pj4gewogICAgICAgICB0eXBlZGVmIFQqIFR5cGU7CiAgICAgICAgIHN0YXRpYyBUeXBlIGNvcHko
Y29uc3QgQWxsb3dDcm9zc1RocmVhZEFjY2Vzc1dyYXBwZXI8VD4mIHdyYXBwZXIpIHsgcmV0dXJu
IHdyYXBwZXIudmFsdWUoKTsgfQogICAgIH07CkBAIC0xNzcsNyArMTc3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBUKiBtX3ZhbHVlOwogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgQWxs
b3dBY2Nlc3NMYXRlcldyYXBwZXI8VD4gPiB7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEFsbG93QWNjZXNzTGF0ZXJX
cmFwcGVyPFQ+PiB7CiAgICAgICAgIHR5cGVkZWYgVCogVHlwZTsKICAgICAgICAgc3RhdGljIFR5
cGUgY29weShjb25zdCBBbGxvd0FjY2Vzc0xhdGVyV3JhcHBlcjxUPiYgd3JhcHBlcikgeyByZXR1
cm4gd3JhcHBlci52YWx1ZSgpOyB9CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
CmluZGV4IDE3ODRlZjQyMDgzZDM0NjRmMjMxOGQ4OTM3ZThjNGY0YmU2YmE3YjAuLmYzNTM1NmNi
ZDVkYTI4MDRhODY1MmE5MDJhOTUwMWY0OTA1MDMxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJh
Z0RhdGEuaApAQCAtNzYsNyArNzYsNyBAQCBlbnVtIERyYWdBcHBsaWNhdGlvbkZsYWdzIHsKIH07
CiAKICNpZiBQTEFURk9STShXSU4pCi10eXBlZGVmIEhhc2hNYXA8VUlOVCwgVmVjdG9yPFN0cmlu
Zz4gPiBEcmFnRGF0YU1hcDsKK3R5cGVkZWYgSGFzaE1hcDxVSU5ULCBWZWN0b3I8U3RyaW5nPj4g
RHJhZ0RhdGFNYXA7CiAjZW5kaWYKIAogY2xhc3MgRHJhZ0RhdGEgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFRhc2suaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01haW5UaHJlYWRUYXNrLmgKaW5kZXggOGU3OGQ5ZDcxODVkMzcwMzJjNDkyZGU2ZDk4
NjViMjBjN2M1ODI1Yi4uMjYyMDM5NzU4NjBjZDZiMWY1NDAxNjIyODA4YTlkYWNlMDM3MzlkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFRhc2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkVGFzay5oCkBAIC00OSwxMSArNDks
MTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE1haW5UaHJlYWRUYXNrVHJhaXRzPFQq
PiB7CiAgICAgdHlwZWRlZiBUKiBQYXJhbVR5cGU7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgTWFpblRocmVhZFRhc2tUcmFpdHM8UGFzc1JlZlB0cjxUPiA+IHsKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBNYWluVGhyZWFkVGFza1RyYWl0czxQYXNzUmVmUHRyPFQ+PiB7
CiAgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFQ+IFBhcmFtVHlwZTsKIH07CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBNYWluVGhyZWFkVGFza1RyYWl0czxQYXNzT3duUHRyPFQ+ID4gewor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE1haW5UaHJlYWRUYXNrVHJhaXRzPFBhc3NPd25Q
dHI8VD4+IHsKICAgICB0eXBlZGVmIFBhc3NPd25QdHI8VD4gUGFyYW1UeXBlOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ERnJlZUxpc3RBcmVuYS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ERnJlZUxpc3RBcmVuYS5oCmluZGV4IGM1OWJjMjljMzE1
MGQ5MWEzZjQ2OGY4NDg2MTRjZWEwMjQ5MzViY2YuLmRlZTFhMTkwZTBlMzlhNGE0OThkZmMwY2I5
M2Q0MWU2MGU1YjgxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPREZy
ZWVMaXN0QXJlbmEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RGcmVlTGlzdEFy
ZW5hLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBmcmVlT2JqZWN0KFQq
IHB0cikKICAgICB7Ci0gICAgICAgIGZvciAodHlwZW5hbWUgVmVjdG9yPE93blB0cjxGcmVlTGlz
dENodW5rPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fY2h1bmtzLmJlZ2luKCksIGVuZCA9IG1f
Y2h1bmtzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgZm9yICh0eXBlbmFtZSBW
ZWN0b3I8T3duUHRyPEZyZWVMaXN0Q2h1bms+Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NodW5r
cy5iZWdpbigpLCBlbmQgPSBtX2NodW5rcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAg
ICAgICAgICBGcmVlTGlzdENodW5rKiBjaHVuayA9IHN0YXRpY19jYXN0PEZyZWVMaXN0Q2h1bmsq
PihpdC0+Z2V0KCkpOwogICAgICAgICAgICAgaWYgKGNodW5rLT5jb250YWlucyhwdHIpKQogICAg
ICAgICAgICAgICAgIGNodW5rLT5mcmVlKHB0cik7CkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBwdHIgPSBtX2N1cnJlbnQtPmFsbG9jYXRlKHNpemUpOwogICAgICAgICAg
ICAgaWYgKCFwdHIpIHsKICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBjYW4gYWxsb2Nh
dGUgZnJvbSBvdGhlciBjaHVua3MnIGZyZWUgbGlzdC4KLSAgICAgICAgICAgICAgICBmb3IgKHR5
cGVuYW1lIFZlY3RvcjxPd25QdHI8RnJlZUxpc3RDaHVuaz4gPjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX2NodW5rcy5iZWdpbigpLCBlbmQgPSBtX2NodW5rcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KSB7CisgICAgICAgICAgICAgICAgZm9yICh0eXBlbmFtZSBWZWN0b3I8T3duUHRyPEZyZWVMaXN0
Q2h1bms+Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NodW5rcy5iZWdpbigpLCBlbmQgPSBtX2No
dW5rcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICAgICAgICAgIEZyZWVM
aXN0Q2h1bmsqIGNodW5rID0gc3RhdGljX2Nhc3Q8RnJlZUxpc3RDaHVuayo+KGl0LT5nZXQoKSk7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChjaHVuay0+aGFzRnJlZUxpc3QoKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgcHRyID0gY2h1bmstPmFsbG9jYXRlKHNpemUpOwpAQCAtMTc2LDcg
KzE3Niw3IEBAIHByaXZhdGU6CiAKICAgICBGcmVlTGlzdENodW5rKiBtX2N1cnJlbnQ7CiAgICAg
c2l6ZV90IG1fY3VycmVudENodW5rU2l6ZTsKLSAgICBWZWN0b3I8T3duUHRyPEZyZWVMaXN0Q2h1
bms+ID4gbV9jaHVua3M7CisgICAgVmVjdG9yPE93blB0cjxGcmVlTGlzdENodW5rPj4gbV9jaHVu
a3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbFRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BPREludGVydmFsVHJlZS5oCmluZGV4IDU5NTExMDM5M2Y2MDMzNmM2OGM5OWY5YjE5MzJiMGY5
M2JkYzE3YWEuLjI2NGU2ZGZkNTE4MzVlNzRjMWE3Y2Y3ZTA5YTFjZmFiNWExYzY4NzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPREludGVydmFsVHJlZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPREludGVydmFsVHJlZS5oCkBAIC03MCw3ICs3MCw3IEBA
IHByaXZhdGU6CiAvLyBzdXBwb3J0cyBlZmZpY2llbnQgKE8obGcgbikpIGluc2VydGlvbiwgcmVt
b3ZhbCBhbmQgcXVlcnlpbmcgb2YKIC8vIGludGVydmFscyBpbiB0aGUgdHJlZS4KIHRlbXBsYXRl
PGNsYXNzIFQsIGNsYXNzIFVzZXJEYXRhID0gdm9pZCo+Ci1jbGFzcyBQT0RJbnRlcnZhbFRyZWUg
OiBwdWJsaWMgUE9EUmVkQmxhY2tUcmVlPFBPREludGVydmFsPFQsIFVzZXJEYXRhPiA+IHsKK2Ns
YXNzIFBPREludGVydmFsVHJlZSA6IHB1YmxpYyBQT0RSZWRCbGFja1RyZWU8UE9ESW50ZXJ2YWw8
VCwgVXNlckRhdGE+PiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUE9ESW50ZXJ2YWxUcmVl
KTsKIHB1YmxpYzoKICAgICAvLyBUeXBlZGVmIHRvIHJlZHVjZSB0eXBpbmcgd2hlbiBkZWNsYXJp
bmcgaW50ZXJ2YWxzIHRvIGJlIHN0b3JlZCBpbgpAQCAtMjUzLDcgKzI1Myw3IEBAIHByaXZhdGU6
CiAjaWZuZGVmIE5ERUJVRwogLy8gU3VwcG9ydCBmb3IgcHJpbnRpbmcgUE9ESW50ZXJ2YWxzIGF0
IHRoZSBQT0RSZWRCbGFja1RyZWUgbGV2ZWwuCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVc2Vy
RGF0YT4KLXN0cnVjdCBWYWx1ZVRvU3RyaW5nPFBPREludGVydmFsPFQsIFVzZXJEYXRhPiA+IHsK
K3N0cnVjdCBWYWx1ZVRvU3RyaW5nPFBPREludGVydmFsPFQsIFVzZXJEYXRhPj4gewogICAgIHN0
YXRpYyBTdHJpbmcgc3RyaW5nKGNvbnN0IFBPREludGVydmFsPFQsIFVzZXJEYXRhPiYgaW50ZXJ2
YWwpCiAgICAgewogICAgICAgICByZXR1cm4gaW50ZXJ2YWwudG9TdHJpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPRFJlZEJsYWNrVHJlZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUE9EUmVkQmxhY2tUcmVlLmgKaW5kZXggOTBkYzJmYTg1ZGY5NjMyMTc3
MWYwMzJjYjk4ZWUyZWE1OTRmMGYwZi4uYmQzZGUwMjQzNmFkOWRhYjZmNjgwZDg0NDRiYmE5ZjUw
MThmYTA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9EUmVkQmxhY2tU
cmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9EUmVkQmxhY2tUcmVlLmgKQEAg
LTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDb25zdHJ1Y3RzIGEgbmV3IHJlZC1i
bGFjayB0cmVlLCBhbGxvY2F0aW5nIHRlbXBvcmFyeSBvYmplY3RzCiAgICAgLy8gZnJvbSB0aGUg
Z2l2ZW4gUE9EQXJlbmEuCi0gICAgZXhwbGljaXQgUE9EUmVkQmxhY2tUcmVlKFBhc3NSZWZQdHI8
UE9ERnJlZUxpc3RBcmVuYTxOb2RlPiA+IGFyZW5hKQorICAgIGV4cGxpY2l0IFBPRFJlZEJsYWNr
VHJlZShQYXNzUmVmUHRyPFBPREZyZWVMaXN0QXJlbmE8Tm9kZT4+IGFyZW5hKQogICAgICAgICA6
IG1fYXJlbmEoYXJlbmEpCiAgICAgICAgICwgbV9yb290KDApCiAgICAgICAgICwgbV9uZWVkc0Z1
bGxPcmRlcmluZ0NvbXBhcmlzb25zKGZhbHNlKQpAQCAtODE0LDcgKzgxNCw3IEBAIHByaXZhdGU6
CiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgLy8gRGF0YSBtZW1iZXJzCiAKLSAgICBSZWZQdHI8
UE9ERnJlZUxpc3RBcmVuYTxOb2RlPiA+IG1fYXJlbmE7CisgICAgUmVmUHRyPFBPREZyZWVMaXN0
QXJlbmE8Tm9kZT4+IG1fYXJlbmE7CiAgICAgTm9kZSogbV9yb290OwogICAgIGJvb2wgbV9uZWVk
c0Z1bGxPcmRlcmluZ0NvbXBhcmlzb25zOwogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAKaW5kZXgg
ZjIzNjg3YWM3MDNiZDE5NTY1MWMyY2FhYjg4ZThkYmY0NGU2NzllYi4uN2JlMzFjYmU5OGNmNjg0
YjBhMzMwY2UwOGE2NDNmZmJmZTk0OWYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAg
UGFzc093blB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyPiBQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpemVyOjpjcmVhdGUoUGxhdGZvcm0KICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIoY2xpZW50KSk7CiB9CiAKLWNvbnN0IFZlY3RvcjxSZWZQdHI8UGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4gPiYgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplcjo6
dm9pY2VMaXN0KCkgY29uc3QKK2NvbnN0IFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNWb2ljZT4+JiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyOjp2b2ljZUxpc3QoKSBjb25z
dAogewogICAgIGlmICghbV92b2ljZUxpc3RJc0luaXRpYWxpemVkKSB7CiAgICAgICAgIEFTU0VS
VChtX3ZvaWNlTGlzdC5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplci5oCmluZGV4IGIyMjNjZmM2MGQ2MGY3NGMzNTg0
N2U4YTdkZjg1NDM5NGUwNDFlYzQuLmNmYWU1Y2E0YTQ4NWE2OTk0N2Y0ZjE3NDAwMjRiM2Q1N2Q4
NzhkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNwZWVj
aFN5bnRoZXNpemVyLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIC8vIFNlZW1zIHdh
c3RlZnVsLiBXb3VsZCBiZSBuaWNlIHRvIGZpbmQgYSBiZXR0ZXIgd2F5LgogICAgIHZpcnR1YWwg
flBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoKTsKICAgICAKLSAgICBjb25zdCBWZWN0b3I8UmVm
UHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2U+ID4mIHZvaWNlTGlzdCgpIGNvbnN0Owor
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4+JiB2
b2ljZUxpc3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoUGFzc1JlZlB0cjxQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgp
OwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIoUGxhdGZv
cm1TcGVlY2hTeW50aGVzaXplckNsaWVudCopOwogCi0gICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+IG1fdm9pY2VMaXN0OworICAgIFZlY3RvcjxSZWZQdHI8
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZT4+IG1fdm9pY2VMaXN0OwogCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplVm9pY2VMaXN0KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW5Mb29wLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9S
dW5Mb29wLmgKaW5kZXggMzAzZTVmMjBhYjc3ZDVkMzI0NmM3YWFkZWNiMjA3MzExYWVhYzViYi4u
ODMyNzE2NDJlMWM4MjQxZjdiM2RmZDVhNzU1NTkxMTkwZmMwNGUzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1J1bkxvb3AuaApAQCAtMTMzLDcgKzEzMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwZXJm
b3JtV29yaygpOwogCiAgICAgTXV0ZXggbV9mdW5jdGlvblF1ZXVlTG9jazsKLSAgICBEZXF1ZTxG
dW5jdGlvbjx2b2lkKCk+ID4gbV9mdW5jdGlvblF1ZXVlOworICAgIERlcXVlPEZ1bmN0aW9uPHZv
aWQoKT4+IG1fZnVuY3Rpb25RdWV1ZTsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBzdGF0aWMg
Ym9vbCByZWdpc3RlclJ1bkxvb3BNZXNzYWdlV2luZG93Q2xhc3MoKTsKQEAgLTE2Niw3ICsxNjYs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3BOZXN0ZWRNYWluTG9vcCgpOwogcHJpdmF0ZToKICAg
ICBHUmVmUHRyPEdNYWluQ29udGV4dD4gbV9ydW5Mb29wQ29udGV4dDsKLSAgICBWZWN0b3I8R1Jl
ZlB0cjxHTWFpbkxvb3A+ID4gbV9ydW5Mb29wTWFpbkxvb3BzOworICAgIFZlY3RvcjxHUmVmUHRy
PEdNYWluTG9vcD4+IG1fcnVuTG9vcE1haW5Mb29wczsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCAxMDJjMGQ3NjM1YjQyYjg4M2VhMmMxMzMx
ODE3MThhODhmOGE3YWFhLi4zZjJiNjc4ZTcwNThlOGM0ZTFiMGI4MGYzZDE4YjliN2VjZWExYjFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtOTQyLDE1ICs5NDIs
MTUgQEAgdm9pZCBTY3JvbGxWaWV3OjpmcmFtZVJlY3RzQ2hhbmdlZCgpCiAgICAgaWYgKHBsYXRm
b3JtV2lkZ2V0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhhc2hTZXQ8UmVmUHRyPFdpZGdl
dD4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsKLSAgICBmb3IgKEhh
c2hTZXQ8UmVmUHRyPFdpZGdldD4gPjo6Y29uc3RfaXRlcmF0b3IgY3VycmVudCA9IG1fY2hpbGRy
ZW4uYmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKKyAgICBIYXNoU2V0PFJlZlB0
cjxXaWRnZXQ+Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsKKyAgICBm
b3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+Ojpjb25zdF9pdGVyYXRvciBjdXJyZW50ID0gbV9j
aGlsZHJlbi5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50KQogICAgICAgICAoKmN1
cnJlbnQpLT5mcmFtZVJlY3RzQ2hhbmdlZCgpOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OmNsaXBS
ZWN0Q2hhbmdlZCgpCiB7Ci0gICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0PiA+Ojpjb25zdF9pdGVy
YXRvciBlbmQgPSBtX2NoaWxkcmVuLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxSZWZQdHI8V2lk
Z2V0PiA+Ojpjb25zdF9pdGVyYXRvciBjdXJyZW50ID0gbV9jaGlsZHJlbi5iZWdpbigpOyBjdXJy
ZW50ICE9IGVuZDsgKytjdXJyZW50KQorICAgIEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBtX2NoaWxkcmVuLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxSZWZQ
dHI8V2lkZ2V0Pj46OmNvbnN0X2l0ZXJhdG9yIGN1cnJlbnQgPSBtX2NoaWxkcmVuLmJlZ2luKCk7
IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCiAgICAgICAgICgqY3VycmVudCktPmNsaXBSZWN0
Q2hhbmdlZCgpOwogfQogCkBAIC0xMzA2LDggKzEzMDYsOCBAQCB2b2lkIFNjcm9sbFZpZXc6OnNl
dFBhcmVudFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIGlmICghaXNTZWxmVmlzaWJsZSgpKQog
ICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPjo6
aXRlcmF0b3IgZW5kID0gbV9jaGlsZHJlbi5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVmUHRy
PFdpZGdldD4gPjo6aXRlcmF0b3IgaXQgPSBtX2NoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKKyAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRlcmF0b3IgZW5kID0gbV9jaGls
ZHJlbi5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+OjppdGVyYXRvciBp
dCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAoKml0KS0+
c2V0UGFyZW50VmlzaWJsZSh2aXNpYmxlKTsKIH0KIApAQCAtMTMxNiw4ICsxMzE2LDggQEAgdm9p
ZCBTY3JvbGxWaWV3OjpzaG93KCkKICAgICBpZiAoIWlzU2VsZlZpc2libGUoKSkgewogICAgICAg
ICBzZXRTZWxmVmlzaWJsZSh0cnVlKTsKICAgICAgICAgaWYgKGlzUGFyZW50VmlzaWJsZSgpKSB7
Ci0gICAgICAgICAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID46Oml0ZXJhdG9yIGVuZCA9IG1f
Y2hpbGRyZW4uZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4g
Pjo6aXRlcmF0b3IgaXQgPSBtX2NoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAg
ICAgICAgICAgIEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+OjppdGVyYXRvciBlbmQgPSBtX2NoaWxk
cmVuLmVuZCgpOworICAgICAgICAgICAgZm9yIChIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+Pjo6aXRl
cmF0b3IgaXQgPSBtX2NoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAg
ICAgICAgICAoKml0KS0+c2V0UGFyZW50VmlzaWJsZSh0cnVlKTsKICAgICAgICAgfQogICAgIH0K
QEAgLTEzMjksOCArMTMyOSw4IEBAIHZvaWQgU2Nyb2xsVmlldzo6aGlkZSgpCiB7CiAgICAgaWYg
KGlzU2VsZlZpc2libGUoKSkgewogICAgICAgICBpZiAoaXNQYXJlbnRWaXNpYmxlKCkpIHsKLSAg
ICAgICAgICAgIEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPjo6aXRlcmF0b3IgZW5kID0gbV9jaGls
ZHJlbi5lbmQoKTsKLSAgICAgICAgICAgIGZvciAoSGFzaFNldDxSZWZQdHI8V2lkZ2V0PiA+Ojpp
dGVyYXRvciBpdCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAg
ICAgICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj46Oml0ZXJhdG9yIGVuZCA9IG1fY2hpbGRyZW4u
ZW5kKCk7CisgICAgICAgICAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4+OjppdGVyYXRv
ciBpdCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAgICAg
ICAgICgqaXQpLT5zZXRQYXJlbnRWaXNpYmxlKGZhbHNlKTsKICAgICAgICAgfQogICAgICAgICBz
ZXRTZWxmVmlzaWJsZShmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKaW5k
ZXggZjRjNTEzYjE2OTE5Y2Y5ZGYyOTE4MDUzNjAwMjJhMjFkYjVhMjMwOS4uNWFjMzczZTlmNzIx
MWFiNGU4OTU2OWU5NDgzNjFiNDg2MTM3ZTQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuaApAQCAtMzQ4LDcgKzM0OCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fcHJvaGli
aXRzU2Nyb2xsaW5nOwogCi0gICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0PiA+IG1fY2hpbGRyZW47
CisgICAgSGFzaFNldDxSZWZQdHI8V2lkZ2V0Pj4gbV9jaGlsZHJlbjsKIAogICAgIC8vIFRoaXMg
Ym9vbCBpcyB1bnVzZWQgb24gTWFjIE9TIGJlY2F1c2Ugd2UgZGlyZWN0bHkgYXNrIHRoZSBwbGF0
Zm9ybSB3aWRnZXQKICAgICAvLyB3aGV0aGVyIGl0IGlzIHNhZmUgdG8gYmxpdCBvbiBzY3JvbGwu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDc5ZGFlMWIzYzQwYzZl
ZWU4Y2U2N2E5NTg3MTI5ZDE3ZWI4Njk3ZDQuLjNjM2RkYTZkNDFjNTkyMDE4MjZkZDkyNmMyNzgw
ZDM1MDE5YjAxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0x
ODEsNyArMTgxLDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFZlY3RvcjxjaGFyPiBtX2J1ZmZl
cjsKICAgICBtdXRhYmxlIE93blB0cjxQdXJnZWFibGVCdWZmZXI+IG1fcHVyZ2VhYmxlQnVmZmVy
OwogI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKLSAgICBtdXRhYmxlIFZl
Y3RvcjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPiA+IG1fZGF0YUFycmF5OworICAgIG11dGFibGUgVmVj
dG9yPFJldGFpblB0cjxDRkRhdGFSZWY+PiBtX2RhdGFBcnJheTsKICAgICB1bnNpZ25lZCBjb3B5
U29tZURhdGFGcm9tRGF0YUFycmF5KGNvbnN0IGNoYXIqJiBzb21lRGF0YSwgdW5zaWduZWQgcG9z
aXRpb24pIGNvbnN0OwogICAgIGNvbnN0IGNoYXIgKnNpbmdsZURhdGFBcnJheUJ1ZmZlcigpIGNv
bnN0OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1cHBsZW1l
bnRhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5oCmluZGV4
IDM1MmQ3ZWFkZmRhYzMwNTBiZjI4YTI5YjQ3NmUyMzQwNjIzZTE2MGEuLjI3N2FhZWY4MGVmNmNj
N2JhM2JlMmE5ODljMmY1ZmYzZGVkMmM3NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1N1cHBsZW1lbnRhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3Vw
cGxlbWVudGFibGUuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzUmVmQ291bnRlZFdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAK
LSAgICBzdGF0aWMgdm9pZCBwcm92aWRlVG8oU3VwcGxlbWVudGFibGU8VD4qIGhvc3QsIGNvbnN0
IGNoYXIqIGtleSwgUGFzc093blB0cjxTdXBwbGVtZW50PFQ+ID4gc3VwcGxlbWVudCkKKyAgICBz
dGF0aWMgdm9pZCBwcm92aWRlVG8oU3VwcGxlbWVudGFibGU8VD4qIGhvc3QsIGNvbnN0IGNoYXIq
IGtleSwgUGFzc093blB0cjxTdXBwbGVtZW50PFQ+PiBzdXBwbGVtZW50KQogICAgIHsKICAgICAg
ICAgaG9zdC0+cHJvdmlkZVN1cHBsZW1lbnQoa2V5LCBzdXBwbGVtZW50KTsKICAgICB9CkBAIC05
Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBTdXBwbGVt
ZW50YWJsZSB7CiBwdWJsaWM6Ci0gICAgdm9pZCBwcm92aWRlU3VwcGxlbWVudChjb25zdCBjaGFy
KiBrZXksIFBhc3NPd25QdHI8U3VwcGxlbWVudDxUPiA+IHN1cHBsZW1lbnQpCisgICAgdm9pZCBw
cm92aWRlU3VwcGxlbWVudChjb25zdCBjaGFyKiBrZXksIFBhc3NPd25QdHI8U3VwcGxlbWVudDxU
Pj4gc3VwcGxlbWVudCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3RocmVhZElkID09IGN1cnJl
bnRUaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVCghbV9zdXBwbGVtZW50cy5nZXQoa2V5KSk7CkBA
IC0xMjIsNyArMTIyLDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdHlw
ZWRlZiBIYXNoTWFwPGNvbnN0IGNoYXIqLCBPd25QdHI8U3VwcGxlbWVudDxUPiA+LCBQdHJIYXNo
PGNvbnN0IGNoYXIqPiA+IFN1cHBsZW1lbnRNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0
IGNoYXIqLCBPd25QdHI8U3VwcGxlbWVudDxUPj4sIFB0ckhhc2g8Y29uc3QgY2hhcio+PiBTdXBw
bGVtZW50TWFwOwogICAgIFN1cHBsZW1lbnRNYXAgbV9zdXBwbGVtZW50czsKICNpZiAhQVNTRVJU
X0RJU0FCTEVECiAgICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VSTC5jcHAKaW5kZXggZWRjNzgzNmU2NjMxY2RjOWMyYmJjYTI1MzQ5YWZlYjYxZWNhYjVmOS4u
YTRlNDExMTI5ZDVmNDdhNGRjMjEwYWU4MTY4OTY1NTAxY2E2NDNhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkwuY3BwCkBAIC0xNDk5LDcgKzE0OTksNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRFbmNvZGVk
SG9zdG5hbWUoVUNoYXJCdWZmZXImIGJ1ZmZlciwgY29uc3QgVUNoYXIqIHN0ciwgdW5zaWduZQog
I2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIGZpbmRIb3N0bmFtZXNJbk1haWxUb1VSTChjb25zdCBV
Q2hhciogc3RyLCBpbnQgc3RyTGVuLCBWZWN0b3I8cGFpcjxpbnQsIGludD4gPiYgbmFtZVJhbmdl
cykKK3N0YXRpYyB2b2lkIGZpbmRIb3N0bmFtZXNJbk1haWxUb1VSTChjb25zdCBVQ2hhciogc3Ry
LCBpbnQgc3RyTGVuLCBWZWN0b3I8cGFpcjxpbnQsIGludD4+JiBuYW1lUmFuZ2VzKQogewogICAg
IC8vIEluIGEgbWFpbHRvOiBVUkwsIGhvc3QgbmFtZXMgY29tZSBhZnRlciBhICdAJyBjaGFyYWN0
ZXIgYW5kIGVuZCB3aXRoIGEgJz4nIG9yICcsJyBvciAnPycgb3IgZW5kIG9mIHN0cmluZyBjaGFy
YWN0ZXIuCiAgICAgLy8gU2tpcCBxdW90ZWQgc3RyaW5ncyBzbyB0aGF0IGNoYXJhY3RlcnMgaW4g
dGhlbSBkb24ndCBjb25mdXNlIHVzLgpAQCAtMTYxNSw3ICsxNjE1LDcgQEAgc3RhdGljIHZvaWQg
ZW5jb2RlSG9zdG5hbWVzKGNvbnN0IFN0cmluZyYgc3RyLCBVQ2hhckJ1ZmZlciYgb3V0cHV0KQog
ICAgIG91dHB1dC5jbGVhcigpOwogCiAgICAgaWYgKHByb3RvY29sSXMoc3RyLCAibWFpbHRvIikp
IHsKLSAgICAgICAgVmVjdG9yPHBhaXI8aW50LCBpbnQ+ID4gaG9zdG5hbWVSYW5nZXM7CisgICAg
ICAgIFZlY3RvcjxwYWlyPGludCwgaW50Pj4gaG9zdG5hbWVSYW5nZXM7CiAgICAgICAgIGZpbmRI
b3N0bmFtZXNJbk1haWxUb1VSTChzdHIuY2hhcmFjdGVycygpLCBzdHIubGVuZ3RoKCksIGhvc3Ru
YW1lUmFuZ2VzKTsKICAgICAgICAgaW50IG4gPSBob3N0bmFtZVJhbmdlcy5zaXplKCk7CiAgICAg
ICAgIGludCBwID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0F1ZGlvQnVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5oCmlu
ZGV4IDAxYTk5NmNkYzNmNjQ4YjI0MDJjYTA2NjRhYzAzMzAyYjg3YjQ1ZWIuLjFlMWMwNGY4YWZh
YWIxZDJlOTMyZGJmNDUyNmYyNGQyYmQ1NTMxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9CdXMuaApAQCAtMTU4LDcgKzE1OCw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IHNwZWFrZXJzU3VtRnJvbTVfMV9Ub01vbm8oY29uc3QgQXVkaW9CdXMmKTsKIAogICAgIHNpemVf
dCBtX2xlbmd0aDsKLSAgICBWZWN0b3I8T3duUHRyPEF1ZGlvQ2hhbm5lbD4gPiBtX2NoYW5uZWxz
OworICAgIFZlY3RvcjxPd25QdHI8QXVkaW9DaGFubmVsPj4gbV9jaGFubmVsczsKICAgICBpbnQg
bV9sYXlvdXQ7CiAgICAgZmxvYXQgbV9idXNHYWluOwogICAgIE93blB0cjxBdWRpb0Zsb2F0QXJy
YXk+IG1fZGV6aXBwZXJHYWluVmFsdWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmgKaW5kZXggMTVkZjk4NjJlYWMx
NDZiZmU1ZWUyNGMwNDFmOGFkZmFjNDhlMjExNy4uZjZjYWQ4ZTVjOTRlZGExODZiMmUwMDZjZWQ2
NDg0ZDQ1ZThhOTc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IE9WRVJSSURFOwogCiBwcm90
ZWN0ZWQ6Ci0gICAgVmVjdG9yPE93blB0cjxBdWRpb0RTUEtlcm5lbD4gPiBtX2tlcm5lbHM7Cisg
ICAgVmVjdG9yPE93blB0cjxBdWRpb0RTUEtlcm5lbD4+IG1fa2VybmVsczsKICAgICBib29sIG1f
aGFzSnVzdFJlc2V0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vQXVkaW9SZXNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvUmVzYW1wbGVyLmgKaW5kZXggYjliZDk4NTk3MGY3Yzc2YWNjZGZhYmRkMjU0NDVhZTNkOGZk
MTNiOS4uMGYzMzJhZTA2NjY1NGY1ZjRhZWY3MjJlZGQxNGExMDk0NWYxOWU0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9SZXNhbXBsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Jlc2FtcGxlci5oCkBAIC01OSw3ICs1
OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBkb3VibGUgbV9yYXRlOwotICAgIFZlY3Rv
cjxPd25QdHI8QXVkaW9SZXNhbXBsZXJLZXJuZWw+ID4gbV9rZXJuZWxzOworICAgIFZlY3RvcjxP
d25QdHI8QXVkaW9SZXNhbXBsZXJLZXJuZWw+PiBtX2tlcm5lbHM7CiAgICAgUmVmUHRyPEF1ZGlv
QnVzPiBtX3NvdXJjZUJ1czsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRHluYW1pY3NDb21wcmVzc29yLmgKaW5kZXggNTljMTdlMGFkYmU4MTJjNjFhOTI0NTVl
YmJkY2I4NzAwZWUxOGMwYi4uODNjMmRkM2U2M2UyNzFhZmI5ZWI0OTU5ODQzM2Y4MWFlYzhjY2Mw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRHluYW1pY3NDb21w
cmVzc29yLmgKQEAgLTk5LDggKzk5LDggQEAgcHJvdGVjdGVkOgogICAgIH0gWmVyb1BvbGVGaWx0
ZXJQYWNrNDsKIAogICAgIC8vIFBlci1jaGFubmVsIGVtcGhhc2lzIGZpbHRlcnMuCi0gICAgVmVj
dG9yPE93blB0cjxaZXJvUG9sZUZpbHRlclBhY2s0PiA+IG1fcHJlRmlsdGVyUGFja3M7Ci0gICAg
VmVjdG9yPE93blB0cjxaZXJvUG9sZUZpbHRlclBhY2s0PiA+IG1fcG9zdEZpbHRlclBhY2tzOwor
ICAgIFZlY3RvcjxPd25QdHI8WmVyb1BvbGVGaWx0ZXJQYWNrND4+IG1fcHJlRmlsdGVyUGFja3M7
CisgICAgVmVjdG9yPE93blB0cjxaZXJvUG9sZUZpbHRlclBhY2s0Pj4gbV9wb3N0RmlsdGVyUGFj
a3M7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgZmxvYXQqW10+IG1fc291cmNlQ2hhbm5l
bHM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPGZsb2F0KltdPiBtX2Rlc3RpbmF0aW9uQ2hhbm5lbHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JLZXJuZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29t
cHJlc3Nvcktlcm5lbC5oCmluZGV4IDY0NTQyNTEwNGJkNDMyMmQ5MjBkOWRhYmVlMGMwMjE2YWE3
ZDgyOTIuLmZmYTU2MzA4ODQ2MjgyNTkxZjkyYmJjNGNhNzI5ZmZlODQzMjg2NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvcktlcm5l
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nv
cktlcm5lbC5oCkBAIC04OCw3ICs4OCw3IEBAIHByb3RlY3RlZDoKICAgICB1bnNpZ25lZCBtX2xh
c3RQcmVEZWxheUZyYW1lczsKICAgICB2b2lkIHNldFByZURlbGF5VGltZShmbG9hdCk7CiAKLSAg
ICBWZWN0b3I8T3duUHRyPEF1ZGlvRmxvYXRBcnJheT4gPiBtX3ByZURlbGF5QnVmZmVyczsKKyAg
ICBWZWN0b3I8T3duUHRyPEF1ZGlvRmxvYXRBcnJheT4+IG1fcHJlRGVsYXlCdWZmZXJzOwogICAg
IGludCBtX3ByZURlbGF5UmVhZEluZGV4OwogICAgIGludCBtX3ByZURlbGF5V3JpdGVJbmRleDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaAppbmRleCA5
YWUwNTc0MTgwNzNmMzg4ODk5NzRlYjJjODgyYTUyYjI0NmU2ODUzLi45MTVhZDZkNjQxMzdhMDc3
MWJkYjIyOTVkMzVkNThmNDM1ODM1ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGRGF0YWJhc2UuaApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIC8vIFJl
dHVybnMgdGhlIGluZGV4IGZvciB0aGUgY29ycmVjdCBIUlRGRWxldmF0aW9uIGdpdmVuIHRoZSBl
bGV2YXRpb24gYW5nbGUuCiAgICAgc3RhdGljIHVuc2lnbmVkIGluZGV4RnJvbUVsZXZhdGlvbkFu
Z2xlKGRvdWJsZSk7CiAKLSAgICBWZWN0b3I8T3duUHRyPEhSVEZFbGV2YXRpb24+ID4gbV9lbGV2
YXRpb25zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg
VmVjdG9yPE93blB0cjxIUlRGRWxldmF0aW9uPj4gbV9lbGV2YXRpb25zOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5l
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5oCmluZGV4IGY4
NmNiZTQ2NTZjOTVhYmM1NjIyMzYwMDIwMmIzNGE5YTM5MWFjMWMuLmUxMzVlYTJjMDY4NzA5OTFh
OWRhNDRhY2MwM2U0NzYxNDk5ZDc1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZLZXJuZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGS2VybmVsLmgKQEAgLTkxLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3Nh
bXBsZVJhdGU7CiB9OwogCi10eXBlZGVmIFZlY3RvcjxSZWZQdHI8SFJURktlcm5lbD4gPiBIUlRG
S2VybmVsTGlzdDsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxIUlRGS2VybmVsPj4gSFJURktlcm5l
bExpc3Q7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTXVsdGlDaGFubmVsUmVzYW1wbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaAppbmRleCAxNTA3Mjlk
YWIxZWQ0ZDk5MmQzNDUwMzE5OWZlM2QyOWY4ZjNjODJjLi4wNDQ3OGEyOTI1MTJkZTBlNTcwM2Q0
MGYyNDdmZDFmMmQxN2ZjNGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9NdWx0aUNoYW5uZWxSZXNhbXBsZXIuaApAQCAtNDksNyArNDksNyBAQCBwcml2YXRl
OgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTExOAog
ICAgIAogICAgIC8vIEVhY2ggY2hhbm5lbCB3aWxsIGJlIHJlc2FtcGxlZCB1c2luZyBhIGhpZ2gt
cXVhbGl0eSBTaW5jUmVzYW1wbGVyLgotICAgIFZlY3RvcjxPd25QdHI8U2luY1Jlc2FtcGxlcj4g
PiBtX2tlcm5lbHM7CisgICAgVmVjdG9yPE93blB0cjxTaW5jUmVzYW1wbGVyPj4gbV9rZXJuZWxz
OwogICAgIAogICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZDaGFubmVsczsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCmluZGV4IGY2Y2RmYTY0OGVlZWM2YTMwZjVmNzE2NmE2
MGY5OTEzMTk5NGQ1MWIuLmU1YjMxMDZkMTIxYWMxODE4NjdiNGI0NzZkNDk5Nzc1ZjFkMDcwY2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYi5oCkBAIC01Niw3ICs1Niw3IEBA
IHByaXZhdGU6CiAKICAgICBzaXplX3QgbV9pbXB1bHNlUmVzcG9uc2VMZW5ndGg7CiAKLSAgICBW
ZWN0b3I8T3duUHRyPFJldmVyYkNvbnZvbHZlcj4gPiBtX2NvbnZvbHZlcnM7CisgICAgVmVjdG9y
PE93blB0cjxSZXZlcmJDb252b2x2ZXI+PiBtX2NvbnZvbHZlcnM7CiAKICAgICAvLyBGb3IgIlRy
dWUiIHN0ZXJlbyBwcm9jZXNzaW5nCiAgICAgUmVmUHRyPEF1ZGlvQnVzPiBtX3RlbXBCdWZmZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCmlu
ZGV4IGRlMzUyMmM5Nzg1YzlmMjMzZjU3NzA2OGNiOTUwZDQ3MWI0ZDI0ZWUuLjgzZmJmZTE5MTE4
ZDAyMWNjOTQ2OWZkODM4NjA1Mzc5OTAwZmIwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCkBAIC02NSw4ICs2NSw4IEBAIHB1YmxpYzoK
IAogICAgIHNpemVfdCBsYXRlbmN5RnJhbWVzKCkgY29uc3Q7CiBwcml2YXRlOgotICAgIFZlY3Rv
cjxPd25QdHI8UmV2ZXJiQ29udm9sdmVyU3RhZ2U+ID4gbV9zdGFnZXM7Ci0gICAgVmVjdG9yPE93
blB0cjxSZXZlcmJDb252b2x2ZXJTdGFnZT4gPiBtX2JhY2tncm91bmRTdGFnZXM7CisgICAgVmVj
dG9yPE93blB0cjxSZXZlcmJDb252b2x2ZXJTdGFnZT4+IG1fc3RhZ2VzOworICAgIFZlY3RvcjxP
d25QdHI8UmV2ZXJiQ29udm9sdmVyU3RhZ2U+PiBtX2JhY2tncm91bmRTdGFnZXM7CiAgICAgc2l6
ZV90IG1faW1wdWxzZVJlc3BvbnNlTGVuZ3RoOwogCiAgICAgUmV2ZXJiQWNjdW11bGF0aW9uQnVm
ZmVyIG1fYWNjdW11bGF0aW9uQnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
U2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IDc1YTkzNzkwMDYwZmZkMTcwYzVhOGMxYzY1OWY3ZDA5
YTA4MWJjYzEuLjhlN2M3YTM3NTVhMDgxZmQ5NDdhNDY1ZmIzMmE1YjI0Y2MxYjE5MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTEyNiw4
ICsxMjYsOCBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weUJ1ZmZlckFuZENsZWFyKGNoYXIqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBieXRlc1RvQ29weSkgYwogICAgICAgICByZXR1cm47CiAKICAg
ICBDRkluZGV4IGJ5dGVzTGVmdCA9IGJ5dGVzVG9Db3B5OwotICAgIFZlY3RvcjxSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2RhdGFBcnJheS5lbmQoKTsKLSAg
ICBmb3IgKFZlY3RvcjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IG1fZGF0YUFycmF5LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIFZlY3RvcjxSZXRh
aW5QdHI8Q0ZEYXRhUmVmPj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fZGF0YUFycmF5LmVuZCgp
OworICAgIGZvciAoVmVjdG9yPFJldGFpblB0cjxDRkRhdGFSZWY+Pjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX2RhdGFBcnJheS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgQ0ZJ
bmRleCBkYXRhTGVuID0gQ0ZEYXRhR2V0TGVuZ3RoKGl0LT5nZXQoKSk7CiAgICAgICAgIEFTU0VS
VChieXRlc0xlZnQgPj0gZGF0YUxlbik7CiAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwgQ0ZE
YXRhR2V0Qnl0ZVB0cihpdC0+Z2V0KCkpLCBkYXRhTGVuKTsKQEAgLTEzOSw5ICsxMzksOSBAQCB2
b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weUJ1ZmZlckFuZENsZWFyKGNoYXIqIGRlc3RpbmF0aW9uLCB1
bnNpZ25lZCBieXRlc1RvQ29weSkgYwogCiB1bnNpZ25lZCBTaGFyZWRCdWZmZXI6OmNvcHlTb21l
RGF0YUZyb21EYXRhQXJyYXkoY29uc3QgY2hhciomIHNvbWVEYXRhLCB1bnNpZ25lZCBwb3NpdGlv
bikgY29uc3QKIHsKLSAgICBWZWN0b3I8UmV0YWluUHRyPENGRGF0YVJlZj4gPjo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbV9kYXRhQXJyYXkuZW5kKCk7CisgICAgVmVjdG9yPFJldGFpblB0cjxDRkRh
dGFSZWY+Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9kYXRhQXJyYXkuZW5kKCk7CiAgICAgdW5z
aWduZWQgdG90YWxPZmZzZXQgPSAwOwotICAgIGZvciAoVmVjdG9yPFJldGFpblB0cjxDRkRhdGFS
ZWY+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhQXJyYXkuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7CisgICAgZm9yIChWZWN0b3I8UmV0YWluUHRyPENGRGF0YVJlZj4+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IG1fZGF0YUFycmF5LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAg
ICAgICB1bnNpZ25lZCBkYXRhTGVuID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENGRGF0YUdldExl
bmd0aChpdC0+Z2V0KCkpKTsKICAgICAgICAgQVNTRVJUKHRvdGFsT2Zmc2V0IDw9IHBvc2l0aW9u
KTsKICAgICAgICAgdW5zaWduZWQgbG9jYWxPZmZzZXQgPSBwb3NpdGlvbiAtIHRvdGFsT2Zmc2V0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2x5
Z29uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9seWdvbi5j
cHAKaW5kZXggY2RjNTk4NDg5OGRlMGYxMWE4NDNhZDFhODMwMWI5MWY5M2QyYzZhYi4uYzM5ZTI4
NWFiNjFlOGEyMGUwNjQ2N2RkY2E4ODg0YTNmMDBhYzhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2x5Z29uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvbHlnb24uY3BwCkBAIC03OSw3ICs3OSw3IEBA
IHN0YXRpYyB1bnNpZ25lZCBmaW5kTmV4dEVkZ2VWZXJ0ZXhJbmRleChjb25zdCBGbG9hdFBvbHln
b24mIHBvbHlnb24sIHVuc2lnbmVkIHZlCiAgICAgcmV0dXJuIHZlcnRleEluZGV4MjsKIH0KIAot
RmxvYXRQb2x5Z29uOjpGbG9hdFBvbHlnb24oUGFzc093blB0cjxWZWN0b3I8RmxvYXRQb2ludD4g
PiB2ZXJ0aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpCitGbG9hdFBvbHlnb246OkZsb2F0UG9seWdv
bihQYXNzT3duUHRyPFZlY3RvcjxGbG9hdFBvaW50Pj4gdmVydGljZXMsIFdpbmRSdWxlIGZpbGxS
dWxlKQogICAgIDogbV92ZXJ0aWNlcyh2ZXJ0aWNlcykKICAgICAsIG1fZmlsbFJ1bGUoZmlsbFJ1
bGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFBvbHlnb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9seWdv
bi5oCmluZGV4IDA3MWQ0MzMxZjhlODE4NTU0MzVkYTQyOTA1ZmRiODNhNTdmNjg0ZjguLjY3ZTA5
MTZhMGU3Yjk0OGUzMGQ4YWRmYjc5NThhMWVjNGVhNGNlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9seWdvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9seWdvbi5oCkBAIC00OSw3ICs0OSw3IEBAIHRl
bXBsYXRlIDxjbGFzcz4gc3RydWN0IFZhbHVlVG9TdHJpbmc7CiAKIGNsYXNzIEZsb2F0UG9seWdv
biB7CiBwdWJsaWM6Ci0gICAgRmxvYXRQb2x5Z29uKFBhc3NPd25QdHI8VmVjdG9yPEZsb2F0UG9p
bnQ+ID4gdmVydGljZXMsIFdpbmRSdWxlIGZpbGxSdWxlKTsKKyAgICBGbG9hdFBvbHlnb24oUGFz
c093blB0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzLCBXaW5kUnVsZSBmaWxsUnVsZSk7
CiAKICAgICBjb25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXhBdCh1bnNpZ25lZCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gKCptX3ZlcnRpY2VzKVtpbmRleF07IH0KICAgICB1bnNpZ25lZCBudW1iZXJPZlZl
cnRpY2VzKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNlcy0+c2l6ZSgpOyB9CkBAIC03MSw3ICs3
MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjb250YWluc05vblplcm8oY29uc3QgRmxvYXRQb2lu
dCYpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNFdmVuT2RkKGNvbnN0IEZsb2F0UG9pbnQmKSBj
b25zdDsKIAotICAgIE93blB0cjxWZWN0b3I8RmxvYXRQb2ludD4gPiBtX3ZlcnRpY2VzOworICAg
IE93blB0cjxWZWN0b3I8RmxvYXRQb2ludD4+IG1fdmVydGljZXM7CiAgICAgV2luZFJ1bGUgbV9m
aWxsUnVsZTsKICAgICBGbG9hdFJlY3QgbV9ib3VuZGluZ0JveDsKICAgICBib29sIG1fZW1wdHk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRl
eCBhMzM1MzVmOTJlYWJmY2JmMTBlOWY5OGM4ODExZjFmMzM2MjJkZWQ3Li5jMWRjYzJhYTk1OTY1
ZWE4MjA0OTk2MWU2ZjhjODQ2MDdiMDEzYmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTIyNiw3ICsyMjYsNyBAQCBGb250UGxhdGZv
cm1EYXRhKiBGb250Q2FjaGU6OmdldENhY2hlZEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERl
c2NyaXB0aW9uJiBmbwogfQogCiAjaWYgRU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQotdHlwZWRl
ZiBIYXNoTWFwPEZvbnRDYWNoZTo6Rm9udEZpbGVLZXksIFJlZlB0cjxPcGVuVHlwZVZlcnRpY2Fs
RGF0YT4sIFdURjo6SW50SGFzaDxGb250Q2FjaGU6OkZvbnRGaWxlS2V5PiwgV1RGOjpVbnNpZ25l
ZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxGb250Q2FjaGU6OkZvbnRGaWxlS2V5PiA+IEZvbnRWZXJ0
aWNhbERhdGFDYWNoZTsKK3R5cGVkZWYgSGFzaE1hcDxGb250Q2FjaGU6OkZvbnRGaWxlS2V5LCBS
ZWZQdHI8T3BlblR5cGVWZXJ0aWNhbERhdGE+LCBXVEY6OkludEhhc2g8Rm9udENhY2hlOjpGb250
RmlsZUtleT4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8Rm9udENhY2hlOjpG
b250RmlsZUtleT4+IEZvbnRWZXJ0aWNhbERhdGFDYWNoZTsKIAogRm9udFZlcnRpY2FsRGF0YUNh
Y2hlJiBmb250VmVydGljYWxEYXRhQ2FjaGVJbnN0YW5jZSgpCiB7CkBAIC0yODcsNyArMjg3LDcg
QEAgc3RhdGljIEZvbnREYXRhQ2FjaGUqIGdGb250RGF0YUNhY2hlID0gMDsKIAogY29uc3QgaW50
IGNNYXhJbmFjdGl2ZUZvbnREYXRhID0gMjI1OwogY29uc3QgaW50IGNUYXJnZXRJbmFjdGl2ZUZv
bnREYXRhID0gMjAwOwotc3RhdGljIExpc3RIYXNoU2V0PFJlZlB0cjxTaW1wbGVGb250RGF0YT4g
PiogZ0luYWN0aXZlRm9udERhdGEgPSAwOworc3RhdGljIExpc3RIYXNoU2V0PFJlZlB0cjxTaW1w
bGVGb250RGF0YT4+KiBnSW5hY3RpdmVGb250RGF0YSA9IDA7CiAKIFBhc3NSZWZQdHI8U2ltcGxl
Rm9udERhdGE+IEZvbnRDYWNoZTo6Z2V0Q2FjaGVkRm9udERhdGEoY29uc3QgRm9udERlc2NyaXB0
aW9uJiBmb250RGVzY3JpcHRpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBib29sIGNo
ZWNraW5nQWx0ZXJuYXRlTmFtZSwgU2hvdWxkUmV0YWluIHNob3VsZFJldGFpbikKIHsKQEAgLTMx
MCw3ICszMTAsNyBAQCBQYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBGb250Q2FjaGU6OmdldENh
Y2hlZEZvbnREYXRhKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEqCiAKICAgICBpZiAoIWdGb250RGF0
YUNhY2hlKSB7CiAgICAgICAgIGdGb250RGF0YUNhY2hlID0gbmV3IEZvbnREYXRhQ2FjaGU7Ci0g
ICAgICAgIGdJbmFjdGl2ZUZvbnREYXRhID0gbmV3IExpc3RIYXNoU2V0PFJlZlB0cjxTaW1wbGVG
b250RGF0YT4gPjsKKyAgICAgICAgZ0luYWN0aXZlRm9udERhdGEgPSBuZXcgTGlzdEhhc2hTZXQ8
UmVmUHRyPFNpbXBsZUZvbnREYXRhPj47CiAgICAgfQogCiAgICAgRm9udERhdGFDYWNoZTo6aXRl
cmF0b3IgcmVzdWx0ID0gZ0ZvbnREYXRhQ2FjaGUtPmZpbmQoKnBsYXRmb3JtRGF0YSk7CkBAIC0z
NzgsOCArMzc4LDggQEAgdm9pZCBGb250Q2FjaGU6OnB1cmdlSW5hY3RpdmVGb250RGF0YShpbnQg
Y291bnQpCiAgICAgaXNQdXJnaW5nID0gdHJ1ZTsKIAogICAgIFZlY3RvcjxSZWZQdHI8U2ltcGxl
Rm9udERhdGE+LCAyMD4gZm9udERhdGFUb0RlbGV0ZTsKLSAgICBMaXN0SGFzaFNldDxSZWZQdHI8
U2ltcGxlRm9udERhdGE+ID46Oml0ZXJhdG9yIGVuZCA9IGdJbmFjdGl2ZUZvbnREYXRhLT5lbmQo
KTsKLSAgICBMaXN0SGFzaFNldDxSZWZQdHI8U2ltcGxlRm9udERhdGE+ID46Oml0ZXJhdG9yIGl0
ID0gZ0luYWN0aXZlRm9udERhdGEtPmJlZ2luKCk7CisgICAgTGlzdEhhc2hTZXQ8UmVmUHRyPFNp
bXBsZUZvbnREYXRhPj46Oml0ZXJhdG9yIGVuZCA9IGdJbmFjdGl2ZUZvbnREYXRhLT5lbmQoKTsK
KyAgICBMaXN0SGFzaFNldDxSZWZQdHI8U2ltcGxlRm9udERhdGE+Pjo6aXRlcmF0b3IgaXQgPSBn
SW5hY3RpdmVGb250RGF0YS0+YmVnaW4oKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50
ICYmIGl0ICE9IGVuZDsgKytpdCwgKytpKSB7CiAgICAgICAgIFJlZlB0cjxTaW1wbGVGb250RGF0
YT4mIGZvbnREYXRhID0gKml0LmdldCgpOwogICAgICAgICBnRm9udERhdGFDYWNoZS0+cmVtb3Zl
KGZvbnREYXRhLT5wbGF0Zm9ybURhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oCmluZGV4IDM0NTU2YTc5Yjc3MzlhZTcyMjI3
NThiODY3OTQ0NzhjNDg1NDZhZDAuLjIxNzc4OGJhZTAzOTA4ODAwNzg5MDEwNTNhOGZjZWU3NTA4
NmYxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBo
TWV0cmljc01hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBo
TWV0cmljc01hcC5oCkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fZmls
bGVkUHJpbWFyeVBhZ2U7CiAgICAgR2x5cGhNZXRyaWNzUGFnZSBtX3ByaW1hcnlQYWdlOyAvLyBX
ZSBvcHRpbWl6ZSBmb3IgdGhlIHBhZ2UgdGhhdCBjb250YWlucyBnbHlwaCBpbmRpY2VzIDAtMjU1
LgotICAgIE93blB0cjxIYXNoTWFwPGludCwgT3duUHRyPEdseXBoTWV0cmljc1BhZ2U+ID4gPiBt
X3BhZ2VzOworICAgIE93blB0cjxIYXNoTWFwPGludCwgT3duUHRyPEdseXBoTWV0cmljc1BhZ2U+
Pj4gbV9wYWdlczsKIH07CiAKIHRlbXBsYXRlPD4gaW5saW5lIGZsb2F0IEdseXBoTWV0cmljc01h
cDxmbG9hdD46OnVua25vd25NZXRyaWNzKCkKQEAgLTEwOCw3ICsxMDgsNyBAQCB0ZW1wbGF0ZTxj
bGFzcyBUPiB0eXBlbmFtZSBHbHlwaE1ldHJpY3NNYXA8VD46OkdseXBoTWV0cmljc1BhZ2UqIEds
eXBoTWV0cmljc01hcAogICAgICAgICAgICAgaWYgKChwYWdlID0gbV9wYWdlcy0+Z2V0KHBhZ2VO
dW1iZXIpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcGFnZTsKICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBtX3BhZ2VzID0gYWRvcHRQdHIobmV3IEhhc2hNYXA8aW50LCBPd25QdHI8R2x5
cGhNZXRyaWNzUGFnZT4gPik7CisgICAgICAgICAgICBtX3BhZ2VzID0gYWRvcHRQdHIobmV3IEhh
c2hNYXA8aW50LCBPd25QdHI8R2x5cGhNZXRyaWNzUGFnZT4+KTsKICAgICAgICAgcGFnZSA9IG5l
dyBHbHlwaE1ldHJpY3NQYWdlOwogICAgICAgICBtX3BhZ2VzLT5zZXQocGFnZU51bWJlciwgYWRv
cHRQdHIocGFnZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5oCmluZGV4IDViNTBhMDFmYzA4ZmUxMGExYjRkNjM4
M2QzYmNiZDg4NjdkNDU5MzkuLmI2ODc3MjkyMmUxMjhkZmU0NGY4MmM0ZjFiMjY0NTFjYzc4NTcx
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFn
ZVRyZWVOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQ
YWdlVHJlZU5vZGUuaApAQCAtMTE4LDcgKzExOCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEhh
c2hNYXA8aW50LCBHbHlwaFBhZ2VUcmVlTm9kZSo+KiByb290czsKICAgICBzdGF0aWMgR2x5cGhQ
YWdlVHJlZU5vZGUqIHBhZ2VaZXJvUm9vdDsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBG
b250RGF0YSosIE93blB0cjxHbHlwaFBhZ2VUcmVlTm9kZT4gPiBHbHlwaFBhZ2VUcmVlTm9kZU1h
cDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgRm9udERhdGEqLCBPd25QdHI8R2x5cGhQYWdl
VHJlZU5vZGU+PiBHbHlwaFBhZ2VUcmVlTm9kZU1hcDsKIAogICAgIEdseXBoUGFnZVRyZWVOb2Rl
TWFwIG1fY2hpbGRyZW47CiAgICAgR2x5cGhQYWdlVHJlZU5vZGUqIG1fcGFyZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgK
aW5kZXggMzY1NTdmYTE3ZmE3NGNjYjc5NTA2YWZiMmE2YmM4ODhlYjYwN2FhMy4uY2Q4YzU0ZDRi
MmFkODk5MDI0YThhMTE4NjQ5MDk3NjlkNDlkMDc1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC0xMDIzLDcgKzEw
MjMsNyBAQCBwcml2YXRlOgogCiAgICAgQXR0cmlidXRlcyBtX2F0dHJzOwogICAgIFJlbmRlclN0
eWxlIG1fcmVuZGVyU3R5bGU7Ci0gICAgVmVjdG9yPFZlY3RvcjxmbG9hdD4gPiBtX3ZlcnRleEFy
cmF5OworICAgIFZlY3RvcjxWZWN0b3I8ZmxvYXQ+PiBtX3ZlcnRleEFycmF5OwogCiAgICAgR0Mz
RHVpbnQgbV90ZXh0dXJlOwogI2lmICFQTEFURk9STShCTEFDS0JFUlJZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAppbmRleCA1YjIy
Njk4MTZkYjU0OWM4ODMyMGQ4MmVhMzZkYzRmZjdjMmI5YjA3Li42YjNhNGY4NGE4ZTFkOWU2ZGM0
ZjQzNDZjNThmMmQ1ZWZiYmM2ODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcApAQCAtNDYsNyArNDYsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgSGFzaE1hcDxjb25zdCBHcmFwaGljc0xheWVyKiwgVmVj
dG9yPEZsb2F0UmVjdD4gPiBSZXBhaW50TWFwOwordHlwZWRlZiBIYXNoTWFwPGNvbnN0IEdyYXBo
aWNzTGF5ZXIqLCBWZWN0b3I8RmxvYXRSZWN0Pj4gUmVwYWludE1hcDsKIHN0YXRpYyBSZXBhaW50
TWFwJiByZXBhaW50UmVjdE1hcCgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZXBhaW50
TWFwLCBtYXAsICgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuaAppbmRleCA4NmNiYzE2ODYxZGE3Y2Q2ODZmNzQwOTExNmQ4MzI2MWY3NTQw
YzU4Li4zMTI2MTM3MmMxMGRlZmZmYjAyMzM4ZDJjZTgzYmI0MjljNTM4NTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCkBAIC0yMTQs
NyArMjE0LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0KFBhc3NPd25QdHI8Y29uc3QgQW5p
bWF0aW9uVmFsdWU+KTsKICAgICAKIHByb3RlY3RlZDoKLSAgICBWZWN0b3I8T3duUHRyPGNvbnN0
IEFuaW1hdGlvblZhbHVlPiA+IG1fdmFsdWVzOworICAgIFZlY3RvcjxPd25QdHI8Y29uc3QgQW5p
bWF0aW9uVmFsdWU+PiBtX3ZhbHVlczsKICAgICBBbmltYXRlZFByb3BlcnR5SUQgbV9wcm9wZXJ0
eTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bs
YXRmb3JtVGV4dFRyYWNrTWVudS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1UZXh0VHJhY2tNZW51LmgKaW5kZXggMGM1MjhlYTM0MGJhNjEwMGIyOGM3YTdiMGEz
ZWY1NTFhM2UwNjQxNi4uNzU5MWFiY2MzYmY1MjhmYjI2ZmU0MWI4MDJmZDE3NTMwZWRkM2YxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UZXh0
VHJhY2tNZW51LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1UZXh0VHJhY2tNZW51LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
flBsYXRmb3JtVGV4dFRyYWNrTWVudUNsaWVudCgpIHsgfQogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBzZXRTZWxlY3RlZFRleHRUcmFjayhQYXNzUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPikgPSAw
OwotICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gPiBwbGF0Zm9y
bVRleHRUcmFja3MoKSA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4
dFRyYWNrPj4gcGxhdGZvcm1UZXh0VHJhY2tzKCkgPSAwOwogfTsKIAogY2xhc3MgUGxhdGZvcm1U
ZXh0VHJhY2tNZW51SW50ZXJmYWNlICA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXRmb3JtVGV4dFRy
YWNrTWVudUludGVyZmFjZT4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2ltcGxlRm9udERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NpbXBsZUZvbnREYXRhLmgKaW5kZXggZWRiODY3MGQzNDc4MDRlN2FjYzM2ZTRkYzM2OGZl
NWYxYmE5YWRjZC4uNTM5ODVlYzczMjRkZTNhNzJmNjY0ZDhlYWIxZDljNDMwM2M2ZmJhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2ltcGxlRm9udERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaW1wbGVGb250RGF0YS5o
CkBAIC0yNDksNyArMjQ5LDcgQEAgcHJpdmF0ZToKICAgICBGb250UGxhdGZvcm1EYXRhIG1fcGxh
dGZvcm1EYXRhOwogICAgIE93blB0cjxBZGRpdGlvbmFsRm9udERhdGE+IG1fZm9udERhdGE7CiAK
LSAgICBtdXRhYmxlIE93blB0cjxHbHlwaE1ldHJpY3NNYXA8RmxvYXRSZWN0PiA+IG1fZ2x5cGhU
b0JvdW5kc01hcDsKKyAgICBtdXRhYmxlIE93blB0cjxHbHlwaE1ldHJpY3NNYXA8RmxvYXRSZWN0
Pj4gbV9nbHlwaFRvQm91bmRzTWFwOwogICAgIG11dGFibGUgR2x5cGhNZXRyaWNzTWFwPGZsb2F0
PiBtX2dseXBoVG9XaWR0aE1hcDsKIAogICAgIGJvb2wgbV90cmVhdEFzRml4ZWRQaXRjaDsKQEAg
LTMwMSwxMSArMzAxLDExIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBtdXRhYmxlIEhhc2hNYXA8dW5zaWduZWQsIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
ID4gbV9DRlN0cmluZ0F0dHJpYnV0ZXM7CisgICAgbXV0YWJsZSBIYXNoTWFwPHVuc2lnbmVkLCBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gbV9DRlN0cmluZ0F0dHJpYnV0ZXM7CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKEhBUkZCVVpaKQotICAgIG11dGFibGUgT3duUHRy
PEhhc2hNYXA8U3RyaW5nLCBib29sPiA+IG1fY29tYmluaW5nQ2hhcmFjdGVyU2VxdWVuY2VTdXBw
b3J0OworICAgIG11dGFibGUgT3duUHRyPEhhc2hNYXA8U3RyaW5nLCBib29sPj4gbV9jb21iaW5p
bmdDaGFyYWN0ZXJTZXF1ZW5jZVN1cHBvcnQ7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaAppbmRleCAx
Zjc0NjRhZDI5NzIyOTI2ODBjZWE4NGY4NjNmMGE3YTM1ZDllMzVjLi44ODRkMmEyZTA4ODQ1ZDI3
MTYzYjlhMmQxNjg0NTc2Zjk2MDBiYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9XaWR0aENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhDYWNoZS5oCkBAIC0xOTMsNyArMTkzLDcgQEAgcHJpdmF0ZToKICAgICB9
CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8U21hbGxTdHJpbmdLZXksIGZsb2F0LCBTbWFsbFN0cmlu
Z0tleUhhc2gsIFNtYWxsU3RyaW5nS2V5SGFzaFRyYWl0cz4gTWFwOwotICAgIHR5cGVkZWYgSGFz
aE1hcDx1aW50MzJfdCwgZmxvYXQsIERlZmF1bHRIYXNoPHVpbnQzMl90Pjo6SGFzaCwgV1RGOjpV
bnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50MzJfdD4gPiBTaW5nbGVDaGFyTWFwOwor
ICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50MzJfdCwgZmxvYXQsIERlZmF1bHRIYXNoPHVpbnQzMl90
Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50MzJfdD4+IFNp
bmdsZUNoYXJNYXA7CiAgICAgc3RhdGljIGNvbnN0IGludCBzX21pbkludGVydmFsID0gLTM7IC8v
IEEgY2FjaGUgaGl0IHBheXMgZm9yIGFib3V0IDMgY2FjaGUgbWlzc2VzLgogICAgIHN0YXRpYyBj
b25zdCBpbnQgc19tYXhJbnRlcnZhbCA9IDIwOyAvLyBTYW1wbGluZyBhdCB0aGlzIGludGVydmFs
IGhhcyBhbG1vc3Qgbm8gb3ZlcmhlYWQuCiAgICAgc3RhdGljIGNvbnN0IGludCBzX21heFNpemUg
PSA1MDAwMDA7IC8vIEp1c3QgZW5vdWdoIHRvIGd1YXJkIGFnYWluc3QgcGF0aG9sb2dpY2FsIGdy
b3d0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCmlu
ZGV4IDRjZGE4NGM2ZGFmMzdkODU3ZjRhMDIwZGNhODdmMjAwY2M4NjJkNGUuLjAzNzI3NjZmMWRm
NzE3M2U3MDg2MjEwYTZkYzM5NTc4ZGFiNTZkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaApAQCAtNzIsNyArNzIsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgZG91YmxlIG1fY3VycmVudEN1ZVN0YXJ0VGltZTsKICAgICBkb3VibGUgbV9jdXJyZW50Q3Vl
RW5kVGltZTsKIAotICAgIFZlY3RvcjxSZWZQdHI8R2VuZXJpY0N1ZURhdGE+ID4gbV9jdWVzOwor
ICAgIFZlY3RvcjxSZWZQdHI8R2VuZXJpY0N1ZURhdGE+PiBtX2N1ZXM7CiAgICAgQVZGSW5iYW5k
VHJhY2tQYXJlbnQqIG1fb3duZXI7CiAKICAgICBlbnVtIFBlbmRpbmdDdWVTdGF0dXMgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNw
cAppbmRleCA4NzQyNDg3ODg5ZTMwMTMzMjVmNjRiMDcxMTU1MzM5MGM2N2I2ZDliLi5mYWNhMDk2
ZjM4YzUzZmY2NTgwNTFjZjBjMGI4MDA3MWExNWYxOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtOTE5LDcgKzkx
OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpjbGVhclRleHRUcmFj
a3MoKQogICAgIG1fdGV4dFRyYWNrcy5jbGVhcigpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbjo6cHJvY2Vzc05ld0FuZFJlbW92ZWRUZXh0VHJhY2tzKGNvbnN0IFZl
Y3RvcjxSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4gPiYgcmVtb3ZlZFRleHRUcmFj
a3MpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cHJvY2Vzc05ld0FuZFJl
bW92ZWRUZXh0VHJhY2tzKGNvbnN0IFZlY3RvcjxSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRj4+JiByZW1vdmVkVGV4dFRyYWNrcykKIHsKICAgICBpZiAocmVtb3ZlZFRleHRUcmFja3Mu
c2l6ZSgpKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3Mu
c2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb24uaAppbmRleCA3ZjUwM2NjMmMwNjkzZTAxOTUxMjg1ZjU5ODkzODdiMDdm
NTViNDVmLi4xNDc1NDAxZjEyYmNlZTY2M2Q2MTQ0NmY3NmNmMDBhZTRhZjRmOThmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCkBA
IC0yNzQsOSArMjc0LDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgc2l6ZV90IGV4dHJhTWVt
b3J5Q29zdCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHRyYWNrTW9kZUNo
YW5nZWQoKSBPVkVSUklERTsKLSAgICB2b2lkIHByb2Nlc3NOZXdBbmRSZW1vdmVkVGV4dFRyYWNr
cyhjb25zdCBWZWN0b3I8UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY+ID4mKTsKKyAg
ICB2b2lkIHByb2Nlc3NOZXdBbmRSZW1vdmVkVGV4dFRyYWNrcyhjb25zdCBWZWN0b3I8UmVmUHRy
PEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY+PiYpOwogICAgIHZvaWQgY2xlYXJUZXh0VHJhY2tz
KCk7Ci0gICAgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGPiA+IG1fdGV4
dFRyYWNrczsKKyAgICBWZWN0b3I8UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY+PiBt
X3RleHRUcmFja3M7CiAgICAgCiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyKiBtX3BsYXllcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCAzYzRjYjMwOTVmMWQ2ZDk0YWM1NDhkMzAyZDVlN2Rj
MDQwZGZlZmFkLi5mNGM3YjI3NDE2Nzc3ODk0NzYwMGNhNTkzMjQ0MDhlOGRhNmI1M2Y1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0yMTIsMTAgKzIxMiwxMCBAQCBwcml2YXRlOgogICAgIFJl
dGFpblB0cjxWVFBpeGVsVHJhbnNmZXJTZXNzaW9uUmVmPiBtX3BpeGVsVHJhbnNmZXJTZXNzaW9u
OwogCiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjsKLSAgICBIYXNo
TWFwPFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4sIFJlZlB0cjxXZWJD
b3JlQVZGUmVzb3VyY2VMb2FkZXI+ID4gbV9yZXNvdXJjZUxvYWRlck1hcDsKKyAgICBIYXNoTWFw
PFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4sIFJlZlB0cjxXZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXI+PiBtX3Jlc291cmNlTG9hZGVyTWFwOwogICAgIFJldGFpblB0cjxX
ZWJDb3JlQVZGTG9hZGVyRGVsZWdhdGU+IG1fbG9hZGVyRGVsZWdhdGU7Ci0gICAgSGFzaE1hcDxT
dHJpbmcsIFJldGFpblB0cjxBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdD4gPiBtX2tleVVS
SVRvUmVxdWVzdE1hcDsKLSAgICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPEFWQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0PiA+IG1fc2Vzc2lvbklEVG9SZXF1ZXN0TWFwOworICAgIEhhc2hN
YXA8U3RyaW5nLCBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+PiBtX2tl
eVVSSVRvUmVxdWVzdE1hcDsKKyAgICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPEFWQXNzZXRS
ZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Pj4gbV9zZXNzaW9uSURUb1JlcXVlc3RNYXA7CiAjZW5kaWYK
IAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCkgJiYgSEFWRShB
VkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CmluZGV4IDdlMjdmYWM3M2NmZGE0N2I3ZjExNjM1MjljYmQ5MTM5NzE3ZmIwZDAuLjNjZjA5ODVm
MmNlMWVkODFhMzFmYTE3MDVmOTc4NzJhYzc4YzdiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQpAQCAtMTQ0Niw3ICsxNDQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpwcm9jZXNzTGVnYWN5Q2xvc2VkQ2FwdGlvbnNUcmFja3MoKQogICAgIFttX2F2UGxh
eWVySXRlbS5nZXQoKSBzZWxlY3RNZWRpYU9wdGlvbjpuaWwgaW5NZWRpYVNlbGVjdGlvbkdyb3Vw
OnNhZmVNZWRpYVNlbGVjdGlvbkdyb3VwRm9yTGVnaWJsZU1lZGlhKCldOwogI2VuZGlmCiAKLSAg
ICBWZWN0b3I8UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY+ID4gcmVtb3ZlZFRleHRU
cmFja3MgPSBtX3RleHRUcmFja3M7CisgICAgVmVjdG9yPFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGPj4gcmVtb3ZlZFRleHRUcmFja3MgPSBtX3RleHRUcmFja3M7CiAgICAgTlNBcnJh
eSAqdHJhY2tzID0gW21fYXZQbGF5ZXJJdGVtLmdldCgpIHRyYWNrc107CiAgICAgZm9yIChBVlBs
YXllckl0ZW1UcmFjayAqcGxheWVySXRlbVRyYWNrIGluIHRyYWNrcykgewogCkBAIC0xNTAyLDcg
KzE1MDIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnByb2Nl
c3NNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKQogICAgIGlmICghbV90ZXh0VHJhY2tzLnNpemUoKSkK
ICAgICAgICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIHNlbGVjdE1lZGlhT3B0aW9uOm5pbCBpbk1l
ZGlhU2VsZWN0aW9uR3JvdXA6c2FmZU1lZGlhU2VsZWN0aW9uR3JvdXBGb3JMZWdpYmxlTWVkaWEo
KV07CiAKLSAgICBWZWN0b3I8UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY+ID4gcmVt
b3ZlZFRleHRUcmFja3MgPSBtX3RleHRUcmFja3M7CisgICAgVmVjdG9yPFJlZlB0cjxJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGPj4gcmVtb3ZlZFRleHRUcmFja3MgPSBtX3RleHRUcmFja3M7CiAg
ICAgTlNBcnJheSAqbGVnaWJsZU9wdGlvbnMgPSBbQVZNZWRpYVNlbGVjdGlvbkdyb3VwIHBsYXlh
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zRnJvbUFycmF5OltsZWdpYmxlR3JvdXAgb3B0aW9uc11d
OwogICAgIGZvciAoQVZNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGUgKm9wdGlvbiBpbiBsZWdpYmxl
T3B0aW9ucykgewogICAgICAgICBib29sIG5ld1RyYWNrID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmlu
ZGV4IDhiYWRlZjE4NWE5MjQ5YmZkNTllNmM1N2MwYmVkYzE0ZGMwOTNhMDUuLmI2ODliMzBmY2Mx
MWJmNTg5NDQ4N2Y2ZDZmNzc4OTU4NGRhY2FjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjcyOCw3
ICsyNzI4LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnNldEZpbHRlckFuaW1hdGlvbkVuZHBv
aW50cyhjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWUKIGJvb2wgR3JhcGhpY3NMYXllckNB
OjpzZXRGaWx0ZXJBbmltYXRpb25LZXlmcmFtZXMoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZh
bHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIFBsYXRmb3JtQ0FBbmltYXRpb24q
IGtleWZyYW1lQW5pbSwgaW50IGZ1bmN0aW9uSW5kZXgsIGludCBpbnRlcm5hbEZpbHRlclByb3Bl
cnR5SW5kZXgsIEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSBmaWx0ZXJPcCkKIHsKICAg
ICBWZWN0b3I8ZmxvYXQ+IGtleVRpbWVzOwotICAgIFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0
aW9uPiA+IHZhbHVlczsKKyAgICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4+IHZhbHVl
czsKICAgICBWZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24qPiB0aW1pbmdGdW5jdGlvbnM7CiAg
ICAgUmVmUHRyPERlZmF1bHRGaWx0ZXJPcGVyYXRpb24+IGRlZmF1bHRPcGVyYXRpb247CiAKQEAg
LTMxMjUsNyArMzEyNSw3IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBHcmFwaGljc0xh
eWVyQ0E6OmZldGNoQ2xvbmVMYXllcnMoR3JhcGhpY3NMYXllciogcmVwCiAgICAgfQogCiAgICAg
Y29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYgY2hpbGRMYXllcnMgPSBjaGlsZHJlbigpOwot
ICAgIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiA+IGNsb25hbFN1YmxheWVyczsKKyAg
ICBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4+IGNsb25hbFN1YmxheWVyczsKIAogICAg
IFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IHJlcGxpY2FMYXllcjsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5k
ZXggZjQwYjI1NTM3YjM0YjdjYjdjOTU5OGFlM2EyMDhlNzY5YmY0NTI1NC4uNzNhZmExMGYwMzdk
YWViNzY2ZWFlZDIzMTBlZmY2MjAyY2RhMjVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTUwMywxMiArNTAz
LDEyIEBAIHByaXZhdGU6CiAgICAgQW5pbWF0aW9uc1RvUHJvY2Vzc01hcCBtX2FuaW1hdGlvbnNU
b1Byb2Nlc3M7CiAKICAgICAvLyBNYXAgb2YgYW5pbWF0aW9uIG5hbWVzIHRvIHRoZWlyIGFzc29j
aWF0ZWQgbGlzdHMgb2YgcHJvcGVydHkgYW5pbWF0aW9ucywgc28gd2UgY2FuIHJlbW92ZS9wYXVz
ZSB0aGVtLgotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxMYXllclByb3BlcnR5
QW5pbWF0aW9uPiA+IEFuaW1hdGlvbnNNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
VmVjdG9yPExheWVyUHJvcGVydHlBbmltYXRpb24+PiBBbmltYXRpb25zTWFwOwogICAgIEFuaW1h
dGlvbnNNYXAgbV9ydW5uaW5nQW5pbWF0aW9uczsKIAogICAgIC8vIE1hcCBmcm9tIGFuaW1hdGlv
biBrZXkgdG8gVHJhbnNmb3JtYXRpb25NYXRyaWNlcyBmb3IgYW5pbWF0aW9ucyBvZiB0cmFuc2Zv
cm0uIFRoZSB2ZWN0b3IgY29udGFpbnMgYSBtYXRyaXggZm9yCiAgICAgLy8gdGhlIHR3byBlbmRw
b2ludHMsIG9yIGVhY2gga2V5ZnJhbWUuIFVzZWQgZm9yIGNvbnRlbnRzU2NhbGUgYWRqdXN0bWVu
dC4KLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8VHJhbnNmb3JtYXRpb25NYXRy
aXg+ID4gVHJhbnNmb3Jtc01hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8
VHJhbnNmb3JtYXRpb25NYXRyaXg+PiBUcmFuc2Zvcm1zTWFwOwogICAgIFRyYW5zZm9ybXNNYXAg
bV9hbmltYXRpb25UcmFuc2Zvcm1zOwogCiAgICAgVmVjdG9yPEZsb2F0UmVjdD4gbV9kaXJ0eVJl
Y3RzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxh
dGZvcm1DQUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUFuaW1hdGlvbi5oCmluZGV4IGMxNTdlNDhkOWM5NjdjYjJkNGJhMmU0MWI3NWE2
NjUwNDAwMzcwOWMuLmY1MzgwZWU3N2Q1NTI4OWMzNDk3ZWI1N2Y4MjY0YjdhZTRjMWYzODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FB
bmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0
Zm9ybUNBQW5pbWF0aW9uLmgKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRWYWx1ZXMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQzRD4mKTsKICAgICB2b2lkIHNldFZhbHVl
cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29sb3I+Jik7CiAjaWYgRU5BQkxFKENTU19GSUxURVJT
KQotICAgIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9u
PiA+JiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCk7CisgICAgdm9pZCBzZXRWYWx1
ZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+PiYsIGludCBpbnRlcm5hbEZp
bHRlclByb3BlcnR5SW5kZXgpOwogI2VuZGlmCiAgICAgdm9pZCBjb3B5VmFsdWVzRnJvbShjb25z
dCBQbGF0Zm9ybUNBQW5pbWF0aW9uKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKaW5kZXggMmMxMzc3NDAwMTM5MTdm
ODcyYTczMDYxNjkwNGY3YmJhYTI5NjNiMS4uMjhhZmQwYjk5MDAwZjE0YTdmZmU3MWQ5NDhkZDc0
YzBjNzUxMTY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiAKLXR5cGVkZWYgVmVjdG9yPFJlZlB0cjxQ
bGF0Zm9ybUNBTGF5ZXI+ID4gUGxhdGZvcm1DQUxheWVyTGlzdDsKK3R5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+PiBQbGF0Zm9ybUNBTGF5ZXJMaXN0OwogCiBjbGFzcyBQbGF0
Zm9ybUNBTGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF0Zm9ybUNBTGF5ZXI+IHsKICNpZiBQ
TEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9tYWMvTGF5ZXJQb29sLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9tYWMvTGF5ZXJQb29sLmgKaW5kZXggMmU3ZjM3OGE5YjQyMzE1ZWU0Y2EzY2VkNWVlNjViMzU0
NGI0NmM0MS4uNjA5MTlhYTFhMTFiZjJhMDc5MGU5M2QyZmIxMTA3MDFjMjJhODM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL0xheWVyUG9vbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9MYXllclBvb2wu
aApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIExheWVyUG9vbCgpOwog
Ci0gICAgdHlwZWRlZiBEZXF1ZTxSZXRhaW5QdHI8V2ViVGlsZUxheWVyPiA+IExheWVyTGlzdDsK
KyAgICB0eXBlZGVmIERlcXVlPFJldGFpblB0cjxXZWJUaWxlTGF5ZXI+PiBMYXllckxpc3Q7CiAK
ICAgICB1bnNpZ25lZCBkZWNheWVkQ2FwYWNpdHkoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25N
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1D
QUFuaW1hdGlvbk1hYy5tbQppbmRleCBkM2YwZjFjNWRlMzVlNDkyZTliM2EwOTljMzQxNTU0NzI2
YzI2ZmIwLi4xODIwZGRiZTUxZTk1YzM4M2VmZjQwYjM4ZWMwYjlhN2Y0ZjJjMWQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFu
aW1hdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9t
YWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbQpAQCAtNTI0LDcgKzUyNCw3IEBAIHZvaWQgUGxh
dGZvcm1DQUFuaW1hdGlvbjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb2xvcj4m
IHZhbHVlKQogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQotdm9pZCBQbGF0Zm9ybUNBQW5p
bWF0aW9uOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+ID4m
IHZhbHVlcywgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkKK3ZvaWQgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9u
Pj4mIHZhbHVlcywgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkKIHsKICAgICBpZiAo
YW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvVGlsZUNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJvbGxl
ci5oCmluZGV4IDE0Mjk2ODgxOWMxNDZiNGE1YWRmMDY2ZDc4NzY1NzhlM2Q0YmIzNzMuLjdlNWQw
NGQzZDFmODA4NTI5MGZhODBhNjFiOWZkZGQ5MDU2YjA3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9UaWxlQ29udHJvbGxlci5oCkBA
IC00OCw3ICs0OCw3IEBAIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEludFBvaW50OwogY2xhc3Mg
SW50UmVjdDsKIAotdHlwZWRlZiBWZWN0b3I8UmV0YWluUHRyPFdlYlRpbGVMYXllcj4gPiBXZWJU
aWxlTGF5ZXJMaXN0OwordHlwZWRlZiBWZWN0b3I8UmV0YWluUHRyPFdlYlRpbGVMYXllcj4+IFdl
YlRpbGVMYXllckxpc3Q7CiAKIGNsYXNzIFRpbGVDb250cm9sbGVyIDogcHVibGljIFRpbGVkQmFj
a2luZyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGlsZUNvbnRyb2xsZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdp
dGhUaW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VD
YWNoZVdpdGhUaW1lci5oCmluZGV4IDBmNWNlZGE3MjUxMTA2OWRlMTQyMzRhZjA1OTFjMTNjZjg2
MWQ4MDguLjU2M2RlZThlZjgwN2E2M2IyZGQ2MDMyNTBjNWVlMmYyNDMyMDg2ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRo
VGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIH07CiAKICAg
ICBzdHJ1Y3QgU3ViaW1hZ2VDYWNoZUVudHJ5VHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRyYWl0
czxTdWJpbWFnZUNhY2hlRW50cnk+IHsKLSAgICAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPFJldGFp
blB0cjxDR0ltYWdlUmVmPiA+IEltYWdlVHJhaXRzOworICAgICAgICB0eXBlZGVmIEhhc2hUcmFp
dHM8UmV0YWluUHRyPENHSW1hZ2VSZWY+PiBJbWFnZVRyYWl0czsKIAogICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQYXJhbWV0ZXJM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclBhcmFtZXRlckxpc3QuaAppbmRleCAyZTEyOGU3NjkyMDk2YjU4ZjgxMmVjMDIzNjM4ZDdk
MzM4MzhhOWE0Li5hOWJjMDFmOGI2N2U0NzNhMjQxZThkMmQ2N2ZmM2JlZDcxNGUxZWIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclBhcmFtZXRlckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QuaApAQCAtMzcsNyArMzcsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI7Ci10eXBl
ZGVmIFZlY3RvcjxSZWZQdHI8Q3VzdG9tRmlsdGVyUGFyYW1ldGVyPiA+IEN1c3RvbUZpbHRlclBh
cmFtZXRlckxpc3RCYXNlOwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPEN1c3RvbUZpbHRlclBhcmFt
ZXRlcj4+IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3RCYXNlOwogCiBjbGFzcyBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXJMaXN0IDogcHVibGljIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3RCYXNlIHsK
IHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oCmluZGV4IGNkYzdhNTAxMmVmNzhjZmFjMWI1ZWRiZDE1YTE4
Yzk4Mjg1Y2I4YjYuLmIxYzExODYyNzBmMDliMjU0NzZlZjAwZGI0ODJjYzFjMzNlNGFiYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBGaWx0ZXJFZmZlY3Q7CiBjbGFz
cyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIFRleHRTdHJlYW07CiAKLXR5cGVkZWYgVmVjdG9yPFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+ID4gRmlsdGVyRWZmZWN0VmVjdG9yOwordHlwZWRlZiBWZWN0b3I8UmVm
UHRyPEZpbHRlckVmZmVjdD4+IEZpbHRlckVmZmVjdFZlY3RvcjsKIAogZW51bSBGaWx0ZXJFZmZl
Y3RUeXBlIHsKICAgICBGaWx0ZXJFZmZlY3RUeXBlVW5rbm93biwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25z
LmgKaW5kZXggMDlhMmQ4ZmYxNWNmZWNlM2Y3ZjYwZWI1NDRmN2EzMjJmNmQyMGEzYS4uNzdiZjNl
ODMyNjZkMzc2NWE2NjY5OTk2ODNjYmY3MzczZjQ0ZTUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25z
LmgKQEAgLTU2LDggKzU2LDggQEAgcHVibGljOgogICAgICAgICBtX29wZXJhdGlvbnMuY2xlYXIo
KTsKICAgICB9CiAgICAgCi0gICAgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+ID4mIG9w
ZXJhdGlvbnMoKSB7IHJldHVybiBtX29wZXJhdGlvbnM7IH0KLSAgICBjb25zdCBWZWN0b3I8UmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4gPiYgb3BlcmF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3Bl
cmF0aW9uczsgfQorICAgIFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPj4mIG9wZXJhdGlv
bnMoKSB7IHJldHVybiBtX29wZXJhdGlvbnM7IH0KKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEZp
bHRlck9wZXJhdGlvbj4+JiBvcGVyYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25z
OyB9CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9vcGVyYXRpb25zLnNp
emUoKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25zLnNp
emUoKTsgfQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBib29sIGhhc1Jl
ZmVyZW5jZUZpbHRlcigpIGNvbnN0OwogcHJpdmF0ZToKLSAgICBWZWN0b3I8UmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gPiBtX29wZXJhdGlvbnM7CisgICAgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+PiBtX29wZXJhdGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXgg
MzcwNmZlZTBiMDYyNzhiMzk0YmI1MzQxZDZiNTllODZmZGY0NTQ0ZS4uOWViNmQ5YWNjMDQ1ODg2
NTM1ZTIxMjJiNWM5NGQ0MjM1ZGY2MTkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtNDYsNyArNDYsNyBAQCB1c2luZyBuYW1l
c3BhY2Ugc3RkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAKLVRleHR1cmU6OlRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFBhc3NPd25QdHI8VmVjdG9yPHVuc2lnbmVkIGludD4g
PiB0aWxlVGV4dHVyZUlkcywgRm9ybWF0IGZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBp
bnQgbWF4VGV4dHVyZVNpemUpCitUZXh0dXJlOjpUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBQYXNzT3duUHRyPFZlY3Rvcjx1bnNpZ25lZCBpbnQ+PiB0aWxlVGV4dHVyZUlkcywg
Rm9ybWF0IGZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbWF4VGV4dHVyZVNpemUp
CiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fZm9ybWF0KGZvcm1hdCkKICAgICAs
IG1fdGlsZXMoSW50U2l6ZShtYXhUZXh0dXJlU2l6ZSwgbWF4VGV4dHVyZVNpemUpLCBJbnRTaXpl
KHdpZHRoLCBoZWlnaHQpLCB0cnVlKQpAQCAtOTcsNyArOTcsNyBAQCBQYXNzUmVmUHRyPFRleHR1
cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgRm9ybWF0IGZv
cm1hdCwgaQogICAgICAgICBudW1UaWxlcyA9IDA7CiAgICAgfQogCi0gICAgT3duUHRyPFZlY3Rv
cjx1bnNpZ25lZCBpbnQ+ID4gdGV4dHVyZUlkcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8dW5zaWdu
ZWQgaW50PihudW1UaWxlcykpOworICAgIE93blB0cjxWZWN0b3I8dW5zaWduZWQgaW50Pj4gdGV4
dHVyZUlkcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8dW5zaWduZWQgaW50PihudW1UaWxlcykpOwog
ICAgIHRleHR1cmVJZHMtPmZpbGwoMCwgbnVtVGlsZXMpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1UaWxlczsgaSsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1RleHR1cmUuaAppbmRleCAxZjM1MDA2NWI0MDZjMGMxNzlmZmRkOTdlZTVjMDA4MDZh
MThlOTVjLi42ZTkzYjkxYzIzYjJjNmFlZDBjMjQ2ZjJjN2VhMTBlY2QwMzJkZTc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmgKQEAgLTU0LDEx
ICs1NCwxMSBAQCBwdWJsaWM6CiAgICAgRm9ybWF0IGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9ybWF0OyB9CiAgICAgY29uc3QgVGlsaW5nRGF0YSYgdGlsZXMoKSBjb25zdCB7IHJldHVybiBt
X3RpbGVzOyB9CiBwcml2YXRlOgotICAgIFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBQYXNz
T3duUHRyPFZlY3Rvcjx1bnNpZ25lZCBpbnQ+ID4gdGlsZVRleHR1cmVJZHMsIEZvcm1hdCBmb3Jt
YXQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IG1heFRleHR1cmVTaXplKTsKKyAgICBUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgUGFzc093blB0cjxWZWN0b3I8dW5zaWduZWQgaW50Pj4g
dGlsZVRleHR1cmVJZHMsIEZvcm1hdCBmb3JtYXQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50
IG1heFRleHR1cmVTaXplKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAg
IEZvcm1hdCBtX2Zvcm1hdDsKICAgICBUaWxpbmdEYXRhIG1fdGlsZXM7Ci0gICAgT3duUHRyPFZl
Y3Rvcjx1bnNpZ25lZCBpbnQ+ID4gbV90aWxlVGV4dHVyZUlkczsKKyAgICBPd25QdHI8VmVjdG9y
PHVuc2lnbmVkIGludD4+IG1fdGlsZVRleHR1cmVJZHM7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyLmgKaW5kZXggM2M2OWY4OWMzNGFlOGI4MWNiODA0ZWE3MmM5NTgxNThmNzE0MTA5NC4u
YzU3OWRkMDhjZWY2MjZkYjhhMDM5YzI3ZjQ4ZmM0MWQ1YjQ2ZTNjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENv
bnRyb2xsZXIuaApAQCAtMTQ5LDcgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFVDaGFy
LCAyNTY+IG1fc21hbGxDYXBzQnVmZmVyOwogCiAgICAgLy8gUmV0YWluIGxpbmVzIHJhdGhlciB0
aGFuIHRoZWlyIHJ1bnMgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KLSAgICBWZWN0b3I8UmV0YWlu
UHRyPENUTGluZVJlZj4gPiBtX2NvcmVUZXh0TGluZXM7CisgICAgVmVjdG9yPFJldGFpblB0cjxD
VExpbmVSZWY+PiBtX2NvcmVUZXh0TGluZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxDb21wbGV4VGV4
dFJ1bj4sIDE2PiBtX2NvbXBsZXhUZXh0UnVuczsKICAgICBWZWN0b3I8Q0dTaXplLCAyNTY+IG1f
YWRqdXN0ZWRBZHZhbmNlczsKICAgICBWZWN0b3I8Q0dHbHlwaCwgMjU2PiBtX2FkanVzdGVkR2x5
cGhzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1Np
bXBsZUZvbnREYXRhQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCmluZGV4IDlhYWY4MjUxMTZjM2ViMThi
NGUyY2I2MTk4ZDU0NWNkNmE1Nzg1ODcuLjcyOWJlNmZhZTc3MGZkZWQwNzhmNDk5ODIxNWU1NDgz
Y2VmNWRhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9TaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKQEAgLTM0LDcgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQ0ZEaWN0aW9uYXJ5UmVmIFNpbXBsZUZvbnREYXRhOjpn
ZXRDRlN0cmluZ0F0dHJpYnV0ZXMoVHlwZXNldHRpbmdGZWF0dXJlcyB0eXBlc2V0dGluZ0ZlYXR1
cmVzLCBGb250T3JpZW50YXRpb24gb3JpZW50YXRpb24pIGNvbnN0CiB7CiAgICAgdW5zaWduZWQg
a2V5ID0gdHlwZXNldHRpbmdGZWF0dXJlcyArIDE7Ci0gICAgSGFzaE1hcDx1bnNpZ25lZCwgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fQ0ZTdHJp
bmdBdHRyaWJ1dGVzLmFkZChrZXksIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+KCkpOworICAg
IEhhc2hNYXA8dW5zaWduZWQsIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+Pjo6QWRkUmVzdWx0
IGFkZFJlc3VsdCA9IG1fQ0ZTdHJpbmdBdHRyaWJ1dGVzLmFkZChrZXksIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+KCkpOwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+JiBhdHRyaWJ1
dGVzRGljdGlvbmFyeSA9IGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiAgICAgaWYgKCFhZGRS
ZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXNEaWN0aW9uYXJ5Lmdl
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaAppbmRleCA1MzU0ZjgxOWJhNzRi
Y2I2Zjg4NDBjODdiOTIxZGMxYTRhNWQzMGFhLi45NjA0NWQzZjk3NjIxMjEwOTRlMmEyMzg0MWRi
NWE2Y2E0NDQ3NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaApAQCAtNjYs
OCArNjYsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fb3BlcmF0aW9ucy5jbGVhcigpOwogICAgIH0K
ICAgICAKLSAgICBWZWN0b3I8UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gPiYgb3BlcmF0aW9u
cygpIHsgcmV0dXJuIG1fb3BlcmF0aW9uczsgfQotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8VHJh
bnNmb3JtT3BlcmF0aW9uPiA+JiBvcGVyYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRp
b25zOyB9CisgICAgVmVjdG9yPFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+PiYgb3BlcmF0aW9u
cygpIHsgcmV0dXJuIG1fb3BlcmF0aW9uczsgfQorICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8VHJh
bnNmb3JtT3BlcmF0aW9uPj4mIG9wZXJhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGlv
bnM7IH0KIAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25zLnNp
emUoKTsgfQogICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogYXQoc2l6ZV90IGluZGV4KSBj
b25zdCB7IHJldHVybiBpbmRleCA8IG1fb3BlcmF0aW9ucy5zaXplKCkgPyBtX29wZXJhdGlvbnMu
YXQoaW5kZXgpLmdldCgpIDogMDsgfQpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgVHJh
bnNmb3JtT3BlcmF0aW9ucyBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBmcm9tLCBk
b3VibGUgcHJvZ3Jlc3MsIGNvbnN0IExheW91dFNpemUmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAg
ICBWZWN0b3I8UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gPiBtX29wZXJhdGlvbnM7CisgICAg
VmVjdG9yPFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+PiBtX29wZXJhdGlvbnM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0
ZWJvYXJkSU9TLm1tCmluZGV4IGVjZTA4N2I0YjBiMGY0OTIxNzM5NGY1MzIxOTkwYzc2NjUxMWE1
ODEuLjg3YjU1MTc5MWFkMWNkM2I4MTQ3NWU0ODEzZTIxNGY4YWE3MTdlOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zMDksNyArMzA5LDcg
QEAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVudFdp
dGhSVEYoRnJhbWUqIGZyYW1lLCBOU1N0cmkKICAgICBpZiAoIXdhc0RlZmVycmluZ0NhbGxiYWNr
cykKICAgICAgICAgZnJhbWUtPnBhZ2UoKS0+c2V0RGVmZXJzTG9hZGluZyh0cnVlKTsKIAotICAg
IFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+IHJlc291cmNlczsKKyAgICBWZWN0b3I8
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+IHJlc291cmNlczsKICAgICBSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZnJhZ21lbnQgPSBmcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCktPmRvY3VtZW50RnJh
Z21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhzdHJpbmcuZ2V0KCksIHJlc291cmNlcyk7CiAKICAg
ICBzaXplX3Qgc2l6ZSA9IHJlc291cmNlcy5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCmlu
ZGV4IGZiMzBiYmUzNmUzNGVkNjFmNGIzM2EwMmNiMmJmZGY3YjIxNjRlNDQuLjEyNzQ1MTljZDkz
NDFkNjA5NjM3MWVkMDhlZTQxMTZmY2VkNzgzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTWFjLm1tCkBA
IC05Nyw3ICs5Nyw3IEBACiAgICAgLy8gRmluZCBpZiB3ZSBzaG91bGQgdXNlIGEgc3BlY2lmaWMg
dm9pY2UgYmFzZWQgb24gdGhlIHZvaWNlVVJJIGluIHV0dGVyYW5jZS4KICAgICAvLyBPdGhlcndp
c2UsIGZpbmQgdGhlIHZvaWNlIHRoYXQgbWF0Y2hlcyB0aGUgbGFuZ3VhZ2UuIFRoZSBNYWMgZG9l
c24ndCBoYXZlIGEgZGVmYXVsdCB2b2ljZSBwZXIgbGFuZ3VhZ2UsIHNvIHRoZSBmaXJzdAogICAg
IC8vIG9uZSB3aWxsIGhhdmUgdG8gZG8uCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpQbGF0
Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlPiA+IHZvaWNlTGlzdCA9IG1fc3ludGhlc2l6ZXJPYmpl
Y3QtPnZvaWNlTGlzdCgpOworICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNWb2ljZT4+IHZvaWNlTGlzdCA9IG1fc3ludGhlc2l6ZXJPYmplY3QtPnZvaWNl
TGlzdCgpOwogICAgIHNpemVfdCB2b2ljZUxpc3RTaXplID0gdm9pY2VMaXN0LnNpemUoKTsKICAg
ICAKICAgICBXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlKiB1dHRlcmFuY2VW
b2ljZSA9IHV0dGVyYW5jZS0+dm9pY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKaW5kZXggYmI3
ZmQwZmIwYjdjZTkxM2FlY2JjNGRhNDFmY2I3MDA5MTNiYmU0Ni4uNDUyODRhYmVjMjYxZGFjYmEy
NzhhMjU0NTgxNGQxODQ3NWQwNzYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKQEAgLTgzLDEy
ICs4MywxMiBAQCBwcml2YXRlOgogCiAgICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50KiBt
X2NsaWVudDsKICAgICBTdHJpbmcgbV9pZDsKLSAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFt
U291cmNlPiA+IG1fYXVkaW9TdHJlYW1Tb3VyY2VzOwotICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFT
dHJlYW1Tb3VyY2U+ID4gbV92aWRlb1N0cmVhbVNvdXJjZXM7CisgICAgVmVjdG9yPFJlZlB0cjxN
ZWRpYVN0cmVhbVNvdXJjZT4+IG1fYXVkaW9TdHJlYW1Tb3VyY2VzOworICAgIFZlY3RvcjxSZWZQ
dHI8TWVkaWFTdHJlYW1Tb3VyY2U+PiBtX3ZpZGVvU3RyZWFtU291cmNlczsKICAgICBib29sIG1f
ZW5kZWQ7CiB9OwogCi10eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9y
PiA+IE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvcjsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxN
ZWRpYVN0cmVhbURlc2NyaXB0b3I+PiBNZWRpYVN0cmVhbURlc2NyaXB0b3JWZWN0b3I7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgKaW5kZXggZDY5ZTE0OTcyZGMzZWFh
MTg3OWY5NTI4YmJlN2NhMGU0NTQwNzFjNC4uMjA1NjQxOTk1OTNjY2Y4NDY0NWQwNGY2ZGEyYjcw
OTBiNzEzZmZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fcmVtb3RlOwogfTsKIAotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE1lZGlhU3Ry
ZWFtU291cmNlPiA+IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yOwordHlwZWRlZiBWZWN0b3I8UmVm
UHRyPE1lZGlhU3RyZWFtU291cmNlPj4gTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3I7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oCmluZGV4IDIzYWRiMWU0NmIwOTQyZDkyNDM1
Y2JhOWJiNTZlYTZjN2YxOGZhNDkuLjczYzRjZmNmMDU5OTAxNGQ2MWNhOGQzN2I1ZWE2OTlhNGFk
MTg3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JU
Q0NvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENDb25maWd1cmF0aW9uLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogIHByaXZhdGU6
CiAgICAgUlRDQ29uZmlndXJhdGlvbigpIHsgfQogCi0gICAgVmVjdG9yPFJlZlB0cjxSVENJY2VT
ZXJ2ZXI+ID4gbV9zZXJ2ZXJzOworICAgIFZlY3RvcjxSZWZQdHI8UlRDSWNlU2VydmVyPj4gbV9z
ZXJ2ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCBhY2Y0YjM3OTA1
Yjc5OTAwYTAzOTAzZmQ4N2I3MWEwNjRiZTQ5ZjEyLi4wYjhhMWVjMGNhZjEyNjcyZDMyZDViOTI5
MDQ0OTViODExM2FkNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JSZWdpc3RyeUltcGwuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIGJvb2wgaXNCbG9iUmVnaXN0cnlJbXBsKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
dHJ1ZTsgfQogCi0gICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxCbG9iU3RvcmFnZURhdGE+ID4g
bV9ibG9iczsKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPEJsb2JTdG9yYWdlRGF0YT4+IG1f
YmxvYnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCmluZGV4IGY5MTliYTE4NTZhZDNjZGNm
NTIxYzQ1NTk4OWU0NDdjN2VkOTExYjkuLmY0ZTY3ODc0N2FkYzI3Y2ZkMGJlODMyYjI3ZDdlNTli
NzQyZjJhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRU
UEhlYWRlck1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhl
YWRlck1hcC5oCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAg
IHR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4gPiBDcm9zc1RocmVhZEhU
VFBIZWFkZXJNYXBEYXRhOworICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+IENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE7CiAKICAgICAvLyBGSVhNRTogTm90
IGV2ZXJ5IGhlYWRlciBmaXRzIGludG8gYSBtYXAuIE5vdGFibHksIG11bHRpcGxlIFNldC1Db29r
aWUgaGVhZGVyIGZpZWxkcyBhcmUgbmVlZGVkIHRvIHNldCBtdWx0aXBsZSBjb29raWVzLgogICAg
IGNsYXNzIEhUVFBIZWFkZXJNYXAgOiBwdWJsaWMgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFN0cmlu
ZywgQ2FzZUZvbGRpbmdIYXNoPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCmluZGV4IDQwNTIyYTEzZDYzN2Fk
ZmFmZWNhZmM4OTZmZGY1YTcyMjU0YjA4ZDMuLmQwNzExZjAzMDYzYWZlNjc1M2U4MjhhNGMwMzk5
MGJkZTYxYTc3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgcGFyc2VD
YWNoZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgVmVjdG9yPHBhaXI8U3RyaW5nLCBTdHJp
bmc+ID4mIHJlc3VsdCk7CitzdGF0aWMgdm9pZCBwYXJzZUNhY2hlSGVhZGVyKGNvbnN0IFN0cmlu
ZyYgaGVhZGVyLCBWZWN0b3I8cGFpcjxTdHJpbmcsIFN0cmluZz4+JiByZXN1bHQpOwogCiBpbmxp
bmUgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmFzUmVzb3Vy
Y2VSZXNwb25zZSgpIGNvbnN0CiB7CkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6cGFyc2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVzKCkgY29uc3QKIAogICAgIFN0
cmluZyBjYWNoZUNvbnRyb2xWYWx1ZSA9IG1faHR0cEhlYWRlckZpZWxkcy5nZXQoY2FjaGVDb250
cm9sU3RyaW5nKTsKICAgICBpZiAoIWNhY2hlQ29udHJvbFZhbHVlLmlzRW1wdHkoKSkgewotICAg
ICAgICBWZWN0b3I8cGFpcjxTdHJpbmcsIFN0cmluZz4gPiBkaXJlY3RpdmVzOworICAgICAgICBW
ZWN0b3I8cGFpcjxTdHJpbmcsIFN0cmluZz4+IGRpcmVjdGl2ZXM7CiAgICAgICAgIHBhcnNlQ2Fj
aGVIZWFkZXIoY2FjaGVDb250cm9sVmFsdWUsIGRpcmVjdGl2ZXMpOwogCiAgICAgICAgIHNpemVf
dCBkaXJlY3RpdmVzU2l6ZSA9IGRpcmVjdGl2ZXMuc2l6ZSgpOwpAQCAtNjM4LDcgKzYzOCw3IEBA
IHN0YXRpYyBpbmxpbmUgU3RyaW5nIHRyaW1Ub05leHRTZXBhcmF0b3IoY29uc3QgU3RyaW5nJiBz
dHIpCiAgICAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgc3RyLmZpbmQoaXNDYWNoZUhlYWRlclNl
cGFyYXRvcikpOwogfQogCi1zdGF0aWMgdm9pZCBwYXJzZUNhY2hlSGVhZGVyKGNvbnN0IFN0cmlu
ZyYgaGVhZGVyLCBWZWN0b3I8cGFpcjxTdHJpbmcsIFN0cmluZz4gPiYgcmVzdWx0KQorc3RhdGlj
IHZvaWQgcGFyc2VDYWNoZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlciwgVmVjdG9yPHBhaXI8
U3RyaW5nLCBTdHJpbmc+PiYgcmVzdWx0KQogewogICAgIGNvbnN0IFN0cmluZyBzYWZlSGVhZGVy
ID0gaGVhZGVyLnJlbW92ZUNoYXJhY3RlcnMoaXNDb250cm9sQ2hhcmFjdGVyKTsKICAgICB1bnNp
Z25lZCBtYXggPSBzYWZlSGVhZGVyLmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXgg
MjZlNzNhNTZmMzIyMmUxYTRmNDdkZDllYjBlYzQ1Yzg3Yjk4ZmIyOS4uMmU0NGE5ZWZkZGEzNmMw
YTkxY2U5NTYyOTkwOThiOTQ5ZGQ3N2RhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC04NSw5
ICs4NSw5IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGFsbG93c0FueUhUVFBTQ2VydGlmaWNh
dGVIb3N0cygpCiAgICAgcmV0dXJuIGhvc3RzOwogfQogCi1zdGF0aWMgSGFzaE1hcDxTdHJpbmcs
IFJldGFpblB0cjxDRkRhdGFSZWY+ID4mIGNsaWVudENlcnRzKCkKK3N0YXRpYyBIYXNoTWFwPFN0
cmluZywgUmV0YWluUHRyPENGRGF0YVJlZj4+JiBjbGllbnRDZXJ0cygpCiB7Ci0gICAgdHlwZWRl
ZiBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPENGRGF0YVJlZj4gPiBDZXJ0c01hcDsKKyAgICB0
eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4gQ2VydHNNYXA7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDZXJ0c01hcCwgY2VydHMsICgpKTsKICAgICByZXR1cm4g
Y2VydHM7CiB9CkBAIC0zOTAsNyArMzkwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6Y3JlYXRl
Q0ZVUkxDb25uZWN0aW9uKGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UsIGJvb2wKICAg
ICAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoc3NsUHJvcHMuZ2V0KCksIGtDRlN0cmVhbVNTTFZh
bGlkYXRlc0NlcnRpZmljYXRlQ2hhaW4sIGtDRkJvb2xlYW5GYWxzZSk7CiAgICAgfQogCi0gICAg
SGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxDRkRhdGFSZWY+ID46Oml0ZXJhdG9yIGNsaWVudENl
cnQgPSBjbGllbnRDZXJ0cygpLmZpbmQoZmlyc3RSZXF1ZXN0KCkudXJsKCkuaG9zdCgpLmxvd2Vy
KCkpOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPj46Oml0ZXJhdG9y
IGNsaWVudENlcnQgPSBjbGllbnRDZXJ0cygpLmZpbmQoZmlyc3RSZXF1ZXN0KCkudXJsKCkuaG9z
dCgpLmxvd2VyKCkpOwogICAgIGlmIChjbGllbnRDZXJ0ICE9IGNsaWVudENlcnRzKCkuZW5kKCkp
IHsKICAgICAgICAgaWYgKCFzc2xQcm9wcykKICAgICAgICAgICAgIHNzbFByb3BzID0gYWRvcHRD
RihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZU
eXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVu
YXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9u
Q0YuY3BwCmluZGV4IGM1NTgyOGJlNDA0ZjU2NWRmMjg5YzEzNTFmYjMzOGZiMTUxZmRkODIuLjVh
Yzc5NGEzMTgzYzdjNmZiNmQ0OWNlOTVkODhiNjZlN2ZjZDk2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcApAQCAtMzUsNyArMzUs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTw+Ci1SZXRhaW5QdHI8Q0ZMb2Nh
bGVSZWY+IEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGU8UmV0YWluUHRyPENGTG9jYWxlUmVmPiA+
OjpjcmVhdGVWYWx1ZUZvck51bGxLZXkoKQorUmV0YWluUHRyPENGTG9jYWxlUmVmPiBBdG9taWNT
dHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4+OjpjcmVhdGVWYWx1ZUZv
ck51bGxLZXkoKQogewogICAgIC8vIENGIGh5cGhlbmF0aW9uIGZ1bmN0aW9ucyB1c2UgbG9jYWxl
IChyZWdpb25hbCBmb3JtYXRzKSBsYW5ndWFnZSwgd2hpY2ggZG9lc24ndCBuZWNlc3NhcmlseSBt
YXRjaCBwcmltYXJ5IFVJIGxhbmd1YWdlLAogICAgIC8vIHNvIHdlIGNhbid0IHVzZSBkZWZhdWx0
IGxvY2FsZSBoZXJlLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzE0ODk3NjY0Pi4KQEAgLTQ1LDE2ICs0
NSwxNiBAQCBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGU8
UmV0YWluUHRyPENGTG9jYWxlUmVmPiA+OjpjcmVhdAogfQogCiB0ZW1wbGF0ZTw+Ci1SZXRhaW5Q
dHI8Q0ZMb2NhbGVSZWY+IEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGU8UmV0YWluUHRyPENGTG9j
YWxlUmVmPiA+OjpjcmVhdGVWYWx1ZUZvcktleShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlk
ZW50aWZpZXIpCitSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IEF0b21pY1N0cmluZ0tleWVkTVJVQ2Fj
aGU8UmV0YWluUHRyPENGTG9jYWxlUmVmPj46OmNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IEF0b21p
Y1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikKIHsKICAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+
IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbG9j
YWxlSWRlbnRpZmllci5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CiAKICAgICBy
ZXR1cm4gQ0ZTdHJpbmdJc0h5cGhlbmF0aW9uQXZhaWxhYmxlRm9yTG9jYWxlKGxvY2FsZS5nZXQo
KSkgPyBsb2NhbGUgOiAwOwogfQogCi1zdGF0aWMgQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZTxS
ZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+ID4mIGNmTG9jYWxlQ2FjaGUoKQorc3RhdGljIEF0b21pY1N0
cmluZ0tleWVkTVJVQ2FjaGU8UmV0YWluUHRyPENGTG9jYWxlUmVmPj4mIGNmTG9jYWxlQ2FjaGUo
KQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZTxS
ZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+ID4sIGNhY2hlLCAoKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4+LCBj
YWNoZSwgKCkpOwogICAgIHJldHVybiBjYWNoZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL1BsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuaAppbmRleCAyOWJjNGU2ZTYwNTEx
MTAzODJkOGFjYjg3MjNkYWMzYzRiNTcxZTYzLi5hYWZjNDkxYWMzMDUxMWY3MjE2ZGY4ZGY1ZDQ4
YWM2YzZmYWRkYWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbk1h
aW5UaHJlYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbk1h
aW5UaHJlYWRTY2hlZHVsZXIuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIGNsYXNz
IENhbGw7CiAKICAgICB2b2lkIGRpc3BhdGNoQ2FsbHNGb3JQbHVnaW4oTlBQLCBjb25zdCBEZXF1
ZTxDYWxsPiYgY2FsbHMpOwotICAgIHR5cGVkZWYgSGFzaE1hcDxOUFAsIERlcXVlPENhbGw+ID4g
Q2FsbFF1ZXVlTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxOUFAsIERlcXVlPENhbGw+PiBDYWxs
UXVldWVNYXA7CiAKICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFkQ2FsbGJhY2sodm9pZCogY29u
dGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCmluZGV4IGY1
ZDA5NTk0ZjQ5OTE5OGQzNTY4YTNlMGUyNGZiYTgyOWM2OWM2OTUuLjRkNzI4YTcyMmIxMGRiYTcx
ZWY3MjdhMmJjNDZmNTFlOTlkYzdlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuaApAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBTY3JvbGxiYXI7CiAKIGNsYXNzIEhp
dFRlc3RSZXN1bHQgewogcHVibGljOgotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVmUHRyPE5v
ZGU+ID4gTm9kZVNldDsKKyAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPj4gTm9k
ZVNldDsKIAogICAgIEhpdFRlc3RSZXN1bHQoKTsKICAgICBleHBsaWNpdCBIaXRUZXN0UmVzdWx0
KGNvbnN0IExheW91dFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lRmxvd0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dC
b3guaAppbmRleCA4ZjM3MjcyZTA5MTJhN2RiZTc5ZmE0N2MyYjNmYmJjMmFmYTZmMDVhLi45YTQw
ZmM3ZTdkNzcyNjI5YTQ4YzMwOTdkMGJmMDZmOGU2MDBmYTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVGbG93Qm94LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgVmVydGljYWxQ
b3NpdGlvbkNhY2hlOwogCiBzdHJ1Y3QgR2x5cGhPdmVyZmxvdzsKIAotdHlwZWRlZiBIYXNoTWFw
PGNvbnN0IElubGluZVRleHRCb3gqLCBwYWlyPFZlY3Rvcjxjb25zdCBTaW1wbGVGb250RGF0YSo+
LCBHbHlwaE92ZXJmbG93PiA+IEdseXBoT3ZlcmZsb3dBbmRGYWxsYmFja0ZvbnRzTWFwOwordHlw
ZWRlZiBIYXNoTWFwPGNvbnN0IElubGluZVRleHRCb3gqLCBwYWlyPFZlY3Rvcjxjb25zdCBTaW1w
bGVGb250RGF0YSo+LCBHbHlwaE92ZXJmbG93Pj4gR2x5cGhPdmVyZmxvd0FuZEZhbGxiYWNrRm9u
dHNNYXA7CiAKIGNsYXNzIElubGluZUZsb3dCb3ggOiBwdWJsaWMgSW5saW5lQm94IHsKIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDVmZGU5Njdh
NDYxNjhlYmUwMGIxZTk0YTVhYmQ5YTg4Y2Q2NDA1ZDcuLjI1NjMxOTZlNTQzZDUwOTc4MWI5Y2Iz
OWVkODdlYTAyOWMyNjk5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcApAQCAtOTAsNyArOTAsNyBAQCBzdHJ1Y3QgU2FtZVNpemVBc1JlbmRlckJsb2NrIDogcHVi
bGljIFJlbmRlckJveCB7CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihSZW5kZXJCbG9jaykgPT0g
c2l6ZW9mKFNhbWVTaXplQXNSZW5kZXJCbG9jayksIFJlbmRlckJsb2NrX3Nob3VsZF9zdGF5X3Nt
YWxsKTsKIAotdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgT3duUHRyPENv
bHVtbkluZm8+ID4gQ29sdW1uSW5mb01hcDsKK3R5cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IFJl
bmRlckJveCosIE93blB0cjxDb2x1bW5JbmZvPj4gQ29sdW1uSW5mb01hcDsKIHN0YXRpYyBDb2x1
bW5JbmZvTWFwKiBnQ29sdW1uSW5mb01hcCA9IDA7CiAKIHN0YXRpYyBUcmFja2VkRGVzY2VuZGFu
dHNNYXAqIGdQb3NpdGlvbmVkRGVzY2VuZGFudHNNYXAgPSAwOwpAQCAtOTksNyArOTksNyBAQCBz
dGF0aWMgVHJhY2tlZERlc2NlbmRhbnRzTWFwKiBnUGVyY2VudEhlaWdodERlc2NlbmRhbnRzTWFw
ID0gMDsKIHN0YXRpYyBUcmFja2VkQ29udGFpbmVyTWFwKiBnUG9zaXRpb25lZENvbnRhaW5lck1h
cCA9IDA7CiBzdGF0aWMgVHJhY2tlZENvbnRhaW5lck1hcCogZ1BlcmNlbnRIZWlnaHRDb250YWlu
ZXJNYXAgPSAwOwogICAgIAotdHlwZWRlZiBXVEY6Okhhc2hNYXA8UmVuZGVyQmxvY2sqLCBPd25Q
dHI8TGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4gPiA+IENvbnRpbnVhdGlvbk91dGxpbmVUYWJs
ZU1hcDsKK3R5cGVkZWYgV1RGOjpIYXNoTWFwPFJlbmRlckJsb2NrKiwgT3duUHRyPExpc3RIYXNo
U2V0PFJlbmRlcklubGluZSo+Pj4gQ29udGludWF0aW9uT3V0bGluZVRhYmxlTWFwOwogCiB0eXBl
ZGVmIFdURjo6SGFzaFNldDxSZW5kZXJCbG9jayo+IERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZvU2V0
Owogc3RhdGljIGludCBnRGVsYXlVcGRhdGVTY3JvbGxJbmZvID0gMDsKQEAgLTI1NzMsNyArMjU3
Myw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50Q29udGludWF0aW9uT3V0bGluZXMoUGFpbnRJ
bmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYKICAgICBpZiAodGFibGUtPmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBPd25QdHI8TGlzdEhhc2hTZXQ8UmVuZGVy
SW5saW5lKj4gPiBjb250aW51YXRpb25zID0gdGFibGUtPnRha2UodGhpcyk7CisgICAgT3duUHRy
PExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+PiBjb250aW51YXRpb25zID0gdGFibGUtPnRha2Uo
dGhpcyk7CiAgICAgaWYgKCFjb250aW51YXRpb25zKQogICAgICAgICByZXR1cm47CiAKQEAgLTMw
NDcsNyArMzA0Nyw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnJlbW92ZUZyb21UcmFja2VkUmVuZGVy
ZXJNYXBzKFJlbmRlckJveCogZGVzY2VuZGFudCwgVHJhY2tlZERlCiAgICAgaWYgKCFkZXNjZW5k
YW50c01hcCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIE93blB0cjxIYXNoU2V0PFJlbmRl
ckJsb2NrKj4gPiBjb250YWluZXJTZXQgPSBjb250YWluZXJNYXAtPnRha2UoZGVzY2VuZGFudCk7
CisgICAgT3duUHRyPEhhc2hTZXQ8UmVuZGVyQmxvY2sqPj4gY29udGFpbmVyU2V0ID0gY29udGFp
bmVyTWFwLT50YWtlKGRlc2NlbmRhbnQpOwogICAgIGlmICghY29udGFpbmVyU2V0KQogICAgICAg
ICByZXR1cm47CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4
IGI5ZTY5NjI0ZTk4OTEzMjQzYWMzNTRiZDU0ZmJjYmM3Zjc3ZTgyZTQuLmY0YWUwOWRjMmFjYjc4
OGQ3NzNiNWUxODRhNmM4ZTg0M2U1YzRlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oCkBAIC02Nyw4ICs2Nyw4IEBAIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4gc3Ry
dWN0IE1pZHBvaW50U3RhdGU7CiB0eXBlZGVmIEJpZGlSZXNvbHZlcjxJbmxpbmVJdGVyYXRvciwg
QmlkaVJ1bj4gSW5saW5lQmlkaVJlc29sdmVyOwogdHlwZWRlZiBNaWRwb2ludFN0YXRlPElubGlu
ZUl0ZXJhdG9yPiBMaW5lTWlkcG9pbnRTdGF0ZTsKIHR5cGVkZWYgV1RGOjpMaXN0SGFzaFNldDxS
ZW5kZXJCb3gqLCAxNj4gVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ7Ci10eXBlZGVmIFdURjo6
SGFzaE1hcDxjb25zdCBSZW5kZXJCbG9jayosIE93blB0cjxUcmFja2VkUmVuZGVyZXJMaXN0SGFz
aFNldD4gPiBUcmFja2VkRGVzY2VuZGFudHNNYXA7Ci10eXBlZGVmIFdURjo6SGFzaE1hcDxjb25z
dCBSZW5kZXJCb3gqLCBPd25QdHI8SGFzaFNldDxSZW5kZXJCbG9jayo+ID4gPiBUcmFja2VkQ29u
dGFpbmVyTWFwOwordHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVuZGVyQmxvY2sqLCBPd25Q
dHI8VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ+PiBUcmFja2VkRGVzY2VuZGFudHNNYXA7Cit0
eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBPd25QdHI8SGFzaFNldDxSZW5k
ZXJCbG9jayo+Pj4gVHJhY2tlZENvbnRhaW5lck1hcDsKIHR5cGVkZWYgVmVjdG9yPFdvcmRNZWFz
dXJlbWVudCwgNjQ+IFdvcmRNZWFzdXJlbWVudHM7CiAKIGVudW0gQ2FyZXRUeXBlIHsgQ3Vyc29y
Q2FyZXQsIERyYWdDYXJldCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJ1dHRvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5o
CmluZGV4IDFmZjQwYzZkZTYxNWU1NDM1MjIxNzY4MmRhNDIyMTAxOGI0OTI1MjkuLmI5MmJiYTUx
MzhlZDNkZjAzZTY1MDQ5YWY0NDJkZDE4ZDlkN2RmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQnV0dG9uLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJU
ZXh0RnJhZ21lbnQqIG1fYnV0dG9uVGV4dDsKICAgICBSZW5kZXJCbG9jayogbV9pbm5lcjsKIAot
ICAgIE93blB0cjxUaW1lcjxSZW5kZXJCdXR0b24+ID4gbV90aW1lcjsKKyAgICBPd25QdHI8VGlt
ZXI8UmVuZGVyQnV0dG9uPj4gbV90aW1lcjsKICAgICBib29sIG1fZGVmYXVsdDsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCA4NTY4MDdlNzQz
MTgyNTVhMjkxNmVkYzYxYmY3OGRjZDNmMGUxZmYzLi41YjM4YTMzYzc2ZTk1NzMzYzNiMGFjYTdh
YTEzMGU0ZTM0MThjMWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50
ZXIuY3BwCkBAIC00Myw4ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAotdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmUHRy
PENvdW50ZXJOb2RlPiA+IENvdW50ZXJNYXA7Ci10eXBlZGVmIEhhc2hNYXA8Y29uc3QgUmVuZGVy
T2JqZWN0KiwgT3duUHRyPENvdW50ZXJNYXA+ID4gQ291bnRlck1hcHM7Cit0eXBlZGVmIEhhc2hN
YXA8QXRvbWljU3RyaW5nLCBSZWZQdHI8Q291bnRlck5vZGU+PiBDb3VudGVyTWFwOwordHlwZWRl
ZiBIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVjdCosIE93blB0cjxDb3VudGVyTWFwPj4gQ291bnRl
ck1hcHM7CiAKIHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50ZXJOb2RlKFJlbmRlck9iamVj
dCosIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwgYm9vbCBhbHdheXNDcmVhdGVDb3Vu
dGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDAxNzIw
OTNlYzJlNDdkYmI5NjNmZjVkMzJlZjE1MzMyZDVkNGVjOTYuLmU1ZTA2ODZlMjg5ODg0NmJmMGQz
ZThkNTZmNTg1YjIwYzc2ZTc1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgY2xhc3MgUmVuZGVyR3JpZDo6R3JpZEl0ZXJhdG9yIHsK
IHB1YmxpYzoKICAgICAvLyB8ZGlyZWN0aW9ufCBpcyB0aGUgZGlyZWN0aW9uIHRoYXQgaXMgZml4
ZWQgdG8gfGZpeGVkVHJhY2tJbmRleHwgc28gZS5nCiAgICAgLy8gR3JpZEl0ZXJhdG9yKG1fZ3Jp
ZCwgRm9yQ29sdW1ucywgMSkgd2lsbCB3YWxrIG92ZXIgdGhlIHJvd3Mgb2YgdGhlIDJuZCBjb2x1
bW4uCi0gICAgR3JpZEl0ZXJhdG9yKGNvbnN0IFZlY3RvcjxWZWN0b3I8VmVjdG9yPFJlbmRlckJv
eCosIDE+ID4gPiYgZ3JpZCwgVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBzaXplX3Qg
Zml4ZWRUcmFja0luZGV4KQorICAgIEdyaWRJdGVyYXRvcihjb25zdCBWZWN0b3I8VmVjdG9yPFZl
Y3RvcjxSZW5kZXJCb3gqLCAxPj4+JiBncmlkLCBUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rp
b24sIHNpemVfdCBmaXhlZFRyYWNrSW5kZXgpCiAgICAgICAgIDogbV9ncmlkKGdyaWQpCiAgICAg
ICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQogICAgICAgICAsIG1fcm93SW5kZXgoKGRpcmVj
dGlvbiA9PSBGb3JDb2x1bW5zKSA/IDAgOiBmaXhlZFRyYWNrSW5kZXgpCkBAIC0xMzQsNyArMTM0
LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBjb25zdCBWZWN0b3I8VmVjdG9y
PFZlY3RvcjxSZW5kZXJCb3gqLCAxPiA+ID4mIG1fZ3JpZDsKKyAgICBjb25zdCBWZWN0b3I8VmVj
dG9yPFZlY3RvcjxSZW5kZXJCb3gqLCAxPj4+JiBtX2dyaWQ7CiAgICAgVHJhY2tTaXppbmdEaXJl
Y3Rpb24gbV9kaXJlY3Rpb247CiAgICAgc2l6ZV90IG1fcm93SW5kZXg7CiAgICAgc2l6ZV90IG1f
Y29sdW1uSW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCA4NmY2
ZjkxNGI1Y2JlZGU5YTliNzViZTZiZWIxMGYzZmViM2JkNzc5Li4zMTk0MTA3YjcxNGI5NmU2Y2Vk
Mzc5ZDRlZDUxOWYyNmZkYWFjMWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlk
LmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9ncmlkLnNp
emUoKTsKICAgICB9CiAKLSAgICBWZWN0b3I8VmVjdG9yPFZlY3RvcjxSZW5kZXJCb3gqLCAxPiA+
ID4gbV9ncmlkOworICAgIFZlY3RvcjxWZWN0b3I8VmVjdG9yPFJlbmRlckJveCosIDE+Pj4gbV9n
cmlkOwogICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgR3JpZENvb3JkaW5hdGU+IG1fZ3Jp
ZEl0ZW1Db29yZGluYXRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKaW5kZXggNWJhZDlhODM2NDE0ODA3ZjkwZTk0MmEwMDJiYWMxZTkzZTc5MGM0MS4uMjUz
MDI5NDdmOTIxYWQzMjlkNDA2NzkwYjA2ZWQzNzJmMWRlYjQxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC02MzAsOCArNjMwLDggQEAgdm9pZCBSZW5kZXJM
YXllcjo6dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKCkKICAg
ICBBU1NFUlQoIW1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7CiAgICAgQVNTRVJUKCFtX3pPcmRlckxp
c3RzRGlydHkpOwogCi0gICAgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4gcG9zWk9yZGVy
TGlzdDsKLSAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiBuZWdaT3JkZXJMaXN0Owor
ICAgIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4gcG9zWk9yZGVyTGlzdDsKKyAgICBPd25Q
dHI8VmVjdG9yPFJlbmRlckxheWVyKj4+IG5lZ1pPcmRlckxpc3Q7CiAgICAgcmVidWlsZFpPcmRl
ckxpc3RzKFN0b3BBdFN0YWNraW5nQ29udGV4dHMsIHBvc1pPcmRlckxpc3QsIG5lZ1pPcmRlckxp
c3QpOwogCiAgICAgLy8gQ3JlYXRlIGEgcmV2ZXJzZSBsb29rdXAuCkBAIC01Nzc2LDcgKzU3NzYs
NyBAQCB2b2lkIFJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlzdHMoKQogICAgIG1fek9yZGVy
TGlzdHNEaXJ0eSA9IGZhbHNlOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVy
TGlzdHMoQ29sbGVjdExheWVyc0JlaGF2aW9yIGJlaGF2aW9yLCBPd25QdHI8VmVjdG9yPFJlbmRl
ckxheWVyKj4gPiYgcG9zWk9yZGVyTGlzdCwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4m
IG5lZ1pPcmRlckxpc3QpCit2b2lkIFJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlzdHMoQ29s
bGVjdExheWVyc0JlaGF2aW9yIGJlaGF2aW9yLCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+
JiBwb3NaT3JkZXJMaXN0LCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+JiBuZWdaT3JkZXJM
aXN0KQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBib29sIGluY2x1
ZGVIaWRkZW5MYXllcnMgPSBjb21wb3NpdG9yKCkuaW5Db21wb3NpdGluZ01vZGUoKTsKQEAgLTU4
MTQsNyArNTgxNCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0KCkK
ICAgICBtX25vcm1hbEZsb3dMaXN0RGlydHkgPSBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJMYXll
cjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIENvbGxlY3RMYXllcnNC
ZWhhdmlvciBiZWhhdmlvciwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mIHBvc0J1ZmZl
ciwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mIG5lZ0J1ZmZlcikKK3ZvaWQgUmVuZGVy
TGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBDb2xsZWN0TGF5
ZXJzQmVoYXZpb3IgYmVoYXZpb3IsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mIHBvc0J1
ZmZlciwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+PiYgbmVnQnVmZmVyKQogewogICAgIHVw
ZGF0ZURlc2NlbmRhbnREZXBlbmRlbnRGbGFncygpOwogCkBAIC01ODIzLDcgKzU4MjMsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywg
Q29sbGVjdExheWVyc0JlaGF2aW9yCiAgICAgYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXIgPSBpbmNs
dWRlSGlkZGVuTGF5ZXJzIHx8IChtX2hhc1Zpc2libGVDb250ZW50IHx8IChtX2hhc1Zpc2libGVE
ZXNjZW5kYW50ICYmIGlzU3RhY2tpbmcpKTsKICAgICBpZiAoaW5jbHVkZUhpZGRlbkxheWVyICYm
ICFpc05vcm1hbEZsb3dPbmx5KCkpIHsKICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGJ1ZmZl
ciB0aGUgY2hpbGQgc2hvdWxkIGJlIGluLgotICAgICAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxh
eWVyKj4gPiYgYnVmZmVyID0gKHpJbmRleCgpID49IDApID8gcG9zQnVmZmVyIDogbmVnQnVmZmVy
OworICAgICAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+JiBidWZmZXIgPSAoekluZGV4
KCkgPj0gMCkgPyBwb3NCdWZmZXIgOiBuZWdCdWZmZXI7CiAKICAgICAgICAgLy8gQ3JlYXRlIHRo
ZSBidWZmZXIgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQuCiAgICAgICAgIGlmICghYnVmZmVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCAyMDE4ODVjYTRkYjcxZDI5
MDQxOWI4YWZmZjMyMmZlZGRmZGEwNWE5Li4zMzI3YTMxZTI4ZDNmMWI5MjlmOTJkY2JlODJmNmEx
ODlmNTQ4MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtODIw
LDcgKzgyMCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZVpPcmRlckxpc3RzKCk7CiAg
ICAgdm9pZCByZWJ1aWxkWk9yZGVyTGlzdHMoKTsKLSAgICB2b2lkIHJlYnVpbGRaT3JkZXJMaXN0
cyhDb2xsZWN0TGF5ZXJzQmVoYXZpb3IsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+Jiwg
T3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mKTsKKyAgICB2b2lkIHJlYnVpbGRaT3JkZXJM
aXN0cyhDb2xsZWN0TGF5ZXJzQmVoYXZpb3IsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4m
LCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+Jik7CiAgICAgdm9pZCBjbGVhclpPcmRlckxp
c3RzKCk7CiAKICAgICB2b2lkIHVwZGF0ZU5vcm1hbEZsb3dMaXN0KCk7CkBAIC04ODgsNyArODg4
LDcgQEAgcHJpdmF0ZToKIAogICAgIExheW91dFBvaW50IHJlbmRlckJveExvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gcmVuZGVyZXIoKS5pc0JveCgpID8gdG9SZW5kZXJCb3gocmVuZGVyZXIoKSku
bG9jYXRpb24oKSA6IExheW91dFBvaW50KCk7IH0KIAotICAgIHZvaWQgY29sbGVjdExheWVycyhi
b29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIENvbGxlY3RMYXllcnNCZWhhdmlvciwgT3duUHRyPFZl
Y3RvcjxSZW5kZXJMYXllcio+ID4mLCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYpOwor
ICAgIHZvaWQgY29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIENvbGxlY3RM
YXllcnNCZWhhdmlvciwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+PiYsIE93blB0cjxWZWN0
b3I8UmVuZGVyTGF5ZXIqPj4mKTsKIAogICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdBbmRMYXll
ckxpc3RzSWZOZWVkZWQoKTsKIApAQCAtMTIyNSwxMiArMTIyNSwxMiBAQCBwcml2YXRlOgogICAg
IC8vIGRlc2NlbmRhbnQgbGF5ZXJzIHdpdGhpbiB0aGUgc3RhY2tpbmcgY29udGV4dCB0aGF0IGhh
dmUgei1pbmRpY2VzIG9mIDAgb3IgZ3JlYXRlcgogICAgIC8vIChhdXRvIHdpbGwgY291bnQgYXMg
MCkuICBtX25lZ1pPcmRlckxpc3QgaG9sZHMgZGVzY2VuZGFudHMgd2l0aGluIG91ciBzdGFja2lu
ZyBjb250ZXh0IHdpdGggbmVnYXRpdmUKICAgICAvLyB6LWluZGljZXMuCi0gICAgT3duUHRyPFZl
Y3RvcjxSZW5kZXJMYXllcio+ID4gbV9wb3NaT3JkZXJMaXN0OwotICAgIE93blB0cjxWZWN0b3I8
UmVuZGVyTGF5ZXIqPiA+IG1fbmVnWk9yZGVyTGlzdDsKKyAgICBPd25QdHI8VmVjdG9yPFJlbmRl
ckxheWVyKj4+IG1fcG9zWk9yZGVyTGlzdDsKKyAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVy
Kj4+IG1fbmVnWk9yZGVyTGlzdDsKIAogICAgIC8vIFRoaXMgbGlzdCBjb250YWlucyBjaGlsZCBs
YXllcnMgdGhhdCBjYW5ub3QgY3JlYXRlIHN0YWNraW5nIGNvbnRleHRzLiAgRm9yIG5vdyBpdCBp
cyBqdXN0CiAgICAgLy8gb3ZlcmZsb3cgbGF5ZXJzLCBidXQgdGhhdCBtYXkgY2hhbmdlIGluIHRo
ZSBmdXR1cmUuCi0gICAgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4gbV9ub3JtYWxGbG93
TGlzdDsKKyAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+IG1fbm9ybWFsRmxvd0xpc3Q7
CiAKICAgICBPd25QdHI8Q2xpcFJlY3RzQ2FjaGU+IG1fY2xpcFJlY3RzQ2FjaGU7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3Bw
CmluZGV4IDJmMjYwYWI1YmJkNmZlOGZjOWRkMWFmNjcwNWVhOGRjNjFkODIwOTQuLjc4NDJmZjc3
OTQ1MWM3NTA0NWJmMTBlNzE2YzU4YTQ3YTg2ZTJhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCkBAIC01NzgsNyArNTc4LDcg
QEAgc3RhdGljIE5vZGUqIG5leHROb2RlSW5zaWRlQ29udGVudEVsZW1lbnQoY29uc3QgTm9kZSog
Y3Vyck5vZGUsIGNvbnN0IEVsZW1lbnQqIGMKICAgICByZXR1cm4gTm9kZVRyYXZlcnNhbDo6bmV4
dChjdXJyTm9kZSwgY29udGVudEVsZW1lbnQpOwogfQogCi12b2lkIFJlbmRlck5hbWVkRmxvd1Ro
cmVhZDo6Z2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+ID4mIHJhbmdlT2JqZWN0cywgY29u
c3QgUmVuZGVyUmVnaW9uKiByZWdpb24pIGNvbnN0Cit2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVh
ZDo6Z2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYgcmFuZ2VPYmplY3RzLCBjb25zdCBS
ZW5kZXJSZWdpb24qIHJlZ2lvbikgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3BG
b3JSZWdpb247CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tRm9yUmVnaW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCmluZGV4IGIx
MDJmZjJhNThhOTVjMjJiZDgxZTdmZWM1MzRjOTFiYzM2OGQ0YzEuLjQ4ZjAxY2U5NGUyZTllYjkw
ZDJiZjljNjU2NzU3ZWY0OGE5MjUwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaGFzQ29udGVudEVsZW1lbnQoRWxlbWVudCYpIGNvbnN0OwogCiAgICAgYm9vbCBpc01h
cmtlZEZvckRlc3RydWN0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBnZXRSYW5nZXMoVmVjdG9yPFJl
ZlB0cjxSYW5nZT4gPiYsIGNvbnN0IFJlbmRlclJlZ2lvbiopIGNvbnN0OworICAgIHZvaWQgZ2V0
UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYsIGNvbnN0IFJlbmRlclJlZ2lvbiopIGNvbnN0
OwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKaW5kZXggZWQ5ZDI0MmVkY2ZiNGZm
OGM2MjZiZTcwODNkODc3M2E4YjNmMjBlYi4uODliOTcwZDZlZmRmZGY0NmRmMDY0ZTU3Yzk4NDZm
NDEyNDJhMjdhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAK
QEAgLTY5NCw3ICs2OTQsNyBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6Y29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoKQogICAgIHNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eShmYWxzZSk7
CiB9CiAKLXZvaWQgUmVuZGVyUmVnaW9uOjpnZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4g
PiYgcmFuZ2VPYmplY3RzKSBjb25zdAordm9pZCBSZW5kZXJSZWdpb246OmdldFJhbmdlcyhWZWN0
b3I8UmVmUHRyPFJhbmdlPj4mIHJhbmdlT2JqZWN0cykgY29uc3QKIHsKICAgICBjb25zdCBSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQmIG5hbWVkRmxvdyA9IHZpZXcoKS5mbG93VGhyZWFkQ29udHJvbGxl
cigpLmVuc3VyZVJlbmRlckZsb3dUaHJlYWRXaXRoTmFtZShzdHlsZSgpLT5yZWdpb25UaHJlYWQo
KSk7CiAgICAgbmFtZWRGbG93LmdldFJhbmdlcyhyYW5nZU9iamVjdHMsIHRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCmluZGV4IDc3YmNmZTAwMzMyZjY5MTI4NjQ1
MjdjNGM4ZGFkOWRjNDU0Y2JiZDEuLjlkYTViMmRjZTFlZDI4YmQ5ZjJmMmYwYWZkYjUzODExNGRj
OTdiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKQEAgLTk2LDcg
Kzk2LDcgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgbG9naWNhbFRvcEZvckZsb3dUaHJlYWRD
b250ZW50KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFRvcE9mRmxvd1RocmVhZENvbnRlbnRSZWN0
KGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpKTsgfTsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0
b21Gb3JGbG93VGhyZWFkQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxCb3R0b21PZkZs
b3dUaHJlYWRDb250ZW50UmVjdChmbG93VGhyZWFkUG9ydGlvblJlY3QoKSk7IH07CiAKLSAgICB2
b2lkIGdldFJhbmdlcyhWZWN0b3I8UmVmUHRyPFJhbmdlPiA+JikgY29uc3Q7CisgICAgdm9pZCBn
ZXRSYW5nZXMoVmVjdG9yPFJlZlB0cjxSYW5nZT4+JikgY29uc3Q7CiAKICAgICAvLyBUaGlzIG1l
dGhvZCByZXByZXNlbnRzIHRoZSBsb2dpY2FsIGhlaWdodCBvZiB0aGUgZW50aXJlIGZsb3cgdGhy
ZWFkIHBvcnRpb24gdXNlZCBieSB0aGUgcmVnaW9uIG9yIHNldC4KICAgICAvLyBGb3IgUmVuZGVy
UmVnaW9ucyBpdCBtYXRjaGVzIGxvZ2ljYWxQYWdpbmF0aW9uSGVpZ2h0KCksIGJ1dCBmb3Igc2V0
cyBpdCBpcyB0aGUgaGVpZ2h0IG9mIGFsbCB0aGUgcGFnZXMKQEAgLTIwOSw3ICsyMDksNyBAQCBw
cml2YXRlOgogICAgIC8vIEEgUmVuZGVyQm94UmVnaW9uSW5mbyogdGVsbHMgdXMgYWJvdXQgYW55
IGxheW91dCBpbmZvcm1hdGlvbiBmb3IgYSBSZW5kZXJCb3ggdGhhdAogICAgIC8vIGlzIHVuaXF1
ZSB0byB0aGUgcmVnaW9uLiBGb3Igbm93IGl0IGp1c3QgaG9sZHMgbG9naWNhbCB3aWR0aCBpbmZv
cm1hdGlvbiBmb3IgUmVuZGVyQmxvY2tzLCBidXQgZXZlbnR1YWxseQogICAgIC8vIGl0IHdpbGwg
YWxzbyBob2xkIGEgY3VzdG9tIHN0eWxlIGZvciBhbnkgYm94IChmb3IgcmVnaW9uIHN0eWxpbmcp
LgotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBPd25QdHI8UmVuZGVyQm94
UmVnaW9uSW5mbz4gPiBSZW5kZXJCb3hSZWdpb25JbmZvTWFwOworICAgIHR5cGVkZWYgSGFzaE1h
cDxjb25zdCBSZW5kZXJCb3gqLCBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4+IFJlbmRlckJv
eFJlZ2lvbkluZm9NYXA7CiAgICAgUmVuZGVyQm94UmVnaW9uSW5mb01hcCBtX3JlbmRlckJveFJl
Z2lvbkluZm87CiAKICAgICBzdHJ1Y3QgT2JqZWN0UmVnaW9uU3R5bGVJbmZvIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCAyZTM2ZmRkZDAxMTI1NzM0ZjkyMTRk
MThkM2QzMDU4NDE3ZGNhYWM1Li5iMGQxYzBhNzBlYWNhNDc1YTU3ZDU0YzQ1NmFmYjY5MWI4MDI3
M2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC02NjIsNyAr
NjYyLDcgQEAgSW50UmVjdCBSZW5kZXJWaWV3OjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9W
aXNpYmxlQ29udGVudCkgY29uc3QKIHsKICAgICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVk
ZWQoKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBPd25QdHI8UmVuZGVy
U2VsZWN0aW9uSW5mbz4gPiBTZWxlY3Rpb25NYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRl
ck9iamVjdCosIE93blB0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPj4gU2VsZWN0aW9uTWFwOwogICAg
IFNlbGVjdGlvbk1hcCBzZWxlY3RlZE9iamVjdHM7CiAKICAgICBSZW5kZXJPYmplY3QqIG9zID0g
bV9zZWxlY3Rpb25TdGFydDsKQEAgLTc4MCwxNCArNzgwLDE0IEBAIHZvaWQgUmVuZGVyVmlldzo6
c2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIGludCBzdGFydFBvcywgUmVuZGVyT2Jq
ZWN0KiBlCiAgICAgaW50IG9sZEVuZFBvcyA9IG1fc2VsZWN0aW9uRW5kUG9zOwogCiAgICAgLy8g
T2JqZWN0cyBlYWNoIGhhdmUgYSBzaW5nbGUgc2VsZWN0aW9uIHJlY3QgdG8gZXhhbWluZS4KLSAg
ICB0eXBlZGVmIEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgT3duUHRyPFJlbmRlclNlbGVjdGlvbklu
Zm8+ID4gU2VsZWN0ZWRPYmplY3RNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRlck9iamVj
dCosIE93blB0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPj4gU2VsZWN0ZWRPYmplY3RNYXA7CiAgICAg
U2VsZWN0ZWRPYmplY3RNYXAgb2xkU2VsZWN0ZWRPYmplY3RzOwogICAgIFNlbGVjdGVkT2JqZWN0
TWFwIG5ld1NlbGVjdGVkT2JqZWN0czsKIAogICAgIC8vIEJsb2NrcyBjb250YWluIHNlbGVjdGVk
IG9iamVjdHMgYW5kIGZpbGwgZ2FwcyBiZXR3ZWVuIHRoZW0sIGVpdGhlciBvbiB0aGUgbGVmdCwg
cmlnaHQsIG9yIGluIGJldHdlZW4gbGluZXMgYW5kIGJsb2Nrcy4KICAgICAvLyBJbiBvcmRlciB0
byBnZXQgdGhlIHJlcGFpbnQgcmVjdCByaWdodCwgd2UgaGF2ZSB0byBleGFtaW5lIGxlZnQsIG1p
ZGRsZSwgYW5kIHJpZ2h0IHJlY3RzIGluZGl2aWR1YWxseSwgc2luY2Ugb3RoZXJ3aXNlCiAgICAg
Ly8gdGhlIHVuaW9uIG9mIHRob3NlIHJlY3RzIG1pZ2h0IHJlbWFpbiB0aGUgc2FtZSBldmVuIHdo
ZW4gY2hhbmdlcyBoYXZlIG9jY3VycmVkLgotICAgIHR5cGVkZWYgSGFzaE1hcDxSZW5kZXJCbG9j
ayosIE93blB0cjxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+ID4gU2VsZWN0ZWRCbG9ja01hcDsK
KyAgICB0eXBlZGVmIEhhc2hNYXA8UmVuZGVyQmxvY2sqLCBPd25QdHI8UmVuZGVyQmxvY2tTZWxl
Y3Rpb25JbmZvPj4gU2VsZWN0ZWRCbG9ja01hcDsKICAgICBTZWxlY3RlZEJsb2NrTWFwIG9sZFNl
bGVjdGVkQmxvY2tzOwogICAgIFNlbGVjdGVkQmxvY2tNYXAgbmV3U2VsZWN0ZWRCbG9ja3M7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCmluZGV4IDE1Zjg2YmNhZmY4
NGE0MWFjYTQ3M2Y1OTMxOWRkOGU3MTNmNTdiMjIuLjI4MTZhY2IzNDI0M2U0NjgzMTM2OGQ4NjEw
ODQ2MjA2ZTVhOWU2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290
SW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
aApAQCAtMjUzLDcgKzI1Myw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBGbG9hdHMgaGFuZ2luZyBv
ZmYgdGhlIGxpbmUgYXJlIHB1c2hlZCBpbnRvIHRoaXMgdmVjdG9yIGR1cmluZyBsYXlvdXQuIEl0
IGlzIG9ubHkKICAgICAvLyBnb29kIGZvciBhcyBsb25nIGFzIHRoZSBsaW5lIGhhcyBub3QgYmVl
biBtYXJrZWQgZGlydHkuCi0gICAgT3duUHRyPFZlY3RvcjxSZW5kZXJCb3gqPiA+IG1fZmxvYXRz
OworICAgIE93blB0cjxWZWN0b3I8UmVuZGVyQm94Kj4+IG1fZmxvYXRzOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9Qb2x5Z29uU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Q
b2x5Z29uU2hhcGUuY3BwCmluZGV4IDUwZjYyOTc0NGE4MjY5ZjU1ZDNlMTlkZDU5Y2U2MzQ1NjY0
ZTQ0NGMuLmQzZjkwZWJkZGZjY2Q5MzAwZmViMjYzMzQ5MDYwZjk4YWQwODgxOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAKQEAgLTEz
OCw3ICsxMzgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc25hcFZlcnRpY2VzVG9MYXlvdXRVbml0
R3JpZChWZWN0b3I8RmxvYXRQb2ludD4mIHZlcnRpY2VzKQogCiBzdGF0aWMgaW5saW5lIFBhc3NP
d25QdHI8RmxvYXRQb2x5Z29uPiBjb21wdXRlU2hhcGVQYWRkaW5nQm91bmRzKGNvbnN0IEZsb2F0
UG9seWdvbiYgcG9seWdvbiwgZmxvYXQgcGFkZGluZywgV2luZFJ1bGUgZmlsbFJ1bGUpCiB7Ci0g
ICAgT3duUHRyPFZlY3RvcjxGbG9hdFBvaW50PiA+IHBhZGRlZFZlcnRpY2VzID0gYWRvcHRQdHIo
bmV3IFZlY3RvcjxGbG9hdFBvaW50PigpKTsKKyAgICBPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+
PiBwYWRkZWRWZXJ0aWNlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8RmxvYXRQb2ludD4oKSk7CiAg
ICAgRmxvYXRQb2ludCBpbnRlcnNlY3Rpb247CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcG9seWdvbi5udW1iZXJPZkVkZ2VzKCk7ICsraSkgewpAQCAtMTU5LDcgKzE1OSw3IEBAIHN0
YXRpYyBpbmxpbmUgUGFzc093blB0cjxGbG9hdFBvbHlnb24+IGNvbXB1dGVTaGFwZVBhZGRpbmdC
b3VuZHMoY29uc3QgRmxvYXRQb2x5CiAKIHN0YXRpYyBpbmxpbmUgUGFzc093blB0cjxGbG9hdFBv
bHlnb24+IGNvbXB1dGVTaGFwZU1hcmdpbkJvdW5kcyhjb25zdCBGbG9hdFBvbHlnb24mIHBvbHln
b24sIGZsb2F0IG1hcmdpbiwgV2luZFJ1bGUgZmlsbFJ1bGUpCiB7Ci0gICAgT3duUHRyPFZlY3Rv
cjxGbG9hdFBvaW50PiA+IG1hcmdpblZlcnRpY2VzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxGbG9h
dFBvaW50PigpKTsKKyAgICBPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiBtYXJnaW5WZXJ0aWNl
cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8RmxvYXRQb2ludD4oKSk7CiAgICAgRmxvYXRQb2ludCBp
bnRlcnNlY3Rpb247CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcG9seWdvbi5udW1i
ZXJPZkVkZ2VzKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9Qb2x5Z29uU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
UG9seWdvblNoYXBlLmgKaW5kZXggZWQ2OWY3YjJlZjA0MmZmZTUyZjcwOGNhYWI2YjE2OWQxMTYw
YWQ3OS4uMjY2ODI1Y2E3MzQ4MWIwYWI4OWMwYTBkMTE2MmU0NjEwZWY0MDM1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oCkBAIC04Miw3ICs4
Miw3IEBAIHByaXZhdGU6CiBjbGFzcyBQb2x5Z29uU2hhcGUgOiBwdWJsaWMgU2hhcGUgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFBvbHlnb25TaGFwZSk7CiBwdWJsaWM6Ci0gICAgUG9seWdv
blNoYXBlKFBhc3NPd25QdHI8VmVjdG9yPEZsb2F0UG9pbnQ+ID4gdmVydGljZXMsIFdpbmRSdWxl
IGZpbGxSdWxlKQorICAgIFBvbHlnb25TaGFwZShQYXNzT3duUHRyPFZlY3RvcjxGbG9hdFBvaW50
Pj4gdmVydGljZXMsIFdpbmRSdWxlIGZpbGxSdWxlKQogICAgICAgICA6IFNoYXBlKCkKICAgICAg
ICAgLCBtX3BvbHlnb24odmVydGljZXMsIGZpbGxSdWxlKQogICAgICAgICAsIG1fbWFyZ2luQm91
bmRzKG51bGxwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmlu
ZGV4IDE5NzA0MGMxZmI0Njg2OTk0Y2E1NWY5ZDkzNDU0MTk5NzU1ODM5ODUuLjY3OGI2ODhhYTU0
Y2ZjMDQxYjE1YWFjMzQ2NjI2ZTI4ZDdkMmNjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBQYXNzT3duUHRyPFNo
YXBlPiBjcmVhdGVTaGFwZUVsbGlwc2UoY29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBjb25zdCBG
bG9hCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSZWN0YW5nbGVTaGFwZShGbG9hdFJlY3QoY2Vu
dGVyLngoKSAtIHJhZGlpLndpZHRoKCksIGNlbnRlci55KCkgLSByYWRpaS5oZWlnaHQoKSwgcmFk
aWkud2lkdGgoKSoyLCByYWRpaS5oZWlnaHQoKSoyKSwgcmFkaWkpKTsKIH0KIAotc3RhdGljIFBh
c3NPd25QdHI8U2hhcGU+IGNyZWF0ZVBvbHlnb25TaGFwZShQYXNzT3duUHRyPFZlY3RvcjxGbG9h
dFBvaW50PiA+IHZlcnRpY2VzLCBXaW5kUnVsZSBmaWxsUnVsZSkKK3N0YXRpYyBQYXNzT3duUHRy
PFNoYXBlPiBjcmVhdGVQb2x5Z29uU2hhcGUoUGFzc093blB0cjxWZWN0b3I8RmxvYXRQb2ludD4+
IHZlcnRpY2VzLCBXaW5kUnVsZSBmaWxsUnVsZSkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFBvbHlnb25TaGFwZSh2ZXJ0aWNlcywgZmlsbFJ1bGUpKTsKIH0KQEAgLTE2MSw3ICsxNjEsNyBA
QCBQYXNzT3duUHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSog
YmFzaWNTaGFwZSwgY29uc3QgTGF5b3V0UwogICAgICAgICBjb25zdCBWZWN0b3I8TGVuZ3RoPiYg
dmFsdWVzID0gcG9seWdvbi0+dmFsdWVzKCk7CiAgICAgICAgIHNpemVfdCB2YWx1ZXNTaXplID0g
dmFsdWVzLnNpemUoKTsKICAgICAgICAgQVNTRVJUKCEodmFsdWVzU2l6ZSAlIDIpKTsKLSAgICAg
ICAgT3duUHRyPFZlY3RvcjxGbG9hdFBvaW50PiA+IHZlcnRpY2VzID0gYWRvcHRQdHIobmV3IFZl
Y3RvcjxGbG9hdFBvaW50Pih2YWx1ZXNTaXplIC8gMikpOworICAgICAgICBPd25QdHI8VmVjdG9y
PEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8RmxvYXRQb2ludD4o
dmFsdWVzU2l6ZSAvIDIpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZhbHVl
c1NpemU7IGkgKz0gMikgewogICAgICAgICAgICAgRmxvYXRQb2ludCB2ZXJ0ZXgoCiAgICAgICAg
ICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aCh2YWx1ZXMuYXQoaSksIGJveFdpZHRoKSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5oCmluZGV4IGE4Mzk3Mzc1
M2ExMjEzYTdhMmQyZjAwMTczNmIzMWQ4YTc5MWUxZjIuLjAzZTk4YjA4NzQzN2E5MzMwZmY0MzMx
NzcxYTBjNDJjMmUxOWJkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZUluZm8uaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVt
b3ZlSW5mbyhjb25zdCBLZXlUeXBlKiBrZXkpIHsgaW5mb01hcCgpLnJlbW92ZShrZXkpOyB9CiAg
ICAgc3RhdGljIEluZm9UeXBlKiBpbmZvKGNvbnN0IEtleVR5cGUqIGtleSkgeyByZXR1cm4gaW5m
b01hcCgpLmdldChrZXkpOyB9CiBwcml2YXRlOgotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBL
ZXlUeXBlKiwgT3duUHRyPEluZm9UeXBlPiA+IEluZm9NYXA7CisgICAgdHlwZWRlZiBIYXNoTWFw
PGNvbnN0IEtleVR5cGUqLCBPd25QdHI8SW5mb1R5cGU+PiBJbmZvTWFwOwogICAgIHN0YXRpYyBJ
bmZvTWFwJiBpbmZvTWFwKCkKICAgICB7CiAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoSW5m
b01hcCwgc3RhdGljSW5mb01hcCwgKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlSW50ZXJ2YWwuaAppbmRleCA5ZWZhMGZlODA2NjBjMzcyM2VkYzgyZDI2MWJh
OGQyNzAzZTlmYmM4Li40NzZmMGNlNzlmZWJkNGM4ZTk0N2ViYTAyMTY4ZjBhYTZjNDdlMTJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaApA
QCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTaGFwZUludGVydmFsPFQ+
KHN0ZDo6bWF4PFQ+KHgxKCksIGludGVydmFsLngxKCkpLCBzdGQ6Om1pbjxUPih4MigpLCBpbnRl
cnZhbC54MigpKSk7CiAgICAgfQogCi0gICAgdHlwZWRlZiBWZWN0b3I8U2hhcGVJbnRlcnZhbDxU
PiA+IFNoYXBlSW50ZXJ2YWxzOworICAgIHR5cGVkZWYgVmVjdG9yPFNoYXBlSW50ZXJ2YWw8VD4+
IFNoYXBlSW50ZXJ2YWxzOwogICAgIHR5cGVkZWYgdHlwZW5hbWUgU2hhcGVJbnRlcnZhbHM6OmNv
bnN0X2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgIHR5cGVkZWYgdHlwZW5hbWUgU2hhcGVJ
bnRlcnZhbHM6Oml0ZXJhdG9yIGl0ZXJhdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUXVvdGVzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUXVvdGVzRGF0YS5jcHAKaW5kZXggY2FiODczOTU2ZDFiZGM2MDQ4MjYyNGIzZDRi
NDIwNDEyZGQ3ODhlMC4uNDNiMGRmMjRiNWJiMjkwZjI3YWJlMTUzZGJjZDc2MTkyOTczMTUwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1F1b3Rlc0RhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9RdW90ZXNEYXRhLmNwcApAQCAt
MjksMTMgKzI5LDEzIEBAIHN0YXRpYyBzaXplX3Qgc2l6ZUZvclF1b3Rlc0RhdGFXaXRoUXVvdGVD
b3VudCh1bnNpZ25lZCBjb3VudCkKICAgICByZXR1cm4gc2l6ZW9mKFF1b3Rlc0RhdGEpICsgc2l6
ZW9mKHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4pICogY291bnQ7CiB9CiAKLVBhc3NSZWZQdHI8
UXVvdGVzRGF0YT4gUXVvdGVzRGF0YTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBTdHJpbmc+ID4mIHF1b3RlcykKK1Bhc3NSZWZQdHI8UXVvdGVzRGF0YT4gUXVvdGVzRGF0
YTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgcXVvdGVz
KQogewogICAgIHZvaWQqIHNsb3QgPSBmYXN0TWFsbG9jKHNpemVGb3JRdW90ZXNEYXRhV2l0aFF1
b3RlQ291bnQocXVvdGVzLnNpemUoKSkpOwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgKE5vdE51
bGwsIHNsb3QpIFF1b3Rlc0RhdGEocXVvdGVzKSk7CiB9CiAKLVF1b3Rlc0RhdGE6OlF1b3Rlc0Rh
dGEoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4gPiYgcXVvdGVzKQorUXVv
dGVzRGF0YTo6UXVvdGVzRGF0YShjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5n
Pj4mIHF1b3RlcykKICAgICA6IG1fcXVvdGVDb3VudChxdW90ZXMuc2l6ZSgpKQogewogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3F1b3RlQ291bnQ7ICsraSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9RdW90ZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUXVvdGVzRGF0YS5oCmluZGV4IGRmODRkNjJhZTYzYjhmOWRiYzVl
YmVhZjM4YzRmYWZlYTRhZDlkN2QuLjA3ZTkyNTMwZjQyZjRjN2Y3YmY4NGU0ODdmNDY1YjlhODM2
ZTA1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9RdW90ZXNE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1F1b3Rlc0RhdGEuaApA
QCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFF1b3Rlc0RhdGEg
OiBwdWJsaWMgUmVmQ291bnRlZDxRdW90ZXNEYXRhPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8UXVvdGVzRGF0YT4gY3JlYXRlKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBTdHJpbmc+ID4mIHF1b3Rlcyk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UXVvdGVzRGF0YT4g
Y3JlYXRlKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgcXVvdGVzKTsK
ICAgICB+UXVvdGVzRGF0YSgpOwogCiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBR
dW90ZXNEYXRhJiwgY29uc3QgUXVvdGVzRGF0YSYpOwpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3RyaW5nJiBjbG9zZVF1b3RlKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAog
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBRdW90ZXNEYXRhKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+ID4mIHF1b3Rlcyk7CisgICAgZXhwbGljaXQgUXVvdGVzRGF0YShjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHF1b3Rlcyk7CiAKICAgICB1bnNp
Z25lZCBtX3F1b3RlQ291bnQ7CiAgICAgc3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPiBtX3F1b3Rl
UGFpcnNbMF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcAppbmRleCA1M2JlYmUzZDc5NThjOTUyMWU0MWRhYzQ4Y2RhM2M3MWE3M2FkNDA4Li4yNjlh
ZmI1YjIyNTIwY2IxMTcyNjU0YzBkNDUwM2ExZTFjODEwZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTk4Myw3ICs5ODMsNyBAQCB2
b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KFF1b3RlVHlwZSBxdW90ZSwgYm9vbCBhZGQpCiAg
ICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY29udGVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8UXVvdGVDb250ZW50RGF0YT4ocXVvdGUpOwogfQogICAgIAotaW5saW5lIGJvb2wgcmVx
dWlyZVRyYW5zZm9ybU9yaWdpbihjb25zdCBWZWN0b3I8UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlv
bj4gPiYgdHJhbnNmb3JtT3BlcmF0aW9ucywgUmVuZGVyU3R5bGU6OkFwcGx5VHJhbnNmb3JtT3Jp
Z2luIGFwcGx5T3JpZ2luKQoraW5saW5lIGJvb2wgcmVxdWlyZVRyYW5zZm9ybU9yaWdpbihjb25z
dCBWZWN0b3I8UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4+JiB0cmFuc2Zvcm1PcGVyYXRpb25z
LCBSZW5kZXJTdHlsZTo6QXBwbHlUcmFuc2Zvcm1PcmlnaW4gYXBwbHlPcmlnaW4pCiB7CiAgICAg
Ly8gdHJhbnNmb3JtLW9yaWdpbiBicmFja2V0cyB0aGUgdHJhbnNmb3JtIHdpdGggdHJhbnNsYXRl
IG9wZXJhdGlvbnMuCiAgICAgLy8gT3B0aW1pemUgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBvbmx5
IHRyYW5zZm9ybSBpcyBhIHRyYW5zbGF0aW9uLCBzaW5jZSB0aGUgdHJhbnNmb3JtLW9yaWdpbiBp
cyBpcnJlbGV2YW50CkBAIC0xMDEwLDcgKzEwMTAsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjphcHBs
eVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBMYXlvdXRT
aQogICAgIC8vIEZJWE1FOiB3aGVuIHN1YnBpeGVsIGxheW91dCBpcyBzdXBwb3J0ZWQgKGJ1ZyA3
MTE0MykgdGhlIGJvZHkgb2YgdGhpcyBmdW5jdGlvbiBjb3VsZCBiZSByZXBsYWNlZCBieQogICAg
IC8vIGFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYm9y
ZGVyQm94U2l6ZSksIGFwcGx5T3JpZ2luKTsKICAgICAKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRy
PFRyYW5zZm9ybU9wZXJhdGlvbj4gPiYgdHJhbnNmb3JtT3BlcmF0aW9ucyA9IHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV9vcGVyYXRpb25zLm9wZXJhdGlvbnMoKTsKKyAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4+JiB0cmFuc2Zvcm1PcGVyYXRp
b25zID0gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX29wZXJhdGlvbnMub3Bl
cmF0aW9ucygpOwogICAgIGJvb2wgYXBwbHlUcmFuc2Zvcm1PcmlnaW4gPSByZXF1aXJlVHJhbnNm
b3JtT3JpZ2luKHRyYW5zZm9ybU9wZXJhdGlvbnMsIGFwcGx5T3JpZ2luKTsKIAogICAgIGlmIChh
cHBseVRyYW5zZm9ybU9yaWdpbikKQEAgLTEwMjYsNyArMTAyNiw3IEBAIHZvaWQgUmVuZGVyU3R5
bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0
IExheW91dFNpCiAKIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIEFwcGx5
VHJhbnNmb3JtT3JpZ2luIGFwcGx5T3JpZ2luKSBjb25zdAogewotICAgIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiA+JiB0cmFuc2Zvcm1PcGVyYXRpb25zID0gcmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX29wZXJhdGlvbnMub3BlcmF0aW9ucygpOwor
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPj4mIHRyYW5zZm9ybU9w
ZXJhdGlvbnMgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1fb3BlcmF0aW9u
cy5vcGVyYXRpb25zKCk7CiAgICAgYm9vbCBhcHBseVRyYW5zZm9ybU9yaWdpbiA9IHJlcXVpcmVU
cmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtT3BlcmF0aW9ucywgYXBwbHlPcmlnaW4pOwogICAgIAog
ICAgIGZsb2F0IG9mZnNldFggPSB0cmFuc2Zvcm1PcmlnaW5YKCkudHlwZSgpID09IFBlcmNlbnQg
PyBib3VuZGluZ0JveC54KCkgOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUdyaWREYXRhLmgKaW5kZXggMTQwN2NmOWVkNjk3ZDVlYzgxOThmNGY0YWUyMWUyMzZm
NmNiNjUwMy4uN2RkNWE1ZjQwZWQ0MzNlMWM0YjdjOTNlNDFlOGEyNGE1Mjk1NGE0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCkBAIC0zNiw3
ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgVmVjdG9yPHNpemVfdD4gPiBOYW1lZEdyaWRMaW5lc01hcDsKK3R5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFZlY3RvcjxzaXplX3Q+PiBOYW1lZEdyaWRMaW5lc01hcDsKIAogY2xhc3MgU3R5bGVH
cmlkRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFN0eWxlR3JpZERhdGE+IHsKIHB1YmxpYzoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VH
cmFkaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50LmgKaW5kZXggNmJmMjI2NmNlNGQxNGM2MThmNTEzMGRiYjQ3MDAzZGQ5NmIyZjJi
Ny4uMWIzNWQ4MGJkYzY5NjgyOTE2YjdiNzIzYjZkOGQwYWUwY2VhYWMyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRp
ZW50LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIGJvb2wg
bV9zaG91bGRDb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzIDogMTsKLSAgICBIYXNoTWFwPFJlbmRl
ck9iamVjdCosIE93blB0cjxHcmFkaWVudERhdGE+ID4gbV9ncmFkaWVudE1hcDsKKyAgICBIYXNo
TWFwPFJlbmRlck9iamVjdCosIE93blB0cjxHcmFkaWVudERhdGE+PiBtX2dyYWRpZW50TWFwOwog
CiAjaWYgVVNFKENHKQogICAgIEdyYXBoaWNzQ29udGV4dCogbV9zYXZlZENvbnRleHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm4uaAppbmRleCBlM2Y1YjI3MTMwZDMwNjJkNmM1YzUzZjQzZmI2MDJjNDdlODVhZjAxLi5l
NmIwMmM5NGFmMTczYzdiM2NhYTRhZDQzODliY2EwOTI3M2Y1MWNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgK
QEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9zaG91bGRDb2xsZWN0UGF0
dGVybkF0dHJpYnV0ZXMgOiAxOwogICAgIFBhdHRlcm5BdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsK
LSAgICBIYXNoTWFwPFJlbmRlck9iamVjdCosIE93blB0cjxQYXR0ZXJuRGF0YT4gPiBtX3BhdHRl
cm5NYXA7CisgICAgSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBPd25QdHI8UGF0dGVybkRhdGE+PiBt
X3BhdHRlcm5NYXA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1Jlc291cmNlc0NhY2hlLmgKaW5kZXggNjdhMDEwNTljNjc0M2NhNGM4MjI0Zjg0YTllMmNj
NWNhNjI1ODczYS4uOTRmNDJmZjYzZDdhMzk3MTAxZWRkNzU1ZTE0NTJlYjhkMzA3YmE4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuaApA
QCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkUmVzb3VyY2VzRnJvbVJlbmRl
ck9iamVjdChSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJTdHlsZSopOwogICAgIHZvaWQgcmVt
b3ZlUmVzb3VyY2VzRnJvbVJlbmRlck9iamVjdChSZW5kZXJPYmplY3QqKTsKIAotICAgIHR5cGVk
ZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBPd25QdHI8U1ZHUmVzb3VyY2VzPiA+IENh
Y2hlTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJPYmplY3QqLCBPd25QdHI8
U1ZHUmVzb3VyY2VzPj4gQ2FjaGVNYXA7CiAgICAgQ2FjaGVNYXAgbV9jYWNoZTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwCmlu
ZGV4IDJlMmYyODVkMWExYWM2ZmZmN2YyYzhkZjdlZmMxOTIyYjUzMDBhOGMuLmI0ZGU5Yjg1Nzg5
ZWQ4Zjg3NjJiMWQxMmFmNTNiZWY1NGU1YTI0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lk
IFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHMoY29u
c3QgU3RyaW5nJiBrZXksIGNvbgogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgVmVjdG9yPFJlZlB0cjxGcmFtZT4gPiBmcmFtZXM7CisgICAgVmVjdG9yPFJlZlB0cjxGcmFt
ZT4+IGZyYW1lczsKIAogICAgIC8vIFNlbmQgZXZlbnRzIG9ubHkgdG8gb3VyIHBhZ2UuCiAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBTdG9y
YWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50cyhjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZl
Y3RvcjxSZWZQdHI8RnJhbWU+ID4gZnJhbWVzOworICAgIFZlY3RvcjxSZWZQdHI8RnJhbWU+PiBm
cmFtZXM7CiAKICAgICAvLyBTZW5kIGV2ZW50cyB0byBldmVyeSBwYWdlLgogICAgIGNvbnN0IEhh
c2hTZXQ8UGFnZSo+JiBwYWdlcyA9IHBhZ2UtPmdyb3VwKCkucGFnZXMoKTsKQEAgLTc1LDcgKzc1
LDcgQEAgdm9pZCBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaExvY2FsU3RvcmFnZUV2
ZW50cyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QKICAgICBkaXNwYXRjaExvY2FsU3RvcmFnZUV2
ZW50c1RvRnJhbWVzKHBhZ2UtPmdyb3VwKCksIGZyYW1lcywga2V5LCBvbGRWYWx1ZSwgbmV3VmFs
dWUsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgc2VjdXJpdHlPcmlnaW4pOwogfQog
Ci12b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVu
dHNUb0ZyYW1lcyhQYWdlJiBwYWdlLCBjb25zdCBWZWN0b3I8UmVmUHRyPEZyYW1lPiA+JiBmcmFt
ZXMsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJp
bmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybCwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luKQordm9pZCBTdG9yYWdlRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFNlc3Npb25TdG9y
YWdlRXZlbnRzVG9GcmFtZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxGcmFtZT4+
JiBmcmFtZXMsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25z
dCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybCwgU2VjdXJpdHlPcmlnaW4qIHNl
Y3VyaXR5T3JpZ2luKQogewogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0
Y2hET01TdG9yYWdlRXZlbnQoa2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIFNlc3Npb25TdG9yYWdl
LCBzZWN1cml0eU9yaWdpbiwgJnBhZ2UpOwogCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgU3RvcmFn
ZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKFBh
Z2UmIHBhZ2UsIGNvCiAgICAgfQogfQogCi12b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRp
c3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMoUGFnZUdyb3VwJiBwYWdlR3JvdXAsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8RnJhbWU+ID4mIGZyYW1lcywgY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCit2b2lkIFN0b3JhZ2VFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMoUGFnZUdyb3Vw
JiBwYWdlR3JvdXAsIGNvbnN0IFZlY3RvcjxSZWZQdHI8RnJhbWU+PiYgZnJhbWVzLCBjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1
ZSwgY29uc3QgU3RyaW5nJiB1cmwsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKIHsK
ICAgICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMgPSBwYWdlR3JvdXAucGFnZXMoKTsKICAg
ICBmb3IgKEhhc2hTZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBhZ2VzLmJlZ2luKCks
IGVuZCA9IHBhZ2VzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oCmluZGV4IDUxNzY2MTI0ZGI1NzkwZTk2
NWJkNjFhZWNkZmI0YmQxNThmM2FiMTEuLjA1NmEyOTQ2YzA2NjdkNzBjZDZlYmVmNDJlNTRiYjQw
YTg4MDllYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50
RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlz
cGF0Y2hlci5oCkBAIC00NSw4ICs0NSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaXNw
YXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTZWN1cml0eU9yaWdpbiosIEZyYW1l
KiBzb3VyY2VGcmFtZSk7CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVu
dHMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmlu
ZyYgbmV3VmFsdWUsIFNlY3VyaXR5T3JpZ2luKiwgRnJhbWUqIHNvdXJjZUZyYW1lKTsKIAotICAg
IHN0YXRpYyB2b2lkIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQYWdlJiwg
Y29uc3QgVmVjdG9yPFJlZlB0cjxGcmFtZT4gPiYgZnJhbWVzLCBjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgY29uc3QgU3Ry
aW5nJiB1cmwsIFNlY3VyaXR5T3JpZ2luKik7Ci0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hMb2Nh
bFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQYWdlR3JvdXAmLCBjb25zdCBWZWN0b3I8UmVmUHRyPEZy
YW1lPiA+JiBmcmFtZXMsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVl
LCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcmIHVybCwgU2VjdXJpdHlPcmln
aW4qKTsKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFt
ZXMoUGFnZSYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8RnJhbWU+PiYgZnJhbWVzLCBjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwg
Y29uc3QgU3RyaW5nJiB1cmwsIFNlY3VyaXR5T3JpZ2luKik7CisgICAgc3RhdGljIHZvaWQgZGlz
cGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQYWdlR3JvdXAmLCBjb25zdCBWZWN0b3I8
UmVmUHRyPEZyYW1lPj4mIGZyYW1lcywgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsLCBTZWN1
cml0eU9yaWdpbiopOwogcHJpdmF0ZToKICAgICAvLyBEbyBub3QgaW5zdGFudGlhdGUuCiAgICAg
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IDFkYTU2NzBkNjg0MmE2OTUyNTE2NWUzNzdhZTBlMzll
OThjMmEzYTIuLjE2MTBkNmY1YWQ4NTBmN2ZlYjZhM2QyYWNmZDk2NzRjYzkyOTI3M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKQEAgLTYwLDcg
KzYwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9y
YWdlVHlwZSwgY29uc3QgU3RyaW5nJiBwYXRoLCB1bnNpZ25lZCBxdW90YSk7CiAKLSAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgUmVmUHRyPFN0b3JhZ2VBcmVhSW1w
bD4gPiBTdG9yYWdlQXJlYU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiwgUmVmUHRyPFN0b3JhZ2VBcmVhSW1wbD4+IFN0b3JhZ2VBcmVhTWFwOwogICAgIFN0
b3JhZ2VBcmVhTWFwIG1fc3RvcmFnZUFyZWFNYXA7CiAKICAgICBTdG9yYWdlVHlwZSBtX3N0b3Jh
Z2VUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVGhyZWFk
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaAppbmRleCA3ZWQ4ODg1
OGQzYzk0YTM0MzQ0YzM4Nzc0NWU5NThjNzk0N2ViYTc1Li5jM2U2NTM2ZmNhYzUzYzliZDcyMmNi
Y2VlNjdmNzY5YjE1YTQ3ODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUaHJlYWQu
aApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGVyZm9ybVRlcm1pbmF0ZSgp
OwogCiAgICAgVGhyZWFkSWRlbnRpZmllciBtX3RocmVhZElEOwotICAgIE1lc3NhZ2VRdWV1ZTxG
dW5jdGlvbjx2b2lkICgpPiA+IG1fcXVldWU7CisgICAgTWVzc2FnZVF1ZXVlPEZ1bmN0aW9uPHZv
aWQgKCk+PiBtX3F1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAppbmRleCBhODhhOGEwZmM3YWQ5YmFhMjcw
N2NjNzM1YjE3ZWQwMWJmZTc5YTRlLi5iOTYyNWU1MzdkOGQ5NDI2ZWFkNDIyOTUxMjZiMWZiYjA0
MmI0Nzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUcmFja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAt
MzM3LDcgKzMzNyw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNTZXRPcmlnaW5EZXRhaWxz
KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QKICAgICB9CiB9CiAKLXZvaWQg
U3RvcmFnZVRyYWNrZXI6Om9yaWdpbnMoVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPiYg
cmVzdWx0KQordm9pZCBTdG9yYWdlVHJhY2tlcjo6b3JpZ2lucyhWZWN0b3I8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4mIHJlc3VsdCkKIHsKICAgICBBU1NFUlQobV9pc0FjdGl2ZSk7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmgKaW5kZXggZmY5NzlkMjgwZDY1MmVk
MzY1NGEyZTUzNjc5Mjg4NGFjZDJhYTgzMC4uZGFkZmI0M2NkMWYzZjBlY2JhZTgzNzY0MDY3ZTli
OWVhYTE5OGI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlVHJh
Y2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuaApAQCAt
NTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVBbGxPcmlnaW5zKCk7CiAgICAg
dm9pZCBkZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKICAgICB2b2lkIGRlbGV0ZU9yaWdp
bldpdGhJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcik7Ci0gICAgdm9p
ZCBvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+ID4mIHJlc3VsdCk7CisgICAg
dm9pZCBvcmlnaW5zKFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgcmVzdWx0KTsKICAg
ICBsb25nIGxvbmcgZGlza1VzYWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CiAgICAgCiAg
ICAgdm9pZCBjYW5jZWxEZWxldGluZ09yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcAppbmRleCBiOGM4ZGExMTBh
OTU4YjQ4ZDc3MDhhNmQzMzQ3MDA0NTE2MzhiZGRhLi5lNTk1ZjM0ZWMwODVhNTk1ZDM2NzdjZWUy
NWRhNTdlYWFhNjBmYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRQYXRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmNwcApA
QCAtNTAsNyArNTAsNyBAQCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQ
YXRoQW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdAogICAgIE93blB0cjxTVkdQ
YXRoQnl0ZVN0cmVhbT4gYnl0ZVN0cmVhbSA9IFNWR1BhdGhCeXRlU3RyZWFtOjpjcmVhdGUoKTsK
ICAgICBidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVNWR1BhdGhTZWdMaXN0KGJhc2VWYWx1ZSwg
Ynl0ZVN0cmVhbS5nZXQoKSwgVW5hbHRlcmVkUGFyc2luZyk7CiAKLSAgICBWZWN0b3I8UmVmUHRy
PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+ID4gcmVzdWx0OworICAgIFZl
Y3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4+IHJlc3Vs
dDsKIAogICAgIFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gYW5pbWF0ZWRUeXBlcy5lbmQoKTsKICAgICBmb3IgKFNWR0VsZW1lbnRBbmltYXRlZFBy
b3BlcnR5TGlzdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhbmltYXRlZFR5cGVzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFR5cGVBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5p
bWF0b3IuY3BwCmluZGV4IGYyYjU5OGU3N2U1ZDE5NTc2ZDcxM2Y4MzVlNWI5YzYyZTVlOGFmZjUu
LmUxOWIxZTE2ZWNlNTVlYTVhMGE3NTllNTVjNTk1OTNmYmExOTYyOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmNwcApAQCAtMzMsNyArMzMsNyBA
QCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0aWVzOjpTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
aWVzKCkKICAgICA6IGVsZW1lbnQoMCkKIHsgfQogCi1TVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
aWVzOjpTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0aWVzKFNWR0VsZW1lbnQqIGVsZW1lbnQsIFZl
Y3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gPiYgcHJvcGVydGllcykKK1NWR0VsZW1l
bnRBbmltYXRlZFByb3BlcnRpZXM6OlNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnRpZXMoU1ZHRWxl
bWVudCogZWxlbWVudCwgVmVjdG9yPFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5Pj4mIHByb3Bl
cnRpZXMpCiAgICAgOiBlbGVtZW50KGVsZW1lbnQpCiAgICAgLCBwcm9wZXJ0aWVzKHByb3BlcnRp
ZXMpCiB7IH0KQEAgLTY3LDcgKzY3LDcgQEAgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0
IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yOjpmaW5kQW5pbWF0ZWRQcm9wZXJ0aWVzRm8KIAogICAg
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCBwcm9wZXJ0aWVzQnlJbnN0YW5jZTsKIAot
ICAgIFZlY3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gPiB0YXJnZXRQcm9wZXJ0aWVz
OworICAgIFZlY3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4+IHRhcmdldFByb3BlcnRp
ZXM7CiAgICAgdGFyZ2V0RWxlbWVudC0+bG9jYWxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkuYW5p
bWF0ZWRQcm9wZXJ0aWVzRm9yQXR0cmlidXRlKHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUs
IHRhcmdldFByb3BlcnRpZXMpOwogCiAgICAgaWYgKCFTVkdBbmltYXRlZFR5cGU6OnN1cHBvcnRz
QW5pbVZhbChtX3R5cGUpKQpAQCAtODMsNyArODMsNyBAQCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I6OmZpbmRBbmltYXRlZFByb3BlcnRpZXNG
bwogICAgICAgICBpZiAoIXNoYWRvd1RyZWVFbGVtZW50KQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiA+IGluc3RhbmNl
UHJvcGVydGllczsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5Pj4g
aW5zdGFuY2VQcm9wZXJ0aWVzOwogICAgICAgICB0YXJnZXRFbGVtZW50LT5sb2NhbEF0dHJpYnV0
ZVRvUHJvcGVydHlNYXAoKS5hbmltYXRlZFByb3BlcnRpZXNGb3JBdHRyaWJ1dGUoc2hhZG93VHJl
ZUVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGluc3RhbmNlUHJvcGVydGllcyk7CiAKICAgICAgICAg
U1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydGllcyBpbnN0YW5jZVByb3BlcnRpZXNQYWlyKHNoYWRv
d1RyZWVFbGVtZW50LCBpbnN0YW5jZVByb3BlcnRpZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaAppbmRleCBmMzcxMTE4MWVkOTE2MjA4YWE0NTJlOTlh
ZDg0ODc4MzhhZTYyNDBmLi5hNGQ5YTRjYWRjODc2YjY3MTcyNzkxZmYxNzRlZTM4MzEyMmU2ODhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaApAQCAt
MzIsMTAgKzMyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0aWVzIHsKICAgICBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0aWVzKCk7CiAK
LSAgICBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0aWVzKFNWR0VsZW1lbnQqLCBWZWN0b3I8UmVm
UHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+ID4mKTsKKyAgICBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0aWVzKFNWR0VsZW1lbnQqLCBWZWN0b3I8UmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+PiYp
OwogCiAgICAgU1ZHRWxlbWVudCogZWxlbWVudDsKLSAgICBWZWN0b3I8UmVmUHRyPFNWR0FuaW1h
dGVkUHJvcGVydHk+ID4gcHJvcGVydGllczsKKyAgICBWZWN0b3I8UmVmUHRyPFNWR0FuaW1hdGVk
UHJvcGVydHk+PiBwcm9wZXJ0aWVzOwogfTsKIHR5cGVkZWYgVmVjdG9yPFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnRpZXM+IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAppbmRleCBiZTRjYjgyMzNm
NGJkNzA3YjQxZTJhYzc0NGU3ZjE0NTY4ZjU2NWNiLi5iMTQxZjQwZmNlMDdkMTc0NWRmYjI2NTQ4
MDFjOGI2OWZkM2Y2Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1l
bnRFeHRlbnNpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRl
bnNpb25zLmNwcApAQCAtOTUsMTAgKzk1LDEwIEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25z
OjpzdGFydEFuaW1hdGlvbnMoKQogICAgIC8vIHN0YXJ0aW5nIGFuaW1hdGlvbnMgZm9yIGEgZG9j
dW1lbnQgd2lsbCBkbyB0aGlzICJsYXRjaGluZyIKICAgICAvLyBGSVhNRTogV2UgaG9sZCBhIHJl
ZiBwb2ludGVycyB0byBwcmV2ZW50IGEgc2hhZG93IHRyZWUgZnJvbSBnZXR0aW5nIHJlbW92ZWQg
b3V0IGZyb20gdW5kZXJuZWF0aCB1cy4KICAgICAvLyBJbiB0aGUgZnV0dXJlIHdlIHNob3VsZCBy
ZWZhY3RvciB0aGUgdXNlLWVsZW1lbnQgdG8gYXZvaWQgdGhpcy4gU2VlIGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzUzNzA0Ci0gICAgVmVjdG9yPFJlZlB0cjxTVkdTVkdFbGVtZW50PiA+IHRpbWVDb250
YWluZXJzOworICAgIFZlY3RvcjxSZWZQdHI8U1ZHU1ZHRWxlbWVudD4+IHRpbWVDb250YWluZXJz
OwogICAgIHRpbWVDb250YWluZXJzLmFwcGVuZFJhbmdlKG1fdGltZUNvbnRhaW5lcnMuYmVnaW4o
KSwgbV90aW1lQ29udGFpbmVycy5lbmQoKSk7Ci0gICAgVmVjdG9yPFJlZlB0cjxTVkdTVkdFbGVt
ZW50PiA+OjppdGVyYXRvciBlbmQgPSB0aW1lQ29udGFpbmVycy5lbmQoKTsKLSAgICBmb3IgKFZl
Y3RvcjxSZWZQdHI8U1ZHU1ZHRWxlbWVudD4gPjo6aXRlcmF0b3IgaXRyID0gdGltZUNvbnRhaW5l
cnMuYmVnaW4oKTsgaXRyICE9IGVuZDsgKytpdHIpCisgICAgVmVjdG9yPFJlZlB0cjxTVkdTVkdF
bGVtZW50Pj46Oml0ZXJhdG9yIGVuZCA9IHRpbWVDb250YWluZXJzLmVuZCgpOworICAgIGZvciAo
VmVjdG9yPFJlZlB0cjxTVkdTVkdFbGVtZW50Pj46Oml0ZXJhdG9yIGl0ciA9IHRpbWVDb250YWlu
ZXJzLmJlZ2luKCk7IGl0ciAhPSBlbmQ7ICsraXRyKQogICAgICAgICAoKml0ciktPnRpbWVDb250
YWluZXIoKS0+YmVnaW4oKTsKIH0KICAgICAKQEAgLTExOCwxMSArMTE4LDExIEBAIHZvaWQgU1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjp1bnBhdXNlQW5pbWF0aW9ucygpCiAKIHZvaWQgU1ZHRG9jdW1l
bnRFeHRlbnNpb25zOjpkaXNwYXRjaFNWR0xvYWRFdmVudFRvT3V0ZXJtb3N0U1ZHRWxlbWVudHMo
KQogewotICAgIFZlY3RvcjxSZWZQdHI8U1ZHU1ZHRWxlbWVudD4gPiB0aW1lQ29udGFpbmVyczsK
KyAgICBWZWN0b3I8UmVmUHRyPFNWR1NWR0VsZW1lbnQ+PiB0aW1lQ29udGFpbmVyczsKICAgICB0
aW1lQ29udGFpbmVycy5hcHBlbmRSYW5nZShtX3RpbWVDb250YWluZXJzLmJlZ2luKCksIG1fdGlt
ZUNvbnRhaW5lcnMuZW5kKCkpOwogCi0gICAgVmVjdG9yPFJlZlB0cjxTVkdTVkdFbGVtZW50PiA+
OjppdGVyYXRvciBlbmQgPSB0aW1lQ29udGFpbmVycy5lbmQoKTsKLSAgICBmb3IgKFZlY3RvcjxS
ZWZQdHI8U1ZHU1ZHRWxlbWVudD4gPjo6aXRlcmF0b3IgaXQgPSB0aW1lQ29udGFpbmVycy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBWZWN0b3I8UmVmUHRyPFNWR1NWR0VsZW1lbnQ+
Pjo6aXRlcmF0b3IgZW5kID0gdGltZUNvbnRhaW5lcnMuZW5kKCk7CisgICAgZm9yIChWZWN0b3I8
UmVmUHRyPFNWR1NWR0VsZW1lbnQ+Pjo6aXRlcmF0b3IgaXQgPSB0aW1lQ29udGFpbmVycy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgU1ZHU1ZHRWxlbWVudCogb3V0ZXJTVkcg
PSAoKml0KS5nZXQoKTsKICAgICAgICAgaWYgKCFvdXRlclNWRy0+aXNPdXRlcm1vc3RTVkdTVkdF
bGVtZW50KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lk
IFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6YWRkUGVuZGluZ1Jlc291cmNlKGNvbnN0IEF0b21pY1N0
cmluZyYgaWQsIEVsZW1lbnQqCiAgICAgaWYgKGlkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxTVkdQZW5kaW5nRWxlbWVudHM+
ID46OkFkZFJlc3VsdCByZXN1bHQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuYWRkKGlkLCBudWxscHRy
KTsKKyAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgT3duUHRyPFNWR1BlbmRpbmdFbGVtZW50cz4+
OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmFkZChpZCwgbnVsbHB0cik7
CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlID0gYWRvcHRQdHIobmV3IFNWR1BlbmRpbmdFbGVtZW50cyk7CiAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS0+YWRkKGVsZW1lbnQpOwpAQCAtMTc2LDggKzE3Niw4IEBAIGJvb2wgU1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjppc0VsZW1lbnRQZW5kaW5nUmVzb3VyY2VzKEVsZW1lbnQqIGVsZW1l
bnQpIGNvbnN0CiAKICAgICBBU1NFUlQoZWxlbWVudCk7CiAKLSAgICBIYXNoTWFwPEF0b21pY1N0
cmluZywgT3duUHRyPFNWR1BlbmRpbmdFbGVtZW50cz4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bV9wZW5kaW5nUmVzb3VyY2VzLmVuZCgpOwotICAgIGZvciAoSGFzaE1hcDxBdG9taWNTdHJpbmcs
IE93blB0cjxTVkdQZW5kaW5nRWxlbWVudHM+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wZW5k
aW5nUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIEhhc2hNYXA8QXRv
bWljU3RyaW5nLCBPd25QdHI8U1ZHUGVuZGluZ0VsZW1lbnRzPj46OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IG1fcGVuZGluZ1Jlc291cmNlcy5lbmQoKTsKKyAgICBmb3IgKEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBPd25QdHI8U1ZHUGVuZGluZ0VsZW1lbnRzPj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9w
ZW5kaW5nUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBTVkdQ
ZW5kaW5nRWxlbWVudHMqIGVsZW1lbnRzID0gaXQtPnZhbHVlLmdldCgpOwogICAgICAgICBBU1NF
UlQoZWxlbWVudHMpOwogCkBAIC0yMTAsOCArMjEwLDggQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVu
c2lvbnM6OnJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlcyhFbGVtZW50KiBlbGVtZW50
KQogICAgIC8vIFJlbW92ZSB0aGUgZWxlbWVudCBmcm9tIHBlbmRpbmcgcmVzb3VyY2VzLgogICAg
IGlmICghbV9wZW5kaW5nUmVzb3VyY2VzLmlzRW1wdHkoKSAmJiBlbGVtZW50LT5oYXNQZW5kaW5n
UmVzb3VyY2VzKCkpIHsKICAgICAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gdG9CZVJlbW92ZWQ7
Ci0gICAgICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBPd25QdHI8U1ZHUGVuZGluZ0VsZW1lbnRz
PiA+OjppdGVyYXRvciBlbmQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuZW5kKCk7Ci0gICAgICAgIGZv
ciAoSGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxTVkdQZW5kaW5nRWxlbWVudHM+ID46Oml0
ZXJhdG9yIGl0ID0gbV9wZW5kaW5nUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgICAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgT3duUHRyPFNWR1BlbmRpbmdFbGVtZW50
cz4+OjppdGVyYXRvciBlbmQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuZW5kKCk7CisgICAgICAgIGZv
ciAoSGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxTVkdQZW5kaW5nRWxlbWVudHM+Pjo6aXRl
cmF0b3IgaXQgPSBtX3BlbmRpbmdSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CiAgICAgICAgICAgICBTVkdQZW5kaW5nRWxlbWVudHMqIGVsZW1lbnRzID0gaXQtPnZhbHVlLmdl
dCgpOwogICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnRzKTsKICAgICAgICAgICAgIEFTU0VSVCgh
ZWxlbWVudHMtPmlzRW1wdHkoKSk7CkBAIC0yMzIsOCArMjMyLDggQEAgdm9pZCBTVkdEb2N1bWVu
dEV4dGVuc2lvbnM6OnJlbW92ZUVsZW1lbnRGcm9tUGVuZGluZ1Jlc291cmNlcyhFbGVtZW50KiBl
bGVtZW50KQogICAgIC8vIFJlbW92ZSB0aGUgZWxlbWVudCBmcm9tIHBlbmRpbmcgcmVzb3VyY2Vz
IHRoYXQgd2VyZSBzY2hlZHVsZWQgZm9yIHJlbW92YWwuCiAgICAgaWYgKCFtX3BlbmRpbmdSZXNv
dXJjZXNGb3JSZW1vdmFsLmlzRW1wdHkoKSkgewogICAgICAgICBWZWN0b3I8QXRvbWljU3RyaW5n
PiB0b0JlUmVtb3ZlZDsKLSAgICAgICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxTVkdQ
ZW5kaW5nRWxlbWVudHM+ID46Oml0ZXJhdG9yIGVuZCA9IG1fcGVuZGluZ1Jlc291cmNlc0ZvclJl
bW92YWwuZW5kKCk7Ci0gICAgICAgIGZvciAoSGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxT
VkdQZW5kaW5nRWxlbWVudHM+ID46Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nUmVzb3VyY2VzRm9y
UmVtb3ZhbC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIE93blB0cjxTVkdQZW5kaW5nRWxlbWVudHM+Pjo6aXRlcmF0b3IgZW5kID0gbV9w
ZW5kaW5nUmVzb3VyY2VzRm9yUmVtb3ZhbC5lbmQoKTsKKyAgICAgICAgZm9yIChIYXNoTWFwPEF0
b21pY1N0cmluZywgT3duUHRyPFNWR1BlbmRpbmdFbGVtZW50cz4+OjppdGVyYXRvciBpdCA9IG1f
cGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAg
ICAgICAgICAgICBTVkdQZW5kaW5nRWxlbWVudHMqIGVsZW1lbnRzID0gaXQtPnZhbHVlLmdldCgp
OwogICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnRzKTsKICAgICAgICAgICAgIEFTU0VSVCghZWxl
bWVudHMtPmlzRW1wdHkoKSk7CkBAIC0yOTcsNyArMjk3LDcgQEAgRWxlbWVudCogU1ZHRG9jdW1l
bnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JSZW1vdmFs
KGNvbnMKIEhhc2hTZXQ8U1ZHRWxlbWVudCo+KiBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnNldE9m
RWxlbWVudHNSZWZlcmVuY2luZ1RhcmdldChTVkdFbGVtZW50KiByZWZlcmVuY2VkRWxlbWVudCkg
Y29uc3QKIHsKICAgICBBU1NFUlQocmVmZXJlbmNlZEVsZW1lbnQpOwotICAgIGNvbnN0IEhhc2hN
YXA8U1ZHRWxlbWVudCosIE93blB0cjxIYXNoU2V0PFNWR0VsZW1lbnQqPiA+ID46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbV9lbGVtZW50RGVwZW5kZW5jaWVzLmZpbmQocmVmZXJlbmNlZEVsZW1lbnQp
OworICAgIGNvbnN0IEhhc2hNYXA8U1ZHRWxlbWVudCosIE93blB0cjxIYXNoU2V0PFNWR0VsZW1l
bnQqPj4+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZWxlbWVudERlcGVuZGVuY2llcy5maW5kKHJl
ZmVyZW5jZWRFbGVtZW50KTsKICAgICBpZiAoaXQgPT0gbV9lbGVtZW50RGVwZW5kZW5jaWVzLmVu
ZCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOwpAQCAt
MzEzLDcgKzMxMyw3IEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjphZGRFbGVtZW50UmVm
ZXJlbmNpbmdUYXJnZXQoU1ZHRWxlbWVudCogcmVmZXJlbmNpbmdFCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBPd25QdHI8SGFzaFNldDxTVkdFbGVtZW50Kj4gPiBlbGVtZW50cyA9IGFk
b3B0UHRyKG5ldyBIYXNoU2V0PFNWR0VsZW1lbnQqPik7CisgICAgT3duUHRyPEhhc2hTZXQ8U1ZH
RWxlbWVudCo+PiBlbGVtZW50cyA9IGFkb3B0UHRyKG5ldyBIYXNoU2V0PFNWR0VsZW1lbnQqPik7
CiAgICAgZWxlbWVudHMtPmFkZChyZWZlcmVuY2luZ0VsZW1lbnQpOwogICAgIG1fZWxlbWVudERl
cGVuZGVuY2llcy5zZXQocmVmZXJlbmNlZEVsZW1lbnQsIGVsZW1lbnRzLnJlbGVhc2UoKSk7CiB9
CkBAIC0zMzksNyArMzM5LDcgQEAgdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUFs
bFRhcmdldFJlZmVyZW5jZXNGb3JFbGVtZW50KFNWR0VsZW1lbnQqIHJlZmUKIHZvaWQgU1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjpyZWJ1aWxkQWxsRWxlbWVudFJlZmVyZW5jZXNGb3JUYXJnZXQoU1ZH
RWxlbWVudCogcmVmZXJlbmNlZEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKHJlZmVyZW5jZWRFbGVt
ZW50KTsKLSAgICBIYXNoTWFwPFNWR0VsZW1lbnQqLCBPd25QdHI8SGFzaFNldDxTVkdFbGVtZW50
Kj4gPiA+OjppdGVyYXRvciBpdCA9IG1fZWxlbWVudERlcGVuZGVuY2llcy5maW5kKHJlZmVyZW5j
ZWRFbGVtZW50KTsKKyAgICBIYXNoTWFwPFNWR0VsZW1lbnQqLCBPd25QdHI8SGFzaFNldDxTVkdF
bGVtZW50Kj4+Pjo6aXRlcmF0b3IgaXQgPSBtX2VsZW1lbnREZXBlbmRlbmNpZXMuZmluZChyZWZl
cmVuY2VkRWxlbWVudCk7CiAgICAgaWYgKGl0ID09IG1fZWxlbWVudERlcGVuZGVuY2llcy5lbmQo
KSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChpdC0+a2V5ID09IHJlZmVyZW5jZWRFbGVt
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaAppbmRleCBh
NGQ4YmY2YjA3MGY2Mzc4NzdjNmJiOGU2NzJmOWRkZTk0YWZhNGQzLi41ZDBjYjIzZGU5Y2RmZjIx
ZDJhMDhjOThjYmY0NDZmYWU0Y2JmOGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5oCkBAIC04NCw5ICs4NCw5IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxT
VkdGb250RmFjZUVsZW1lbnQqPiBtX3N2Z0ZvbnRGYWNlRWxlbWVudHM7CiAjZW5kaWYKICAgICBI
YXNoTWFwPEF0b21pY1N0cmluZywgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqPiBtX3Jlc291
cmNlczsKLSAgICBIYXNoTWFwPEF0b21pY1N0cmluZywgT3duUHRyPFNWR1BlbmRpbmdFbGVtZW50
cz4gPiBtX3BlbmRpbmdSZXNvdXJjZXM7IC8vIFJlc291cmNlcyB0aGF0IGFyZSBwZW5kaW5nLgot
ICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBPd25QdHI8U1ZHUGVuZGluZ0VsZW1lbnRzPiA+IG1f
cGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWw7IC8vIFJlc291cmNlcyB0aGF0IGFyZSBwZW5kaW5n
IGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwuCi0gICAgSGFzaE1hcDxTVkdFbGVtZW50KiwgT3du
UHRyPEhhc2hTZXQ8U1ZHRWxlbWVudCo+ID4gPiBtX2VsZW1lbnREZXBlbmRlbmNpZXM7CisgICAg
SGFzaE1hcDxBdG9taWNTdHJpbmcsIE93blB0cjxTVkdQZW5kaW5nRWxlbWVudHM+PiBtX3BlbmRp
bmdSZXNvdXJjZXM7IC8vIFJlc291cmNlcyB0aGF0IGFyZSBwZW5kaW5nLgorICAgIEhhc2hNYXA8
QXRvbWljU3RyaW5nLCBPd25QdHI8U1ZHUGVuZGluZ0VsZW1lbnRzPj4gbV9wZW5kaW5nUmVzb3Vy
Y2VzRm9yUmVtb3ZhbDsgLy8gUmVzb3VyY2VzIHRoYXQgYXJlIHBlbmRpbmcgYW5kIHNjaGVkdWxl
ZCBmb3IgcmVtb3ZhbC4KKyAgICBIYXNoTWFwPFNWR0VsZW1lbnQqLCBPd25QdHI8SGFzaFNldDxT
VkdFbGVtZW50Kj4+PiBtX2VsZW1lbnREZXBlbmRlbmNpZXM7CiAgICAgT3duUHRyPFNWR1Jlc291
cmNlc0NhY2hlPiBtX3Jlc291cmNlc0NhY2hlOwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RWxlbWVudC5oCmluZGV4IGU4MjM0YTg2OTAwNmY2MjYwNjIzNDg1N2VmN2FmMzdkOGUzYWQ0
ZTUuLmU2YzU4MGY2ZTdmOGY4ZDRkMWJmNTQ1ZTc2MTFiMjU0ZDEwODk2N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb250RWxlbWVudC5oCkBAIC01Myw4ICs1Myw4IEBAIHN0cnVjdCBTVkdLZXJuaW5n
UGFpciA6IHB1YmxpYyBTVkdLZXJuaW5nIHsKIHR5cGVkZWYgVmVjdG9yPFNWR0tlcm5pbmc+IFNW
R0tlcm5pbmdWZWN0b3I7CiAKIHN0cnVjdCBTVkdLZXJuaW5nTWFwIHsKLSAgICBIYXNoTWFwPFN0
cmluZywgT3duUHRyPFNWR0tlcm5pbmdWZWN0b3I+ID4gdW5pY29kZU1hcDsKLSAgICBIYXNoTWFw
PFN0cmluZywgT3duUHRyPFNWR0tlcm5pbmdWZWN0b3I+ID4gZ2x5cGhNYXA7CisgICAgSGFzaE1h
cDxTdHJpbmcsIE93blB0cjxTVkdLZXJuaW5nVmVjdG9yPj4gdW5pY29kZU1hcDsKKyAgICBIYXNo
TWFwPFN0cmluZywgT3duUHRyPFNWR0tlcm5pbmdWZWN0b3I+PiBnbHlwaE1hcDsKICAgICBWZWN0
b3I8U1ZHS2VybmluZ1BhaXI+IGtlcm5pbmdVbmljb2RlUmFuZ2VNYXA7CiAKICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiB1bmljb2RlTWFwLmlzRW1wdHkoKSAmJiBnbHlwaE1hcC5p
c0VtcHR5KCkgJiYga2VybmluZ1VuaWNvZGVSYW5nZU1hcC5pc0VtcHR5KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaE1hcC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dseXBoTWFwLmgKaW5kZXggMjJhZTE1MGRlZTQ4NmFlZWZjZTA1MjFlY2E0MWYyZDkyOWI5
ZmM4Ni4uNDA3NTkyZDU2YTAzOTExNzVjZjlhODBjMTdhMDdlZmZhYzAyZTMwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dseXBoTWFwLmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
c3RydWN0IEdseXBoTWFwTm9kZTsKIGNsYXNzIFNWR0ZvbnREYXRhOwogCi10eXBlZGVmIEhhc2hN
YXA8VUNoYXIzMiwgUmVmUHRyPEdseXBoTWFwTm9kZT4gPiBHbHlwaE1hcExheWVyOwordHlwZWRl
ZiBIYXNoTWFwPFVDaGFyMzIsIFJlZlB0cjxHbHlwaE1hcE5vZGU+PiBHbHlwaE1hcExheWVyOwog
CiBzdHJ1Y3QgR2x5cGhNYXBOb2RlIDogcHVibGljIFJlZkNvdW50ZWQ8R2x5cGhNYXBOb2RlPiB7
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCmluZGV4IGM2
MTQwZDIyNGNkNjAyYWNjMDRkYzU4YTk3NGNlODIzYTc1ZDUwZGMuLjFhYmRkZWMwYWM0ZDRjZDE0
YjA2MzA3YTM1YmQxOWUwMzQ2NGQ4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNYXJrZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxl
bWVudC5jcHAKQEAgLTI1MCwxMCArMjUwLDEwIEBAIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eT4gU1ZHTWFya2VyRWxlbWVudDo6bG9va3VwT3JDcmVhdGVPcmllbnRUeXBlV3JhcHBlCiAg
ICAgICAgICAgIChvd25lclR5cGUsIG9yaWVudFR5cGVQcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBl
LT5tX29yaWVudFR5cGUudmFsdWUpOwogfQogICAKLVBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvblByb3BlcnR5VGVhck9mZjxTVkdNYXJrZXJPcmllbnRUeXBlPiA+IFNWR01hcmtlckVs
ZW1lbnQ6Om9yaWVudFR5cGVBbmltYXRlZCgpCitQYXNzUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVy
YXRpb25Qcm9wZXJ0eVRlYXJPZmY8U1ZHTWFya2VyT3JpZW50VHlwZT4+IFNWR01hcmtlckVsZW1l
bnQ6Om9yaWVudFR5cGVBbmltYXRlZCgpCiB7CiAgICAgbV9vcmllbnRUeXBlLnNob3VsZFN5bmNo
cm9uaXplID0gdHJ1ZTsKLSAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxTVkdBbmltYXRl
ZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmPFNWR01hcmtlck9yaWVudFR5cGU+ID4obG9va3Vw
T3JDcmVhdGVPcmllbnRUeXBlV3JhcHBlcih0aGlzKSk7CisgICAgcmV0dXJuIHN0YXRpY19wb2lu
dGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZjxTVkdNYXJrZXJP
cmllbnRUeXBlPj4obG9va3VwT3JDcmVhdGVPcmllbnRUeXBlV3JhcHBlcih0aGlzKSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCmluZGV4IGM4YTk3NmIzMzI4MDA1
Mzg0MDEyOGZiNjMyZTE0NjMzMWFjYTQzNTkuLjYxYjVhNjNkMTI2Y2YyYTM0MDcwOTY3Yjc5NWIz
N2ZkMTlhNGE1ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaApAQCAtMTU5
LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICBTVkdNYXJrZXJPcmllbnRUeXBlJiBvcmllbnRUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRUeXBlLnZhbHVlOyB9CiAgICAgU1ZHTWFya2VyT3Jp
ZW50VHlwZSYgb3JpZW50VHlwZUJhc2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50VHlw
ZS52YWx1ZTsgfQogICAgIHZvaWQgc2V0T3JpZW50VHlwZUJhc2VWYWx1ZShjb25zdCBTVkdNYXJr
ZXJPcmllbnRUeXBlJiB0eXBlKSB7IG1fb3JpZW50VHlwZS52YWx1ZSA9IHR5cGU7IH0KLSAgICBQ
YXNzUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8U1ZHTWFya2Vy
T3JpZW50VHlwZT4gPiBvcmllbnRUeXBlQW5pbWF0ZWQoKTsKKyAgICBQYXNzUmVmUHRyPFNWR0Fu
aW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8U1ZHTWFya2VyT3JpZW50VHlwZT4+IG9y
aWVudFR5cGVBbmltYXRlZCgpOwogCiBwcml2YXRlOgogICAgIG11dGFibGUgU1ZHU3luY2hyb25p
emFibGVBbmltYXRlZFByb3BlcnR5PFNWR01hcmtlck9yaWVudFR5cGU+IG1fb3JpZW50VHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmgKaW5kZXggMDU4YzA4MDYzMTA2ZTQ2N2FiNThk
MjFjYTU0NDNlNWY4YmFiOThhZi4uNTUzZWExMTVlYTI1NDVkN2UzYmUyYTQxMzMyNDMxOTQ3ZGJl
M2M4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmgKQEAgLTMyLDcgKzMyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdFbGVtZW50OwogCi1jbGFzcyBTVkdQYXRo
U2VnTGlzdCA6IHB1YmxpYyBWZWN0b3I8UmVmUHRyPFNWR1BhdGhTZWc+ID4geworY2xhc3MgU1ZH
UGF0aFNlZ0xpc3QgOiBwdWJsaWMgVmVjdG9yPFJlZlB0cjxTVkdQYXRoU2VnPj4gewogcHVibGlj
OgogICAgIFNWR1BhdGhTZWdMaXN0KFNWR1BhdGhTZWdSb2xlIHJvbGUpCiAgICAgICAgIDogbV9y
b2xlKHJvbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxU
aW1lQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29u
dGFpbmVyLmgKaW5kZXggY2E1ODNhNmQ4NjU0MzkwMTZiNTIxNzZmNjdlNWZlMzFkYzc3ZjQxOC4u
Y2ViYmRiZTM3NjU4YjMzMzgyYmY1Y2M3MTZmNGExZDkxYmU0ZGU0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNvbnRhaW5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuaApAQCAtODcsNyArODcs
NyBAQCBwcml2YXRlOgogCiAgICAgdHlwZWRlZiBwYWlyPFNWR0VsZW1lbnQqLCBRdWFsaWZpZWRO
YW1lPiBFbGVtZW50QXR0cmlidXRlUGFpcjsKICAgICB0eXBlZGVmIFZlY3RvcjxTVkdTTUlMRWxl
bWVudCo+IEFuaW1hdGlvbnNWZWN0b3I7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPEVsZW1lbnRBdHRy
aWJ1dGVQYWlyLCBPd25QdHI8QW5pbWF0aW9uc1ZlY3Rvcj4gPiBHcm91cGVkQW5pbWF0aW9uc01h
cDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8RWxlbWVudEF0dHJpYnV0ZVBhaXIsIE93blB0cjxBbmlt
YXRpb25zVmVjdG9yPj4gR3JvdXBlZEFuaW1hdGlvbnNNYXA7CiAgICAgR3JvdXBlZEFuaW1hdGlv
bnNNYXAgbV9zY2hlZHVsZWRBbmltYXRpb25zOwogCiAgICAgU1ZHU1ZHRWxlbWVudCogbV9vd25l
clNWR0VsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2VDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2FjaGUu
aAppbmRleCBlYmY1MDE2MTk4ZmI5MTdmYzMzMzJmNzIxMTg1NTQ4YjY5ZTk3NjFhLi45NzgyYTZj
MTA3Yjk3ZWY2YzYzMDAxZWFlZDhkNTg0ZmQ0MDBhNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZUNhY2hlLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBTVkdJbWFnZUNhY2hlKFNWR0ltYWdlKik7CiAKLSAgICB0eXBlZGVmIEhhc2hN
YXA8Y29uc3QgQ2FjaGVkSW1hZ2VDbGllbnQqLCBSZWZQdHI8U1ZHSW1hZ2VGb3JDb250YWluZXI+
ID4gSW1hZ2VGb3JDb250YWluZXJNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IENhY2hl
ZEltYWdlQ2xpZW50KiwgUmVmUHRyPFNWR0ltYWdlRm9yQ29udGFpbmVyPj4gSW1hZ2VGb3JDb250
YWluZXJNYXA7CiAKICAgICBTVkdJbWFnZSogbV9zdmdJbWFnZTsKICAgICBJbWFnZUZvckNvbnRh
aW5lck1hcCBtX2ltYWdlRm9yQ29udGFpbmVyTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oCmluZGV4IGYyZWI0NjBk
Zjc5OTRjZGQ4YjYwZjBhMDgxYzc5NzUxYjA4YjhkMDcuLmE3ZmQyNzNhYWNiZDVkZGE3MmM4Mjcx
NGYzYmI1ZTNkZTIwNmRkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmgKQEAgLTY1LDEzICs2NSwxMyBAQCBwcml2
YXRlOgogCiAgICAgaW5saW5lIHZvaWQgYWRkQnVpbHRpbkVmZmVjdHMoKQogICAgIHsKLSAgICAg
ICAgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+ID46Oml0ZXJhdG9y
IGVuZCA9IG1fYnVpbHRpbkVmZmVjdHMuZW5kKCk7Ci0gICAgICAgIGZvciAoSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+ID46Oml0ZXJhdG9yIGl0ZXJhdG9yID0gbV9i
dWlsdGluRWZmZWN0cy5iZWdpbigpOyBpdGVyYXRvciAhPSBlbmQ7ICsraXRlcmF0b3IpCisgICAg
ICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBSZWZQdHI8RmlsdGVyRWZmZWN0Pj46Oml0ZXJhdG9y
IGVuZCA9IG1fYnVpbHRpbkVmZmVjdHMuZW5kKCk7CisgICAgICAgIGZvciAoSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+Pjo6aXRlcmF0b3IgaXRlcmF0b3IgPSBtX2J1
aWx0aW5FZmZlY3RzLmJlZ2luKCk7IGl0ZXJhdG9yICE9IGVuZDsgKytpdGVyYXRvcikKICAgICAg
ICAgICAgICBtX2VmZmVjdFJlZmVyZW5jZXMuYWRkKGl0ZXJhdG9yLT52YWx1ZSwgRmlsdGVyRWZm
ZWN0U2V0KCkpOwogICAgIH0KIAotICAgIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBSZWZQdHI8Rmls
dGVyRWZmZWN0PiA+IG1fYnVpbHRpbkVmZmVjdHM7Ci0gICAgSGFzaE1hcDxBdG9taWNTdHJpbmcs
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+ID4gbV9uYW1lZEVmZmVjdHM7CisgICAgSGFzaE1hcDxBdG9t
aWNTdHJpbmcsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+PiBtX2J1aWx0aW5FZmZlY3RzOworICAgIEhh
c2hNYXA8QXRvbWljU3RyaW5nLCBSZWZQdHI8RmlsdGVyRWZmZWN0Pj4gbV9uYW1lZEVmZmVjdHM7
CiAgICAgLy8gVGhlIHZhbHVlIGlzIGEgbGlzdCwgd2hpY2ggY29udGFpbnMgdGhvc2UgZmlsdGVy
IGVmZmVjdHMsCiAgICAgLy8gd2hpY2ggZGVwZW5kcyBvbiB0aGUga2V5IGZpbHRlciBlZmZlY3Qu
CiAgICAgSGFzaE1hcDxSZWZQdHI8RmlsdGVyRWZmZWN0PiwgRmlsdGVyRWZmZWN0U2V0PiBtX2Vm
ZmVjdFJlZmVyZW5jZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmgK
aW5kZXggMjhhYWFhNDczY2IzNmE4YTIzNDA4YzVhMWRmNzdiMWRkZDAwMzczZS4uY2Q2MzQ3Y2Fk
ZTE1Y2ZmOGJjYzI5OWQyMzRhZmI3MjVlOTVlZTRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkRW51bWVyYXRp
b25Qcm9wZXJ0eVRlYXJPZmYuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNW
R0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmPHVuc2lnbmVkPjo6c2V0QmFzZVZhbChwcm9w
ZXJ0eSwgZWMpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkRW51
bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8RW51bVR5cGU+ID4gY3JlYXRlKFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRl
ZFByb3BlcnR5VHlwZSBhbmltYXRlZFByb3BlcnR5VHlwZSwgRW51bVR5cGUmIHByb3BlcnR5KQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJP
ZmY8RW51bVR5cGU+PiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVk
UHJvcGVydHlUeXBlLCBFbnVtVHlwZSYgcHJvcGVydHkpCiAgICAgewogICAgICAgICBBU1NFUlQo
Y29udGV4dEVsZW1lbnQpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0FuaW1hdGVk
RW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmY8RW51bVR5cGU+KGNvbnRleHRFbGVtZW50LCBhdHRy
aWJ1dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5VHlwZSwgcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25l
ZCY+KHByb3BlcnR5KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaAppbmRleCA4ZDAxYzYx
OTdjZjMzMTM1MTM3ZjgxZDM2ZjhmMGUzMjI0ZmI5NTQ3Li4wOGNhNzgwYjVmMjA2OTIzMDk4MzE1
MjY4MjNmOGJjN2Y5ZWRlNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaApAQCAtMzUs
NyArMzUsNyBAQCBjbGFzcyBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYgOiBwdWJsaWMg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eSB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBTVkdQ
cm9wZXJ0eVRyYWl0czxQcm9wZXJ0eVR5cGU+OjpMaXN0SXRlbVR5cGUgTGlzdEl0ZW1UeXBlOwog
ICAgIHR5cGVkZWYgU1ZHUHJvcGVydHlUZWFyT2ZmPExpc3RJdGVtVHlwZT4gTGlzdEl0ZW1UZWFy
T2ZmOwotICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxMaXN0SXRlbVRlYXJPZmY+ID4gTGlzdFdy
YXBwZXJDYWNoZTsKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TGlzdEl0ZW1UZWFyT2ZmPj4g
TGlzdFdyYXBwZXJDYWNoZTsKICAgICB0eXBlZGVmIFNWR0xpc3RQcm9wZXJ0eTxQcm9wZXJ0eVR5
cGU+IExpc3RQcm9wZXJ0eTsKICAgICB0eXBlZGVmIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8UHJv
cGVydHlUeXBlPiBMaXN0UHJvcGVydHlUZWFyT2ZmOwogICAgIHR5cGVkZWYgUHJvcGVydHlUeXBl
IENvbnRlbnRUeXBlOwpAQCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3luY2hy
b25pemVXcmFwcGVyc0lmTmVlZGVkKCk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4gPiBjcmVhdGUoU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBQcm9wZXJ0eVR5
cGUmIHZhbHVlcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRlZExpc3RQcm9wZXJ0
eVRlYXJPZmY8UHJvcGVydHlUeXBlPj4gY3JlYXRlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5VHlw
ZSBhbmltYXRlZFByb3BlcnR5VHlwZSwgUHJvcGVydHlUeXBlJiB2YWx1ZXMpCiAgICAgewogICAg
ICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+KGNvbnRleHRFbGVt
ZW50LCBhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5VHlwZSwgdmFsdWVzKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5
VGVhck9mZi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eVRlYXJPZmYuaAppbmRleCAxNzYzMDRlYzFiMGIxYmYxNzRkNGI0NGY3NDFkN2Q1NTdkMDcy
MjJmLi5kNDA2ZmY1ZDBhNTc0ZjhmZTY1YmZiYTEyYzNlYzAyYTBiNjA0NDgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5VGVhck9m
Zi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlUZWFyT2ZmLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9h
bmltVmFsLmdldCgpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVk
UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4gPiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJv
cGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5KQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5
VHlwZT4+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0
eVR5cGUsIFByb3BlcnR5VHlwZSYgcHJvcGVydHkpCiAgICAgewogICAgICAgICBBU1NFUlQoY29u
dGV4dEVsZW1lbnQpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0FuaW1hdGVkUHJv
cGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4oY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUs
IGFuaW1hdGVkUHJvcGVydHlUeXBlLCBwcm9wZXJ0eSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlU
ZWFyT2ZmLmgKaW5kZXggMGM4ZmJlMDFmMDZiZDdiNzNlM2JmYjkxM2UxODY1MTQ2M2U5MGYxYi4u
YjAzNWJkOTFkMGQwMjU0NDYzYzk3YTA5MTUyOGVhMDViZDVhOGFjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJP
ZmYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFN0YXRp
Y1Byb3BlcnR5VGVhck9mZi5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgY29t
bWl0Q2hhbmdlKCk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRT
dGF0aWNQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPiA+IGNyZWF0ZShTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0
ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIFByb3BlcnR5VHlwZSYgcHJvcGVy
dHkpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJP
ZmY8UHJvcGVydHlUeXBlPj4gY3JlYXRlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRlZFByb3BlcnR5VHlwZSBhbmlt
YXRlZFByb3BlcnR5VHlwZSwgUHJvcGVydHlUeXBlJiBwcm9wZXJ0eSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChjb250ZXh0RWxlbWVudCk7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZH
QW5pbWF0ZWRTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPihjb250ZXh0RWxlbWVu
dCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIHByb3BlcnR5KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRv
UHJvcGVydHlNYXAuY3BwCmluZGV4IDM4ZTUzNzU0MTIwYzExOWZkMDAzMThiZjI4YjdhNzdiZjgz
YWE2OTMuLjRkNWFjMDJmYjI4MDhlYzc4NmRmNGY4YTkzZGQ4MTY1MWNjNTcxYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRv
UHJvcGVydHlNYXAuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcDo6YWRkUHJvcGVydHkoY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBpbmZvKQogICAgIG1f
bWFwLnNldChpbmZvLT5hdHRyaWJ1dGVOYW1lLCB2ZWN0b3IucmVsZWFzZSgpKTsKIH0KIAotdm9p
ZCBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwOjphbmltYXRlZFByb3BlcnRpZXNGb3JBdHRyaWJ1
dGUoU1ZHRWxlbWVudCogb3duZXJUeXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVO
YW1lLCBWZWN0b3I8UmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+ID4mIHByb3BlcnRpZXMpCit2
b2lkIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXA6OmFuaW1hdGVkUHJvcGVydGllc0ZvckF0dHJp
YnV0ZShTVkdFbGVtZW50KiBvd25lclR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFZlY3RvcjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4+JiBwcm9wZXJ0aWVzKQog
ewogICAgIEFTU0VSVChvd25lclR5cGUpOwogICAgIFByb3BlcnRpZXNWZWN0b3IqIHZlY3RvciA9
IG1fbWFwLmdldChhdHRyaWJ1dGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaAppbmRleCAxNmFiOWQw
OTk4NzYzN2FkOTczOWY5NDJhMTM1OTk0MTI3OWNmNmRjLi40YjRmMjMzNDhhNGZjMzZiMzg5ZmYw
NGM3YTU0OTc5MzAzZjgwMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oCkBAIC0zOCw3ICszOCw3IEBA
IHB1YmxpYzoKIAogICAgIC8vIEZJWE1FOiBUbyBtYXRjaCBXZWJLaXQgY29kaW5nIHN0eWxlIGVp
dGhlciB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIGhhdmUgcmV0dXJuIHZhbHVlcyBpbnN0ZWFkIG9m
IG91dCBwYXJhbWV0ZXJzLAogICAgIC8vIG9yIHRoZSB3b3JkICJnZXQiIHNob3VsZCBiZSBhZGRl
ZCBhcyBhIHByZWZpeCB0byB0aGVpciBuYW1lcy4KLSAgICB2b2lkIGFuaW1hdGVkUHJvcGVydGll
c0ZvckF0dHJpYnV0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgVmVjdG9yPFJlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiA+
Jik7CisgICAgdm9pZCBhbmltYXRlZFByb3BlcnRpZXNGb3JBdHRyaWJ1dGUoU1ZHRWxlbWVudCog
Y29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFZlY3Rv
cjxSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4+Jik7CiAgICAgdm9pZCBhbmltYXRlZFByb3Bl
cnR5VHlwZUZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBW
ZWN0b3I8QW5pbWF0ZWRQcm9wZXJ0eVR5cGU+Jik7CiAKICAgICB2b2lkIHN5bmNocm9uaXplUHJv
cGVydGllcyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CkBAIC00OSw3ICs0OSw3IEBAIHBy
aXZhdGU6CiAgICAgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBhbmltYXRlZFByb3Bl
cnR5KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lLCBjb25zdCBTVkdQcm9wZXJ0eUluZm8qKTsKIAogICAgIHR5cGVkZWYgVmVjdG9y
PGNvbnN0IFNWR1Byb3BlcnR5SW5mbyo+IFByb3BlcnRpZXNWZWN0b3I7Ci0gICAgdHlwZWRlZiBI
YXNoTWFwPFF1YWxpZmllZE5hbWUsIE93blB0cjxQcm9wZXJ0aWVzVmVjdG9yPiA+IEF0dHJpYnV0
ZVRvUHJvcGVydGllc01hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgT3du
UHRyPFByb3BlcnRpZXNWZWN0b3I+PiBBdHRyaWJ1dGVUb1Byb3BlcnRpZXNNYXA7CiAgICAgQXR0
cmlidXRlVG9Qcm9wZXJ0aWVzTWFwIG1fbWFwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZi5o
CmluZGV4IGM5OTExOTJkNTM0ZDIyZDg3MWQyNzVjYjdiMjcxZmQzN2I4ODM1OWMuLmIwYTg1ZGRj
NTg3MWU5MWMxNTQyM2Y0ZjdhOGU2OGI4NDQ1MGZhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2Zm
LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEJhc2U6Om1fcm9sZTsKICAg
ICB1c2luZyBCYXNlOjptX3ZhbHVlczsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1N0YXRp
Y0xpc3RQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPiA+IGNyZWF0ZShTVkdFbGVtZW50JiBj
b250ZXh0RWxlbWVudCwgUHJvcGVydHlUeXBlJiB2YWx1ZXMpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U1ZHU3RhdGljTGlzdFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+PiBjcmVhdGUoU1ZH
RWxlbWVudCYgY29udGV4dEVsZW1lbnQsIFByb3BlcnR5VHlwZSYgdmFsdWVzKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmPFBy
b3BlcnR5VHlwZT4oJmNvbnRleHRFbGVtZW50LCB2YWx1ZXMpKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlU
ZWFyT2ZmLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdUcmFuc2Zvcm1MaXN0
UHJvcGVydHlUZWFyT2ZmLmgKaW5kZXggN2FjMTI0ZjJhNDc3MWNmMDMwNWY1ZmU0MmZlNTJmZmMy
ZmNlOTA0Mi4uN2ZjMTgzYjU5MTVmNTQ3NjY4YmJjMDNhMjI5NmE1ZmY3MWI1MjZlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVHJhbnNmb3JtTGlzdFByb3Bl
cnR5VGVhck9mZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1RyYW5z
Zm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaApAQCAtMzIsMTMgKzMyLDEzIEBAIHB1YmxpYzoKICAg
ICB0eXBlZGVmIFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm1MaXN0
PiBBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY7CiAgICAgdHlwZWRlZiBTVkdBbmltYXRlZExp
c3RQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtTGlzdD46Okxpc3RXcmFwcGVyQ2FjaGUgTGlz
dFdyYXBwZXJDYWNoZTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0xpc3RQcm9wZXJ0eVRl
YXJPZmY8U1ZHVHJhbnNmb3JtTGlzdD4gPiBjcmVhdGUoQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmKiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHVHJhbnNmb3Jt
TGlzdCYgdmFsdWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3cmFwcGVycykKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9ybUxpc3Q+PiBjcmVhdGUo
QW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmKiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0
eVJvbGUgcm9sZSwgU1ZHVHJhbnNmb3JtTGlzdCYgdmFsdWVzLCBMaXN0V3JhcHBlckNhY2hlJiB3
cmFwcGVycykKICAgICB7CiAgICAgICAgIEFTU0VSVChhbmltYXRlZFByb3BlcnR5KTsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdUcmFuc2Zvcm1MaXN0UHJvcGVydHlUZWFyT2ZmKGFu
aW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlcywgd3JhcHBlcnMpKTsKICAgICB9CiAKLSAgICBQ
YXNzUmVmUHRyPFNWR1Byb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm0+ID4gY3JlYXRlU1ZHVHJh
bnNmb3JtRnJvbU1hdHJpeChTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHTWF0cml4PiogbWF0cml4LCBF
eGNlcHRpb25Db2RlJiBlYykKKyAgICBQYXNzUmVmUHRyPFNWR1Byb3BlcnR5VGVhck9mZjxTVkdU
cmFuc2Zvcm0+PiBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KFNWR1Byb3BlcnR5VGVhck9m
ZjxTVkdNYXRyaXg+KiBtYXRyaXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKICAgICAgICAg
QVNTRVJUKG1fdmFsdWVzKTsKICAgICAgICAgaWYgKCFtYXRyaXgpIHsKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5zZm9y
bT46OmNyZWF0ZShtX3ZhbHVlcy0+Y3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChtYXRyaXgt
PnByb3BlcnR5UmVmZXJlbmNlKCkpKTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPFNWR1Byb3Bl
cnR5VGVhck9mZjxTVkdUcmFuc2Zvcm0+ID4gY29uc29saWRhdGUoRXhjZXB0aW9uQ29kZSYgZWMp
CisgICAgUGFzc1JlZlB0cjxTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtPj4gY29uc29s
aWRhdGUoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgewogICAgICAgICBBU1NFUlQobV92YWx1ZXMp
OwogICAgICAgICBBU1NFUlQobV93cmFwcGVycyk7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIGRldGFjaExpc3RXcmFwcGVycygwKTsK
LSAgICAgICAgUmVmUHRyPFNWR1Byb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm0+ID4gd3JhcHBl
ciA9IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdUcmFuc2Zvcm0+OjpjcmVhdGUobV92YWx1ZXMtPmNv
bnNvbGlkYXRlKCkpOworICAgICAgICBSZWZQdHI8U1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1RyYW5z
Zm9ybT4+IHdyYXBwZXIgPSBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtPjo6Y3JlYXRl
KG1fdmFsdWVzLT5jb25zb2xpZGF0ZSgpKTsKICAgICAgICAgbV93cmFwcGVycy0+YXBwZW5kKHdy
YXBwZXIpOwogCiAgICAgICAgIEFTU0VSVChtX3ZhbHVlcy0+c2l6ZSgpID09IG1fd3JhcHBlcnMt
PnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5LmgKaW5kZXggODI2N2M4MzYzZjEwYmU3ZWFlYmU1ZTk2MTliMmE1
MTJiOTI4MjExZS4uZDI2Mjk1MjRlMTYyNjFmMjE3YzNjOGRiZDY3NDM4NTA4MTRkY2M5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3Np
dG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJl
cG9zaXRvcnkuaApAQCAtODUsNyArODUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IE11dGV4IG1fbG9jazsKIAogICAgICAgICAvLyBMaXN0IG9mIHNoYXJlZCB3b3JrZXJzLiBFeHBl
Y3RhdGlvbiBpcyB0aGF0IHRoZXJlIHdpbGwgYmUgYSBsaW1pdGVkIG51bWJlciBvZiBzaGFyZWQg
d29ya2VycywgYW5kIHNvIHRyYWNraW5nIHRoZW0gaW4gYSBWZWN0b3IgaXMgbW9yZSBlZmZpY2ll
bnQgdGhhbiBuZXN0ZWQgSGFzaE1hcHMuCi0gICAgICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxT
aGFyZWRXb3JrZXJQcm94eT4gPiBTaGFyZWRXb3JrZXJQcm94eVJlcG9zaXRvcnk7CisgICAgICAg
IHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxTaGFyZWRXb3JrZXJQcm94eT4+IFNoYXJlZFdvcmtlclBy
b3h5UmVwb3NpdG9yeTsKICAgICAgICAgU2hhcmVkV29ya2VyUHJveHlSZXBvc2l0b3J5IG1fcHJv
eGllczsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmgKaW5kZXggMTg5NmE4MTM1MDRhYzE4YWJhY2RkMWZhYzAzMTkwNjlkZmY3NWE2MS4u
NjFhNTgzNmRmMTJmNDFmNTk3MDAxYzEyN2VlOTVmZjU4YzA2MmQxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuaApAQCAtMTE1LDcgKzExNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIG1fYXNrZWRUb1Rlcm1pbmF0ZTsK
IAotICAgICAgICBWZWN0b3I8T3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+ID4g
bV9xdWV1ZWRFYXJseVRhc2tzOyAvLyBUYXNrcyBhcmUgcXVldWVkIGhlcmUgdW50aWwgdGhlcmUn
cyBhIHRocmVhZCBvYmplY3QgY3JlYXRlZC4KKyAgICAgICAgVmVjdG9yPE93blB0cjxTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrPj4gbV9xdWV1ZWRFYXJseVRhc2tzOyAvLyBUYXNrcyBhcmUg
cXVldWVkIGhlcmUgdW50aWwgdGhlcmUncyBhIHRocmVhZCBvYmplY3QgY3JlYXRlZC4KICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQogICAgICAgICBXb3JrZXJHbG9iYWxTY29wZVByb3h5OjpQYWdlSW5z
cGVjdG9yKiBtX3BhZ2VJbnNwZWN0b3I7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuY3BwCmluZGV4
IDgzNmY0ODFjNjQ0Y2Y0YjU2ZDE0MjgwN2M5OGEzNTZjMjAyYzRmNTQuLmI1MTgyZmNmYzNlMTk2
ZWY3NWM3ODY2ZDM2NzczZTg4NzI2MzgyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmNwcApAQCAtMTMz
LDE0ICsxMzMsMTQgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZTo6
ZGlzcGF0Y2hEZWZlcnJlZEV2ZW50cyhUaW1lcjxYTUxIdHRwUmUKICAgICBtX2RlZmVyRXZlbnRz
ID0gZmFsc2U7CiAKICAgICAvLyBUYWtlIG92ZXIgdGhlIGRlZmVycmVkIGV2ZW50cyBiZWZvcmUg
ZGlzcGF0Y2hpbmcgdGhlbSB3aGljaCBjYW4gcG90ZW50aWFsbHkgYWRkIG1vcmUuCi0gICAgVmVj
dG9yPFJlZlB0cjxFdmVudD4gPiBkZWZlcnJlZEV2ZW50czsKKyAgICBWZWN0b3I8UmVmUHRyPEV2
ZW50Pj4gZGVmZXJyZWRFdmVudHM7CiAgICAgbV9kZWZlcnJlZEV2ZW50cy5zd2FwKGRlZmVycmVk
RXZlbnRzKTsKIAogICAgIFJlZlB0cjxFdmVudD4gZGVmZXJyZWRQcm9ncmVzc0V2ZW50ID0gbV9k
ZWZlcnJlZFByb2dyZXNzRXZlbnQ7CiAgICAgbV9kZWZlcnJlZFByb2dyZXNzRXZlbnQgPSAwOwog
Ci0gICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBkZWZlcnJl
ZEV2ZW50cy5iZWdpbigpOwotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID46OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGRlZmVycmVkRXZlbnRzLmVuZCgpOworICAgIFZlY3RvcjxSZWZQdHI8
RXZlbnQ+Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBkZWZlcnJlZEV2ZW50cy5iZWdpbigpOworICAg
IGNvbnN0IFZlY3RvcjxSZWZQdHI8RXZlbnQ+Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZGVmZXJy
ZWRFdmVudHMuZW5kKCk7CiAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgZGlz
cGF0Y2hFdmVudCgqaXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oCmluZGV4IGQ5Njc5ODVhMGEwYjc4OTQy
NGJkMjUyMGExMGY4NTA1NzU0OTJjYzMuLmU0NGMxMjA2ZjlhNjllYzNlMWFmOTUwZmUyOWQ5YTUx
NTMzZDVmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnRUaHJvdHRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIG1fZGVmZXJFdmVudHM7CiAgICAgUmVmUHRyPEV2ZW50PiBtX2RlZmVycmVkUHJv
Z3Jlc3NFdmVudDsKLSAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fZGVmZXJyZWRFdmVudHM7
CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+IG1fZGVmZXJyZWRFdmVudHM7CiAgICAgVGltZXI8
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGU+IG1fZGlzcGF0Y2hEZWZlcnJlZEV2
ZW50c1RpbWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9k
ZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmNwcAppbmRleCBkZjY2
MzNmOWI2NjBiYzdhMmZlMDRiMDRiMTE2NzdlYjE0ZGQyYTE4Li45NzY0Zjc5ODcwYzM5OWI2YmE1
YjBkZDY5MWU2YzdkYTUzNDY5ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhOb2RlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0LmNwcApA
QCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgTm9kZVNldDo6c29ydCgpIGNvbnN0CiAKICAgICBib29s
IGNvbnRhaW5zQXR0cmlidXRlTm9kZXMgPSBmYWxzZTsKICAgICAKLSAgICBWZWN0b3I8VmVjdG9y
PE5vZGUqPiA+IHBhcmVudE1hdHJpeChub2RlQ291bnQpOworICAgIFZlY3RvcjxWZWN0b3I8Tm9k
ZSo+PiBwYXJlbnRNYXRyaXgobm9kZUNvdW50KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbm9kZUNvdW50OyArK2kpIHsKICAgICAgICAgVmVjdG9yPE5vZGUqPiYgcGFyZW50c1ZlY3Rv
ciA9IHBhcmVudE1hdHJpeFtpXTsKICAgICAgICAgTm9kZSogbiA9IG1fbm9kZXNbaV0uZ2V0KCk7
CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBOb2RlU2V0Ojp0cmF2ZXJzYWxTb3J0KCkgY29uc3QK
ICAgICAgICAgICAgIGNvbnRhaW5zQXR0cmlidXRlTm9kZXMgPSB0cnVlOwogICAgIH0KIAotICAg
IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBzb3J0ZWROb2RlczsKKyAgICBWZWN0b3I8UmVmUHRyPE5v
ZGU+PiBzb3J0ZWROb2RlczsKICAgICBzb3J0ZWROb2Rlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG5vZGVDb3VudCk7CiAKICAgICBmb3IgKE5vZGUqIG4gPSBmaW5kUm9vdE5vZGUobV9ub2Rlcy5m
aXJzdCgpLmdldCgpKTsgbjsgbiA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobikpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWFNMU3R5bGVTaGVldC5oCmluZGV4IGZkMWUzOTMyMTJmMjVkM2M2YjJjZGMyNzYxMzg4MTdm
ZjY0OWZiNWIuLjAxNDlhM2Y5MjNhMTgwYjU5NzMzOWY3MzY3NGFiMDExZGM2M2M1ZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL1hTTFN0eWxlU2hlZXQuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAg
ICAgVVJMIG1fZmluYWxVUkw7CiAgICAgYm9vbCBtX2lzRGlzYWJsZWQ7CiAKLSAgICBWZWN0b3I8
T3duUHRyPFhTTEltcG9ydFJ1bGU+ID4gbV9jaGlsZHJlbjsKKyAgICBWZWN0b3I8T3duUHRyPFhT
TEltcG9ydFJ1bGU+PiBtX2NoaWxkcmVuOwogCiAgICAgYm9vbCBtX2VtYmVkZGVkOwogICAgIGJv
b2wgbV9wcm9jZXNzZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKaW5kZXggYzJhYzY3YTQ3MTVmNTNjMzA1Y2U5NDgy
MDA2MTg4ZTMzZDVkZDgzMy4uYjQwMmNmY2IxZmJlYzc4ZjEwY2RkODJjYmIyMjM4N2RkMWI5ZGZi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQ
YXJzZXJMaWJ4bWwyLmNwcApAQCAtMzU0LDcgKzM1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIE9y
ZGluYWxOdW1iZXIgY29sdW1uTnVtYmVyOwogICAgIH07CiAKLSAgICBEZXF1ZTxPd25QdHI8UGVu
ZGluZ0NhbGxiYWNrPiA+IG1fY2FsbGJhY2tzOworICAgIERlcXVlPE93blB0cjxQZW5kaW5nQ2Fs
bGJhY2s+PiBtX2NhbGxiYWNrczsKIH07CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3Rvcnku
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KaW5kZXggNmZiMzYy
ZTFmMGZkMzhhNDAyOTFjNmQ4MTY1OTMwYzQ4ZWY4MDllMC4uNGI2NTk1Nzk0NmIzOWQyOWU5Njgx
MTIxNTA2NTg4ZWJjOWI0YjMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9y
eS9XZWJIaXN0b3J5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9y
eS5tbQpAQCAtMzksNyArMzksNyBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHR5cGVk
ZWYgaW50NjRfdCBXZWJIaXN0b3J5RGF0ZUtleTsKLXR5cGVkZWYgSGFzaE1hcDxXZWJIaXN0b3J5
RGF0ZUtleSwgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiA+IERhdGVUb0VudHJpZXNNYXA7Cit0
eXBlZGVmIEhhc2hNYXA8V2ViSGlzdG9yeURhdGVLZXksIFJldGFpblB0cjxOU011dGFibGVBcnJh
eT4+IERhdGVUb0VudHJpZXNNYXA7CiAKIE5TU3RyaW5nICpXZWJIaXN0b3J5SXRlbXNBZGRlZE5v
dGlmaWNhdGlvbiA9IEAiV2ViSGlzdG9yeUl0ZW1zQWRkZWROb3RpZmljYXRpb24iOwogTlNTdHJp
bmcgKldlYkhpc3RvcnlJdGVtc1JlbW92ZWROb3RpZmljYXRpb24gPSBAIldlYkhpc3RvcnlJdGVt
c1JlbW92ZWROb3RpZmljYXRpb24iOwpAQCAtMzUxLDcgKzM1MSw3IEBAIHN0YXRpYyBpbmxpbmUg
V2ViSGlzdG9yeURhdGVLZXkgZGF0ZUtleShOU1RpbWVJbnRlcnZhbCBkYXRlKQogewogICAgIC8v
IFdlIGNsZWFyIGFsbCB0aGUgdmFsdWVzIHRvIHByZXNlbnQgYSBjb25zaXN0ZW50IHN0YXRlIHdo
ZW4gc2VuZGluZyB0aGUgbm90aWZpY2F0aW9ucy4KICAgICAvLyBXZSBrZWVwIGEgcmVmZXJlbmNl
IHRvIHRoZSBlbnRyaWVzIGZvciByZWJ1aWxkaW5nIHRoZSBoaXN0b3J5IGFmdGVyIHRoZSBub3Rp
ZmljYXRpb24uCi0gICAgVmVjdG9yIDxSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+ID4gZW50cnlB
cnJheXM7CisgICAgVmVjdG9yIDxSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+PiBlbnRyeUFycmF5
czsKICAgICBjb3B5VmFsdWVzVG9WZWN0b3IoKl9lbnRyaWVzQnlEYXRlLCBlbnRyeUFycmF5cyk7
CiAgICAgX2VudHJpZXNCeURhdGUtPmNsZWFyKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tIGIvU291cmNlL1dlYktpdC9tYWMv
SGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbQppbmRleCA4MjJhZGFhMmM3NThjOGJmNzcxMTRhOWYw
NzU3NWVjOThjMGE2NDVjLi41NzlmZjZjYzUxYTE4NTkzYWYwODM4NTFlNDQ4YjY2NjdlMWZiZDYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KQEAgLTM2
MCw3ICszNjAsNyBAQCBXZWJIaXN0b3J5SXRlbSAqa2l0KEhpc3RvcnlJdGVtKiBpdGVtKQogCiAg
ICAgaWYgKE5TQXJyYXkgKnJlZGlyZWN0VVJMcyA9IFtkaWN0IF93ZWJraXRfYXJyYXlGb3JLZXk6
cmVkaXJlY3RVUkxzS2V5XSkgewogICAgICAgICBOU1VJbnRlZ2VyIHNpemUgPSBbcmVkaXJlY3RV
UkxzIGNvdW50XTsKLSAgICAgICAgT3duUHRyPFZlY3RvcjxTdHJpbmc+ID4gcmVkaXJlY3RVUkxz
VmVjdG9yID0gYWRvcHRQdHIobmV3IFZlY3RvcjxTdHJpbmc+KHNpemUpKTsKKyAgICAgICAgT3du
UHRyPFZlY3RvcjxTdHJpbmc+PiByZWRpcmVjdFVSTHNWZWN0b3IgPSBhZG9wdFB0cihuZXcgVmVj
dG9yPFN0cmluZz4oc2l6ZSkpOwogICAgICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBz
aXplOyArK2kpCiAgICAgICAgICAgICAoKnJlZGlyZWN0VVJMc1ZlY3RvcilbaV0gPSBTdHJpbmco
W3JlZGlyZWN0VVJMcyBfd2Via2l0X3N0cmluZ0F0SW5kZXg6aV0pOwogICAgICAgICBjb3JlKF9w
cml2YXRlKS0+c2V0UmVkaXJlY3RVUkxzKHJlZGlyZWN0VVJMc1ZlY3Rvci5yZWxlYXNlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVn
aW5Ib3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSG9zdFByb3h5LmgKaW5kZXggZGNhODZmOGE4Y2IyYmM0YmZiNjkwZDJiMzhiYzVhZjYw
OGJjMmExOS4uYjlhNTYwYWU1M2YyMTE2NDM3MmNiODBkMjdkMTIwNzZiYTQ5MzZmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5Ib3N0
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkhvc3RQcm94eS5oCkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMg
dm9pZCBkZWFkTmFtZU5vdGlmaWNhdGlvbkNhbGxiYWNrKENGTWFjaFBvcnRSZWYsIHZvaWQgKm1z
ZywgQ0ZJbmRleCBzaXplLCB2b2lkICppbmZvKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50
MzJfdCwgUmVmUHRyPE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eT4gPiBQbHVnaW5JbnN0YW5j
ZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8dWludDMyX3QsIFJlZlB0cjxOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk+PiBQbHVnaW5JbnN0YW5jZU1hcDsKICAgICBQbHVnaW5JbnN0YW5jZU1h
cCBtX2luc3RhbmNlczsKICAgICAKICAgICBtYWNoX3BvcnRfdCBtX2NsaWVudFBvcnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBl
UGx1Z2luSW5zdGFuY2VQcm94eS5oCmluZGV4IGQyYzc5ZDNjY2ExNjNjY2QzMWI0MzYwMDEyY2Mz
MzliZTQxMjAyODYuLjI3MjFjOTFhZDEyZmIzZjNlZWIyMzI2MDkxYjY2NjliYTZkNDkyNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5oCkBAIC0yOTcsOSArMjk3LDkgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgcmVxdWVzdFRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8TmV0c2NhcGVQbHVn
aW5JbnN0YW5jZVByb3h5PiopOwogICAgIFdlYkNvcmU6OlRpbWVyPE5ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eT4gbV9yZXF1ZXN0VGltZXI7Ci0gICAgRGVxdWU8UmVmUHRyPFBsdWdpblJlcXVl
c3Q+ID4gbV9wbHVnaW5SZXF1ZXN0czsKKyAgICBEZXF1ZTxSZWZQdHI8UGx1Z2luUmVxdWVzdD4+
IG1fcGx1Z2luUmVxdWVzdHM7CiAgICAgCi0gICAgSGFzaE1hcDx1aW50MzJfdCwgUmVmUHRyPEhv
c3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtPiA+IG1fc3RyZWFtczsKKyAgICBIYXNoTWFwPHVpbnQz
Ml90LCBSZWZQdHI8SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0+PiBtX3N0cmVhbXM7CiAKICAg
ICB1aW50MzJfdCBtX2N1cnJlbnRVUkxSZXF1ZXN0SUQ7CiAgICAgCkBAIC0zMzEsMTAgKzMzMSwx
MCBAQCBwcml2YXRlOgogICAgICAgICBKU0M6OkpTT2JqZWN0KiBnZXQodWludDMyX3QpIGNvbnN0
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSGFzaE1hcDx1aW50MzJfdCwgSlNDOjpTdHJvbmc8
SlNDOjpKU09iamVjdD4gPiBtX2lkVG9KU09iamVjdE1hcDsKKyAgICAgICAgSGFzaE1hcDx1aW50
MzJfdCwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+IG1faWRUb0pTT2JqZWN0TWFwOwogICAg
ICAgICAvLyBUaGUgcGFpciBjb25zaXN0cyBvZiBvYmplY3QgSUQgYW5kIGEgcmVmZXJlbmNlIGNv
dW50LiBPbmUgcmVmZXJlbmNlIGJlbG9uZ3MgdG8gcmVtb3RlIHBsdWctaW4sCiAgICAgICAgIC8v
IGFuZCB0aGUgcHJveHkgd2lsbCBhZGQgdHJhbnNpZW50IHJlZmVyZW5jZXMgZm9yIGFyZ3VtZW50
cyB0aGF0IGFyZSBiZWluZyBzZW50IG91dC4KLSAgICAgICAgSGFzaE1hcDxKU0M6OkpTT2JqZWN0
KiwgcGFpcjx1aW50MzJfdCwgdWludDMyX3Q+ID4gbV9qc09iamVjdFRvSURNYXA7CisgICAgICAg
IEhhc2hNYXA8SlNDOjpKU09iamVjdCosIHBhaXI8dWludDMyX3QsIHVpbnQzMl90Pj4gbV9qc09i
amVjdFRvSURNYXA7CiAgICAgICAgIHVpbnQzMl90IG1fb2JqZWN0SURDb3VudGVyOwogICAgIH07
CiAKQEAgLTM0NCw3ICszNDQsNyBAQCBwcml2YXRlOgogICAgIFByb3h5SW5zdGFuY2VTZXQgbV9p
bnN0YW5jZXM7CiAKICAgICB1aW50MzJfdCBtX3VybENoZWNrQ291bnRlcjsKLSAgICB0eXBlZGVm
IEhhc2hNYXA8dWludDMyX3QsIFJldGFpblB0cjxpZD4gPiBVUkxDaGVja01hcDsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8dWludDMyX3QsIFJldGFpblB0cjxpZD4+IFVSTENoZWNrTWFwOwogICAgIFVS
TENoZWNrTWFwIG1fdXJsQ2hlY2tzOwogICAgIAogICAgIHVuc2lnbmVkIG1fcGx1Z2luRnVuY3Rp
b25DYWxsRGVwdGg7CkBAIC0zNjcsNyArMzY3LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBSZWZQ
dHI8SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0+IG1fbWFudWFsU3RyZWFtOwogCi0gICAgdHlw
ZWRlZiBIYXNoTWFwPFdlYkZyYW1lKiwgUmVmUHRyPFBsdWdpblJlcXVlc3Q+ID4gRnJhbWVMb2Fk
TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJGcmFtZSosIFJlZlB0cjxQbHVnaW5SZXF1ZXN0
Pj4gRnJhbWVMb2FkTWFwOwogICAgIEZyYW1lTG9hZE1hcCBtX3BlbmRpbmdGcmFtZUxvYWRzOwog
fTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCBiNDljMjgwYjY5NTE3
NmI2MDAxZDU5MzA2MTNjZGQ1NDI3ZGU4N2JkLi41M2E4ZWM2ZjExYjVjNGVkMmQ0OGUzMDBlZDVi
ZmYwYTMzZTJhMjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tCkBAIC0xNDMsNyAr
MTQzLDcgQEAgdWludDMyX3QgTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVj
dE1hcDo6aWRGb3JPYmplY3QoVk0mIHZtLCBKU09iamUKIAogICAgIHVpbnQzMl90IG9iamVjdElE
ID0gMDsKICAgICAKLSAgICBIYXNoTWFwPEpTQzo6SlNPYmplY3QqLCBwYWlyPHVpbnQzMl90LCB1
aW50MzJfdD4gPjo6aXRlcmF0b3IgaXRlciA9IG1fanNPYmplY3RUb0lETWFwLmZpbmQob2JqZWN0
KTsKKyAgICBIYXNoTWFwPEpTQzo6SlNPYmplY3QqLCBwYWlyPHVpbnQzMl90LCB1aW50MzJfdD4+
OjppdGVyYXRvciBpdGVyID0gbV9qc09iamVjdFRvSURNYXAuZmluZChvYmplY3QpOwogICAgIGlm
IChpdGVyICE9IG1fanNPYmplY3RUb0lETWFwLmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlci0+
dmFsdWUuZmlyc3Q7CiAgICAgCkBAIC0xNTksNyArMTU5LDcgQEAgdWludDMyX3QgTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6aWRGb3JPYmplY3QoVk0mIHZtLCBK
U09iamUKIAogdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OkxvY2FsT2JqZWN0TWFw
OjpyZXRhaW4oSlNDOjpKU09iamVjdCogb2JqZWN0KQogewotICAgIEhhc2hNYXA8SlNDOjpKU09i
amVjdCosIHBhaXI8dWludDMyX3QsIHVpbnQzMl90PiA+OjppdGVyYXRvciBpdGVyID0gbV9qc09i
amVjdFRvSURNYXAuZmluZChvYmplY3QpOworICAgIEhhc2hNYXA8SlNDOjpKU09iamVjdCosIHBh
aXI8dWludDMyX3QsIHVpbnQzMl90Pj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2pzT2JqZWN0VG9JRE1h
cC5maW5kKG9iamVjdCk7CiAgICAgQVNTRVJUKGl0ZXIgIT0gbV9qc09iamVjdFRvSURNYXAuZW5k
KCkpOwogCiAgICAgaXRlci0+dmFsdWUuc2Vjb25kID0gaXRlci0+dmFsdWUuc2Vjb25kICsgMTsK
QEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6TG9j
YWxPYmplY3RNYXA6OnJldGFpbihKU0M6OkpTT2JqZWN0KiBvYmplY3QpCiAKIHZvaWQgTmV0c2Nh
cGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2NhbE9iamVjdE1hcDo6cmVsZWFzZShKU0M6OkpTT2Jq
ZWN0KiBvYmplY3QpCiB7Ci0gICAgSGFzaE1hcDxKU0M6OkpTT2JqZWN0KiwgcGFpcjx1aW50MzJf
dCwgdWludDMyX3Q+ID46Oml0ZXJhdG9yIGl0ZXIgPSBtX2pzT2JqZWN0VG9JRE1hcC5maW5kKG9i
amVjdCk7CisgICAgSGFzaE1hcDxKU0M6OkpTT2JqZWN0KiwgcGFpcjx1aW50MzJfdCwgdWludDMy
X3Q+Pjo6aXRlcmF0b3IgaXRlciA9IG1fanNPYmplY3RUb0lETWFwLmZpbmQob2JqZWN0KTsKICAg
ICBBU1NFUlQoaXRlciAhPSBtX2pzT2JqZWN0VG9JRE1hcC5lbmQoKSk7CiAKICAgICBBU1NFUlQo
aXRlci0+dmFsdWUuc2Vjb25kID4gMCk7CkBAIC0xOTEsMTMgKzE5MSwxMyBAQCBib29sIE5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6TG9jYWxPYmplY3RNYXA6OmZvcmdldCh1aW50MzJfdCBv
YmplY3RJRCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgSGFzaE1hcDx1aW50
MzJfdCwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gPjo6aXRlcmF0b3IgaXRlciA9IG1faWRU
b0pTT2JqZWN0TWFwLmZpbmQob2JqZWN0SUQpOworICAgIEhhc2hNYXA8dWludDMyX3QsIEpTQzo6
U3Ryb25nPEpTQzo6SlNPYmplY3Q+Pjo6aXRlcmF0b3IgaXRlciA9IG1faWRUb0pTT2JqZWN0TWFw
LmZpbmQob2JqZWN0SUQpOwogICAgIGlmIChpdGVyID09IG1faWRUb0pTT2JqZWN0TWFwLmVuZCgp
KSB7CiAgICAgICAgIExPR19FUlJPUigiTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpMb2Nh
bE9iamVjdE1hcDo6Zm9yZ2V0OiBsb2NhbCBvYmplY3QgJXUgZG9lc24ndCBleGlzdC4iLCBvYmpl
Y3RJRCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIEhhc2hNYXA8SlNDOjpK
U09iamVjdCosIHBhaXI8dWludDMyX3QsIHVpbnQzMl90PiA+OjppdGVyYXRvciBySXRlciA9IG1f
anNPYmplY3RUb0lETWFwLmZpbmQoaXRlci0+dmFsdWUuZ2V0KCkpOworICAgIEhhc2hNYXA8SlND
OjpKU09iamVjdCosIHBhaXI8dWludDMyX3QsIHVpbnQzMl90Pj46Oml0ZXJhdG9yIHJJdGVyID0g
bV9qc09iamVjdFRvSURNYXAuZmluZChpdGVyLT52YWx1ZS5nZXQoKSk7CiAKICAgICAvLyBJZiB0
aGUgb2JqZWN0IGlzIGJlaW5nIHNlbnQgdG8gcGx1Zy1pbiByaWdodCBub3csIHRoZW4gaXQncyBu
b3QgdGhlIHRpbWUgdG8gZm9yZ2V0LgogICAgIGlmIChySXRlci0+dmFsdWUuc2Vjb25kICE9IDEp
CkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6Omxh
eWVySG9zdGluZ01vZGVDaGFuZ2VkKGJvb2wgaG9zdHNMYXllcnNJbldpbmQKIAogdm9pZCBOZXRz
Y2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OnN0b3BBbGxTdHJlYW1zKCkKIHsKLSAgICBWZWN0b3I8
UmVmUHRyPEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtPiA+IHN0cmVhbXNDb3B5OworICAgIFZl
Y3RvcjxSZWZQdHI8SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0+PiBzdHJlYW1zQ29weTsKICAg
ICBjb3B5VmFsdWVzVG9WZWN0b3IobV9zdHJlYW1zLCBzdHJlYW1zQ29weSk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzdHJlYW1zQ29weS5zaXplKCk7IGkrKykKICAgICAgICAgc3RyZWFt
c0NvcHlbaV0tPnN0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luVmlldy5oCmluZGV4IDQzNDQwMDg5YTZlNjBiYmQ1Nzg4NjRiODM1NzdlODBm
YzU0OTZhZDQuLmZhMTExNDc3NWI3MGM3OWFiODRiYzIxZDM5MGUzY2FhMDUzNTdiYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcuaApA
QCAtOTUsNyArOTUsNyBAQCB0eXBlZGVmIHVuaW9uIFBsdWdpblBvcnQgewogICAgIGludDMyX3Qg
c3BlY2lmaWVkSGVpZ2h0OwogICAgIGludDMyX3Qgc3BlY2lmaWVkV2lkdGg7CiAgICAgICAgICAg
ICAKLSAgICBIYXNoU2V0PFJlZlB0cjxXZWJOZXRzY2FwZVBsdWdpblN0cmVhbT4gPiBzdHJlYW1z
OworICAgIEhhc2hTZXQ8UmVmUHRyPFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtPj4gc3RyZWFtczsK
ICAgICBSZXRhaW5QdHI8TlNNYXBUYWJsZT4gX3BlbmRpbmdGcmFtZUxvYWRzOwogICAgIAogICAg
IEJPT0wgX2lzRmxhc2g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IGRkZDM3MDI2MWZmYjU3NDM1NmE5Yjk1NzE4ZWFhZTAz
YzlmMTVlYWUuLjdmNGM4OGE1YmVmMDJjOWUxMTIwMjBjNTc0MjhiOTcwNWJmMTYwZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1t
CkBAIC0xMTc4LDcgKzExNzgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZ2V0TlBSZWN0KGNvbnN0
IE5TUmVjdCYgbnIsIE5QUmVjdCYgbnByKQogICAgIC8vIFRvIHN0b3AgYWN0aXZlIHN0cmVhbXMg
aXQncyBuZWNlc3NhcnkgdG8gaW52b2tlIHN0b3AoKSBvbiBhIGNvcHkgCiAgICAgLy8gb2Ygc3Ry
ZWFtcy4gVGhpcyBpcyBiZWNhdXNlIGNhbGxpbmcgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OnN0
b3AoKSBhbHNvIGhhcyB0aGUgc2lkZSBlZmZlY3QKICAgICAvLyBvZiByZW1vdmluZyBhIHN0cmVh
bSBmcm9tIHRoaXMgaGFzaCBzZXQuCi0gICAgVmVjdG9yPFJlZlB0cjxXZWJOZXRzY2FwZVBsdWdp
blN0cmVhbT4gPiBzdHJlYW1zQ29weTsKKyAgICBWZWN0b3I8UmVmUHRyPFdlYk5ldHNjYXBlUGx1
Z2luU3RyZWFtPj4gc3RyZWFtc0NvcHk7CiAgICAgY29weVRvVmVjdG9yKHN0cmVhbXMsIHN0cmVh
bXNDb3B5KTsKICAgICBmb3IgKGF1dG8mIHN0cmVhbTogc3RyZWFtc0NvcHkpCiAgICAgICAgIHN0
cmVhbS0+c3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJE
YXRhYmFzZU1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNl
TWFuYWdlci5tbQppbmRleCA0OWI1NjE4YzdhNmI4MzVlMTNhYjE5ZGFhNjEzMWI3ZmMwYmQ1OGQw
Li5lYjU4MmQwOWU0NTQ5OWE2OTc1NGJmZTM0M2E4MDQwYWFjYTM0ZGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlci5tbQpAQCAtNzksNyArNzks
NyBAQCBzdGF0aWMgTlNTdHJpbmcgKmRhdGFiYXNlc0RpcmVjdG9yeVBhdGgoKTsKIAogLSAoTlNB
cnJheSAqKW9yaWdpbnMKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+IGNv
cmVPcmlnaW5zOworICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBjb3JlT3JpZ2lu
czsKICAgICBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5vcmlnaW5zKGNvcmVPcmlnaW5zKTsK
ICAgICBOU011dGFibGVBcnJheSAqd2ViT3JpZ2lucyA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQ2FwYWNpdHk6Y29yZU9yaWdpbnMuc2l6ZSgpXTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9yYWdlTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1N0b3JhZ2UvV2ViU3RvcmFnZU1hbmFnZXIubW0KaW5kZXggZWQzMjQ3ZTM2NGJlZGUz
ZGU4YjBjZDNkODlmMThjOGY2YmEyZTQ4Zi4uMTMwODgwY2JhMGEyNWNhYjdkZDg2YTlkYmMxYmUx
MGY1ZmQ4ZTk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJTdG9y
YWdlTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VN
YW5hZ2VyLm1tCkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyBwdGhyZWFkX29uY2VfdCByZWdpc3Rl
ckxvY2FsU3RvcmFnZVBhdGggPSBQVEhSRUFEX09OQ0VfSU5JVDsKIAogLSAoTlNBcnJheSAqKW9y
aWdpbnMKIHsKLSAgICBWZWN0b3I8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiA+IGNvcmVPcmlnaW5z
OworICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBjb3JlT3JpZ2luczsKIAogICAg
IFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyKCkub3JpZ2lucyhjb3JlT3JpZ2lucyk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2Fj
aGUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJBcHBsaWNhdGlvbkNh
Y2hlLm1tCmluZGV4IGQ3N2VkYmNjOTQ2ZGE3ZjZkMTg5M2U1NmI3ZjI5MjMyMmI0MzE2NmIuLjU4
YTlkMDZkOTI0OWE5NjhiMjk5ODJjOWZlNGIxNjllZjM5ODVmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFwcGxpY2F0aW9uQ2FjaGUubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQXBwbGljYXRpb25DYWNoZS5tbQpA
QCAtNzMsMTMgKzczLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiArIChOU0FycmF5
ICopb3JpZ2luc1dpdGhDYWNoZQogewotICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiA+IGNvcmVPcmlnaW5zOworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gY29y
ZU9yaWdpbnM7CiAgICAgY2FjaGVTdG9yYWdlKCkuZ2V0T3JpZ2luc1dpdGhDYWNoZShjb3JlT3Jp
Z2lucyk7CiAgICAgCiAgICAgTlNNdXRhYmxlQXJyYXkgKndlYk9yaWdpbnMgPSBbW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb3JlT3JpZ2lucy5zaXplKCldIGF1dG9y
ZWxlYXNlXTsKICAgICAKLSAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gPjo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gY29yZU9yaWdpbnMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb3JlT3JpZ2lucy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjb3JlT3JpZ2lucy5lbmQoKTsKKyAgICBmb3Ig
KEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29y
ZU9yaWdpbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIFJldGFpblB0cjxX
ZWJTZWN1cml0eU9yaWdpbj4gd2ViT3JpZ2luID0gYWRvcHROUyhbW1dlYlNlY3VyaXR5T3JpZ2lu
IGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46KCppdCkuZ2V0KCldKTsKICAg
ICAgICAgW3dlYk9yaWdpbnMgYWRkT2JqZWN0OndlYk9yaWdpbi5nZXQoKV07CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApp
bmRleCBlNzExYTQ0Y2IzZTY1NGM3YTE0ZTlmODU3YWY0N2Y1MTk5ZWY1YWIwLi5lYjU3ODYzMDM1
N2NhNDM3NmM0ODMyNzVmNGFiMmZhNTEzZGMwMWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtNjcsMTAgKzY3LDEwIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFu
Z2UqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERh
dGFGb3JSYW5nZShXZWJDb3JlOjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiA+JiBwYXN0ZWJvYXJkRGF0
YSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9y
UmFuZ2UoV2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgT1ZF
UlJJREU7CiAKICAgICB2aXJ0dWFsIE5TU3RyaW5nKiB1c2VyVmlzaWJsZVN0cmluZyhOU1VSTCAq
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQqIGRvY3Vt
ZW50RnJhZ21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKiwgVmVj
dG9yPCBSZWZQdHI8V2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlPiA+JikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50KiBkb2N1bWVudEZyYWdtZW50RnJvbUF0
dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICosIFZlY3RvcjwgUmVmUHRyPFdlYkNv
cmU6OkFyY2hpdmVSZXNvdXJjZT4+JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldElu
c2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBO
U1VSTCogY2Fub25pY2FsaXplVVJMKE5TVVJMKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBOU1VS
TCogY2Fub25pY2FsaXplVVJMU3RyaW5nKE5TU3RyaW5nKikgT1ZFUlJJREU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXgg
M2E1N2M0MDg2M2JkNDUxOWUxNjliODk1ZjU4NThiZmNhMjM4ZGI0Yi4uZTJjZWEwYzBjNjhmYWEz
OWY1NTc0ZTNjMTZlNjU4NGVkMjI2YjZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtMzIzLDcgKzMyMyw3IEBAIHZv
aWQgV2ViRWRpdG9yQ2xpZW50Ojp3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29y
ZTo6UmFuZ2UqKQogICAgIC8vIE5vdCBpbXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4K
IH0KIAotdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFu
Z2UoV2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0
b3I8UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gPiYgcGFzdGVib2FyZERhdGEpCit2b2lk
IFdlYkVkaXRvckNsaWVudDo6Z2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShXZWJDb3Jl
OjpSYW5nZSosIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4mIHBhc3RlYm9hcmREYXRhKQogewogICAgIC8vIE5vdCBp
bXBsZW1lbnRlZCBXZWJLaXQsIG9ubHkgV2ViS2l0Mi4KIH0KQEAgLTM2Myw3ICszNjMsNyBAQCBz
dGF0aWMgTlNBcnJheSAqY3JlYXRlRXhjbHVkZWRFbGVtZW50c0ZvckF0dHJpYnV0ZWRTdHJpbmdD
b252ZXJzaW9uKCkKICAgICByZXR1cm4gZWxlbWVudHM7CiB9CiAKLURvY3VtZW50RnJhZ21lbnQq
IFdlYkVkaXRvckNsaWVudDo6ZG9jdW1lbnRGcmFnbWVudEZyb21BdHRyaWJ1dGVkU3RyaW5nKE5T
QXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
PiYgcmVzb3VyY2VzKQorRG9jdW1lbnRGcmFnbWVudCogV2ViRWRpdG9yQ2xpZW50Ojpkb2N1bWVu
dEZyYWdtZW50RnJvbUF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcs
IFZlY3RvcjxSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4mIHJlc291cmNlcykKIHsKICAgICBzdGF0
aWMgTlNBcnJheSAqZXhjbHVkZWRFbGVtZW50cyA9IGNyZWF0ZUV4Y2x1ZGVkRWxlbWVudHNGb3JB
dHRyaWJ1dGVkU3RyaW5nQ29udmVyc2lvbigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNmJk
NTgxYzQzZDRhMWQ0Y2FjMzVhNDczNWE2NjU5YWFjNmM2OTY0MC4uMTFjNzQ2ZGRlNDNhYTEyODE0
NzJjY2JhMmUzNTRkZmM2MjVjZDU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC00Nyw3ICs0Nyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiB9CiAKLXR5
cGVkZWYgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+LCBSZXRhaW5QdHI8
V2ViUmVzb3VyY2U+ID4gUmVzb3VyY2VNYXA7Cit0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyPiwgUmV0YWluUHRyPFdlYlJlc291cmNlPj4gUmVzb3VyY2VNYXA7
CiAKIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKaW5kZXggZDY5NDllYTJkMGRlZDM5
MjM5ODFlYWY0ZTkxODVhYWQ1YmMzMGRhYS4uODA2ZmEwZmZlZThhODEyM2IxYzcwNjBhMTM1YmU4
NDc1OTk0Y2RhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKQEAgLTc0LDkgKzc0LDkgQEAgcHJpdmF0ZToK
IAogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykgfHwg
RU5BQkxFKExFR0FDWV9OT1RJRklDQVRJT05TKQotICAgIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbj4sIFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+ID4gbV9ub3RpZmljYXRp
b25NYXA7CisgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uPiwgUmV0YWlu
UHRyPFdlYk5vdGlmaWNhdGlvbj4+IG1fbm90aWZpY2F0aW9uTWFwOwogICAgIAotICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4sIFZlY3Rv
cjxSZXRhaW5QdHI8V2ViTm90aWZpY2F0aW9uPiA+ID4gTm90aWZpY2F0aW9uQ29udGV4dE1hcDsK
KyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ+LCBWZWN0b3I8UmV0YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiBOb3RpZmljYXRpb25Db250
ZXh0TWFwOwogICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXAgbV9ub3RpZmljYXRpb25Db250ZXh0
TWFwOwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCmluZGV4IGQ5MmJjNzVhMTNmZmM0ZTUx
ZTc3MWZkYjZjNDZlNDhkZWU1OGQ2NzIuLjJkNGEwYTM2MTAwMTEzMzFhYjc0YjI0MjRjMGVlOGI0
OTEzZGUxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Yk5vdGlmaWNhdGlvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBXZWJO
b3RpZmljYXRpb25DbGllbnQ6OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAg
UmV0YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4gd2ViTm90aWZpY2F0aW9uID0gYWRvcHROUyhbW1dl
Yk5vdGlmaWNhdGlvbiBhbGxvY10gaW5pdFdpdGhDb3JlTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlv
biBub3RpZmljYXRpb25JRDpub3RpZmljYXRpb25JRF0pOwogICAgIG1fbm90aWZpY2F0aW9uTWFw
LnNldChub3RpZmljYXRpb24sIHdlYk5vdGlmaWNhdGlvbik7CiAKLSAgICBOb3RpZmljYXRpb25D
b250ZXh0TWFwOjppdGVyYXRvciBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5hZGQobm90
aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3RvcjxSZXRhaW5QdHI8V2Vi
Tm90aWZpY2F0aW9uPiA+KCkpLml0ZXJhdG9yOworICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmFkZChub3RpZmljYXRpb24t
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgVmVjdG9yPFJldGFpblB0cjxXZWJOb3RpZmljYXRp
b24+PigpKS5pdGVyYXRvcjsKICAgICBpdC0+dmFsdWUuYXBwZW5kKHdlYk5vdGlmaWNhdGlvbik7
CiAKICAgICBbW21fd2ViVmlldyBfbm90aWZpY2F0aW9uUHJvdmlkZXJdIHNob3dOb3RpZmljYXRp
b246d2ViTm90aWZpY2F0aW9uLmdldCgpIGZyb21XZWJWaWV3Om1fd2ViVmlld107CkBAIC0xMjEs
NyArMTIxLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNsZWFyTm90aWZpY2F0aW9u
cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmIChpdCA9PSBtX25vdGlm
aWNhdGlvbkNvbnRleHRNYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBWZWN0
b3I8UmV0YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4gPiYgd2ViTm90aWZpY2F0aW9ucyA9IGl0LT52
YWx1ZTsKKyAgICBWZWN0b3I8UmV0YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4+JiB3ZWJOb3RpZmlj
YXRpb25zID0gaXQtPnZhbHVlOwogICAgIE5TTXV0YWJsZUFycmF5ICpuc0lEcyA9IFtOU011dGFi
bGVBcnJheSBhcnJheV07CiAgICAgc2l6ZV90IGNvdW50ID0gd2ViTm90aWZpY2F0aW9ucy5zaXpl
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0KaW5kZXggOGQ5YTI3ZTkyYzRiMDBkZmEwYmFmNjZl
ZTcwYmE3NGZjMWNkOGY2MS4uOTg5MGY4ZGZhOGM3MjM4YzlhN2I0NzhkM2VkMjdiMDJiZTgzZDNm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbQpAQCAtMTc2LDEzICsx
NzYsMTMgQEAgc3RhdGljIEJPT0wgaXNBcnJheU9mQ2xhc3MoaWQgb2JqZWN0LCBDbGFzcyBlbGVt
ZW50Q2xhc3MpCiAgICAgCiAgICAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY29yZU1haW5SZXNv
dXJjZSA9IG1haW5SZXNvdXJjZSA/IFttYWluUmVzb3VyY2UgX2NvcmVSZXNvdXJjZV0gOiAwOwog
Ci0gICAgVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiA+IGNvcmVSZXNvdXJjZXM7
CisgICAgVmVjdG9yPFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPj4gY29yZVJlc291cmNlczsK
ICAgICBOU0VudW1lcmF0b3IgKmVudW1lcmF0b3IgPSBbc3VicmVzb3VyY2VzIG9iamVjdEVudW1l
cmF0b3JdOwogICAgIFdlYlJlc291cmNlICpzdWJyZXNvdXJjZTsKICAgICB3aGlsZSAoKHN1YnJl
c291cmNlID0gW2VudW1lcmF0b3IgbmV4dE9iamVjdF0pICE9IG5pbCkKICAgICAgICAgY29yZVJl
c291cmNlcy5hcHBlbmQoW3N1YnJlc291cmNlIF9jb3JlUmVzb3VyY2VdKTsKIAotICAgIFZlY3Rv
cjxQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+ID4gY29yZUFyY2hpdmVzOworICAgIFZlY3Rv
cjxQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+PiBjb3JlQXJjaGl2ZXM7CiAgICAgZW51bWVy
YXRvciA9IFtzdWJmcmFtZUFyY2hpdmVzIG9iamVjdEVudW1lcmF0b3JdOwogICAgIFdlYkFyY2hp
dmUgKnN1YmZyYW1lQXJjaGl2ZTsKICAgICB3aGlsZSAoKHN1YmZyYW1lQXJjaGl2ZSA9IFtlbnVt
ZXJhdG9yIG5leHRPYmplY3RdKSAhPSBuaWwpCkBAIC0yOTUsNyArMjk1LDcgQEAgc3RhdGljIEJP
T0wgaXNBcnJheU9mQ2xhc3MoaWQgb2JqZWN0LCBDbGFzcyBlbGVtZW50Q2xhc3MpCiAgICAgICAg
IGlmICghY29yZUFyY2hpdmUpCiAgICAgICAgICAgICBfcHJpdmF0ZS0+Y2FjaGVkU3VicmVzb3Vy
Y2VzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0XTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBjb25zdCBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiYgc3VicmVzb3VyY2VzKGNv
cmVBcmNoaXZlLT5zdWJyZXNvdXJjZXMoKSk7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8UmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4+JiBzdWJyZXNvdXJjZXMoY29yZUFyY2hpdmUtPnN1YnJlc291
cmNlcygpKTsKICAgICAgICAgICAgIE5TTXV0YWJsZUFycmF5ICptdXRhYmxlQXJyYXkgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnN1YnJlc291cmNlcy5zaXplKCld
OwogICAgICAgICAgICAgX3ByaXZhdGUtPmNhY2hlZFN1YnJlc291cmNlcyA9IG11dGFibGVBcnJh
eTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdWJyZXNvdXJjZXMuc2l6
ZSgpOyArK2kpIHsKQEAgLTMyMyw3ICszMjMsNyBAQCBzdGF0aWMgQk9PTCBpc0FycmF5T2ZDbGFz
cyhpZCBvYmplY3QsIENsYXNzIGVsZW1lbnRDbGFzcykKICAgICAgICAgaWYgKCFjb3JlQXJjaGl2
ZSkKICAgICAgICAgICAgIF9wcml2YXRlLT5jYWNoZWRTdWJmcmFtZUFyY2hpdmVzID0gW1tOU0Fy
cmF5IGFsbG9jXSBpbml0XTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBWZWN0
b3I8UmVmUHRyPEFyY2hpdmU+ID4mIHN1YmZyYW1lQXJjaGl2ZXMoY29yZUFyY2hpdmUtPnN1YmZy
YW1lQXJjaGl2ZXMoKSk7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEFyY2hpdmU+
PiYgc3ViZnJhbWVBcmNoaXZlcyhjb3JlQXJjaGl2ZS0+c3ViZnJhbWVBcmNoaXZlcygpKTsKICAg
ICAgICAgICAgIE5TTXV0YWJsZUFycmF5ICptdXRhYmxlQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnN1YmZyYW1lQXJjaGl2ZXMuc2l6ZSgpXTsKICAgICAg
ICAgICAgIF9wcml2YXRlLT5jYWNoZWRTdWJmcmFtZUFyY2hpdmVzID0gbXV0YWJsZUFycmF5Owog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN1YmZyYW1lQXJjaGl2ZXMuc2l6
ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpp
bmRleCAzMjliZThkMWE2YzRiOGRiOGI4MGMxYmMzZDg2MTU2NzM3NzEwNmVjLi4yNzkzYTI3Nzcz
YmMzMzhiYmZmYjM3NDEzMTlkNTdlNjUxOGEwZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICBSZWZQdHI8V2ViRG9jdW1lbnRMb2FkZXJNYWM+IGxvYWRlcjsKLSAgICBSZXRhaW5QdHI8
aWQ8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4gPiByZXByZXNlbnRhdGlvbjsKKyAgICBSZXRh
aW5QdHI8aWQ8V2ViRG9jdW1lbnRSZXByZXNlbnRhdGlvbj4+IHJlcHJlc2VudGF0aW9uOwogICAg
IEJPT0wgcmVwcmVzZW50YXRpb25GaW5pc2hlZExvYWRpbmc7CiAgICAgQk9PTCBpbmNsdWRlZElu
V2ViS2l0U3RhdGlzdGljczsKIH07CkBAIC01NTIsNyArNTUyLDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGFkZFR5cGVzRnJvbUNsYXNzKE5TTXV0YWJsZURpY3Rpb25hcnkgKmFsbFR5cGVzLCBDbGFz
cyBvYmpDQ2wKIAogLSAoTlNBcnJheSAqKXN1YnJlc291cmNlcwogewotICAgIFZlY3RvcjxQYXNz
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gPiBjb3JlU3VicmVzb3VyY2VzOworICAgIFZlY3RvcjxQ
YXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+IGNvcmVTdWJyZXNvdXJjZXM7CiAgICAgdG9Qcml2
YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5nZXRTdWJyZXNvdXJjZXMoY29yZVN1YnJlc291cmNlcyk7
CiAKICAgICBOU011dGFibGVBcnJheSAqc3VicmVzb3VyY2VzID0gW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb3JlU3VicmVzb3VyY2VzLnNpemUoKV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXggNThiZmQzNTNhOWE1ZTM5ZDgwN2Y2
MjI1Y2ZlNGM1YjEyOWVmZTI1MS4uMGNjOTM2ZWRmMzYwNDUwMjdkZmU5ZDA4Yjc4NGNkNDgyZmJm
NWNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApAQCAtMTc1LDcg
KzE3NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gV2ViS2l0IGhhcyBib3RoIGEgZ2xvYmFsIHBsdWct
aW4gZGF0YWJhc2UgYW5kIGEgc2VwYXJhdGUsIHBlciBXZWJWaWV3IHBsdWctaW4gZGF0YWJhc2Uu
IERhc2hib2FyZCB1c2VzIHRoZSBwZXIgV2ViVmlldyBkYXRhYmFzZS4KICAgICBXZWJQbHVnaW5E
YXRhYmFzZSAqcGx1Z2luRGF0YWJhc2U7CiAgICAgCi0gICAgSGFzaE1hcDx1bnNpZ25lZCBsb25n
LCBSZXRhaW5QdHI8aWQ+ID4gaWRlbnRpZmllck1hcDsKKyAgICBIYXNoTWFwPHVuc2lnbmVkIGxv
bmcsIFJldGFpblB0cjxpZD4+IGlkZW50aWZpZXJNYXA7CiAKICAgICBCT09MIF9rZXlib2FyZFVJ
TW9kZUFjY2Vzc2VkOwogICAgIFdlYkNvcmU6OktleWJvYXJkVUlNb2RlIF9rZXlib2FyZFVJTW9k
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNr
ZXJNYWMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMu
aAppbmRleCAzOTM2YmU5YjcwZDRhZWRhN2JkZGQxZTAwYjhhNDcwZWU4NmM0ZjhmLi5hYmMyNTFh
YmZhYTk5ZjkzYWNmYjZhZTc3NjIzMzdhYzA3MmIzMmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbG9yUGlja2VyTWFjLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5oCkBAIC03MSw3ICs3MSw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJDb2xvclBpY2tlck1hYyhXZWJDb2xvclBpY2tlcjo6
Q2xpZW50KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
V0tWaWV3Kik7Ci0gICAgUmV0YWluUHRyPE5TT2JqZWN0PFdLQ29sb3JQaWNrZXJVSU1hYz4gPiBt
X2NvbG9yUGlja2VyVUk7CisgICAgUmV0YWluUHRyPE5TT2JqZWN0PFdLQ29sb3JQaWNrZXJVSU1h
Yz4+IG1fY29sb3JQaWNrZXJVSTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
V2ViUHJvY2Vzc1BsdWdJbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW4ubW0KaW5kZXggZjY4MTVhMTA1NmNhZTM0
ODZmMWQ3MmZhZmY3MWJhYjk0NmYzOWJlNS4uNTIyNjNlNmEwZGM5MTk5OWVmMGRkMDgzMmU0Y2Fi
YTcyODcxNWM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luLm1t
CkBAIC00Miw3ICs0Miw3IEBACiB0eXBlZGVmIEhhc2hNYXA8V0tCdW5kbGVQYWdlUmVmLCBSZXRh
aW5QdHI8V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICo+PiBCdW5k
bGVQYWdlV3JhcHBlckNhY2hlOwogCiBAaW50ZXJmYWNlIFdLV2ViUHJvY2Vzc1BsdWdJbkNvbnRy
b2xsZXIgKCkgewotICAgIFJldGFpblB0cjxpZCA8V0tXZWJQcm9jZXNzUGx1Z0luPiA+IF9wcmlu
Y2lwYWxDbGFzc0luc3RhbmNlOworICAgIFJldGFpblB0cjxpZCA8V0tXZWJQcm9jZXNzUGx1Z0lu
Pj4gX3ByaW5jaXBhbENsYXNzSW5zdGFuY2U7CiAgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVSZWY+
IF9idW5kbGVSZWY7CiAgICAgQnVuZGxlUGFnZVdyYXBwZXJDYWNoZSBfYnVuZGxlUGFnZVdyYXBw
ZXJDYWNoZTsKICAgICBSZXRhaW5QdHI8V0tDb25uZWN0aW9uICo+IF9jb25uZWN0aW9uV3JhcHBl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGZjYTY5N2Fk
NDlhNjAzMGZjN2Y3YTRhNjY4MmZkZTg1OTEwNmI1NDQuLmMwOTBmNDQ1NTU2M2E4OGJmZDFlNjgw
OTgzNThjY2I3OGFiYWQzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcApAQCAtNTUwLDggKzU1MCw4IEBAIFdlYlBhZ2UqIFdlYlByb2Nlc3M6OmZvY3VzZWRXZWJQ
YWdlKCkgY29uc3QKICNpZiBQTEFURk9STShNQUMpCiB2b2lkIFdlYlByb2Nlc3M6OnNldFByb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWQoYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKQogewot
ICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPiA+Ojpjb25zdF9pdGVyYXRvciBl
bmQgPSBtX3BhZ2VNYXAuZW5kKCk7Ci0gICAgZm9yIChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
V2ViUGFnZT4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3BhZ2VNYXAuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+Pjo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbV9wYWdlTWFwLmVuZCgpOworICAgIGZvciAoSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPFdlYlBhZ2U+Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3BhZ2VNYXAuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIFdlYlBhZ2UqIHBhZ2UgPSAoKml0KS52
YWx1ZS5nZXQoKTsKICAgICAgICAgcGFnZS0+c2V0VGhyb3R0bGVkKHByb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWQpOwogICAgIH0K
</data>
<flag name="review"
          id="237169"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>