From 47a8228a0908782e8eb368bea472a052e3585c29 Mon Sep 17 00:00:00 2001 From: Ari Archer Date: Tue, 23 Jan 2024 19:14:40 +0200 Subject: [PATCH] [docx] split commit for file 4000 Signed-off-by: Ari Archer --- .../earlybird/EarlybirdEncodedFeatures.docx | Bin 0 -> 37953 bytes .../earlybird/EarlybirdEncodedFeatures.java | 148 -- .../EarlybirdEncodedFeaturesUtil.docx | Bin 0 -> 37199 bytes .../EarlybirdEncodedFeaturesUtil.java | 36 - .../earlybird/EarlybirdFieldConstants.docx | Bin 0 -> 46530 bytes .../earlybird/EarlybirdFieldConstants.java | 1132 ---------- .../earlybird/EarlybirdSchemaBuilder.docx | Bin 0 -> 37874 bytes .../earlybird/EarlybirdSchemaBuilder.java | 96 - .../earlybird/EarlybirdSchemaCreateTool.docx | Bin 0 -> 43603 bytes .../earlybird/EarlybirdSchemaCreateTool.java | 702 ------ .../EarlybirdThriftDocumentBuilder.docx | Bin 0 -> 44528 bytes .../EarlybirdThriftDocumentBuilder.java | 897 -------- .../EarlybirdThriftDocumentUtil.docx | Bin 0 -> 39526 bytes .../EarlybirdThriftDocumentUtil.java | 377 ---- .../common/schema/earlybird/FlushVersion.docx | Bin 0 -> 42869 bytes .../common/schema/earlybird/FlushVersion.java | 336 --- .../common/search/AndNotDocIdSetIterator.docx | Bin 0 -> 37159 bytes .../common/search/AndNotDocIdSetIterator.java | 71 - .../com/twitter/search/common/search/BUILD | 33 - .../twitter/search/common/search/BUILD.docx | Bin 0 -> 37033 bytes .../DelegatingEarlyTerminationCollector.docx | Bin 0 -> 37400 bytes .../DelegatingEarlyTerminationCollector.java | 75 - .../search/common/search/DocIdTracker.docx | Bin 0 -> 36835 bytes .../search/common/search/DocIdTracker.java | 12 - .../common/search/EarlyTerminationState.docx | Bin 0 -> 37318 bytes .../common/search/EarlyTerminationState.java | 51 - .../search/GeoQuadTreeQueryBuilderUtil.docx | Bin 0 -> 37695 bytes .../search/GeoQuadTreeQueryBuilderUtil.java | 65 - .../search/IntArrayDocIdSetIterator.docx | Bin 0 -> 37297 bytes .../search/IntArrayDocIdSetIterator.java | 76 - .../common/search/PairDocIdSetIterator.docx | Bin 0 -> 37343 bytes .../common/search/PairDocIdSetIterator.java | 82 - .../common/search/QueryCostProvider.docx | Bin 0 -> 36789 bytes .../common/search/QueryCostProvider.java | 9 - .../common/search/TerminationTracker.docx | Bin 0 -> 39048 bytes .../common/search/TerminationTracker.java | 202 -- .../common/search/TwitterCollector.docx | Bin 0 -> 37250 bytes .../common/search/TwitterCollector.java | 31 - .../TwitterEarlyTerminationCollector.docx | Bin 0 -> 40454 bytes .../TwitterEarlyTerminationCollector.java | 328 --- .../common/search/TwitterIndexSearcher.docx | Bin 0 -> 39959 bytes .../common/search/TwitterIndexSearcher.java | 189 -- .../search/common/search/termination/BUILD | 20 - .../common/search/termination/BUILD.docx | Bin 0 -> 36906 bytes .../search/termination/QueryTimeout.docx | Bin 0 -> 36958 bytes .../search/termination/QueryTimeout.java | 24 - .../termination/QueryTimeoutFactory.docx | Bin 0 -> 37109 bytes .../termination/QueryTimeoutFactory.java | 34 - .../search/termination/QueryTimeoutImpl.docx | Bin 0 -> 37437 bytes .../search/termination/QueryTimeoutImpl.java | 65 - .../search/termination/TerminationQuery.docx | Bin 0 -> 37340 bytes .../search/termination/TerminationQuery.java | 66 - .../termination/TerminationQueryScorer.docx | Bin 0 -> 37611 bytes .../termination/TerminationQueryScorer.java | 91 - .../termination/TerminationQueryWeight.docx | Bin 0 -> 37245 bytes .../termination/TerminationQueryWeight.java | 53 - .../search/common/util/earlybird/BUILD | 32 - .../search/common/util/earlybird/BUILD.docx | Bin 0 -> 37039 bytes .../earlybird/EarlybirdResponseMergeUtil.docx | Bin 0 -> 39663 bytes .../earlybird/EarlybirdResponseMergeUtil.java | 269 --- .../util/earlybird/EarlybirdResponseUtil.docx | Bin 0 -> 38837 bytes .../util/earlybird/EarlybirdResponseUtil.java | 204 -- .../util/earlybird/FacetsResultsUtils.docx | Bin 0 -> 42038 bytes .../util/earlybird/FacetsResultsUtils.java | 495 ----- .../util/earlybird/ResponseMergerUtils.docx | Bin 0 -> 37221 bytes .../util/earlybird/ResponseMergerUtils.java | 45 - .../common/util/earlybird/ResultsUtil.docx | Bin 0 -> 37223 bytes .../common/util/earlybird/ResultsUtil.java | 36 - .../util/earlybird/TermStatisticsUtil.docx | Bin 0 -> 37230 bytes .../util/earlybird/TermStatisticsUtil.java | 47 - .../util/earlybird/ThriftSearchQueryUtil.docx | Bin 0 -> 37110 bytes .../util/earlybird/ThriftSearchQueryUtil.java | 29 - .../earlybird/ThriftSearchResultUtil.docx | Bin 0 -> 38845 bytes .../earlybird/ThriftSearchResultUtil.java | 209 -- ...ThriftSearchResultsRelevanceStatsUtil.docx | Bin 0 -> 37308 bytes ...ThriftSearchResultsRelevanceStatsUtil.java | 46 - .../com/twitter/search/common/util/lang/BUILD | 18 - .../search/common/util/lang/BUILD.docx | Bin 0 -> 36919 bytes .../common/util/lang/ThriftLanguageUtil.docx | Bin 0 -> 38235 bytes .../common/util/lang/ThriftLanguageUtil.java | 141 -- .../com/twitter/search/common/util/ml/BUILD | 16 - .../twitter/search/common/util/ml/BUILD.docx | Bin 0 -> 36871 bytes .../common/util/ml/EnumBasedLinearModel.docx | Bin 0 -> 38324 bytes .../common/util/ml/EnumBasedLinearModel.java | 141 -- .../search/common/util/ml/FeatureUtils.docx | Bin 0 -> 37943 bytes .../search/common/util/ml/FeatureUtils.java | 120 -- .../common/util/ml/MapBasedLinearModel.docx | Bin 0 -> 37075 bytes .../common/util/ml/MapBasedLinearModel.java | 32 - .../util/ml/StringMapBasedLinearModel.docx | Bin 0 -> 38115 bytes .../util/ml/StringMapBasedLinearModel.java | 125 -- .../common/util/ml/models_manager/BUILD | 14 - .../common/util/ml/models_manager/BUILD.docx | Bin 0 -> 36849 bytes .../ml/models_manager/BaseModelsManager.docx | Bin 0 -> 40286 bytes .../ml/models_manager/BaseModelsManager.java | 293 --- .../common/util/ml/prediction_engine/BUILD | 68 - .../util/ml/prediction_engine/BUILD.docx | Bin 0 -> 37200 bytes .../BaseLegacyScoreAccumulator.docx | Bin 0 -> 37525 bytes .../BaseLegacyScoreAccumulator.java | 64 - .../prediction_engine/BaseModelBuilder.docx | Bin 0 -> 38332 bytes .../prediction_engine/BaseModelBuilder.java | 111 - .../BaseScoreAccumulator.docx | Bin 0 -> 37219 bytes .../BaseScoreAccumulator.java | 48 - .../CompositeFeatureContext.docx | Bin 0 -> 37127 bytes .../CompositeFeatureContext.java | 35 - .../DecisionForestModelsManager.docx | Bin 0 -> 37763 bytes .../DecisionForestModelsManager.java | 69 - .../prediction_engine/DiscretizedFeature.docx | Bin 0 -> 37384 bytes .../prediction_engine/DiscretizedFeature.java | 47 - .../DiscretizedFeatureRange.docx | Bin 0 -> 37142 bytes .../DiscretizedFeatureRange.java | 33 - .../prediction_engine/LegacyModelBuilder.docx | Bin 0 -> 37819 bytes .../prediction_engine/LegacyModelBuilder.java | 86 - .../LightweightLinearModel.docx | Bin 0 -> 38728 bytes .../LightweightLinearModel.java | 187 -- .../ml/prediction_engine/ModelBuilder.docx | Bin 0 -> 36849 bytes .../ml/prediction_engine/ModelBuilder.java | 16 - .../ml/prediction_engine/ModelLoader.docx | Bin 0 -> 38962 bytes .../ml/prediction_engine/ModelLoader.java | 178 -- .../PredictionEngineModelsManager.docx | Bin 0 -> 37704 bytes .../PredictionEngineModelsManager.java | 67 - .../SchemaBasedModelBuilder.docx | Bin 0 -> 38079 bytes .../SchemaBasedModelBuilder.java | 105 - .../SchemaBasedScoreAccumulator.docx | Bin 0 -> 37573 bytes .../SchemaBasedScoreAccumulator.java | 64 - .../common/util/ml/tensorflow_engine/BUILD | 21 - .../util/ml/tensorflow_engine/BUILD.docx | Bin 0 -> 36944 bytes .../TensorflowModelsManager.docx | Bin 0 -> 38770 bytes .../TensorflowModelsManager.java | 189 -- .../com/twitter/search/core/earlybird/BUILD | 38 - .../twitter/search/core/earlybird/BUILD.docx | Bin 0 -> 37079 bytes .../twitter/search/core/earlybird/README.docx | Bin 0 -> 37856 bytes .../twitter/search/core/earlybird/README.md | 21 - .../facets/AbstractFacetCountingArray.docx | Bin 0 -> 39557 bytes .../facets/AbstractFacetCountingArray.java | 231 -- .../facets/CSFFacetCountIterator.docx | Bin 0 -> 37513 bytes .../facets/CSFFacetCountIterator.java | 56 - .../facets/CompositeFacetCountIterator.docx | Bin 0 -> 37171 bytes .../facets/CompositeFacetCountIterator.java | 46 - .../facets/DummyFacetAccumulator.docx | Bin 0 -> 36956 bytes .../facets/DummyFacetAccumulator.java | 28 - .../facets/EarlybirdFacetDocValueSet.docx | Bin 0 -> 38296 bytes .../facets/EarlybirdFacetDocValueSet.java | 153 -- .../earlybird/facets/EarlybirdFacets.docx | Bin 0 -> 37874 bytes .../earlybird/facets/EarlybirdFacets.java | 102 - .../facets/EarlybirdFacetsFactory.docx | Bin 0 -> 37245 bytes .../facets/EarlybirdFacetsFactory.java | 48 - .../earlybird/facets/FacetAccumulator.docx | Bin 0 -> 37414 bytes .../earlybird/facets/FacetAccumulator.java | 36 - .../facets/FacetCountAggregator.docx | Bin 0 -> 37819 bytes .../facets/FacetCountAggregator.java | 93 - .../earlybird/facets/FacetCountIterator.docx | Bin 0 -> 37377 bytes .../earlybird/facets/FacetCountIterator.java | 57 - .../facets/FacetCountIteratorFactory.docx | Bin 0 -> 37048 bytes .../facets/FacetCountIteratorFactory.java | 23 - .../earlybird/facets/FacetCountState.docx | Bin 0 -> 37586 bytes .../earlybird/facets/FacetCountState.java | 88 - .../earlybird/facets/FacetCountingArray.docx | Bin 0 -> 38883 bytes .../earlybird/facets/FacetCountingArray.java | 156 -- .../facets/FacetCountingArrayWriter.docx | Bin 0 -> 37545 bytes .../facets/FacetCountingArrayWriter.java | 55 - .../core/earlybird/facets/FacetIDMap.docx | Bin 0 -> 38394 bytes .../core/earlybird/facets/FacetIDMap.java | 161 -- .../earlybird/facets/FacetLabelProvider.docx | Bin 0 -> 38143 bytes .../earlybird/facets/FacetLabelProvider.java | 206 -- .../facets/FacetResponseRewriter.docx | Bin 0 -> 36844 bytes .../facets/FacetResponseRewriter.java | 16 - .../earlybird/facets/FacetTermCollector.docx | Bin 0 -> 36946 bytes .../earlybird/facets/FacetTermCollector.java | 16 - .../core/earlybird/facets/FacetUtil.docx | Bin 0 -> 38102 bytes .../core/earlybird/facets/FacetUtil.java | 106 - .../earlybird/facets/LanguageHistogram.docx | Bin 0 -> 37709 bytes .../earlybird/facets/LanguageHistogram.java | 104 - .../facets/OptimizedFacetCountingArray.docx | Bin 0 -> 37597 bytes .../facets/OptimizedFacetCountingArray.java | 82 - .../facets/PerfieldFacetCountAggregator.docx | Bin 0 -> 37889 bytes .../facets/PerfieldFacetCountAggregator.java | 96 - .../SortedSetDocValuesFacetsFactory.docx | Bin 0 -> 37200 bytes .../SortedSetDocValuesFacetsFactory.java | 45 - .../SortedSetDocValuesReaderStateHelper.docx | Bin 0 -> 36954 bytes .../SortedSetDocValuesReaderStateHelper.java | 14 - .../earlybird/index/DocIDToTweetIDMapper.docx | Bin 0 -> 37602 bytes .../earlybird/index/DocIDToTweetIDMapper.java | 79 - .../EarlybirdIndexSegmentAtomicReader.docx | Bin 0 -> 38245 bytes .../EarlybirdIndexSegmentAtomicReader.java | 139 -- .../index/EarlybirdIndexSegmentData.docx | Bin 0 -> 41496 bytes .../index/EarlybirdIndexSegmentData.java | 474 ---- .../index/EarlybirdIndexSegmentWriter.docx | Bin 0 -> 38050 bytes .../index/EarlybirdIndexSegmentWriter.java | 130 -- .../index/EarlybirdIndexableField.docx | Bin 0 -> 37035 bytes .../index/EarlybirdIndexableField.java | 24 - ...rlybirdLuceneIndexSegmentAtomicReader.docx | Bin 0 -> 39428 bytes ...rlybirdLuceneIndexSegmentAtomicReader.java | 336 --- .../EarlybirdLuceneIndexSegmentData.docx | Bin 0 -> 38731 bytes .../EarlybirdLuceneIndexSegmentData.java | 197 -- .../EarlybirdLuceneIndexSegmentWriter.docx | Bin 0 -> 38674 bytes .../EarlybirdLuceneIndexSegmentWriter.java | 170 -- ...ybirdRealtimeIndexSegmentAtomicReader.docx | Bin 0 -> 38346 bytes ...ybirdRealtimeIndexSegmentAtomicReader.java | 175 -- .../EarlybirdRealtimeIndexSegmentData.docx | Bin 0 -> 39093 bytes .../EarlybirdRealtimeIndexSegmentData.java | 251 --- .../EarlybirdRealtimeIndexSegmentWriter.docx | Bin 0 -> 45228 bytes .../EarlybirdRealtimeIndexSegmentWriter.java | 789 ------- .../index/QueryCacheResultForSegment.docx | Bin 0 -> 37134 bytes .../index/QueryCacheResultForSegment.java | 39 - .../index/SequentialDocIDMapper.docx | Bin 0 -> 37425 bytes .../index/SequentialDocIDMapper.java | 87 - .../core/earlybird/index/TimeMapper.docx | Bin 0 -> 37896 bytes .../core/earlybird/index/TimeMapper.java | 80 - .../AbstractColumnStrideMultiIntIndex.docx | Bin 0 -> 37663 bytes .../AbstractColumnStrideMultiIntIndex.java | 79 - .../index/column/ColumnStrideByteIndex.docx | Bin 0 -> 37626 bytes .../index/column/ColumnStrideByteIndex.java | 88 - .../column/ColumnStrideFieldDocValues.docx | Bin 0 -> 37684 bytes .../column/ColumnStrideFieldDocValues.java | 76 - .../index/column/ColumnStrideFieldIndex.docx | Bin 0 -> 37429 bytes .../index/column/ColumnStrideFieldIndex.java | 64 - .../index/column/ColumnStrideIntIndex.docx | Bin 0 -> 37607 bytes .../index/column/ColumnStrideIntIndex.java | 88 - .../column/ColumnStrideIntViewIndex.docx | Bin 0 -> 37459 bytes .../column/ColumnStrideIntViewIndex.java | 71 - .../index/column/ColumnStrideLongIndex.docx | Bin 0 -> 37619 bytes .../index/column/ColumnStrideLongIndex.java | 88 - .../column/ColumnStrideMultiIntIndex.docx | Bin 0 -> 37736 bytes .../column/ColumnStrideMultiIntIndex.java | 102 - .../ConstantColumnStrideFieldIndex.docx | Bin 0 -> 36895 bytes .../ConstantColumnStrideFieldIndex.java | 18 - .../index/column/DocValuesManager.docx | Bin 0 -> 39626 bytes .../index/column/DocValuesManager.java | 248 --- .../index/column/DocValuesUpdate.docx | Bin 0 -> 36796 bytes .../index/column/DocValuesUpdate.java | 8 - .../OptimizedColumnStrideByteIndex.docx | Bin 0 -> 37532 bytes .../OptimizedColumnStrideByteIndex.java | 81 - .../column/OptimizedColumnStrideIntIndex.docx | Bin 0 -> 37527 bytes .../column/OptimizedColumnStrideIntIndex.java | 81 - .../OptimizedColumnStrideLongIndex.docx | Bin 0 -> 37524 bytes .../OptimizedColumnStrideLongIndex.java | 81 - .../OptimizedColumnStrideMultiIntIndex.docx | Bin 0 -> 37685 bytes .../OptimizedColumnStrideMultiIntIndex.java | 90 - .../column/OptimizedDocValuesManager.docx | Bin 0 -> 37597 bytes .../column/OptimizedDocValuesManager.java | 97 - .../column/UnoptimizedDocValuesManager.docx | Bin 0 -> 37256 bytes .../column/UnoptimizedDocValuesManager.java | 69 - .../EarlybirdIndexExtensionsData.docx | Bin 0 -> 36856 bytes .../EarlybirdIndexExtensionsData.java | 15 - .../EarlybirdIndexExtensionsFactory.docx | Bin 0 -> 36948 bytes .../EarlybirdIndexExtensionsFactory.java | 19 - .../EarlybirdRealtimeIndexExtensionsData.docx | Bin 0 -> 36972 bytes .../EarlybirdRealtimeIndexExtensionsData.java | 20 - .../index/inverted/BaseByteBlockPool.docx | Bin 0 -> 40445 bytes .../index/inverted/BaseByteBlockPool.java | 373 ---- .../index/inverted/ByteBlockPool.docx | Bin 0 -> 37329 bytes .../index/inverted/ByteBlockPool.java | 58 - .../index/inverted/ByteTermUtils.docx | Bin 0 -> 38238 bytes .../index/inverted/ByteTermUtils.java | 126 -- .../earlybird/index/inverted/DeletedDocs.docx | Bin 0 -> 38729 bytes .../earlybird/index/inverted/DeletedDocs.java | 245 --- .../EarlybirdCSFDocValuesProcessor.docx | Bin 0 -> 37680 bytes .../EarlybirdCSFDocValuesProcessor.java | 74 - .../EarlybirdOptimizedPostingsEnum.docx | Bin 0 -> 38208 bytes .../EarlybirdOptimizedPostingsEnum.java | 178 -- .../index/inverted/EarlybirdPostingsEnum.docx | Bin 0 -> 37043 bytes .../index/inverted/EarlybirdPostingsEnum.java | 26 - .../index/inverted/FSTTermDictionary.docx | Bin 0 -> 39483 bytes .../index/inverted/FSTTermDictionary.java | 299 --- .../HighDFPackedIntsDocsAndPositionsEnum.docx | Bin 0 -> 38576 bytes .../HighDFPackedIntsDocsAndPositionsEnum.java | 156 -- .../inverted/HighDFPackedIntsDocsEnum.docx | Bin 0 -> 39303 bytes .../inverted/HighDFPackedIntsDocsEnum.java | 222 -- .../HighDFPackedIntsPostingLists.docx | Bin 0 -> 45118 bytes .../HighDFPackedIntsPostingLists.java | 829 ------- .../HighDFPackedIntsSkipListReader.docx | Bin 0 -> 38575 bytes .../HighDFPackedIntsSkipListReader.java | 200 -- .../index/inverted/InMemoryFields.docx | Bin 0 -> 37164 bytes .../index/inverted/InMemoryFields.java | 44 - .../index/inverted/IndexOptimizer.docx | Bin 0 -> 39073 bytes .../index/inverted/IndexOptimizer.java | 201 -- .../index/inverted/IntBlockPool.docx | Bin 0 -> 39220 bytes .../index/inverted/IntBlockPool.java | 225 -- .../IntBlockPoolPackedLongsReader.docx | Bin 0 -> 39326 bytes .../IntBlockPoolPackedLongsReader.java | 253 --- .../IntBlockPoolPackedLongsWriter.docx | Bin 0 -> 38616 bytes .../IntBlockPoolPackedLongsWriter.java | 166 -- .../index/inverted/InvertedIndex.docx | Bin 0 -> 38032 bytes .../index/inverted/InvertedIndex.java | 144 -- .../index/inverted/InvertedRealtimeIndex.docx | Bin 0 -> 41650 bytes .../index/inverted/InvertedRealtimeIndex.java | 558 ----- .../inverted/InvertedRealtimeIndexWriter.docx | Bin 0 -> 38596 bytes .../inverted/InvertedRealtimeIndexWriter.java | 163 -- .../inverted/LowDFPackedIntsPostingLists.docx | Bin 0 -> 39155 bytes .../inverted/LowDFPackedIntsPostingLists.java | 255 --- .../inverted/LowDFPackedIntsPostingsEnum.docx | Bin 0 -> 37978 bytes .../inverted/LowDFPackedIntsPostingsEnum.java | 112 - .../index/inverted/MPHTermDictionary.docx | Bin 0 -> 38470 bytes .../index/inverted/MPHTermDictionary.java | 190 -- .../index/inverted/MultiPostingLists.docx | Bin 0 -> 38006 bytes .../index/inverted/MultiPostingLists.java | 135 -- .../inverted/MultiSegmentTermDictionary.docx | Bin 0 -> 37538 bytes .../inverted/MultiSegmentTermDictionary.java | 60 - ...ultiSegmentTermDictionaryWithFastutil.docx | Bin 0 -> 39071 bytes ...ultiSegmentTermDictionaryWithFastutil.java | 161 -- .../MultiSegmentTermDictionaryWithMap.docx | Bin 0 -> 38474 bytes .../MultiSegmentTermDictionaryWithMap.java | 134 -- .../index/inverted/OptimizedIndexTerms.docx | Bin 0 -> 37011 bytes .../index/inverted/OptimizedIndexTerms.java | 57 - .../index/inverted/OptimizedMemoryIndex.docx | Bin 0 -> 41018 bytes .../index/inverted/OptimizedMemoryIndex.java | 434 ---- .../index/inverted/OptimizedPostingLists.docx | Bin 0 -> 37240 bytes .../index/inverted/OptimizedPostingLists.java | 41 - .../OptimizingPostingsEnumWrapper.docx | Bin 0 -> 38185 bytes .../OptimizingPostingsEnumWrapper.java | 128 -- .../PackedLongsReaderPreComputedValues.docx | Bin 0 -> 38747 bytes .../PackedLongsReaderPreComputedValues.java | 202 -- .../earlybird/index/inverted/PayloadUtil.docx | Bin 0 -> 37849 bytes .../earlybird/index/inverted/PayloadUtil.java | 91 - .../index/inverted/PostingsBufferQueue.docx | Bin 0 -> 38074 bytes .../index/inverted/PostingsBufferQueue.java | 155 -- .../index/inverted/QueryCostTracker.docx | Bin 0 -> 37204 bytes .../index/inverted/QueryCostTracker.java | 48 - .../index/inverted/RealtimeIndexTerms.docx | Bin 0 -> 39650 bytes .../index/inverted/RealtimeIndexTerms.java | 365 ---- .../index/inverted/SkipListComparator.docx | Bin 0 -> 37359 bytes .../index/inverted/SkipListComparator.java | 43 - .../index/inverted/SkipListContainer.docx | Bin 0 -> 44637 bytes .../index/inverted/SkipListContainer.java | 739 ------- .../inverted/SkipListIntegerComparator.docx | Bin 0 -> 37048 bytes .../inverted/SkipListIntegerComparator.java | 26 - .../index/inverted/SkipListPostingList.docx | Bin 0 -> 39104 bytes .../index/inverted/SkipListPostingList.java | 232 -- .../index/inverted/SkipListPostingsEnum.docx | Bin 0 -> 39576 bytes .../index/inverted/SkipListPostingsEnum.java | 255 --- .../index/inverted/SkipListSearchFinger.docx | Bin 0 -> 37300 bytes .../index/inverted/SkipListSearchFinger.java | 45 - .../index/inverted/TermDictionary.docx | Bin 0 -> 37374 bytes .../index/inverted/TermDictionary.java | 47 - .../index/inverted/TermPointerEncoding.docx | Bin 0 -> 37103 bytes .../index/inverted/TermPointerEncoding.java | 38 - .../earlybird/index/inverted/TermsArray.docx | Bin 0 -> 38515 bytes .../earlybird/index/inverted/TermsArray.java | 189 -- .../earlybird/index/util/AllDocsIterator.docx | Bin 0 -> 37625 bytes .../earlybird/index/util/AllDocsIterator.java | 82 - .../core/earlybird/index/util/RangeDISI.docx | Bin 0 -> 37159 bytes .../core/earlybird/index/util/RangeDISI.java | 50 - .../earlybird/index/util/RangeFilterDISI.docx | Bin 0 -> 37259 bytes .../earlybird/index/util/RangeFilterDISI.java | 58 - .../earlybird/index/util/SearchSortUtils.docx | Bin 0 -> 37263 bytes .../earlybird/index/util/SearchSortUtils.java | 42 - src/java/com/twitter/search/earlybird/BUILD | 222 -- .../com/twitter/search/earlybird/BUILD.docx | Bin 0 -> 38752 bytes .../com/twitter/search/earlybird/CONFIG.docx | Bin 0 -> 36688 bytes .../com/twitter/search/earlybird/CONFIG.ini | 7 - .../twitter/search/earlybird/Earlybird.docx | Bin 0 -> 39865 bytes .../twitter/search/earlybird/Earlybird.java | 267 --- .../earlybird/EarlybirdCPUQualityFactor.docx | Bin 0 -> 38354 bytes .../earlybird/EarlybirdCPUQualityFactor.java | 181 -- .../search/earlybird/EarlybirdDarkProxy.docx | Bin 0 -> 38023 bytes .../search/earlybird/EarlybirdDarkProxy.java | 113 - .../EarlybirdFinagleServerManager.docx | Bin 0 -> 37322 bytes .../EarlybirdFinagleServerManager.java | 53 - .../earlybird/EarlybirdFuturePoolManager.docx | Bin 0 -> 37906 bytes .../earlybird/EarlybirdFuturePoolManager.java | 114 - .../earlybird/EarlybirdIndexConfig.docx | Bin 0 -> 38554 bytes .../earlybird/EarlybirdIndexConfig.java | 190 -- .../search/earlybird/EarlybirdMain.docx | Bin 0 -> 36768 bytes .../search/earlybird/EarlybirdMain.java | 10 - ...rlybirdProductionFinagleServerManager.docx | Bin 0 -> 38622 bytes ...rlybirdProductionFinagleServerManager.java | 151 -- .../search/earlybird/EarlybirdSearcher.docx | Bin 0 -> 57862 bytes .../search/earlybird/EarlybirdSearcher.java | 1918 ----------------- .../search/earlybird/EarlybirdServer.docx | Bin 0 -> 49649 bytes .../search/earlybird/EarlybirdServer.java | 1087 ---------- .../earlybird/EarlybirdServerSetManager.docx | Bin 0 -> 39976 bytes .../earlybird/EarlybirdServerSetManager.java | 275 --- .../search/earlybird/EarlybirdStatus.docx | Bin 0 -> 38669 bytes .../search/earlybird/EarlybirdStatus.java | 204 -- .../earlybird/EarlybirdWarmUpManager.docx | Bin 0 -> 38017 bytes .../earlybird/EarlybirdWarmUpManager.java | 100 - .../search/earlybird/QualityFactor.docx | Bin 0 -> 36865 bytes .../search/earlybird/QualityFactor.java | 17 - .../com/twitter/search/earlybird/README.docx | Bin 0 -> 39786 bytes .../com/twitter/search/earlybird/README.md | 83 - .../RealtimeEarlybirdIndexConfig.docx | Bin 0 -> 37888 bytes .../RealtimeEarlybirdIndexConfig.java | 128 -- .../earlybird/RecentTweetRestriction.docx | Bin 0 -> 37420 bytes .../earlybird/RecentTweetRestriction.java | 60 - .../search/earlybird/ServerSetMember.docx | Bin 0 -> 37355 bytes .../search/earlybird/ServerSetMember.java | 55 - .../UpdateableEarlybirdStateManager.docx | Bin 0 -> 41590 bytes .../UpdateableEarlybirdStateManager.java | 437 ---- .../archive/ArchiveEarlybirdIndexConfig.docx | Bin 0 -> 37678 bytes .../archive/ArchiveEarlybirdIndexConfig.java | 75 - .../earlybird/archive/ArchiveHDFSUtils.docx | Bin 0 -> 38644 bytes .../earlybird/archive/ArchiveHDFSUtils.java | 173 -- .../ArchiveOnDiskEarlybirdIndexConfig.docx | Bin 0 -> 37497 bytes .../ArchiveOnDiskEarlybirdIndexConfig.java | 79 - .../ArchiveSearchPartitionManager.docx | Bin 0 -> 42004 bytes .../ArchiveSearchPartitionManager.java | 485 ----- .../earlybird/archive/ArchiveSegment.docx | Bin 0 -> 37715 bytes .../earlybird/archive/ArchiveSegment.java | 88 - .../archive/ArchiveSegmentDataProvider.docx | Bin 0 -> 37649 bytes .../archive/ArchiveSegmentDataProvider.java | 84 - 400 files changed, 31141 deletions(-) create mode 100644 src/java/com/twitter/search/common/schema/earlybird/EarlybirdEncodedFeatures.docx delete mode 100644 src/java/com/twitter/search/common/schema/earlybird/EarlybirdEncodedFeatures.java create mode 100644 src/java/com/twitter/search/common/schema/earlybird/EarlybirdEncodedFeaturesUtil.docx delete mode 100644 src/java/com/twitter/search/common/schema/earlybird/EarlybirdEncodedFeaturesUtil.java create mode 100644 src/java/com/twitter/search/common/schema/earlybird/EarlybirdFieldConstants.docx delete mode 100644 src/java/com/twitter/search/common/schema/earlybird/EarlybirdFieldConstants.java create mode 100644 src/java/com/twitter/search/common/schema/earlybird/EarlybirdSchemaBuilder.docx delete mode 100644 src/java/com/twitter/search/common/schema/earlybird/EarlybirdSchemaBuilder.java create mode 100644 src/java/com/twitter/search/common/schema/earlybird/EarlybirdSchemaCreateTool.docx delete mode 100644 src/java/com/twitter/search/common/schema/earlybird/EarlybirdSchemaCreateTool.java create mode 100644 src/java/com/twitter/search/common/schema/earlybird/EarlybirdThriftDocumentBuilder.docx delete mode 100644 src/java/com/twitter/search/common/schema/earlybird/EarlybirdThriftDocumentBuilder.java create mode 100644 src/java/com/twitter/search/common/schema/earlybird/EarlybirdThriftDocumentUtil.docx delete mode 100644 src/java/com/twitter/search/common/schema/earlybird/EarlybirdThriftDocumentUtil.java create mode 100644 src/java/com/twitter/search/common/schema/earlybird/FlushVersion.docx delete mode 100644 src/java/com/twitter/search/common/schema/earlybird/FlushVersion.java create mode 100644 src/java/com/twitter/search/common/search/AndNotDocIdSetIterator.docx delete mode 100644 src/java/com/twitter/search/common/search/AndNotDocIdSetIterator.java delete mode 100644 src/java/com/twitter/search/common/search/BUILD create mode 100644 src/java/com/twitter/search/common/search/BUILD.docx create mode 100644 src/java/com/twitter/search/common/search/DelegatingEarlyTerminationCollector.docx delete mode 100644 src/java/com/twitter/search/common/search/DelegatingEarlyTerminationCollector.java create mode 100644 src/java/com/twitter/search/common/search/DocIdTracker.docx delete mode 100644 src/java/com/twitter/search/common/search/DocIdTracker.java create mode 100644 src/java/com/twitter/search/common/search/EarlyTerminationState.docx delete mode 100644 src/java/com/twitter/search/common/search/EarlyTerminationState.java create mode 100644 src/java/com/twitter/search/common/search/GeoQuadTreeQueryBuilderUtil.docx delete mode 100644 src/java/com/twitter/search/common/search/GeoQuadTreeQueryBuilderUtil.java create mode 100644 src/java/com/twitter/search/common/search/IntArrayDocIdSetIterator.docx delete mode 100644 src/java/com/twitter/search/common/search/IntArrayDocIdSetIterator.java create mode 100644 src/java/com/twitter/search/common/search/PairDocIdSetIterator.docx delete mode 100644 src/java/com/twitter/search/common/search/PairDocIdSetIterator.java create mode 100644 src/java/com/twitter/search/common/search/QueryCostProvider.docx delete mode 100644 src/java/com/twitter/search/common/search/QueryCostProvider.java create mode 100644 src/java/com/twitter/search/common/search/TerminationTracker.docx delete mode 100644 src/java/com/twitter/search/common/search/TerminationTracker.java create mode 100644 src/java/com/twitter/search/common/search/TwitterCollector.docx delete mode 100644 src/java/com/twitter/search/common/search/TwitterCollector.java create mode 100644 src/java/com/twitter/search/common/search/TwitterEarlyTerminationCollector.docx delete mode 100644 src/java/com/twitter/search/common/search/TwitterEarlyTerminationCollector.java create mode 100644 src/java/com/twitter/search/common/search/TwitterIndexSearcher.docx delete mode 100644 src/java/com/twitter/search/common/search/TwitterIndexSearcher.java delete mode 100644 src/java/com/twitter/search/common/search/termination/BUILD create mode 100644 src/java/com/twitter/search/common/search/termination/BUILD.docx create mode 100644 src/java/com/twitter/search/common/search/termination/QueryTimeout.docx delete mode 100644 src/java/com/twitter/search/common/search/termination/QueryTimeout.java create mode 100644 src/java/com/twitter/search/common/search/termination/QueryTimeoutFactory.docx delete mode 100644 src/java/com/twitter/search/common/search/termination/QueryTimeoutFactory.java create mode 100644 src/java/com/twitter/search/common/search/termination/QueryTimeoutImpl.docx delete mode 100644 src/java/com/twitter/search/common/search/termination/QueryTimeoutImpl.java create mode 100644 src/java/com/twitter/search/common/search/termination/TerminationQuery.docx delete mode 100644 src/java/com/twitter/search/common/search/termination/TerminationQuery.java create mode 100644 src/java/com/twitter/search/common/search/termination/TerminationQueryScorer.docx delete mode 100644 src/java/com/twitter/search/common/search/termination/TerminationQueryScorer.java create mode 100644 src/java/com/twitter/search/common/search/termination/TerminationQueryWeight.docx delete mode 100644 src/java/com/twitter/search/common/search/termination/TerminationQueryWeight.java delete mode 100644 src/java/com/twitter/search/common/util/earlybird/BUILD create mode 100644 src/java/com/twitter/search/common/util/earlybird/BUILD.docx create mode 100644 src/java/com/twitter/search/common/util/earlybird/EarlybirdResponseMergeUtil.docx delete mode 100644 src/java/com/twitter/search/common/util/earlybird/EarlybirdResponseMergeUtil.java create mode 100644 src/java/com/twitter/search/common/util/earlybird/EarlybirdResponseUtil.docx delete mode 100644 src/java/com/twitter/search/common/util/earlybird/EarlybirdResponseUtil.java create mode 100644 src/java/com/twitter/search/common/util/earlybird/FacetsResultsUtils.docx delete mode 100644 src/java/com/twitter/search/common/util/earlybird/FacetsResultsUtils.java create mode 100644 src/java/com/twitter/search/common/util/earlybird/ResponseMergerUtils.docx delete mode 100644 src/java/com/twitter/search/common/util/earlybird/ResponseMergerUtils.java create mode 100644 src/java/com/twitter/search/common/util/earlybird/ResultsUtil.docx delete mode 100644 src/java/com/twitter/search/common/util/earlybird/ResultsUtil.java create mode 100644 src/java/com/twitter/search/common/util/earlybird/TermStatisticsUtil.docx delete mode 100644 src/java/com/twitter/search/common/util/earlybird/TermStatisticsUtil.java create mode 100644 src/java/com/twitter/search/common/util/earlybird/ThriftSearchQueryUtil.docx delete mode 100644 src/java/com/twitter/search/common/util/earlybird/ThriftSearchQueryUtil.java create mode 100644 src/java/com/twitter/search/common/util/earlybird/ThriftSearchResultUtil.docx delete mode 100644 src/java/com/twitter/search/common/util/earlybird/ThriftSearchResultUtil.java create mode 100644 src/java/com/twitter/search/common/util/earlybird/ThriftSearchResultsRelevanceStatsUtil.docx delete mode 100644 src/java/com/twitter/search/common/util/earlybird/ThriftSearchResultsRelevanceStatsUtil.java delete mode 100644 src/java/com/twitter/search/common/util/lang/BUILD create mode 100644 src/java/com/twitter/search/common/util/lang/BUILD.docx create mode 100644 src/java/com/twitter/search/common/util/lang/ThriftLanguageUtil.docx delete mode 100644 src/java/com/twitter/search/common/util/lang/ThriftLanguageUtil.java delete mode 100644 src/java/com/twitter/search/common/util/ml/BUILD create mode 100644 src/java/com/twitter/search/common/util/ml/BUILD.docx create mode 100644 src/java/com/twitter/search/common/util/ml/EnumBasedLinearModel.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/EnumBasedLinearModel.java create mode 100644 src/java/com/twitter/search/common/util/ml/FeatureUtils.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/FeatureUtils.java create mode 100644 src/java/com/twitter/search/common/util/ml/MapBasedLinearModel.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/MapBasedLinearModel.java create mode 100644 src/java/com/twitter/search/common/util/ml/StringMapBasedLinearModel.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/StringMapBasedLinearModel.java delete mode 100644 src/java/com/twitter/search/common/util/ml/models_manager/BUILD create mode 100644 src/java/com/twitter/search/common/util/ml/models_manager/BUILD.docx create mode 100644 src/java/com/twitter/search/common/util/ml/models_manager/BaseModelsManager.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/models_manager/BaseModelsManager.java delete mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/BUILD create mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/BUILD.docx create mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/BaseLegacyScoreAccumulator.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/BaseLegacyScoreAccumulator.java create mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/BaseModelBuilder.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/BaseModelBuilder.java create mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/BaseScoreAccumulator.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/BaseScoreAccumulator.java create mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/CompositeFeatureContext.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/CompositeFeatureContext.java create mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/DecisionForestModelsManager.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/DecisionForestModelsManager.java create mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/DiscretizedFeature.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/DiscretizedFeature.java create mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/DiscretizedFeatureRange.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/DiscretizedFeatureRange.java create mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/LegacyModelBuilder.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/LegacyModelBuilder.java create mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/LightweightLinearModel.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/LightweightLinearModel.java create mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/ModelBuilder.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/ModelBuilder.java create mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/ModelLoader.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/ModelLoader.java create mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/PredictionEngineModelsManager.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/PredictionEngineModelsManager.java create mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/SchemaBasedModelBuilder.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/SchemaBasedModelBuilder.java create mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/SchemaBasedScoreAccumulator.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/prediction_engine/SchemaBasedScoreAccumulator.java delete mode 100644 src/java/com/twitter/search/common/util/ml/tensorflow_engine/BUILD create mode 100644 src/java/com/twitter/search/common/util/ml/tensorflow_engine/BUILD.docx create mode 100644 src/java/com/twitter/search/common/util/ml/tensorflow_engine/TensorflowModelsManager.docx delete mode 100644 src/java/com/twitter/search/common/util/ml/tensorflow_engine/TensorflowModelsManager.java delete mode 100644 src/java/com/twitter/search/core/earlybird/BUILD create mode 100644 src/java/com/twitter/search/core/earlybird/BUILD.docx create mode 100644 src/java/com/twitter/search/core/earlybird/README.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/README.md create mode 100644 src/java/com/twitter/search/core/earlybird/facets/AbstractFacetCountingArray.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/AbstractFacetCountingArray.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/CSFFacetCountIterator.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/CSFFacetCountIterator.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/CompositeFacetCountIterator.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/CompositeFacetCountIterator.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/DummyFacetAccumulator.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/DummyFacetAccumulator.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacetDocValueSet.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacetDocValueSet.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacets.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacets.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacetsFactory.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacetsFactory.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetAccumulator.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetAccumulator.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetCountAggregator.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetCountAggregator.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetCountIterator.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetCountIterator.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetCountIteratorFactory.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetCountIteratorFactory.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetCountState.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetCountState.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetCountingArray.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetCountingArray.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetCountingArrayWriter.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetCountingArrayWriter.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetIDMap.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetIDMap.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetLabelProvider.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetLabelProvider.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetResponseRewriter.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetResponseRewriter.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetTermCollector.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetTermCollector.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetUtil.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/FacetUtil.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/LanguageHistogram.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/LanguageHistogram.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/OptimizedFacetCountingArray.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/OptimizedFacetCountingArray.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/PerfieldFacetCountAggregator.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/PerfieldFacetCountAggregator.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/SortedSetDocValuesFacetsFactory.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/SortedSetDocValuesFacetsFactory.java create mode 100644 src/java/com/twitter/search/core/earlybird/facets/SortedSetDocValuesReaderStateHelper.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/facets/SortedSetDocValuesReaderStateHelper.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/DocIDToTweetIDMapper.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/DocIDToTweetIDMapper.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentAtomicReader.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentAtomicReader.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentData.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentData.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentWriter.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentWriter.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexableField.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexableField.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdLuceneIndexSegmentAtomicReader.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdLuceneIndexSegmentAtomicReader.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdLuceneIndexSegmentData.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdLuceneIndexSegmentData.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdLuceneIndexSegmentWriter.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdLuceneIndexSegmentWriter.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentAtomicReader.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentAtomicReader.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentData.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentData.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentWriter.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentWriter.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/QueryCacheResultForSegment.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/QueryCacheResultForSegment.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/SequentialDocIDMapper.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/SequentialDocIDMapper.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/TimeMapper.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/TimeMapper.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/AbstractColumnStrideMultiIntIndex.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/AbstractColumnStrideMultiIntIndex.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideByteIndex.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideByteIndex.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideFieldDocValues.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideFieldDocValues.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideFieldIndex.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideFieldIndex.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideIntIndex.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideIntIndex.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideIntViewIndex.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideIntViewIndex.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideLongIndex.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideLongIndex.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideMultiIntIndex.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideMultiIntIndex.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/ConstantColumnStrideFieldIndex.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/ConstantColumnStrideFieldIndex.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/DocValuesManager.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/DocValuesManager.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/DocValuesUpdate.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/DocValuesUpdate.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideByteIndex.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideByteIndex.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideIntIndex.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideIntIndex.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideLongIndex.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideLongIndex.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideMultiIntIndex.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideMultiIntIndex.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/OptimizedDocValuesManager.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/OptimizedDocValuesManager.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/column/UnoptimizedDocValuesManager.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/column/UnoptimizedDocValuesManager.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/extensions/EarlybirdIndexExtensionsData.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/extensions/EarlybirdIndexExtensionsData.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/extensions/EarlybirdIndexExtensionsFactory.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/extensions/EarlybirdIndexExtensionsFactory.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/extensions/EarlybirdRealtimeIndexExtensionsData.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/extensions/EarlybirdRealtimeIndexExtensionsData.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/BaseByteBlockPool.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/BaseByteBlockPool.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/ByteBlockPool.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/ByteBlockPool.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/ByteTermUtils.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/ByteTermUtils.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/DeletedDocs.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/DeletedDocs.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdCSFDocValuesProcessor.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdCSFDocValuesProcessor.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdOptimizedPostingsEnum.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdOptimizedPostingsEnum.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdPostingsEnum.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdPostingsEnum.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/FSTTermDictionary.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/FSTTermDictionary.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsDocsAndPositionsEnum.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsDocsAndPositionsEnum.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsDocsEnum.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsDocsEnum.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsPostingLists.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsPostingLists.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsSkipListReader.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsSkipListReader.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/InMemoryFields.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/InMemoryFields.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/IndexOptimizer.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/IndexOptimizer.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPool.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPool.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPoolPackedLongsReader.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPoolPackedLongsReader.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPoolPackedLongsWriter.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPoolPackedLongsWriter.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/InvertedIndex.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/InvertedIndex.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/InvertedRealtimeIndex.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/InvertedRealtimeIndex.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/InvertedRealtimeIndexWriter.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/InvertedRealtimeIndexWriter.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/LowDFPackedIntsPostingLists.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/LowDFPackedIntsPostingLists.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/LowDFPackedIntsPostingsEnum.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/LowDFPackedIntsPostingsEnum.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/MPHTermDictionary.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/MPHTermDictionary.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/MultiPostingLists.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/MultiPostingLists.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionary.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionary.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionaryWithFastutil.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionaryWithFastutil.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionaryWithMap.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionaryWithMap.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/OptimizedIndexTerms.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/OptimizedIndexTerms.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/OptimizedMemoryIndex.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/OptimizedMemoryIndex.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/OptimizedPostingLists.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/OptimizedPostingLists.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/OptimizingPostingsEnumWrapper.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/OptimizingPostingsEnumWrapper.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/PackedLongsReaderPreComputedValues.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/PackedLongsReaderPreComputedValues.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/PayloadUtil.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/PayloadUtil.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/PostingsBufferQueue.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/PostingsBufferQueue.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/QueryCostTracker.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/QueryCostTracker.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/RealtimeIndexTerms.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/RealtimeIndexTerms.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/SkipListComparator.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/SkipListComparator.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/SkipListContainer.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/SkipListContainer.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/SkipListIntegerComparator.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/SkipListIntegerComparator.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/SkipListPostingList.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/SkipListPostingList.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/SkipListPostingsEnum.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/SkipListPostingsEnum.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/SkipListSearchFinger.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/SkipListSearchFinger.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/TermDictionary.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/TermDictionary.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/TermPointerEncoding.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/TermPointerEncoding.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/TermsArray.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/inverted/TermsArray.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/util/AllDocsIterator.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/util/AllDocsIterator.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/util/RangeDISI.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/util/RangeDISI.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/util/RangeFilterDISI.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/util/RangeFilterDISI.java create mode 100644 src/java/com/twitter/search/core/earlybird/index/util/SearchSortUtils.docx delete mode 100644 src/java/com/twitter/search/core/earlybird/index/util/SearchSortUtils.java delete mode 100644 src/java/com/twitter/search/earlybird/BUILD create mode 100644 src/java/com/twitter/search/earlybird/BUILD.docx create mode 100644 src/java/com/twitter/search/earlybird/CONFIG.docx delete mode 100644 src/java/com/twitter/search/earlybird/CONFIG.ini create mode 100644 src/java/com/twitter/search/earlybird/Earlybird.docx delete mode 100644 src/java/com/twitter/search/earlybird/Earlybird.java create mode 100644 src/java/com/twitter/search/earlybird/EarlybirdCPUQualityFactor.docx delete mode 100644 src/java/com/twitter/search/earlybird/EarlybirdCPUQualityFactor.java create mode 100644 src/java/com/twitter/search/earlybird/EarlybirdDarkProxy.docx delete mode 100644 src/java/com/twitter/search/earlybird/EarlybirdDarkProxy.java create mode 100644 src/java/com/twitter/search/earlybird/EarlybirdFinagleServerManager.docx delete mode 100644 src/java/com/twitter/search/earlybird/EarlybirdFinagleServerManager.java create mode 100644 src/java/com/twitter/search/earlybird/EarlybirdFuturePoolManager.docx delete mode 100644 src/java/com/twitter/search/earlybird/EarlybirdFuturePoolManager.java create mode 100644 src/java/com/twitter/search/earlybird/EarlybirdIndexConfig.docx delete mode 100644 src/java/com/twitter/search/earlybird/EarlybirdIndexConfig.java create mode 100644 src/java/com/twitter/search/earlybird/EarlybirdMain.docx delete mode 100644 src/java/com/twitter/search/earlybird/EarlybirdMain.java create mode 100644 src/java/com/twitter/search/earlybird/EarlybirdProductionFinagleServerManager.docx delete mode 100644 src/java/com/twitter/search/earlybird/EarlybirdProductionFinagleServerManager.java create mode 100644 src/java/com/twitter/search/earlybird/EarlybirdSearcher.docx delete mode 100644 src/java/com/twitter/search/earlybird/EarlybirdSearcher.java create mode 100644 src/java/com/twitter/search/earlybird/EarlybirdServer.docx delete mode 100644 src/java/com/twitter/search/earlybird/EarlybirdServer.java create mode 100644 src/java/com/twitter/search/earlybird/EarlybirdServerSetManager.docx delete mode 100644 src/java/com/twitter/search/earlybird/EarlybirdServerSetManager.java create mode 100644 src/java/com/twitter/search/earlybird/EarlybirdStatus.docx delete mode 100644 src/java/com/twitter/search/earlybird/EarlybirdStatus.java create mode 100644 src/java/com/twitter/search/earlybird/EarlybirdWarmUpManager.docx delete mode 100644 src/java/com/twitter/search/earlybird/EarlybirdWarmUpManager.java create mode 100644 src/java/com/twitter/search/earlybird/QualityFactor.docx delete mode 100644 src/java/com/twitter/search/earlybird/QualityFactor.java create mode 100644 src/java/com/twitter/search/earlybird/README.docx delete mode 100644 src/java/com/twitter/search/earlybird/README.md create mode 100644 src/java/com/twitter/search/earlybird/RealtimeEarlybirdIndexConfig.docx delete mode 100644 src/java/com/twitter/search/earlybird/RealtimeEarlybirdIndexConfig.java create mode 100644 src/java/com/twitter/search/earlybird/RecentTweetRestriction.docx delete mode 100644 src/java/com/twitter/search/earlybird/RecentTweetRestriction.java create mode 100644 src/java/com/twitter/search/earlybird/ServerSetMember.docx delete mode 100644 src/java/com/twitter/search/earlybird/ServerSetMember.java create mode 100644 src/java/com/twitter/search/earlybird/UpdateableEarlybirdStateManager.docx delete mode 100644 src/java/com/twitter/search/earlybird/UpdateableEarlybirdStateManager.java create mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveEarlybirdIndexConfig.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveEarlybirdIndexConfig.java create mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveHDFSUtils.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveHDFSUtils.java create mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveOnDiskEarlybirdIndexConfig.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveOnDiskEarlybirdIndexConfig.java create mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveSearchPartitionManager.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveSearchPartitionManager.java create mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveSegment.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveSegment.java create mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveSegmentDataProvider.docx delete mode 100644 src/java/com/twitter/search/earlybird/archive/ArchiveSegmentDataProvider.java diff --git a/src/java/com/twitter/search/common/schema/earlybird/EarlybirdEncodedFeatures.docx b/src/java/com/twitter/search/common/schema/earlybird/EarlybirdEncodedFeatures.docx new file mode 100644 index 0000000000000000000000000000000000000000..68632d8373b80bba92b881139cefcacab160eb7f GIT binary patch literal 37953 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
  • gr6Vb}8!B}0-qnvzMBf$b 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 0); - this.encodedInts = new int[numIntegers]; - } - - @Override - public int getNumInts() { - return encodedInts.length; - } - - @Override - public int getInt(int pos) { - return encodedInts[pos]; - } - - @Override - public void setInt(int pos, int value) { - encodedInts[pos] = value; - } - } - - /** - * Create a new {@link EarlybirdEncodedFeatures} object based on schema and base field. - * @param schema the schema for all fields - * @param baseField base field's constant value - */ - public static EarlybirdEncodedFeatures newEncodedTweetFeatures( - ImmutableSchemaInterface schema, EarlybirdFieldConstant baseField) { - return new ArrayEncodedTweetFeatures(schema, baseField); - } - - /** - * Create a new {@link EarlybirdEncodedFeatures} object based on schema and base field name. - * @param schema the schema for all fields - * @param baseFieldName base field's name - */ - public static EarlybirdEncodedFeatures newEncodedTweetFeatures( - ImmutableSchemaInterface schema, String baseFieldName) { - EarlybirdFieldConstant baseField = EarlybirdFieldConstants.getFieldConstant(baseFieldName); - Preconditions.checkNotNull(baseField); - return newEncodedTweetFeatures(schema, baseField); - } -} diff --git a/src/java/com/twitter/search/common/schema/earlybird/EarlybirdEncodedFeaturesUtil.docx b/src/java/com/twitter/search/common/schema/earlybird/EarlybirdEncodedFeaturesUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..39af957b1955794cafaa0fc8fa9ce95122cd548c GIT binary patch literal 37199 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/schema/earlybird/EarlybirdEncodedFeaturesUtil.java b/src/java/com/twitter/search/common/schema/earlybird/EarlybirdEncodedFeaturesUtil.java deleted file mode 100644 index d8330faca..000000000 --- a/src/java/com/twitter/search/common/schema/earlybird/EarlybirdEncodedFeaturesUtil.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.twitter.search.common.schema.earlybird; - -import com.twitter.search.common.encoding.docvalues.CSFTypeUtil; -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; - -public final class EarlybirdEncodedFeaturesUtil { - private EarlybirdEncodedFeaturesUtil() { - } - - /** - * Returns a byte array that can be stored in a ThriftDocument as bytesField. - */ - public static byte[] toBytesForThriftDocument(EarlybirdEncodedFeatures features) { - int numInts = features.getNumInts(); - byte[] serializedFeatures = new byte[numInts * Integer.BYTES]; - for (int i = 0; i < numInts; i++) { - CSFTypeUtil.convertToBytes(serializedFeatures, i, features.getInt(i)); - } - return serializedFeatures; - } - - /** - * Converts data in a given byte array (starting at the provided offset) into - * EarlybirdEncodedFeatures. - */ - public static EarlybirdEncodedFeatures fromBytes( - ImmutableSchemaInterface schema, EarlybirdFieldConstants.EarlybirdFieldConstant baseField, - byte[] data, int offset) { - EarlybirdEncodedFeatures features = EarlybirdEncodedFeatures.newEncodedTweetFeatures( - schema, baseField); - for (int idx = 0; idx < features.getNumInts(); ++idx) { - features.setInt(idx, CSFTypeUtil.convertFromBytes(data, offset, idx)); - } - return features; - } -} diff --git a/src/java/com/twitter/search/common/schema/earlybird/EarlybirdFieldConstants.docx b/src/java/com/twitter/search/common/schema/earlybird/EarlybirdFieldConstants.docx new file mode 100644 index 0000000000000000000000000000000000000000..7f4fd47b1ec1ccd8718ecace9d7abae8a1e66d55 GIT binary patch literal 46530 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 AN&o-= literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/schema/earlybird/EarlybirdFieldConstants.java b/src/java/com/twitter/search/common/schema/earlybird/EarlybirdFieldConstants.java deleted file mode 100644 index 6ec044933..000000000 --- a/src/java/com/twitter/search/common/schema/earlybird/EarlybirdFieldConstants.java +++ /dev/null @@ -1,1132 +0,0 @@ - -package com.twitter.search.common.schema.earlybird; - -import java.util.Collection; -import java.util.EnumSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.annotation.Nullable; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Sets; - -import com.twitter.search.common.indexing.thriftjava.ThriftGeoLocationSource; -import com.twitter.search.common.schema.ImmutableSchema; -import com.twitter.search.common.schema.SchemaBuilder; -import com.twitter.search.common.schema.base.FeatureConfiguration; -import com.twitter.search.common.schema.base.FieldNameToIdMapping; -import com.twitter.search.common.schema.thriftjava.ThriftFeatureNormalizationType; - -/** - * Field names, field IDs etc. - */ -public class EarlybirdFieldConstants extends FieldNameToIdMapping { - @VisibleForTesting - public static final String ENCODED_TWEET_FEATURES_FIELD_NAME = "encoded_tweet_features"; - - @VisibleForTesting - public static final String EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME = - "extended_encoded_tweet_features"; - - private enum FlagFeatureFieldType { - NON_FLAG_FEATURE_FIELD, - FLAG_FEATURE_FIELD - } - - private enum UnusedFeatureFieldType { - USED_FEATURE_FIELD, - UNUSED_FEATURE_FIELD - } - - /** - * CSF_NAME_TO_MIN_ENGAGEMENT_FIELD_MAP and MIN_ENGAGEMENT_FIELD_TO_CSF_NAME_MAP are used in - * EarlybirdLuceneQueryVisitor to map the CSFs REPLY_COUNT, RETWEET_COUNT, and FAVORITE_COUNT to - * their respective min engagement fields, and vice versa. - */ - public static final ImmutableMap - CSF_NAME_TO_MIN_ENGAGEMENT_FIELD_MAP = ImmutableMap.builder() - .put(EarlybirdFieldConstant.REPLY_COUNT.getFieldName(), - EarlybirdFieldConstant.NORMALIZED_REPLY_COUNT_GREATER_THAN_OR_EQUAL_TO_FIELD) - .put(EarlybirdFieldConstant.RETWEET_COUNT.getFieldName(), - EarlybirdFieldConstant.NORMALIZED_RETWEET_COUNT_GREATER_THAN_OR_EQUAL_TO_FIELD) - .put(EarlybirdFieldConstant.FAVORITE_COUNT.getFieldName(), - EarlybirdFieldConstant.NORMALIZED_FAVORITE_COUNT_GREATER_THAN_OR_EQUAL_TO_FIELD) - .build(); - - public static final ImmutableMap - MIN_ENGAGEMENT_FIELD_TO_CSF_NAME_MAP = ImmutableMap.builder() - .put(EarlybirdFieldConstant.NORMALIZED_REPLY_COUNT_GREATER_THAN_OR_EQUAL_TO_FIELD - .getFieldName(), - EarlybirdFieldConstant.REPLY_COUNT) - .put(EarlybirdFieldConstant.NORMALIZED_RETWEET_COUNT_GREATER_THAN_OR_EQUAL_TO_FIELD - .getFieldName(), - EarlybirdFieldConstant.RETWEET_COUNT) - .put(EarlybirdFieldConstant.NORMALIZED_FAVORITE_COUNT_GREATER_THAN_OR_EQUAL_TO_FIELD - .getFieldName(), - EarlybirdFieldConstant.FAVORITE_COUNT) - .build(); - - /** - * A list of Earlybird field names and field IDs, and the clusters that need them. - */ - public enum EarlybirdFieldConstant { - // These enums are grouped by category and sorted alphabetically. - // Next indexed field ID is 76 - // Next CSF field ID is 115 - // Next encoded_features CSF field ID is 185 - // Next extended_encoded_features CSF field ID is 284 - - // Text searchable fields - // Provides slow ID Mapping from tweet ID to doc ID through TermsEnum.seekExact(). - ID_FIELD("id", 0, EarlybirdCluster.ALL_CLUSTERS), - RESOLVED_LINKS_TEXT_FIELD("resolved_links_text", 1), - TEXT_FIELD("text", 2), - TOKENIZED_FROM_USER_FIELD("tokenized_from_user", 3), - - // Other indexed fields - CARD_TITLE_FIELD("card_title", 4), - CARD_DESCRIPTION_FIELD("card_description", 5), - // We require the createdAt field to be set so we can properly filter tweets based on time. - CREATED_AT_FIELD("created_at", 6, EarlybirdCluster.ALL_CLUSTERS), - // 7 was formerly EVENT_IDS_FIELD("event_ids", 7, EarlybirdCluster.REALTIME) - ENTITY_ID_FIELD("entity_id", 40), - // The screen name of the user that created the tweet. Should be set to the normalized value in - // the com.twitter.gizmoduck.thriftjava.Profile.screen_name field. - FROM_USER_FIELD("from_user", 8), - // The numeric ID of the user that created the tweet. - FROM_USER_ID_FIELD("from_user_id", 9, EarlybirdCluster.ALL_CLUSTERS), - CARD_DOMAIN_FIELD("card_domain", 11), - CARD_NAME_FIELD("card_name", 12), - GEO_HASH_FIELD("geo_hash", 13), - HASHTAGS_FIELD("hashtags", 14), - HF_PHRASE_PAIRS_FIELD(ImmutableSchema.HF_PHRASE_PAIRS_FIELD, 15), - HF_TERM_PAIRS_FIELD(ImmutableSchema.HF_TERM_PAIRS_FIELD, 16), - IMAGE_LINKS_FIELD("image_links", 17), - IN_REPLY_TO_TWEET_ID_FIELD("in_reply_to_tweet_id", 59), - IN_REPLY_TO_USER_ID_FIELD("in_reply_to_user_id", 38), - // The internal field is used for many purposes: - // 1. to store facet skiplists - // 2. to power the filter operator, by storing posting list for terms like __filter_twimg - // 3. to store posting lists for positive and negative smileys - // 4. to store geo location types. - // etc. - INTERNAL_FIELD("internal", 18, EarlybirdCluster.ALL_CLUSTERS), - ISO_LANGUAGE_FIELD("iso_lang", 19), - LINK_CATEGORY_FIELD("link_category", 36), - LINKS_FIELD("links", 21), - MENTIONS_FIELD("mentions", 22), - // Field 23 used to be NAMED_ENTITIES_FIELD - NEWS_LINKS_FIELD("news_links", 24), - NORMALIZED_SOURCE_FIELD("norm_source", 25), - PLACE_FIELD("place", 26), - // Field 37 used to be PUBLICLY_INFERRED_USER_LOCATION_PLACE_ID_FIELD - // The ID of the source tweet. Set for retweets only. - RETWEET_SOURCE_TWEET_ID_FIELD("retweet_source_tweet_id", 60, - EarlybirdCluster.ALL_CLUSTERS), - // The ID of the source tweet's author. Set for retweets only. - RETWEET_SOURCE_USER_ID_FIELD("retweet_source_user_id", 39), - SOURCE_FIELD("source", 29), - STOCKS_FIELD("stocks", 30), - // The screen name of the user that a tweet was directed at. - TO_USER_FIELD("to_user", 32), - // Field 33 used to be TOPIC_IDS_FIELD and is now unused. It can be reused later. - TWIMG_LINKS_FIELD("twimg_links", 34), - VIDEO_LINKS_FIELD("video_links", 35), - CAMELCASE_USER_HANDLE_FIELD("camelcase_tokenized_from_user", 41), - // This field should be set to the the tokenized and normalized value in the - // com.twitter.gizmoduck.thriftjava.Profile.name field. - TOKENIZED_USER_NAME_FIELD("tokenized_from_user_display_name", 42), - CONVERSATION_ID_FIELD("conversation_id", 43), - PLACE_ID_FIELD("place_id", 44), - PLACE_FULL_NAME_FIELD("place_full_name", 45), - PLACE_COUNTRY_CODE_FIELD("place_country_code", 46), - PROFILE_GEO_COUNTRY_CODE_FIELD("profile_geo_country_code", 47), - PROFILE_GEO_REGION_FIELD("profile_geo_region", 48), - PROFILE_GEO_LOCALITY_FIELD("profile_geo_locality", 49), - LIKED_BY_USER_ID_FIELD("liked_by_user_id", 50, EarlybirdCluster.REALTIME), - NORMALIZED_REPLY_COUNT_GREATER_THAN_OR_EQUAL_TO_FIELD( - "normalized_reply_count_greater_than_or_equal_to", 51, EarlybirdCluster.FULL_ARCHIVE), - NORMALIZED_RETWEET_COUNT_GREATER_THAN_OR_EQUAL_TO_FIELD( - "normalized_retweet_count_greater_than_or_equal_to", 52, EarlybirdCluster.FULL_ARCHIVE), - NORMALIZED_FAVORITE_COUNT_GREATER_THAN_OR_EQUAL_TO_FIELD( - "normalized_favorite_count_greater_than_or_equal_to", 53, EarlybirdCluster.FULL_ARCHIVE), - COMPOSER_SOURCE("composer_source", 54), - QUOTED_TWEET_ID_FIELD("quoted_tweet_id", 55), - QUOTED_USER_ID_FIELD("quoted_user_id", 56), - RETWEETED_BY_USER_ID("retweeted_by_user_id", 57, EarlybirdCluster.REALTIME), - REPLIED_TO_BY_USER_ID("replied_to_by_user_id", 58, EarlybirdCluster.REALTIME), - CARD_LANG("card_lang", 61), - // SEARCH-27823: Field ID 62 used to be named_entity, which was the combination of all - // named_entity* fields below. We need to leave 62 unused for backwards compatibility. - NAMED_ENTITY_FROM_URL_FIELD("named_entity_from_url", 63), - NAMED_ENTITY_FROM_TEXT_FIELD("named_entity_from_text", 64), - NAMED_ENTITY_WITH_TYPE_FROM_URL_FIELD("named_entity_with_type_from_url", 65), - NAMED_ENTITY_WITH_TYPE_FROM_TEXT_FIELD("named_entity_with_type_from_text", 66), - DIRECTED_AT_USER_ID_FIELD("directed_at_user_id", 67), - SPACE_ID_FIELD("space_id", 68, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_GENERAL_PURPOSE_CLUSTERS), - SPACE_TITLE_FIELD("space_title", 69, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_GENERAL_PURPOSE_CLUSTERS), - - // Detailed description of the space admin fields can be found at go/earlybirdfields. - SPACE_ADMIN_FIELD("space_admin", 70, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_GENERAL_PURPOSE_CLUSTERS), - TOKENIZED_SPACE_ADMIN_FIELD("tokenized_space_admin", 71, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_GENERAL_PURPOSE_CLUSTERS), - CAMELCASE_TOKENIZED_SPACE_ADMIN_FIELD("camelcase_tokenized_space_admin", 72, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_GENERAL_PURPOSE_CLUSTERS), - TOKENIZED_SPACE_ADMIN_DISPLAY_NAME_FIELD("tokenized_space_admin_display_name", 73, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_GENERAL_PURPOSE_CLUSTERS), - URL_DESCRIPTION_FIELD("url_description", 74), - URL_TITLE_FIELD("url_title", 75), - - // CSF - CARD_TYPE_CSF_FIELD("card_type_csf", 100), - ENCODED_TWEET_FEATURES_FIELD(ENCODED_TWEET_FEATURES_FIELD_NAME, 102, - EarlybirdCluster.ALL_CLUSTERS), - // Provides the doc ID -> original tweet ID mapping for retweets. - SHARED_STATUS_ID_CSF("shared_status_id_csf", 106, EarlybirdCluster.ALL_CLUSTERS), - // Provides the doc ID -> tweet author's user ID mapping. - FROM_USER_ID_CSF("from_user_id_csf", 103, EarlybirdCluster.ALL_CLUSTERS), - CREATED_AT_CSF_FIELD("created_at_csf", 101, EarlybirdCluster.ARCHIVE_CLUSTERS), - // Provides the doc ID -> tweet ID mapping. - ID_CSF_FIELD("id_csf", 104, EarlybirdCluster.ARCHIVE_CLUSTERS), - LAT_LON_CSF_FIELD("latlon_csf", 105), - CONVERSATION_ID_CSF("conversation_id_csf", 107, EarlybirdCluster.ALL_CLUSTERS), - QUOTED_TWEET_ID_CSF("quoted_tweet_id_csf", 108), - QUOTED_USER_ID_CSF("quoted_user_id_csf", 109), - CARD_LANG_CSF("card_lang_csf", 110), - DIRECTED_AT_USER_ID_CSF("directed_at_user_id_csf", 111), - REFERENCE_AUTHOR_ID_CSF("reference_author_id_csf", 112), - EXCLUSIVE_CONVERSATION_AUTHOR_ID_CSF("exclusive_conversation_author_id_csf", 113), - CARD_URI_CSF("card_uri_csf", 114), - - // CSF Views on top of ENCODED_TWEET_FEATURES_FIELD - IS_RETWEET_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "IS_RETWEET_FLAG", 150, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - IS_OFFENSIVE_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "IS_OFFENSIVE_FLAG", 151, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - HAS_LINK_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "HAS_LINK_FLAG", 152, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - HAS_TREND_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "HAS_TREND_FLAG", 153, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - IS_REPLY_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "IS_REPLY_FLAG", 154, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - IS_SENSITIVE_CONTENT(ENCODED_TWEET_FEATURES_FIELD_NAME, "IS_SENSITIVE_CONTENT", 155, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - HAS_MULTIPLE_HASHTAGS_OR_TRENDS_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, - "HAS_MULTIPLE_HASHTAGS_OR_TRENDS_FLAG", 156, FlagFeatureFieldType.FLAG_FEATURE_FIELD, - EarlybirdCluster.ALL_CLUSTERS), - FROM_VERIFIED_ACCOUNT_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "FROM_VERIFIED_ACCOUNT_FLAG", - 157, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - TEXT_SCORE(ENCODED_TWEET_FEATURES_FIELD_NAME, "TEXT_SCORE", 158, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - LANGUAGE(ENCODED_TWEET_FEATURES_FIELD_NAME, "LANGUAGE", 159, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - LINK_LANGUAGE(ENCODED_TWEET_FEATURES_FIELD_NAME, "LINK_LANGUAGE", 160, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - HAS_IMAGE_URL_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "HAS_IMAGE_URL_FLAG", 161, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - HAS_VIDEO_URL_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "HAS_VIDEO_URL_FLAG", 162, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - HAS_NEWS_URL_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "HAS_NEWS_URL_FLAG", 163, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - HAS_EXPANDO_CARD_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "HAS_EXPANDO_CARD_FLAG", 164, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - HAS_MULTIPLE_MEDIA_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "HAS_MULTIPLE_MEDIA_FLAG", 165, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - PROFILE_IS_EGG_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "PROFILE_IS_EGG_FLAG", 166, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - NUM_MENTIONS(ENCODED_TWEET_FEATURES_FIELD_NAME, "NUM_MENTIONS", 167, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - NUM_HASHTAGS(ENCODED_TWEET_FEATURES_FIELD_NAME, "NUM_HASHTAGS", 168, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - HAS_CARD_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "HAS_CARD_FLAG", 169, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - HAS_VISIBLE_LINK_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "HAS_VISIBLE_LINK_FLAG", 170, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - USER_REPUTATION(ENCODED_TWEET_FEATURES_FIELD_NAME, "USER_REPUTATION", 171, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - IS_USER_SPAM_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "IS_USER_SPAM_FLAG", 172, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - IS_USER_NSFW_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "IS_USER_NSFW_FLAG", 173, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - IS_USER_BOT_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "IS_USER_BOT_FLAG", 174, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - IS_USER_NEW_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "IS_USER_NEW_FLAG", 175, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - PREV_USER_TWEET_ENGAGEMENT(ENCODED_TWEET_FEATURES_FIELD_NAME, "PREV_USER_TWEET_ENGAGEMENT", - 176, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - COMPOSER_SOURCE_IS_CAMERA_FLAG( - ENCODED_TWEET_FEATURES_FIELD_NAME, - "COMPOSER_SOURCE_IS_CAMERA_FLAG", - 177, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, - EarlybirdCluster.ALL_CLUSTERS), - RETWEET_COUNT( - ENCODED_TWEET_FEATURES_FIELD_NAME, - "RETWEET_COUNT", - 178, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.ALL_CLUSTERS, - ThriftFeatureNormalizationType.LEGACY_BYTE_NORMALIZER_WITH_LOG2), - FAVORITE_COUNT( - ENCODED_TWEET_FEATURES_FIELD_NAME, - "FAVORITE_COUNT", - 179, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.ALL_CLUSTERS, - ThriftFeatureNormalizationType.LEGACY_BYTE_NORMALIZER_WITH_LOG2), - REPLY_COUNT( - ENCODED_TWEET_FEATURES_FIELD_NAME, - "REPLY_COUNT", - 180, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.ALL_CLUSTERS, - ThriftFeatureNormalizationType.LEGACY_BYTE_NORMALIZER_WITH_LOG2), - PARUS_SCORE(ENCODED_TWEET_FEATURES_FIELD_NAME, "PARUS_SCORE", 181, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - - /** - * This is the rough percentage of the nth token at 140 divided by num tokens - * and is basically n / num tokens where n is the token starting before 140 characters - */ - VISIBLE_TOKEN_RATIO(ENCODED_TWEET_FEATURES_FIELD_NAME, "VISIBLE_TOKEN_RATIO", 182, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - HAS_QUOTE_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "HAS_QUOTE_FLAG", 183, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - - FROM_BLUE_VERIFIED_ACCOUNT_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, - "FROM_BLUE_VERIFIED_ACCOUNT_FLAG", - 184, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - - TWEET_SIGNATURE(ENCODED_TWEET_FEATURES_FIELD_NAME, "TWEET_SIGNATURE", 188, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - - // MEDIA TYPES - HAS_CONSUMER_VIDEO_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "HAS_CONSUMER_VIDEO_FLAG", 189, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - HAS_PRO_VIDEO_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "HAS_PRO_VIDEO_FLAG", 190, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - HAS_VINE_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "HAS_VINE_FLAG", 191, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - HAS_PERISCOPE_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "HAS_PERISCOPE_FLAG", 192, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - HAS_NATIVE_IMAGE_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "HAS_NATIVE_IMAGE_FLAG", 193, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - - // NOTE: if possible, please reserve field ID 194 to 196 for future media types (SEARCH-9131) - - IS_NULLCAST_FLAG(ENCODED_TWEET_FEATURES_FIELD_NAME, "IS_NULLCAST_FLAG", 197, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, EarlybirdCluster.ALL_CLUSTERS), - - // EXTENDED ENCODED TWEET FEATURES that's not available on archive clusters - EXTENDED_ENCODED_TWEET_FEATURES_FIELD(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, 200, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - EMBEDS_IMPRESSION_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "EMBEDS_IMPRESSION_COUNT", - 221, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.LEGACY_BYTE_NORMALIZER), - EMBEDS_URL_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "EMBEDS_URL_COUNT", - 222, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.LEGACY_BYTE_NORMALIZER), - VIDEO_VIEW_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "VIDEO_VIEW_COUNT", - 223, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.LEGACY_BYTE_NORMALIZER), - - // empty bits in integer 0 (starting bit 24, 8 bits) - EXTENDED_FEATURE_UNUSED_BITS_0_24_8(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "UNUSED_BITS_0_24_8", 244, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - UnusedFeatureFieldType.UNUSED_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - // SEARCH-8564 - Reference Tweet Author ID - REFERENCE_AUTHOR_ID_LEAST_SIGNIFICANT_INT(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "REFERENCE_AUTHOR_ID_LEAST_SIGNIFICANT_INT", 202, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - REFERENCE_AUTHOR_ID_MOST_SIGNIFICANT_INT(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "REFERENCE_AUTHOR_ID_MOST_SIGNIFICANT_INT", 203, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - // SEARCHQUAL-8130: engagement counters v2 - // Integer 3 - RETWEET_COUNT_V2(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "RETWEET_COUNT_V2", 225, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - FAVORITE_COUNT_V2(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "FAVORITE_COUNT_V2", 226, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - REPLY_COUNT_V2(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "REPLY_COUNT_V2", 227, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - EMBEDS_IMPRESSION_COUNT_V2( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "EMBEDS_IMPRESSION_COUNT_V2", - 228, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - - // Integer 4 - EMBEDS_URL_COUNT_V2( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "EMBEDS_URL_COUNT_V2", - 229, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - VIDEO_VIEW_COUNT_V2( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "VIDEO_VIEW_COUNT_V2", - 230, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - QUOTE_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "QUOTE_COUNT", - 231, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - - // Tweet Safety Labels - LABEL_ABUSIVE_FLAG(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "LABEL_ABUSIVE_FLAG", 232, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - LABEL_ABUSIVE_HI_RCL_FLAG(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "LABEL_ABUSIVE_HI_RCL_FLAG", 233, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - LABEL_DUP_CONTENT_FLAG(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "LABEL_DUP_CONTENT_FLAG", 234, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - LABEL_NSFW_HI_PRC_FLAG(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "LABEL_NSFW_HI_PRC_FLAG", 235, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - LABEL_NSFW_HI_RCL_FLAG(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "LABEL_NSFW_HI_RCL_FLAG", 236, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - LABEL_SPAM_FLAG(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "LABEL_SPAM_FLAG", 237, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - LABEL_SPAM_HI_RCL_FLAG(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "LABEL_SPAM_HI_RCL_FLAG", 238, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - // please save this bit for other safety labels - EXTENDED_TEST_FEATURE_UNUSED_BITS_4_31_1(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "UNUSED_BITS_4_31_1", 239, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - UnusedFeatureFieldType.UNUSED_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - // Integer 5 - WEIGHTED_RETWEET_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "WEIGHTED_RETWEET_COUNT", - 240, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - WEIGHTED_REPLY_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "WEIGHTED_REPLY_COUNT", - 241, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - WEIGHTED_FAVORITE_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "WEIGHTED_FAVORITE_COUNT", - 242, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - WEIGHTED_QUOTE_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "WEIGHTED_QUOTE_COUNT", - 243, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - - // Integer 6 - // Periscope features - PERISCOPE_EXISTS(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "PERISCOPE_EXISTS", 245, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - PERISCOPE_HAS_BEEN_FEATURED(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "PERISCOPE_HAS_BEEN_FEATURED", 246, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - PERISCOPE_IS_CURRENTLY_FEATURED(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "PERISCOPE_IS_CURRENTLY_FEATURED", 247, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - PERISCOPE_IS_FROM_QUALITY_SOURCE(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "PERISCOPE_IS_FROM_QUALITY_SOURCE", 248, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - PERISCOPE_IS_LIVE(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "PERISCOPE_IS_LIVE", 249, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - IS_TRENDING_NOW_FLAG(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "IS_TRENDING_NOW_FLAG", 292, - FlagFeatureFieldType.FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - // remaining bits for integer 6 (starting bit 6, 26 remaining bits) - EXTENDED_TEST_FEATURE_UNUSED_BITS_7_6_26(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "UNUSED_BITS_7_6_26", 250, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - UnusedFeatureFieldType.UNUSED_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - // Decaying engagement counters - // Integer 7 - DECAYED_RETWEET_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "DECAYED_RETWEET_COUNT", - 251, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - DECAYED_REPLY_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "DECAYED_REPLY_COUNT", - 252, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - DECAYED_FAVORITE_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "DECAYED_FAVORITE_COUNT", - 253, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - DECAYED_QUOTE_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "DECAYED_QUOTE_COUNT", - 254, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - - // Fake engagement counters. The fake here is in the sense of spam, not in the sense of testing. - // Refer to [JIRA SEARCHQUAL-10736 Remove Fake Engagements in Search] for more details. - // Integer 8 - FAKE_RETWEET_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "FAKE_RETWEET_COUNT", 269, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - FAKE_REPLY_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "FAKE_REPLY_COUNT", 270, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - FAKE_FAVORITE_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "FAKE_FAVORITE_COUNT", 271, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - FAKE_QUOTE_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "FAKE_QUOTE_COUNT", 272, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - - // Last engagement timestamps. These features use the Tweet's creation time as base and - // are incremented every 1 hour - // Integer 9 - LAST_RETWEET_SINCE_CREATION_HRS( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "LAST_RETWEET_SINCE_CREATION_HRS", - 273, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.NONE), - LAST_REPLY_SINCE_CREATION_HRS( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "LAST_REPLY_SINCE_CREATION_HRS", - 274, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.NONE), - LAST_FAVORITE_SINCE_CREATION_HRS( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "LAST_FAVORITE_SINCE_CREATION_HRS", - 275, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.NONE), - LAST_QUOTE_SINCE_CREATION_HRS( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "LAST_QUOTE_SINCE_CREATION_HRS", - 276, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.NONE), - - // 4 bits hashtag count, mention count and stock count (SEARCH-24336) - // Integer 10 - NUM_HASHTAGS_V2( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "NUM_HASHTAGS_V2", - 277, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.NONE - ), - NUM_MENTIONS_V2( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "NUM_MENTIONS_V2", - 278, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.NONE - ), - NUM_STOCKS( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "NUM_STOCKS", - 279, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.NONE - ), - - // Integer 11 - // Blink engagement counters - BLINK_RETWEET_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "BLINK_RETWEET_COUNT", - 280, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - BLINK_REPLY_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "BLINK_REPLY_COUNT", - 281, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - BLINK_FAVORITE_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "BLINK_FAVORITE_COUNT", - 282, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - BLINK_QUOTE_COUNT( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "BLINK_QUOTE_COUNT", - 283, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.SMART_INTEGER_NORMALIZER), - - // Integer 10 (remaining) - // Production Toxicity and PBlock score from HML (go/toxicity, go/pblock) - TOXICITY_SCORE( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "TOXICITY_SCORE", 284, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.PREDICTION_SCORE_NORMALIZER - ), - PBLOCK_SCORE( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "PBLOCK_SCORE", 285, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.PREDICTION_SCORE_NORMALIZER - ), - - // Integer 12 - // Experimental health model scores from HML - EXPERIMENTAL_HEALTH_MODEL_SCORE_1( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "EXPERIMENTAL_HEALTH_MODEL_SCORE_1", 286, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.PREDICTION_SCORE_NORMALIZER - ), - EXPERIMENTAL_HEALTH_MODEL_SCORE_2( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "EXPERIMENTAL_HEALTH_MODEL_SCORE_2", 287, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.PREDICTION_SCORE_NORMALIZER - ), - EXPERIMENTAL_HEALTH_MODEL_SCORE_3( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "EXPERIMENTAL_HEALTH_MODEL_SCORE_3", 288, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.PREDICTION_SCORE_NORMALIZER - ), - // remaining bits for index 12 (unused_bits_12) - EXTENDED_TEST_FEATURE_UNUSED_BITS_12_30_2(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "UNUSED_BITS_12_30_2", 289, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - UnusedFeatureFieldType.UNUSED_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - // Integer 13 - // Experimental health model scores from HML (cont.) - EXPERIMENTAL_HEALTH_MODEL_SCORE_4( - EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "EXPERIMENTAL_HEALTH_MODEL_SCORE_4", 290, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.PREDICTION_SCORE_NORMALIZER - ), - // Production pSpammyTweet score from HML (go/pspammytweet) - P_SPAMMY_TWEET_SCORE(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "P_SPAMMY_TWEET_SCORE", 291, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.PREDICTION_SCORE_NORMALIZER - ), - // Production pReportedTweet score from HML (go/preportedtweet) - P_REPORTED_TWEET_SCORE(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "P_REPORTED_TWEET_SCORE", 293, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.PREDICTION_SCORE_NORMALIZER - ), - // remaining bits for index 13 (unused_bits_13) - EXTENDED_TEST_FEATURE_UNUSED_BITS_13_30_2(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "UNUSED_BITS_13_30_2", 294, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - UnusedFeatureFieldType.UNUSED_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS - ), - - // Integer 14 - // Health model scores from HML (cont.) - // Prod Spammy Tweet Content model score from Platform Manipulation (go/spammy-tweet-content) - SPAMMY_TWEET_CONTENT_SCORE(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "SPAMMY_TWEET_CONTENT_SCORE", 295, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS, - ThriftFeatureNormalizationType.PREDICTION_SCORE_NORMALIZER - ), - // remaining bits for index 14 (unused_bits_14) - EXTENDED_TEST_FEATURE_UNUSED_BITS_14_10_22(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "UNUSED_BITS_14_10_22", 296, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - UnusedFeatureFieldType.UNUSED_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS - ), - - // Note that the integer block index i in the names UNUSED_BITS{i}" below is 1-based, but the - // index j in UNUSED_BITS_{j}_x_y above is 0-based. - EXTENDED_TEST_FEATURE_UNUSED_BITS_16(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "UNUSED_BITS16", 216, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - UnusedFeatureFieldType.UNUSED_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - EXTENDED_TEST_FEATURE_UNUSED_BITS_17(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "UNUSED_BITS17", 217, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - UnusedFeatureFieldType.UNUSED_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - EXTENDED_TEST_FEATURE_UNUSED_BITS_18(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "UNUSED_BITS18", 218, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - UnusedFeatureFieldType.UNUSED_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - EXTENDED_TEST_FEATURE_UNUSED_BITS_19(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "UNUSED_BITS19", 219, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - UnusedFeatureFieldType.UNUSED_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS), - - EXTENDED_TEST_FEATURE_UNUSED_BITS_20(EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - "UNUSED_BITS20", 220, - FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - UnusedFeatureFieldType.UNUSED_FEATURE_FIELD, - EarlybirdCluster.TWITTER_IN_MEMORY_INDEX_FORMAT_ALL_CLUSTERS); - - // Filter field terms. These end up as terms in the "internal" field (id=18). So for example - // you can have a doc with field(internal) = "__filter_nullcast", "__filter_vine" and that will - // be a nullcast tweet with a vine link in it. - public static final String NULLCAST_FILTER_TERM = "nullcast"; - public static final String VERIFIED_FILTER_TERM = "verified"; - public static final String BLUE_VERIFIED_FILTER_TERM = "blue_verified"; - public static final String NATIVE_RETWEETS_FILTER_TERM = "nativeretweets"; - public static final String QUOTE_FILTER_TERM = "quote"; - public static final String REPLIES_FILTER_TERM = "replies"; - public static final String CONSUMER_VIDEO_FILTER_TERM = "consumer_video"; - public static final String PRO_VIDEO_FILTER_TERM = "pro_video"; - public static final String VINE_FILTER_TERM = "vine"; - public static final String PERISCOPE_FILTER_TERM = "periscope"; - public static final String PROFILE_GEO_FILTER_TERM = "profile_geo"; - public static final String SELF_THREAD_FILTER_TERM = "self_threads"; - public static final String DIRECTED_AT_FILTER_TERM = "directed_at"; - public static final String EXCLUSIVE_FILTER_TERM = "exclusive"; - - // Reserved terms for the internal field. - public static final String HAS_POSITIVE_SMILEY = "__has_positive_smiley"; - public static final String HAS_NEGATIVE_SMILEY = "__has_negative_smiley"; - public static final String IS_OFFENSIVE = "__is_offensive"; - - // Facet fields - public static final String MENTIONS_FACET = "mentions"; - public static final String HASHTAGS_FACET = "hashtags"; - public static final String STOCKS_FACET = "stocks"; - public static final String VIDEOS_FACET = "videos"; - public static final String IMAGES_FACET = "images"; - public static final String NEWS_FACET = "news"; - public static final String LANGUAGES_FACET = "languages"; - public static final String SOURCES_FACET = "sources"; - public static final String TWIMG_FACET = "twimg"; - public static final String FROM_USER_ID_FACET = "user_id"; - public static final String RETWEETS_FACET = "retweets"; - public static final String LINKS_FACET = "links"; - public static final String SPACES_FACET = "spaces"; - - /** - * Used by the query parser to check that the operator of a [filter X] query is valid. - * Also used by blender, though it probably shouldn't be. - */ - public static final ImmutableSet FACETS = ImmutableSet.builder() - .add(MENTIONS_FACET) - .add(HASHTAGS_FACET) - .add(STOCKS_FACET) - .add(VIDEOS_FACET) - .add(IMAGES_FACET) - .add(NEWS_FACET) - .add(LINKS_FACET) - .add(LANGUAGES_FACET) - .add(SOURCES_FACET) - .add(TWIMG_FACET) - .add(SPACES_FACET) - .build(); - - /** - * Used by blender to convert facet names to field names. We should find a way to get the - * information we need in blender without needing this map. - */ - public static final ImmutableMap FACET_TO_FIELD_MAP = - ImmutableMap.builder() - .put(MENTIONS_FACET, MENTIONS_FIELD.getFieldName()) - .put(HASHTAGS_FACET, HASHTAGS_FIELD.getFieldName()) - .put(STOCKS_FACET, STOCKS_FIELD.getFieldName()) - .put(VIDEOS_FACET, VIDEO_LINKS_FIELD.getFieldName()) - .put(IMAGES_FACET, IMAGE_LINKS_FIELD.getFieldName()) - .put(NEWS_FACET, NEWS_LINKS_FIELD.getFieldName()) - .put(LANGUAGES_FACET, ISO_LANGUAGE_FIELD.getFieldName()) - .put(SOURCES_FACET, SOURCE_FIELD.getFieldName()) - .put(TWIMG_FACET, TWIMG_LINKS_FIELD.getFieldName()) - .put(LINKS_FACET, LINKS_FIELD.getFieldName()) - .put(SPACES_FACET, SPACE_ID_FIELD.getFieldName()) - .build(); - - public static String getFacetSkipFieldName(String fieldName) { - return "__has_" + fieldName; - } - - private final String fieldName; - private final int fieldId; - private final EnumSet clusters; - private final FlagFeatureFieldType flagFeatureField; - - private final UnusedFeatureFieldType unusedField; - - // Only set for feature fields. - @Nullable - private final FeatureConfiguration featureConfiguration; - - // Only set for feature fields. - private final ThriftFeatureNormalizationType featureNormalizationType; - - // To simplify field configurations and reduce duplicate code, we give clusters a default value - EarlybirdFieldConstant(String fieldName, int fieldId) { - this(fieldName, fieldId, EarlybirdCluster.GENERAL_PURPOSE_CLUSTERS, null); - } - - EarlybirdFieldConstant(String fieldName, int fieldId, Set clusters) { - this(fieldName, fieldId, clusters, null); - } - - EarlybirdFieldConstant(String fieldName, int fieldId, EarlybirdCluster cluster) { - this(fieldName, fieldId, ImmutableSet.of(cluster), null); - } - - /** - * Base field name is needed here in order to construct the full - * name of the feature. Our convention is that a feature should be named - * as: baseFieldName.featureName. For example: encoded_tweet_features.retweet_count. - */ - EarlybirdFieldConstant( - String baseName, - String fieldName, - int fieldId, - FlagFeatureFieldType flagFeatureField, - Set clusters) { - this((baseName + SchemaBuilder.CSF_VIEW_NAME_SEPARATOR + fieldName).toLowerCase(), - fieldId, clusters, flagFeatureField, null); - } - - EarlybirdFieldConstant( - String baseName, - String fieldName, - int fieldId, - FlagFeatureFieldType flagFeatureField, - UnusedFeatureFieldType unusedField, - Set clusters) { - this((baseName + SchemaBuilder.CSF_VIEW_NAME_SEPARATOR + fieldName).toLowerCase(), - fieldId, clusters, flagFeatureField, unusedField, null); - } - - EarlybirdFieldConstant( - String baseName, - String fieldName, - int fieldId, - FlagFeatureFieldType flagFeatureField, - Set clusters, - ThriftFeatureNormalizationType featureNormalizationType) { - this((baseName + SchemaBuilder.CSF_VIEW_NAME_SEPARATOR + fieldName).toLowerCase(), - fieldId, clusters, flagFeatureField, UnusedFeatureFieldType.USED_FEATURE_FIELD, - featureNormalizationType, null); - } - - /** - * Constructor. - */ - EarlybirdFieldConstant(String fieldName, int fieldId, Set clusters, - @Nullable FeatureConfiguration featureConfiguration) { - this(fieldName, fieldId, clusters, FlagFeatureFieldType.NON_FLAG_FEATURE_FIELD, - featureConfiguration); - } - - /** - * Constructor. - */ - EarlybirdFieldConstant(String fieldName, - int fieldId, - Set clusters, - FlagFeatureFieldType flagFeatureField, - @Nullable FeatureConfiguration featureConfiguration) { - this(fieldName, fieldId, clusters, flagFeatureField, - UnusedFeatureFieldType.USED_FEATURE_FIELD, featureConfiguration); - } - - /** - * Constructor. - */ - EarlybirdFieldConstant(String fieldName, - int fieldId, - Set clusters, - FlagFeatureFieldType flagFeatureField, - UnusedFeatureFieldType unusedField, - @Nullable FeatureConfiguration featureConfiguration) { - this(fieldName, fieldId, clusters, flagFeatureField, unusedField, null, featureConfiguration); - } - - /** - * Constructor. - */ - EarlybirdFieldConstant(String fieldName, - int fieldId, - Set clusters, - FlagFeatureFieldType flagFeatureField, - UnusedFeatureFieldType unusedField, - @Nullable ThriftFeatureNormalizationType featureNormalizationType, - @Nullable FeatureConfiguration featureConfiguration) { - this.fieldId = fieldId; - this.fieldName = fieldName; - this.clusters = EnumSet.copyOf(clusters); - this.flagFeatureField = flagFeatureField; - this.unusedField = unusedField; - this.featureNormalizationType = featureNormalizationType; - this.featureConfiguration = featureConfiguration; - } - - // Override toString to make replacing StatusConstant Easier. - @Override - public String toString() { - return fieldName; - } - - public boolean isValidFieldInCluster(EarlybirdCluster cluster) { - return clusters.contains(cluster); - } - - public String getFieldName() { - return fieldName; - } - - public int getFieldId() { - return fieldId; - } - - public FlagFeatureFieldType getFlagFeatureField() { - return flagFeatureField; - } - - public boolean isFlagFeatureField() { - return flagFeatureField == FlagFeatureFieldType.FLAG_FEATURE_FIELD; - } - - public boolean isUnusedField() { - return unusedField == UnusedFeatureFieldType.UNUSED_FEATURE_FIELD; - } - - @Nullable - public FeatureConfiguration getFeatureConfiguration() { - return featureConfiguration; - } - - @Nullable - public ThriftFeatureNormalizationType getFeatureNormalizationType() { - return featureNormalizationType; - } - } - - private static final Map NAME_TO_ID_MAP; - private static final Map ID_TO_FIELD_MAP; - static { - ImmutableMap.Builder nameToIdMapBuilder = - ImmutableMap.builder(); - ImmutableMap.Builder idToFieldMapBuilder = - ImmutableMap.builder(); - Set fieldNameDupDetector = Sets.newHashSet(); - Set fieldIdDupDetector = Sets.newHashSet(); - for (EarlybirdFieldConstant fc : EarlybirdFieldConstant.values()) { - if (fieldNameDupDetector.contains(fc.getFieldName())) { - throw new IllegalStateException("detected fields sharing field name: " + fc.getFieldName()); - } - if (fieldIdDupDetector.contains(fc.getFieldId())) { - throw new IllegalStateException("detected fields sharing field id: " + fc.getFieldId()); - } - - fieldNameDupDetector.add(fc.getFieldName()); - fieldIdDupDetector.add(fc.getFieldId()); - nameToIdMapBuilder.put(fc.getFieldName(), fc); - idToFieldMapBuilder.put(fc.getFieldId(), fc); - } - NAME_TO_ID_MAP = nameToIdMapBuilder.build(); - ID_TO_FIELD_MAP = idToFieldMapBuilder.build(); - } - - // This define the list of boolean features, but the name does not have "flag" inside. This - // definition is only for double checking purpose to prevent code change mistakes. The setting - // of the flag feature is based on FlagFeatureFieldType.FLAG_FEATURE_FIELD. - public static final Set EXTRA_FLAG_FIELDS = - Sets.newHashSet(EarlybirdFieldConstants.EarlybirdFieldConstant.IS_SENSITIVE_CONTENT); - public static final String FLAG_STRING = "flag"; - - private static final List FLAG_FEATURE_FIELDS; - static { - ImmutableList.Builder flagFieldBuilder = ImmutableList.builder(); - for (EarlybirdFieldConstant fc : EarlybirdFieldConstant.values()) { - if (fc.getFlagFeatureField() == FlagFeatureFieldType.FLAG_FEATURE_FIELD - && !fc.isUnusedField()) { - flagFieldBuilder.add(fc); - } - } - FLAG_FEATURE_FIELDS = flagFieldBuilder.build(); - } - - /** - * Get all the flag features meaning that they are boolean features with only 1 bit in the packed - * feature encoding. - */ - public static Collection getFlagFeatureFields() { - return FLAG_FEATURE_FIELDS; - } - - /** - * Get the EarlybirdFieldConstant for the specified field. - */ - public static EarlybirdFieldConstant getFieldConstant(String fieldName) { - EarlybirdFieldConstant field = NAME_TO_ID_MAP.get(fieldName); - if (field == null) { - throw new IllegalArgumentException("Unknown field: " + fieldName); - } - return field; - } - - /** - * Get the EarlybirdFieldConstant for the specified field. - */ - public static EarlybirdFieldConstant getFieldConstant(int fieldId) { - EarlybirdFieldConstant field = ID_TO_FIELD_MAP.get(fieldId); - if (field == null) { - throw new IllegalArgumentException("Unknown field: " + fieldId); - } - return field; - } - - /** - * Determines if there's a field with the given ID. - */ - public static boolean hasFieldConstant(int fieldId) { - return ID_TO_FIELD_MAP.keySet().contains(fieldId); - } - - @Override - public final int getFieldID(String fieldName) { - return getFieldConstant(fieldName).getFieldId(); - } - - public static final String formatGeoType(ThriftGeoLocationSource source) { - return "__geo_location_type_" + source.name().toLowerCase(); - } -} diff --git a/src/java/com/twitter/search/common/schema/earlybird/EarlybirdSchemaBuilder.docx b/src/java/com/twitter/search/common/schema/earlybird/EarlybirdSchemaBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..e230218f9faaa587d09def957f93a3a40a572ecd GIT binary patch literal 37874 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
  • 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 blPxA29eTPc0Xt}ISLr~4f$c%cTf6!TjJofh literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/schema/earlybird/EarlybirdSchemaBuilder.java b/src/java/com/twitter/search/common/schema/earlybird/EarlybirdSchemaBuilder.java deleted file mode 100644 index 095e00fe5..000000000 --- a/src/java/com/twitter/search/common/schema/earlybird/EarlybirdSchemaBuilder.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.twitter.search.common.schema.earlybird; - -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; - -import com.twitter.common.text.util.TokenStreamSerializer; -import com.twitter.search.common.schema.SchemaBuilder; -import com.twitter.search.common.schema.base.FieldNameToIdMapping; -import com.twitter.search.common.schema.thriftjava.ThriftFieldConfiguration; -import com.twitter.search.common.schema.thriftjava.ThriftFieldSettings; -import com.twitter.search.common.schema.thriftjava.ThriftTokenStreamSerializer; -import com.twitter.search.common.util.analysis.CharTermAttributeSerializer; -import com.twitter.search.common.util.analysis.TermPayloadAttributeSerializer; - -/** - * Build class used to build a ThriftSchema - */ -public class EarlybirdSchemaBuilder extends SchemaBuilder { - private final EarlybirdCluster cluster; - - public EarlybirdSchemaBuilder(FieldNameToIdMapping idMapping, - EarlybirdCluster cluster, - TokenStreamSerializer.Version tokenStreamSerializerVersion) { - super(idMapping, tokenStreamSerializerVersion); - this.cluster = cluster; - } - - /** - * Configure the specified field to be Out-of-order. - * In the realtime cluster, this causes Earlybird to used the skip list posting format. - */ - public final EarlybirdSchemaBuilder withOutOfOrderEnabledForField(String fieldName) { - if (!shouldIncludeField(fieldName)) { - return this; - } - ThriftFieldSettings settings = - schema.getFieldConfigs().get(idMapping.getFieldID(fieldName)).getSettings(); - Preconditions.checkState(settings.isSetIndexedFieldSettings(), - "Out of order field must be indexed"); - settings.getIndexedFieldSettings().setSupportOutOfOrderAppends(true); - return this; - } - - /** - * This turns on tweet specific normalizations. This turns on the following two token processors: - * {@link com.twitter.search.common.util.text.splitter.HashtagMentionPunctuationSplitter} - * {@link com.twitter.search.common.util.text.filter.NormalizedTokenFilter} - *

    - * This method adds fields for both the isoLanguageCode and bcp47LanguageTag. - */ - public EarlybirdThriftDocumentBuilder withLanguageCodes( - String isoLanguageCode, String bcp47LanguageTag) { - if (isoLanguageCode != null) { - withISOLanguage(isoLanguageCode); - } - if (bcp47LanguageTag != null && !bcp47LanguageTag.equals(isoLanguageCode)) { - BCP47_LANGUAGE_TAG_COUNTER.increment(); - withISOLanguage(bcp47LanguageTag); - } - return this; - } - - /** - * Adds a String field into the ISO_LANGUAGE_FIELD. - */ - public EarlybirdThriftDocumentBuilder withISOLanguage(String languageString) { - withStringField( - EarlybirdFieldConstant.ISO_LANGUAGE_FIELD.getFieldName(), languageString.toLowerCase()); - return this; - } - - /** - * Add from user ID fields. - */ - public EarlybirdThriftDocumentBuilder withFromUserID(long fromUserId) { - withLongField(EarlybirdFieldConstant.FROM_USER_ID_FIELD.getFieldName(), fromUserId); - withLongField(EarlybirdFieldConstant.FROM_USER_ID_CSF.getFieldName(), fromUserId); - return this; - } - - /** - * Add from user information fields. - */ - public EarlybirdThriftDocumentBuilder withFromUser( - long fromUserId, String fromUser) { - withFromUser(fromUserId, fromUser, null); - return this; - } - - /** - * Add from user information fields. - */ - public EarlybirdThriftDocumentBuilder withFromUser(String fromUser) { - withFromUser(fromUser, null); - return this; - } - - /** - * Add from user information fields. - */ - public EarlybirdThriftDocumentBuilder withFromUser( - String fromUser, String tokenizedFromUser) { - withStringField(EarlybirdFieldConstant.FROM_USER_FIELD.getFieldName(), fromUser); - withStringField(EarlybirdFieldConstant.TOKENIZED_FROM_USER_FIELD.getFieldName(), - isNotBlank(tokenizedFromUser) ? tokenizedFromUser : fromUser); - return this; - } - - /** - * Add from user information fields. - */ - public EarlybirdThriftDocumentBuilder withFromUser( - long fromUserId, String fromUser, String tokenizedFromUser) { - withFromUserID(fromUserId); - withFromUser(fromUser, tokenizedFromUser); - return this; - } - - /** - * Add to user field. - */ - public EarlybirdThriftDocumentBuilder withToUser( - String toUser) { - withStringField(EarlybirdFieldConstant.TO_USER_FIELD.getFieldName(), toUser); - return this; - } - - /** - * Add escherbird annotation fields. - */ - public EarlybirdThriftDocumentBuilder withAnnotationEntities(List entities) { - if (isNotEmpty(entities)) { - for (String entity : entities) { - withStringField(EarlybirdFieldConstant.ENTITY_ID_FIELD.getFieldName(), entity); - } - } - return this; - } - - /** - * Add replies to internal field and set is reply flag. - */ - public EarlybirdThriftDocumentBuilder withReplyFlag() { - encodedTweetFeatures.setFlag(EarlybirdFieldConstant.IS_REPLY_FLAG); - addFilterInternalFieldTerm(EarlybirdFieldConstant.REPLIES_FILTER_TERM); - return this; - } - - public EarlybirdThriftDocumentBuilder withCameraComposerSourceFlag() { - encodedTweetFeatures.setFlag(EarlybirdFieldConstant.COMPOSER_SOURCE_IS_CAMERA_FLAG); - return this; - } - - /** - * Add in reply to user id. - *

    - * Notice {@link #withReplyFlag} is not automatically called since retweet a tweet that is - * a reply to some other tweet is not considered a reply. - * The caller should call {@link #withReplyFlag} separately if this tweet is really a reply tweet. - */ - public EarlybirdThriftDocumentBuilder withInReplyToUserID(long inReplyToUserID) { - withLongField(EarlybirdFieldConstant.IN_REPLY_TO_USER_ID_FIELD.getFieldName(), inReplyToUserID); - return this; - } - - /** - * Add reference tweet author id. - */ - public EarlybirdThriftDocumentBuilder withReferenceAuthorID(long referenceAuthorID) { - withLongField(EarlybirdFieldConstant.REFERENCE_AUTHOR_ID_CSF.getFieldName(), referenceAuthorID); - return this; - } - - /** - * Add all native retweet related fields/label - */ - @VisibleForTesting - public EarlybirdThriftDocumentBuilder withNativeRetweet(final long retweetUserID, - final long sharedStatusID) { - withLongField(EarlybirdFieldConstant.SHARED_STATUS_ID_CSF.getFieldName(), sharedStatusID); - - withLongField(EarlybirdFieldConstant.RETWEET_SOURCE_TWEET_ID_FIELD.getFieldName(), - sharedStatusID); - withLongField(EarlybirdFieldConstant.RETWEET_SOURCE_USER_ID_FIELD.getFieldName(), - retweetUserID); - withLongField(EarlybirdFieldConstant.REFERENCE_AUTHOR_ID_CSF.getFieldName(), retweetUserID); - - encodedTweetFeatures.setFlag(EarlybirdFieldConstant.IS_RETWEET_FLAG); - - // Add native retweet label to the internal field. - addFilterInternalFieldTerm(EarlybirdFieldConstant.NATIVE_RETWEETS_FILTER_TERM); - withStringField(EarlybirdFieldConstant.TEXT_FIELD.getFieldName(), RETWEET_TERM); - return this; - } - - /** - * Add quoted tweet id and user id. - */ - @VisibleForTesting - public EarlybirdThriftDocumentBuilder withQuote( - final long quotedStatusId, final long quotedUserId) { - withLongField(EarlybirdFieldConstant.QUOTED_TWEET_ID_FIELD.getFieldName(), quotedStatusId); - withLongField(EarlybirdFieldConstant.QUOTED_USER_ID_FIELD.getFieldName(), quotedUserId); - - withLongField(EarlybirdFieldConstant.QUOTED_TWEET_ID_CSF.getFieldName(), quotedStatusId); - withLongField(EarlybirdFieldConstant.QUOTED_USER_ID_CSF.getFieldName(), quotedUserId); - - encodedTweetFeatures.setFlag(EarlybirdFieldConstant.HAS_QUOTE_FLAG); - - // Add quote label to the internal field. - addFilterInternalFieldTerm(EarlybirdFieldConstant.QUOTE_FILTER_TERM); - return this; - } - - /** - * Add resolved links text field. - */ - public EarlybirdThriftDocumentBuilder withResolvedLinksText(String linksText) { - withStringField(EarlybirdFieldConstant.RESOLVED_LINKS_TEXT_FIELD.getFieldName(), linksText); - return this; - } - - /** - * Add source field. - */ - public EarlybirdThriftDocumentBuilder withSource(String source) { - withStringField(EarlybirdFieldConstant.SOURCE_FIELD.getFieldName(), source); - return this; - } - - /** - * Add normalized source field. - */ - public EarlybirdThriftDocumentBuilder withNormalizedSource(String normalizedSource) { - withStringField( - EarlybirdFieldConstant.NORMALIZED_SOURCE_FIELD.getFieldName(), normalizedSource); - return this; - } - - /** - * Add positive smiley to internal field. - */ - public EarlybirdThriftDocumentBuilder withPositiveSmiley() { - withStringField( - EarlybirdFieldConstant.INTERNAL_FIELD.getFieldName(), - EarlybirdFieldConstant.HAS_POSITIVE_SMILEY); - return this; - } - - /** - * Add negative smiley to internal field. - */ - public EarlybirdThriftDocumentBuilder withNegativeSmiley() { - withStringField( - EarlybirdFieldConstant.INTERNAL_FIELD.getFieldName(), - EarlybirdFieldConstant.HAS_NEGATIVE_SMILEY); - return this; - } - - /** - * Add question mark label to a text field. - */ - public EarlybirdThriftDocumentBuilder withQuestionMark() { - withStringField(EarlybirdFieldConstant.TEXT_FIELD.getFieldName(), QUESTION_MARK); - return this; - } - - /** - * Add card related fields. - */ - public EarlybirdThriftDocumentBuilder withSearchCard( - String name, - String domain, - String title, byte[] serializedTitleStream, - String description, byte[] serializedDescriptionStream, - String lang) { - if (isNotBlank(title)) { - withTokenStreamField( - EarlybirdFieldConstants.EarlybirdFieldConstant.CARD_TITLE_FIELD.getFieldName(), - title, serializedTitleStream); - } - - if (isNotBlank(description)) { - withTokenStreamField( - EarlybirdFieldConstants.EarlybirdFieldConstant.CARD_DESCRIPTION_FIELD.getFieldName(), - description, serializedDescriptionStream); - } - - if (isNotBlank(lang)) { - withStringField(EarlybirdFieldConstant.CARD_LANG.getFieldName(), lang); - } - - if (isNotBlank(domain)) { - withStringField( - EarlybirdFieldConstants.EarlybirdFieldConstant.CARD_DOMAIN_FIELD.getFieldName(), domain); - } - - if (isNotBlank(name)) { - withStringField( - EarlybirdFieldConstants.EarlybirdFieldConstant.CARD_NAME_FIELD.getFieldName(), name); - withIntField( - EarlybirdFieldConstants.EarlybirdFieldConstant.CARD_TYPE_CSF_FIELD.getFieldName(), - SearchCardType.cardTypeFromStringName(name).getByteValue()); - } - - if (AMPLIFY_CARD_NAME.equalsIgnoreCase(name) - || PLAYER_CARD_NAME.equalsIgnoreCase(name)) { - // Add into "internal" field so that this tweet is returned by filter:videos. - addFacetSkipList( - EarlybirdFieldConstants.EarlybirdFieldConstant.VIDEO_LINKS_FIELD.getFieldName()); - } - - return this; - } - - public EarlybirdThriftDocumentBuilder withNormalizedMinEngagementField( - String fieldName, int normalizedNumEngagements) throws IOException { - EarlybirdThriftDocumentUtil.addNormalizedMinEngagementField(doc, fieldName, - normalizedNumEngagements); - return this; - } - - /** - * Add named entity with given canonical name and type to document. - */ - public EarlybirdThriftDocumentBuilder withNamedEntity(NamedEntity namedEntity) { - if (namedEntity.getContexts() == null) { - // In this unlikely case, we don't have any context for named entity type or source, - // so we can't properly index it in any of our fields. We'll just skip it in this case. - return this; - } - - // Keep track of the fields we've applied in the builder already, to ensure we only index - // each term (field/value pair) once - Set> fieldsApplied = new HashSet<>(); - for (NamedEntityContext context : namedEntity.getContexts()) { - if (context.isSetInput_source() - && NAMED_ENTITY_URL_SOURCE_TYPES.contains(context.getInput_source().getSource_type())) { - // If the source is one of the URL* types, add the named entity to the "from_url" fields, - // ensuring we add it only once - addNamedEntityFields( - fieldsApplied, - EarlybirdFieldConstant.NAMED_ENTITY_FROM_URL_FIELD, - EarlybirdFieldConstant.NAMED_ENTITY_WITH_TYPE_FROM_URL_FIELD, - namedEntity.getCanonical_name(), - context); - } else { - addNamedEntityFields( - fieldsApplied, - EarlybirdFieldConstant.NAMED_ENTITY_FROM_TEXT_FIELD, - EarlybirdFieldConstant.NAMED_ENTITY_WITH_TYPE_FROM_TEXT_FIELD, - namedEntity.getCanonical_name(), - context); - } - } - - return this; - } - - /** - * Add space id fields. - */ - public EarlybirdThriftDocumentBuilder withSpaceIdFields(Set spaceIds) { - if (!spaceIds.isEmpty()) { - addFacetSkipList(EarlybirdFieldConstant.SPACE_ID_FIELD.getFieldName()); - for (String spaceId : spaceIds) { - withStringField(EarlybirdFieldConstant.SPACE_ID_FIELD.getFieldName(), spaceId); - } - } - return this; - } - - /** - * Add directed at user. - */ - @VisibleForTesting - public EarlybirdThriftDocumentBuilder withDirectedAtUser(final long directedAtUserId) { - withLongField(EarlybirdFieldConstant.DIRECTED_AT_USER_ID_FIELD.getFieldName(), - directedAtUserId); - - withLongField(EarlybirdFieldConstant.DIRECTED_AT_USER_ID_CSF.getFieldName(), directedAtUserId); - - return this; - } - - /** - * Add a white space tokenized screen name field. - * - * Example: - * screenName - "super_hero" - * tokenized version - "super hero" - */ - public EarlybirdThriftDocumentBuilder withWhiteSpaceTokenizedScreenNameField( - String fieldName, - String normalizedScreenName) { - String whiteSpaceTokenizableScreenName = StringUtils.join( - normalizedScreenName.split(Regex.HASHTAG_USERNAME_PUNCTUATION_REGEX), " "); - withStringField(fieldName, whiteSpaceTokenizableScreenName); - return this; - } - - /** - * Add a camel case tokenized screen name field. - */ - public EarlybirdThriftDocumentBuilder withCamelCaseTokenizedScreenNameField( - String fieldName, - String screenName, - String normalizedScreenName, - TokenStream screenNameTokenStream) { - - // this normalized text is consistent to how the tokenized stream is created from - // TokenizerHelper.getNormalizedCamelcaseTokenStream - ie. just lowercasing. - String camelCaseTokenizedScreenNameText = - TokenizerHelper.getNormalizedCamelcaseTokenStreamText(screenName); - try { - // Reset the token stream in case it has been read before. - screenNameTokenStream.reset(); - byte[] camelCaseTokenizedScreenName = - TweetTokenStreamSerializer.getTweetTokenStreamSerializer() - .serialize(screenNameTokenStream); - - withTokenStreamField( - fieldName, - camelCaseTokenizedScreenNameText.isEmpty() - ? normalizedScreenName : camelCaseTokenizedScreenNameText, - camelCaseTokenizedScreenName); - } catch (IOException e) { - LOG.error("TwitterTokenStream serialization error! Could not serialize: " + screenName); - SERIALIZE_FAILURE_COUNT_NONPENGUIN_DEPENDENT.increment(); - } - return this; - } - - private void addNamedEntityFields( - Set> fieldsApplied, - EarlybirdFieldConstant nameOnlyField, - EarlybirdFieldConstant nameWithTypeField, - String name, - NamedEntityContext context) { - withOneTimeStringField(fieldsApplied, nameOnlyField, name, false); - if (context.isSetEntity_type()) { - withOneTimeStringField(fieldsApplied, nameWithTypeField, - formatNamedEntityString(name, context.getEntity_type()), true); - } - } - - private void withOneTimeStringField( - Set> fieldsApplied, EarlybirdFieldConstant field, - String value, boolean addToFacets) { - Pair fieldValuePair = new Pair<>(field, value); - if (!fieldsApplied.contains(fieldValuePair)) { - if (addToFacets) { - addFacetSkipList(field.getFieldName()); - } - withStringField(field.getFieldName(), value); - fieldsApplied.add(fieldValuePair); - } - } - - private String formatNamedEntityString(String name, WholeEntityType type) { - return String.format("%s:%s", name, type).toLowerCase(); - } - - /** - * Set whether set LAT_LON_CSF_FIELD or not before build - * if LAT_LON_CSF_FIELD is not set deliberately. - * - * @see #prepareToBuild() - */ - public EarlybirdThriftDocumentBuilder setAddLatLonCSF(boolean isSet) { - addLatLonCSF = isSet; - return this; - } - - /** - * Set if add encoded tweet feature field in the end. - * - * @see #prepareToBuild() - */ - public EarlybirdThriftDocumentBuilder setAddEncodedTweetFeatures(boolean isSet) { - addEncodedTweetFeatures = isSet; - return this; - } - - @Override - protected void prepareToBuild() { - if (!isSetLatLonCSF && addLatLonCSF) { - // In lucene archives, this CSF is needed regardless of whether geoLocation is set. - withLatLonCSF(GeoUtil.ILLEGAL_LATLON, GeoUtil.ILLEGAL_LATLON); - } - - if (addEncodedTweetFeatures) { - // Add encoded_tweet_features before building the document. - withBytesField( - EarlybirdFieldConstant.ENCODED_TWEET_FEATURES_FIELD.getFieldName(), - EarlybirdEncodedFeaturesUtil.toBytesForThriftDocument(encodedTweetFeatures)); - } - - if (extendedEncodedTweetFeatures != null) { - // Add extended_encoded_tweet_features before building the document. - withBytesField( - EarlybirdFieldConstant.EXTENDED_ENCODED_TWEET_FEATURES_FIELD.getFieldName(), - EarlybirdEncodedFeaturesUtil.toBytesForThriftDocument(extendedEncodedTweetFeatures)); - } - } - - private static boolean isNotBlank(String value) { - return value != null && !value.isEmpty(); - } - - private static boolean isNotEmpty(List value) { - return value != null && !value.isEmpty(); - } -} diff --git a/src/java/com/twitter/search/common/schema/earlybird/EarlybirdThriftDocumentUtil.docx b/src/java/com/twitter/search/common/schema/earlybird/EarlybirdThriftDocumentUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..95e6c96d464269e464eb5bbc3e1154bd9253a63f GIT binary patch literal 39526 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 Jv6%Yf>~Cy;6FdL_ literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/schema/earlybird/EarlybirdThriftDocumentUtil.java b/src/java/com/twitter/search/common/schema/earlybird/EarlybirdThriftDocumentUtil.java deleted file mode 100644 index b8a13722b..000000000 --- a/src/java/com/twitter/search/common/schema/earlybird/EarlybirdThriftDocumentUtil.java +++ /dev/null @@ -1,377 +0,0 @@ -package com.twitter.search.common.schema.earlybird; - -import java.io.IOException; -import java.util.Iterator; -import java.util.List; - -import com.google.common.collect.ImmutableList; - -import com.twitter.common.text.util.TokenStreamSerializer; -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.common.schema.base.ThriftDocumentUtil; -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants.EarlybirdFieldConstant; -import com.twitter.search.common.schema.thriftjava.ThriftDocument; -import com.twitter.search.common.schema.thriftjava.ThriftField; -import com.twitter.search.common.schema.thriftjava.ThriftFieldData; -import com.twitter.search.common.util.analysis.IntTermAttributeSerializer; -import com.twitter.search.common.util.analysis.TwitterNormalizedMinEngagementTokenStream; - -/** - * Utility APIs for ThriftDocument used in Earlybird. - */ -public final class EarlybirdThriftDocumentUtil { - private static final EarlybirdFieldConstants ID_MAPPING = new EarlybirdFieldConstants(); - - private static final String FILTER_FORMAT_STRING = "__filter_%s"; - - /** - * Used to check whether a thrift document has filter nullcast internal field set. - * @see #isNullcastFilterSet(ThriftDocument) - */ - private static final String NULLCAST_FILTER_TERM = - formatFilter(EarlybirdFieldConstant.NULLCAST_FILTER_TERM); - - private static final String SELF_THREAD_FILTER_TERM = - formatFilter(EarlybirdFieldConstant.SELF_THREAD_FILTER_TERM); - - private static final String DIRECTED_AT_FILTER_TERM = - formatFilter(EarlybirdFieldConstant.DIRECTED_AT_FILTER_TERM); - - private EarlybirdThriftDocumentUtil() { - // Cannot instantiate. - } - - /** - * Formats a regular, simple filter term. The 'filter' argument should correspond to a constant - * from the Operator class, matching the operand (filter:links -> "links"). - */ - public static final String formatFilter(String filter) { - return String.format(FILTER_FORMAT_STRING, filter); - } - - /** - * Get status id. - */ - public static long getID(ThriftDocument document) { - return ThriftDocumentUtil.getLongValue( - document, EarlybirdFieldConstant.ID_FIELD.getFieldName(), ID_MAPPING); - } - - /** - * Get Card name. - */ - public static String getCardName(ThriftDocument document) { - return ThriftDocumentUtil.getStringValue( - document, EarlybirdFieldConstant.CARD_NAME_FIELD.getFieldName(), ID_MAPPING); - } - - /** - * Get Card language. - */ - public static String getCardLang(ThriftDocument document) { - return ThriftDocumentUtil.getStringValue( - document, EarlybirdFieldConstant.CARD_LANG.getFieldName(), ID_MAPPING); - } - - /** - * Get Card language CSF. - * - * card language CSF is represented internally as an integer ID for a ThriftLanguage. - */ - public static int getCardLangCSF(ThriftDocument document) { - return ThriftDocumentUtil.getIntValue( - document, EarlybirdFieldConstant.CARD_LANG_CSF.getFieldName(), ID_MAPPING); - } - - /** - * Get quoted tweet id. - */ - public static long getQuotedTweetID(ThriftDocument document) { - return ThriftDocumentUtil.getLongValue( - document, EarlybirdFieldConstant.QUOTED_TWEET_ID_FIELD.getFieldName(), ID_MAPPING); - } - - /** - * Get quoted tweet user id. - */ - public static long getQuotedUserID(ThriftDocument document) { - return ThriftDocumentUtil.getLongValue( - document, EarlybirdFieldConstant.QUOTED_USER_ID_FIELD.getFieldName(), ID_MAPPING); - } - - /** - * Get directed at user id. - */ - public static long getDirectedAtUserId(ThriftDocument document) { - return ThriftDocumentUtil.getLongValue( - document, EarlybirdFieldConstant.DIRECTED_AT_USER_ID_FIELD.getFieldName(), ID_MAPPING); - } - - /** - * Get directed at user id CSF. - */ - public static long getDirectedAtUserIdCSF(ThriftDocument document) { - return ThriftDocumentUtil.getLongValue( - document, EarlybirdFieldConstant.DIRECTED_AT_USER_ID_CSF.getFieldName(), ID_MAPPING); - } - - /** - * Get reference author id CSF. - */ - public static long getReferenceAuthorIdCSF(ThriftDocument document) { - return ThriftDocumentUtil.getLongValue( - document, EarlybirdFieldConstant.REFERENCE_AUTHOR_ID_CSF.getFieldName(), ID_MAPPING); - } - - /** - * Get links. - */ - public static List getLinks(ThriftDocument document) { - return getStringValues(document, EarlybirdFieldConstant.LINKS_FIELD); - } - - /** - * Get created at timestamp in sec. - */ - public static int getCreatedAtSec(ThriftDocument document) { - return ThriftDocumentUtil.getIntValue( - document, EarlybirdFieldConstant.CREATED_AT_FIELD.getFieldName(), ID_MAPPING); - } - - /** - * Get created at timestamp in ms. - */ - public static long getCreatedAtMs(ThriftDocument document) { - long createdAtSec = (long) getCreatedAtSec(document); - return createdAtSec * 1000L; - } - - /** - * Get from user id. - */ - public static long getFromUserID(ThriftDocument document) { - return ThriftDocumentUtil.getLongValue( - document, EarlybirdFieldConstant.FROM_USER_ID_FIELD.getFieldName(), ID_MAPPING); - } - - /** - * Get from user. - */ - public static String getFromUser(ThriftDocument document) { - return ThriftDocumentUtil.getStringValue( - document, EarlybirdFieldConstant.FROM_USER_FIELD.getFieldName(), ID_MAPPING); - } - - /** - * Get tokenized from user display name. - */ - public static String getFromUserDisplayName(ThriftDocument document) { - return ThriftDocumentUtil.getStringValue( - document, EarlybirdFieldConstant.TOKENIZED_USER_NAME_FIELD.getFieldName(), ID_MAPPING); - } - - /** - * Get tokenized from user. - */ - public static String getTokenizedFromUser(ThriftDocument document) { - return ThriftDocumentUtil.getStringValue( - document, EarlybirdFieldConstant.TOKENIZED_FROM_USER_FIELD.getFieldName(), ID_MAPPING); - } - - /** - * Get resolved links text. - */ - public static String getResolvedLinksText(ThriftDocument document) { - return ThriftDocumentUtil.getStringValue( - document, EarlybirdFieldConstant.RESOLVED_LINKS_TEXT_FIELD.getFieldName(), ID_MAPPING); - } - - /** - * Get iso language code. - */ - public static List getISOLanguage(ThriftDocument document) { - return ThriftDocumentUtil.getStringValues( - document, EarlybirdFieldConstant.ISO_LANGUAGE_FIELD.getFieldName(), ID_MAPPING); - } - - /** - * First remove the old timestamp if they exist. - * Then add the created at and created at csf fields to the given thrift document. - */ - public static void replaceCreatedAtAndCreatedAtCSF(ThriftDocument document, int value) { - removeField(document, EarlybirdFieldConstant.CREATED_AT_FIELD); - removeField(document, EarlybirdFieldConstant.CREATED_AT_CSF_FIELD); - - addIntField(document, EarlybirdFieldConstant.CREATED_AT_FIELD, value); - addIntField(document, EarlybirdFieldConstant.CREATED_AT_CSF_FIELD, value); - } - - /** - * Add the given int value as the given field into the given document. - */ - public static ThriftDocument addIntField( - ThriftDocument document, EarlybirdFieldConstant fieldConstant, int value) { - ThriftFieldData fieldData = new ThriftFieldData().setIntValue(value); - ThriftField field = - new ThriftField().setFieldConfigId(fieldConstant.getFieldId()).setFieldData(fieldData); - document.addToFields(field); - return document; - } - - private static EarlybirdFieldConstant getFeatureField(EarlybirdFieldConstant field) { - if (field.getFieldName().startsWith( - EarlybirdFieldConstant.ENCODED_TWEET_FEATURES_FIELD.getFieldName())) { - return EarlybirdFieldConstant.ENCODED_TWEET_FEATURES_FIELD; - } else if (field.getFieldName().startsWith( - EarlybirdFieldConstant.EXTENDED_ENCODED_TWEET_FEATURES_FIELD.getFieldName())) { - return EarlybirdFieldConstant.EXTENDED_ENCODED_TWEET_FEATURES_FIELD; - } else { - throw new IllegalArgumentException("Not a feature field: " + field); - } - } - - /** - * Get the feature value of a field. - */ - public static int getFeatureValue( - ImmutableSchemaInterface schema, - ThriftDocument document, - EarlybirdFieldConstant field) { - - EarlybirdFieldConstant featureField = getFeatureField(field); - - byte[] encodedFeaturesBytes = - ThriftDocumentUtil.getBytesValue(document, featureField.getFieldName(), ID_MAPPING); - - if (encodedFeaturesBytes == null) { - // Treat the feature value as 0 if there is no encoded feature field. - return 0; - } else { - EarlybirdEncodedFeatures encodedFeatures = EarlybirdEncodedFeaturesUtil.fromBytes( - schema, featureField, encodedFeaturesBytes, 0); - return encodedFeatures.getFeatureValue(field); - } - } - - /** - * Check whether the feature flag is set. - */ - public static boolean isFeatureBitSet( - ImmutableSchemaInterface schema, - ThriftDocument document, - EarlybirdFieldConstant field) { - - EarlybirdFieldConstant featureField = getFeatureField(field); - - byte[] encodedFeaturesBytes = - ThriftDocumentUtil.getBytesValue(document, featureField.getFieldName(), ID_MAPPING); - - if (encodedFeaturesBytes == null) { - // Treat the bit as not set if there is no encoded feature field. - return false; - } else { - EarlybirdEncodedFeatures encodedFeatures = EarlybirdEncodedFeaturesUtil.fromBytes( - schema, featureField, encodedFeaturesBytes, 0); - return encodedFeatures.isFlagSet(field); - } - } - - /** - * Check whether nullcast flag is set in the encoded features field. - */ - public static boolean isNullcastBitSet(ImmutableSchemaInterface schema, ThriftDocument document) { - return isFeatureBitSet(schema, document, EarlybirdFieldConstant.IS_NULLCAST_FLAG); - } - - /** - * Remove all fields with the given field constant in a document. - */ - public static void removeField(ThriftDocument document, EarlybirdFieldConstant fieldConstant) { - List fields = document.getFields(); - if (fields != null) { - Iterator fieldsIterator = fields.iterator(); - while (fieldsIterator.hasNext()) { - if (fieldsIterator.next().getFieldConfigId() == fieldConstant.getFieldId()) { - fieldsIterator.remove(); - } - } - } - } - - /** - * Remove a string field with given fieldConstant and value. - */ - public static void removeStringField( - ThriftDocument document, EarlybirdFieldConstant fieldConstant, String value) { - List fields = document.getFields(); - if (fields != null) { - for (ThriftField field : fields) { - if (field.getFieldConfigId() == fieldConstant.getFieldId() - && field.getFieldData().getStringValue().equals(value)) { - fields.remove(field); - return; - } - } - } - } - - /** - * Adds a new TokenStream field for each engagement counter if normalizedNumEngagements >= 1. - */ - public static void addNormalizedMinEngagementField( - ThriftDocument doc, - String fieldName, - int normalizedNumEngagements) throws IOException { - if (normalizedNumEngagements < 1) { - return; - } - TokenStreamSerializer serializer = - new TokenStreamSerializer(ImmutableList.of(new IntTermAttributeSerializer())); - TwitterNormalizedMinEngagementTokenStream stream = new - TwitterNormalizedMinEngagementTokenStream(normalizedNumEngagements); - byte[] serializedStream = serializer.serialize(stream); - ThriftFieldData fieldData = new ThriftFieldData().setTokenStreamValue(serializedStream); - ThriftField field = new ThriftField().setFieldConfigId(ID_MAPPING.getFieldID(fieldName)) - .setFieldData(fieldData); - doc.addToFields(field); - } - - public static List getStringValues( - ThriftDocument document, EarlybirdFieldConstant field) { - return ThriftDocumentUtil.getStringValues(document, field.getFieldName(), ID_MAPPING); - } - - public static boolean isNullcastFilterSet(ThriftDocument document) { - return isFilterSet(document, NULLCAST_FILTER_TERM); - } - - public static boolean isSelfThreadFilterSet(ThriftDocument document) { - return isFilterSet(document, SELF_THREAD_FILTER_TERM); - } - - public static String getSelfThreadFilterTerm() { - return SELF_THREAD_FILTER_TERM; - } - - public static String getDirectedAtFilterTerm() { - return DIRECTED_AT_FILTER_TERM; - } - - public static boolean isDirectedAtFilterSet(ThriftDocument document) { - return isFilterSet(document, DIRECTED_AT_FILTER_TERM); - } - - /** - * Check whether given filter is set in the internal field. - */ - private static boolean isFilterSet(ThriftDocument document, String filter) { - List terms = ThriftDocumentUtil.getStringValues( - document, EarlybirdFieldConstant.INTERNAL_FIELD.getFieldName(), ID_MAPPING); - for (String term : terms) { - if (filter.equals(term)) { - return true; - } - } - return false; - } -} diff --git a/src/java/com/twitter/search/common/schema/earlybird/FlushVersion.docx b/src/java/com/twitter/search/common/schema/earlybird/FlushVersion.docx new file mode 100644 index 0000000000000000000000000000000000000000..9c3f78708a476417d39a7be1770e90c68c4ac4dc GIT binary patch literal 42869 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 CURRENT_FLUSH_VERSION.ordinal() || flushVersion < 0) { - return null; - } else { - return FlushVersion.values()[flushVersion].getVersionFileExtension(); - } - } - - /** - * Returns a string describing the current schema version. - * @deprecated Please use {@link com.twitter.search.common.schema.base.Schema#getVersionDescription()} - */ - @Deprecated - public String getDescription() { - return description; - } - - /** - * Returns the schema's major version. - * @deprecated Please use {@link com.twitter.search.common.schema.base.Schema#getMajorVersionNumber()}. - */ - @Deprecated - public int getVersionNumber() { - return this.ordinal(); - } - - public boolean onOrAfter(FlushVersion other) { - return compareTo(other) >= 0; - } - - /** - * Returns whether the schema version is official. Only official segments are uploaded to HDFS. - * @deprecated Please use {@link com.twitter.search.common.schema.base.Schema#isVersionOfficial()}. - */ - @Deprecated - public boolean isOfficial() { - // We want the loading/flushing tests to pass locally even if the version is not meant - // to be an official version. - return isOfficial || Config.environmentIsTest(); - } - - /** - * As of now, this is hardcoded to 0. We will start using this soon. - * @deprecated Please consult schema for minor version. This should only be used to build schema. - */ - @Deprecated - public int getMinorVersion() { - return minorVersion; - } -} diff --git a/src/java/com/twitter/search/common/search/AndNotDocIdSetIterator.docx b/src/java/com/twitter/search/common/search/AndNotDocIdSetIterator.docx new file mode 100644 index 0000000000000000000000000000000000000000..369258fb517ad874550414a9d859e02b2c9501d1 GIT binary patch literal 37159 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 iTX3g<2I)B_*-H>#B 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 z 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 getDebugInfo() { - return null; - } -} diff --git a/src/java/com/twitter/search/common/search/DocIdTracker.docx b/src/java/com/twitter/search/common/search/DocIdTracker.docx new file mode 100644 index 0000000000000000000000000000000000000000..7de1b8f66453e27ca4a43a65362395b7c2dbe559 GIT binary patch literal 36835 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∓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 Tz#Ih1Re}tO!0h4Q3*rF)+Pl^@ literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/search/EarlyTerminationState.java b/src/java/com/twitter/search/common/search/EarlyTerminationState.java deleted file mode 100644 index 31a1731e6..000000000 --- a/src/java/com/twitter/search/common/search/EarlyTerminationState.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.twitter.search.common.search; - -import javax.annotation.Nonnull; - -import com.google.common.base.Preconditions; - -import com.twitter.search.common.metrics.SearchCounter; - -/** - * This is not an enum to allow different clusters to define their own EarlyTerminationStates. - */ -public final class EarlyTerminationState { - private static final String STATS_PREFIX = "early_termination_"; - - public static final EarlyTerminationState COLLECTING = - new EarlyTerminationState("no_early_termination", false); - public static final EarlyTerminationState TERMINATED_TIME_OUT_EXCEEDED = - new EarlyTerminationState("terminated_timeout_exceeded", true); - public static final EarlyTerminationState TERMINATED_MAX_QUERY_COST_EXCEEDED = - new EarlyTerminationState("terminated_max_query_cost_exceeded", true); - public static final EarlyTerminationState TERMINATED_MAX_HITS_EXCEEDED = - new EarlyTerminationState("terminated_max_hits_exceeded", true); - public static final EarlyTerminationState TERMINATED_NUM_RESULTS_EXCEEDED = - new EarlyTerminationState("terminated_num_results_exceeded", true); - - - // This string can be returned as a part of a search response, to tell the searcher - // why the search got early terminated. - private final String terminationReason; - private final boolean terminated; - private final SearchCounter count; - - public EarlyTerminationState(@Nonnull String terminationReason, boolean terminated) { - this.terminationReason = Preconditions.checkNotNull(terminationReason); - this.terminated = terminated; - count = SearchCounter.export(STATS_PREFIX + terminationReason + "_count"); - - } - - public boolean isTerminated() { - return terminated; - } - - public String getTerminationReason() { - return terminationReason; - } - - public void incrementCount() { - count.increment(); - } -} diff --git a/src/java/com/twitter/search/common/search/GeoQuadTreeQueryBuilderUtil.docx b/src/java/com/twitter/search/common/search/GeoQuadTreeQueryBuilderUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..90dfab8b6a46eacbd87a9500e75f03dd7ab44127 GIT binary patch literal 37695 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 geoHashSet = new LinkedHashSet<>(); - - // if accuracy is specified. Add a term query based on accuracy. - if (geocode.accuracy != GeoAddressAccuracy.UNKNOWN_LOCATION.getCode()) { - BytesRef termRef = new BytesRef(GeohashChunkImpl.buildGeoStringWithAccuracy(geocode.latitude, - geocode.longitude, - geocode.accuracy)); - geoHashSet.add(termRef); - } - - // If distance is specified. Add term queries based on distance - if (geocode.distanceKm != GeoCode.DOUBLE_DISTANCE_NOT_SET) { - // Build query based on distance - int treeLevel = -1; - // First find block containing query point with diagonal greater than 2 * radius. - Cell centerNode = GeohashChunkImpl.getGeoNodeByRadius(geocode.latitude, geocode.longitude, - geocode.distanceKm); - // Add center node querying term - if (centerNode != null) { - geoHashSet.add(centerNode.getTokenBytesNoLeaf(new BytesRef())); - treeLevel = centerNode.getLevel(); - } - - // This improves edge case recall, by adding cells also intersecting the query area. - CellIterator nodes = GeohashChunkImpl.getNodesIntersectingCircle(geocode.latitude, - geocode.longitude, - geocode.distanceKm, - treeLevel); - // If there are other nodes intersecting query circle, also add them in. - if (nodes != null) { - while (nodes.hasNext()) { - geoHashSet.add(nodes.next().getTokenBytesNoLeaf(new BytesRef())); - } - } - } - - return new com.twitter.search.common.query.MultiTermDisjunctionQuery(field, geoHashSet); - } -} diff --git a/src/java/com/twitter/search/common/search/IntArrayDocIdSetIterator.docx b/src/java/com/twitter/search/common/search/IntArrayDocIdSetIterator.docx new file mode 100644 index 0000000000000000000000000000000000000000..73e5d6fb7b395068c8767d6675561a611dc9ae0c GIT binary patch literal 37297 zcmagEWmp}_wm*!!dvJGmcL*f7yGziG1c!|W2=2k%-66O;gy8NT-2J~ZGv}O{bMJlM zFU><$t)HybyQ;dols-a2VS#~x!GVpY@Mu-26vQTigMp2}fPrCxT6HA=_Mgq|KO3rf zIG8)@GrQZ_HYCa`E{mdlIeWoQVi6|wl0d~S-EyFHV2s6=tV+A#)m~sZk%M@+8{-dC zpHd2eVUA5tx$_}jt`+L=Zlu4&Lq zPWOH{$qmlBUERxXh!K1yo~;v*sPzCAMN<*2fk84545uPA0v%eFH^r0FM&Y2Qax_G< z&G2b=M9KAK%-4W;O` z-32J_1Bd{$pF4J4%xy12%{P02?Bit(hEHue z+EHpgR!4y{_?~wXDCx&t0dzEVWcmp(sqAgh72ZL2y?1wX1<{nk4-26NcQe!Sc4O*( zL#SW4)J1AkTE(K1hB^3n-W-o4$bD|IgLD`9Bo%zxBn^dV{YCq{?k`ZD_KcyI@a~cP zEAM2U+Y5JHmIHE45E`zi1$NAfGSX z^=<65&>kpLxYW_EEUB-B(@ng8wry%LmzGDcz))x#sA-}-8;~>Kt+h^fQQvB~0+$5e z=1=CXwiTppn;L#Yfg);7eaCH~K`P9!hS{%6S9dxkRw*uNNN*>DQXEtgkA98#nO4)q zhiMuB1CW+$zzt97a-aP(L7`s|Rjoj``4lKY=%56d0Zf&g01nP9rT{1N-#2+i+^9k? zE1J}ux73WhM%Wb^oRlm*_|ex7GFbi#Ew`Lp^0uRy+~e!p`F1+l46elM0)tl$!mB(D zO^~L+als@Zv1k5fUlFyjUzbgAR-Q7Y==mxVgL=-o9;YvEpxj1LOOps+Xs}$xOh^wN@FMiPwjidceflRuKMR(}$PaGCc5m$#^(o{$c zmX2PW10I&tXDl~i05!c(1|R6OX$$3wU#X+Gb+D$(hQHj1y!^TP`=jY4n=g<^2RZ21 z`+g&py>xThY8ZCH6W0f5Bvfz?QRNgBw`L9Yjjt!pPLAu7u8{g=NKGL~C`s>frcR2> zMFVo+R&-t00DT2DgEKQ*D@@K*ej=aEnmMX5Um8bwX_AeB>8m*?gKk2WA@CUqch?tI zY-tIySVdy#P_o};elm89=N{DgzP*2aw?N2n&vOBVcVvlTKsW6s@%r3zN$}6QTrV%< z9)s#)3k3#-_V>CNJ2?DN7PV3PWmdGdCk80}&tI)z#gy^l0_Mb~Bv$dO-4JiJKp6_=1&;9oCyp7t`TF%v|s2p7Mj zQ~FFy2}{+CR+oL)VlF2WsvMx9Od@(RAt7Ker90K!-ZXMe@%Z1NaCP+77xY zpeg_S!MXvQ%veCbS{FOe;`IB@IMG>GUFJmtc6N%#haf_m2y_+bedt*gJ>2o{;hZm0 zD9Rfm(3MIOj7#rYz4kqO)Wk6Qpc(+-d>+80{dhawRHnbUxpB^pZU(XBK;<>wh|38t zQz*`yXK=MGLR0ZV&6YG0gFuxt-v%))`0LG;_2kP}b9kALXkw|SoaXJ)wsuQ5KD{O~ z#TOV8_3YNRLWLNHk%Q^}BI^9tZUL@JD+M}itT5w5%6vJ6%H34feDy)KkFGRuw>9It zNZZ^Li2;2frUjVRH6;}3IV`pH!Qbc_y!)V=H2E|vVK@%C*qK_frELZ%vZkdVR%OYL zx{oSrsHTooCVz~^FcuMN#^GLjBSXM5Seax_xU{n13rE<*2;jC=FIX+D>5d-`rYc;p z!|HtjYAJk>9DcU%bFB_~?-aTiVNR>pq|Kp?)N%NduZ_i{BfspXV}3{&S@nfG2A6|T z4yrRi{o#|Nl?4}j@3+Ece~dXINfj%8j3GE|8V^bC$8Q5@wvN>R6w7+%TDd*tB@Qny`j#sMg-IEd5&XyBX<4} zASj#IxWka4#8Ri{?rS4oHD-F%EwrhO#R8*fhD142Y8>}2NTM22El#I^B(k`(r6u(c zf*N(BvOCzMtpFeC0G{*FEPh3gM$8y$=dfXD%B);noR*CiCrHvEFf}qvt(J%oc^?FSm-DI{Tt1EZ9%@Cx~`+H?G+XVZ~9FJX29GP8@pQCmypW%mj*cT!- znIpZuObiA*MTPO@oZZVQa3cCmgYQ`1?a}yiDGQck8@`7!25VTd-!57inm`t6zm;lxAf+mW#Ym7uX&w==QR}~ zf0q+uVQK>P+_Ts_OGAZ8;kFkiZ&%LGcJ4kcTZdBWbY6!>m#x)+59kJzZcH9NGY9H} zriy+MwsJc8CkD@tf(^~1EBu@No3q4aL>ObU z+_xCa$KxGb;Q<;%P`df;K0=VZLNjVeh!|X>m!oAoTX9Ea#uqJh<-HbZW1$qI*80mg zj$Le%i%E1II1O|Toi>#=(>k^$)a_{c49&j?OF7+rl$cD(^W$rweJbE&jtDjJDnPI*O>vy z5Cadm0ycJvul7%6^G^BaJuH8~^S8ct*+-+nZg2I`_AlB-^o*UjAA9u3D1d~KkYeqIkv07d;lkdB`{kN{^Hjsr4}bS7m%5c+x~jlCSb8b$ zR$_Nuch!thV#|N~j@u`T#%_B2R&{Po0FR;mLjZ3C1S-~au#!23pe1VZaaWy;x|mG` zDLj95H+TDjpt$_hNloIX^8F79^3Mo0EmVEA2$T&u_M$D=m67=e(yDP^YI$@Zv?ZtF zz8QyPWq$T-CBGQ2Y`$zSx7iR`O?B?xP^i-g=s}07S(r7_r{JP8+B)0+adU4*==%a| zfM8KSODIve>;EjT7l~mArE!-I*~@WnWHqvFF=q-U>DDQcEWut-ovykGd0E5}F2+k$ zo2nXQ6Z~%6hS&OfDxuF)0sgZWEQH9ma6}Q|79Ww8jq<4G`(vS=^KTgbq%?Lo&P&A_ zdqyiCd6%xIs-XBD0)MjnGuM%2I0E4;U|N1S5epaP#RY&(36Ry zM7OJ%5wB+c@{;A-W_t!SB#BCUIbG%H?L_Wq(LK|6DjGk%Y6Spa@Vo^c_D2%_YbQVt;w^kPy5q{H?1Kd+eaQRwSup9Z{OE~ zS%6C<21!NdlfC;P$-A4Q%g0S+FQdno^&Ts>JVhcT<=tKFieLCbBWmBSt?G2Vo@SRv zJ>9;Fyg6tAdeQG%x3BhY+~1v)4Sh1a3n`lK1vUs1_gVrMGY7r2?Oo@MzbF`ICyyUh zi=2vNyy6JUIlaG7+8hiCyf0CTIJeF2OB*mkBgIQiXRytan%10CX*?jF=%}bpp3j52^fUWzT zw;G*J=}dx-@4C|54|I=R+@5!AR5Y*m%X_Xo`-prc7yWOop@h`8CbAv|EO~gH1R4mb zTX41Cwm%>nm!WPJqq3=x^r(}VlneJs`h?PXhfV`sTsy7@PptZB5De5F!UCq%fVmqK ziCMJGlDjkr#7dy1ZUzzMY5?fJJ;s+l>vwPZ_hT{(u)_8V%P!^+`1FO}DNoj4+5{Oz zNRp~1-KJJ_VpQ0BLYfBS7b;L@?QePytJi%hu}rnCO`enI_jetg%W?9HAEVLFTb|~P zuhi(Q`%*0L1K-;8E9WMkPNp9n?i^nRWpA%UPR@kWm8Bc>XJ^iP_pYuEPkWuyIT?am z2n#eL-+K4lONrC3Xw?G|7k}*DQ~92g%qylfC5Kx>{Rp*T_*z{m#Vd*)3oc1)oX_6T z_0rmPK|v6{@}_0(?f;Zj90AabX34N>i)s2AJg>#?iu-i(dVXlfkWM`C6Wtq|>=y2) zm^YCjt!zXA1#i6YnMIlU(2C@<8d>xQ8D*Jb43z|qvLMD?EC#ZVO!FV$;uOAjmiw*~ zvfOKov<+g-mAA2_<$){PUSu`Bl;D5U`O5hEv})BZPb-hqxv`()1mDf#_JY{LHqp;0-DOxHj*wt|*$qB@S9pd>ix-llUc0Oh8N< zbbj{l&QG9DoPTvfZBhcj#r_&!*?>>Q48`JsIMgG%2JtWK6V5nLC@E+h-5;SkAhci* z?mt5Rq=G7;IkP5n|1W|wWeQLW!XGM<+MvyH{)fc>K*e}oR^kLCgGT*bm@5HDj|v*d zD^~pu6DcCoe@SE_g`@F6g!@DFOuSnITHEhY|8B~6mZ+a_ZSBA`$mEyQnI-KY)^PDT zdjR*<_SGSoYfbF>fFR|cOp_2(+}!BivF_V~sk>n3Oem=}v**~lI5=wi$`~QUtef%+&e$!n)7MF{Yv+KU^=U6)4l3&R#>ZhTOm0!R$MjC1ZE&6t~~< ztM4nIYRkVe8m+|EhgPuX>cNTe$no9M`MSW|v>i_?OY-r4EY9TUjwuhK-Wr>{E3sL7 zU=IE|k-}b>bzHk?(e5_e!`rTp@(98i+w+x+ueaM-b37$#!J2bu_1q1U>M{}K$oB}% zg?OA+>spHOme=mp*a78RdbM7s#Fe$96ZfUgzNnFUwEDUN`Mw zBbNB_WX?BT5<`=+aAwi0)?>@eaPD|MOZ)*9G=IX$`+5&O4sSnBzoJ=prSz>ix}@FP zJvFKBFpE5Qv?F{Fkn11V+V%a&jq{$xi3i70*kf6XP`|^D5h(cP<_OGH529glvue#V z!f&;Bp2D;F@=6>yw!90c@SX#x^lgednV}?d1anrKd8VoVh7xf)o)KKp#H`{mong^Z ze^*a}B7GE|y0>M}xw4I+1xeEhU2k~rdtBt1l?FaC4x&t~OT%sCIQnhyFwX<@*hyHA8&XzB4a+C!u*j3&k$|Q@mA6zO!PsYFD9qG zooA{uK1Dm3+oysB>mOJ90VSoI8Upu+j%iraBu(pQBZT#J9PV$LYi8BL`OFw%2Bnj9ZrH$w6q(S1{DYG>>LsD8u#ErsTmJvImveCoZFv zpuFN!XJ-^C`BCc8tlMN1nFxaKZEB~PDlH!a0Y55dpPn&0JH3_tF1U1_)g>S5Ngt2_ zPuSHs3^#EwjUSM0$=)p-rTP<;C4EetX67o2G*f7G+Y1u^b#;{4CN!bRR_!9F@~)Z~ z1wuW)i$rJ$3X(AzCDKNp~F+K`n`4)EwWXPSu2=)2EN3iQ6KNGS9=tuN2L=^6ccyS;$dFounpt z?xQtXZ<5--7)VYk zc1LIGCs9*;sYMl97kPQtBrzcZxbA6DcACvA)W2mX9Jw4>v^|h-yNv7lF~X>)8vSbw z(;+bze@U}J^B}YctvDt8c*Z_jtz9MZ25R@?&uV!ese$3r0sdo=MHsI+qvM*S*>o&m4~39Mp^oa zpLe0O`dFi1@!~GsR-UrzFgrwH{`OEk@~2&r-!vdxt@W&pibY6%EuJy3LJ$Mz1g3icS1|3 zzL*|(J~+1U|4O+jOFl>>kNyq>3od4_?_K~Sq$B-)><&2llwQreM)0L~RFh!EErP`` zQq8eQfwz_V;o^A)+mJ=FU2F{{jiW>XA62iCQt}$%M>Wny zqQhM|!_Es05W8T`?Mj*MDD$?0dv+M5?P`kIqadS7qktr~YIrMl#AGIJi8q6`dPg7( zw00OUe?4+-qA|5roLyF--e4GqlQO?0-E(o#p4=v_*mrF1PLWh_Wh%%tY!S+QTOQgI zmt~0hP{Au+yH$*+QSNJ#lz+0KvfLum=-g`5TFA2~tK+0+J~OYe)9; zCl#B6ca#|T(y|{_TwBPzCK#m`$(Sn3AC2Z4in_#BRlC*}Y~=B77E6fk4kGXPGT%y3 z?1b5D)UY60a**NR)B4AM7b0puSw2W1pYIyr# z3pg<_$YJLfmqxcQ!YY?2D>~j5_Np~GnsY4;S(}wWx9wi8hkxw7Y(w}tKBmn-WdA;y zl6a@q-V-^ZVhkk^~z%=LYb?Ms8cfj-YU*}(Ya1T088 zVRKr(nxGmiDwkXg&h(WJ&k>jkA)~3x-Bmm+xE#xxB$eCwc^nq>oxeIKl3R;V(>g03 z-x+Lk0N?Wpz7gS}3vcq;^fxtc5v)_eaIvx47d}2Xy!nU0A~Plv!Zpp#?lkt}gQjweUS{j7?&+h1Gzls$lTbeLFx#=Ktj0;E z`nD1B*-=LiOfGQ%=ZxvM+mOx*)cwS8>^)0-M8m2apR6j(Q|nd(;>&aD=c{Q80?hV< zJL?l1NK3UrdKgg*v^&n2D9VGh_VsC6*! zmyqJVOO5yiE!3wiL$`t3x#Gr16-P3D92&>_w6$ok@x=EjE{o$SVpRz{KXgq?cLVPr zvK>>w`I_6scHY%}9oq%29p0M`Ms_2y7sGSfF$(t_rk>A06eowLmNAFNv@47x=zND; zps-u^*4l82pfmt$iom8w7_z;F=a)^?+Q8{dE$%NUGdK8l`TeVhPa|GR4iHs@Nk7t} zoZI|(vd1qVYT?>r&EeZqAQkl1@1*4%Oe`yJaoUaPWzgHPCl@Sod2aoeQ}ddXH{=F6 zTp_+E?(qAqQA5tBXt%*a)0~eO!?z#u4kEfkE)lYjhW{YY24S;p^dYu|i5Lf9(l|F% z9U!ZVeLb+F{IVuZoy+6J>saUv!tvin$>y;X)@9UN3k<+?->nW>`<%WF$`Qatt$|S- zV5Th&*z?02&4ONp*6Zi1n?FES1;LDCO8_dv4#t~S`~6hCT6YUjvYU(qU5FG4T{hv{ zoV3IN{1X=tYku5=h(qMp(n(a;7D&ACg6kKT1oT(V7FoYjls`qVzcDC7va(GgWu&tU zKY#Dz^7*~Giony29gND-MhJccC(5%EB~_^JWhzjwvcp^W*LsiKa5h!SXS(!eCvJH_ zVzT_Eg6IGPe{7Vf%|JNXy-AhLGjPv)M}4F} z23vW2jeYasHvC8HBGS-tNw7SwG5{2ggXAOK{zrK6U*R+V4nO!E9!MDodFKx=pDI^QeGN5;eIL_a^Qn#s@=ns<;+KL7Oe9iPb-wE-hv~kb~6FW<&taz1I1#_qhOvO@|m)w zd8xBPrD_+U8SB!(Vjjy`+p+}VJOc#x96y?wkItdQ%<5O)4Qh#^PSliGs**MEZ+Zx< z(2vwlLh{@=m}2Ht!z-C{*V5JNm@FP6Jn1%qAu^R%#>qUJ)!K`bZ9~iitY)67diTNt zUAL37N$+ZVQbd`#Xwlzs%wM6p%&aTDry^yBrA6%qy75Z~5^AQ656Tprof;;+t&*%w zieE|Ql}kjh3D_qc;=b(YTt7NrOYhNW4yqnqdSBJcVwHrNj7J>gOpuM+Y%jWMmRfvD zj8zu(xqHNbVjL)r9EGqd<-S{g345Oxqq^HXqgrd1COe~v8+dTXZ~q?6X83-B7&)e+)T$-gJ5Rl| zsAh6j^AYrkqi_F+7UFVgvMAi|{Ps!>ig6)*X%Zmo5@ z-OJR4j($lhNQv@$`S*|sh#crh=8=;^8^(8w(nNd$Q3XVhxHk@-W~Q{4TA|1Mn+J;W zUpxxivbf-zMHfow)ke-o11zlc#c;GBO9?*@#ni4@`M$SEiR$<0RvanscQdL%sWCzv z;h|!os6ow~zdo_Ov%>LS!T}$4jcbgj8*1)2i>#!uM2(U&oUMnG>6oIQonF{KVt|O7 zwAylZ!2V+?X)2ikpQlR_~oAKBGV&il9|74>ba`)%CpqY=Y+y7KlWvv56 zx&A5f$m*B#4L11jKIcUX|5v}Zy3}bY(R=N2P!jFIi|X*p-Ur`6VG(J%P77x+$xERI z=B2G;D#f2`*am29*R+EOPvDD<1(kS}(3N_h&IZl$wa=||p(vMSmlO&~O&{t=m%~oD z9Ue;yr9>|yHA*rEgf&eSMKAe;yep%~vl*12+6aMiQldfRq(u5m|2Bs})F3a_6@@D_ z7HMyfu9SSPQRWF3OoI)+O!t3glXeIy^UOW)c<3-7BCX|rDIV)rKat8TZU75OX0qZY z5l%FWaHn^2Tcrc@x%nAa;+s9yy4ZDElk4rLb7zEaup3L?>yea7^mP#OFPWL38i7hG zNb1i!^n_L&@w6`{*`%+-Wv`AckCzYCzKF&%KJAE9w8R9F?+qL&T2KZw1Mg`02JJ9HchX{r_L$);R#{pn1 zrv7!X(swB>F?j?V2Yp8PB2W4}D0z!vcRID-wz`i6aUey28Cr5=1k3>!-eXqvHaYTS zXmr`}6JSoH@3X-Bx}qGCaU>ZF85qBi*JTWqSH-08&9i!KnP+Ju@qGu6Qec!`hm0rq zV3bOcqm zO#EWH>a^pJLbOn_2C2<`tI+^=NTh?&xG z5%0eJk8y9Zq=61~0=j1<#%baZ`P=%Vy))iWEyOqFu3t&-aez2F$ z)b6c+2vI?1W>>AUk#-lw&mSA9SP3hXJYxIo$PIPlt+E4bDrcqeBCZS9Eyet49e8T) zL**sK9rWeS)Dls1jkf*uA2qQUT=e3Bspr&F09g&0P7LrLF4ylqqvS5XoX(-^sqkME za-54RI2u-cH67o8I$5Gl&PA?fx`A2f;|{aKSpKE+Ax_)Y+yK*LD@|*Fro$?I_{Vl4 zo+VQ$)r4$%-7;w)ZxQgj=3e@&p>1gs0}ZG#p4W0-C9coR&S>=0RyrtX;?E%7{~44x zzRPs8ciG1m=8Uobo9bIRvhBHiI_BtoA73QLJI^+Z{c@>>-~FxxW@!5}igzRFb(geY zA75y}w$lG-XQGmon}caIrI`pb_ufh$NI?=Z2y>px)%o4uip(DBd{pFRKB4X55Lf_o zfOJ&&qdh6kjGHZGUNDQ7Cg~!~8Q+rq+MQ}bJKXvYCEP=#6D3)viF}s3Yy?SB{_f9J?NB z{Sw_M-KBGCu-djJ&l1(^8Bww8M88+)gNOCiPR6%Zk+!U0WjtBE5Hu^-6~<|n$Ki&9 zoBe~xF~!QLqM6-?J*&J33!7RN)}o?C11?WOn2FE7YEFB5WKX|KMe@Pc-WY%;_Hibd zDFDis%rjP>ipILVrDkQ)y<+PG-vQzy{Y&_ujer=vqSc)ol?qqmZhbyRaP(gP(3s#> zWT~Zy4B=jM$eSn_S;1vQ?=0=v8RUfQwNiY>&0Cd;9t?L1^8l*mYRdTtHq3Aw!9Io% zDlHRUM)X>TCS%#OnrTZdlkBxABhXg7PRL8u>el+H8tO)4)(F07)dDA}%gYXfu{)Tm z1*o5*RliAQz{l8)(Q6#`oBHD))EFRY*pI(=-(xLnbI3_Xe^9%cje@8Jxc{X7Nrf4X z@_$fYbo9Zug=HD8dAGc8H-bN^DDB3upUz}t^mqG3rWMfENZEQUf*DTX9;%7*vAWMe zi`;C}zBi8Bv}m%rPqclz8{_vbyWm}u*9_8M{mC|?gF0W}E&J`34m^hWXb6fFLUjq_S(=w7r#Py&eqthr=_E8 zNC=^qQz{EI`FO6*iytKlsnqZ8B&RuZtsojX)UP6^IS)%p^Oynr@;2>&j8o1ES7>y3 z$f^3vHUA{fGtpctqHHUO@y?z7jz<2k{-TPVUJUq>(`MrU!Ox}fg|Y)eQ=E~XQvFWk zX1%vLG? z1bHo$SdS%xt)(Nw95TzW*W}rcH*#xsRsLb!(Aeq09ccYSnGZsuTYCy^T6c_37Y-5* z!E3<`?FGSep}9ZM4Gn+=2VI&foJHpEIc?bk6YNJaX&DIJ6ikW3588EXK!y^6iTj0u z8$&gd$|jJq6w~mERos|`#6paj!ZEP6+j3{ZW;Q1`gyARw)R9>nTB9v4Alja2H-k-B z>Wl>}*@cM4M%o63OBsf{ z1APO{Ld&&%$ZFu{fwT#I+oYelKaSI5Fh^}5+OE#k)^#$N(2sZylncWBDt{j^Y&($y zkHYawtl||+Mbyq3+=*156tvB72WOVSU>QO@f;Uh)Mwl{g1G~cOL6l=jgS{fNY@i(d zkGM#&-{SCs&c!cmhK5Zx_q|g=cE<*E!O1Yu z03vHNSzDI@7VD+7@RKe}QgXw0Ao!KW>^X#6h$jw9ms>HW0qv<<+61hr!a^%3c_*cy z-}SoX8FpI|DijnoA|M6b^#z0u z_YBDi*;h}0MV|G#!2>|yuy$BKznVm@VAp;mD;N~XrCUwnR<-0dvz*cWDhK*F4DX;; zZ8}qNc1v&yc9{Od)$OBCtH4Do%DDi|H>CX)pGMIyG_176LW(!lF+joDydM1X&?tsw z$0F;MOow)y#)+ox+qN!*1;oqHGxT+ej-p8P(6gL{{Z z5nW>*8|?Y7%I?J#+a2NAI#F0V`;9mqc+suJQnI?Tv!&^0d&M6M)uIt>;>r0dZ8Z~0 z9ld&7W{7GFc zav67T-dmuI``bG04)7NO%`sirLkgIE*n`UtxV~qlUl=!N=L-eQ7CL~~hlcedg^Y)i zT&(lvbE&Qdo7K;Inrm`DQ~=a6V^xr20CtCr8T)CuAbzDiQ1XHv;E@oGfDm~B-?Gk| z31Cg)^rDKm;WLa%?hX5(hDvD2Iaf3KI{jezM9_Ye=~BNZI)5S#mIO zbzhUq-te2@6_dsC;{HC2>Sht;o+Vf_)!w`m1=^KFO*qfhOBasfvEAvFP5TRHkFbc; zZ=#OLD%Xm%iRTdlZ`~v04p0vK9-y~NjvdHng4sp<#l(;Y%R+*$ajS^2=M?ll>n)yc zs&C&0Jv97aY>Pa5e(u^#=+gf0QcY%g{!+o^sAw8`UJ{WJ{VRVCuqFD(h3uV|FFxmX zKGPPVnacHaHYoF-}kx-jLcuUCyreSDVTD#tfj z8+uSQBmupJ-q2ATBuC6GDJ!L0h1M@r6f9N9pN-|-(XQZdPpD}KkP0P6DL;VEm@_TQ znvob?hEimB``vS?qBSRtWn6t?+tf7;_OXn?0*z4KR{0Pq1Gko>dYod`(zf zg{xG8I=i6ui^Jtn*@a?UfrDb*I%C|eY9-`o+Zwv_Qew&WMq;UW<2_vf0+5L1zQGAA zmDzp$IlCx;q$fX9z=4(kQtf+a3)sE8Dlstn zU%*P=KbuA2jt_ugKVRPfRSVnJctx>F81dD_1k2e*j1J zApn!(r%E>7LyI7*LSaASRk^*idFh{bJcubmi$ri+EUFgNv57*9__VJl&{gqFfLc`% zfd_m_hAi12*EJ;@mPgllE4_f7NN?BGZ~a8Y8}nl8N1h-*gR=<0O0Dk6f&dbbG?S>L#~ivj+>q7?+>xB)y^fp%>-V|xGX#m76fDs{HvJ%Yi?Zg9!v(bX-BqD zK>5uExU_G8D#{Km0`R!M1RaH;S9{3CJ>Amu3vR#2PU$gVCt#S|L7syV(As#{C&C9S zOu}BFH!K#YHy>_J=NOuTnf665z#^uCRkTP_T^|8Y5w%!1_wKp@b#kj%^Ec04oRI{cM1Y7V#}CtVZw<1~tX6}>1-SVUxvDwBie zH4v=*4mQ|5sE$c^hDnGk+#R*S+kL^@<2YYSIJyS~)_s99q3Qs7Y9%GmIc; zqxs_Y0F@B%A*J1KyLm*-Z@a%255a-Z8x6AiLb%&;bFKU@1-gM#eMHU>ejDzHHiIFU zmi)LpaNUmECsQQ6YYFUL;De5dC18W$6>*3Tge%l3f70)B{zYG8YALt@4KlyC*$ik6 z2XEc$=lt(*I>^E8`i}ApqmFIR=8n|ETWbmtV~=&qBJE_jzhueSxbA| zuxbJK$D{(cwQTHC`u7zZVjl}V&%YInD=FjqI;ZB)N4_YXhbuU7tw#b=u*iH)R+?RS zxgtAC`fOWQ2kV4A8xhM4S%SLQmd6=z<-sD99?o-MJd5Ouetx&eIR6phc?_v{6yLpT zB3;GAGXRN~>}Vf&*l3sYN{L(`Myc3lg82rg5XgM~9D)HsRddPvh~1_vs&Ca4cqKr(Vf`6 zPuwf1prM1Lh3yp?nNVgBrA6CJyH+)hmZ3T8)hagq=OKF*o;*DU?TOX~SwQ zy4x}_-s0m~yh)mvV;pi7t>_u)GtZBX;Ip#UuxFI}4~#rdd9zyrIL+ik?P}RszC~L8 zl3FO&rP83D9QpcU=TVNdwwI*!j-6rjrgB716eS^X_i@?+ra`*|*G>zJ0TVA#D`leG z7VDDTwVi2MsoJ?*j?^_Q(Ip`<^7&%OA`5lMHcz%(j=X&@AuSDqIr-S!92xJMR*J%$ zsHu78@v?I)O6y5oZScMa$AvDFrTGz3;R43DL8FZf|FCXS4m|K@=1C){Z0w-!A#!ez z%kG0Qqu;xLhLT@#ArowP+R}E_~ zndC7A*<}Cb!Ajz3Yclj*{n0=+GZ9-r;!5jXn;2&eyO~DP@nceopB^p4sEg|a62D1- zLA^1VS9R%oDvd%mhO72240Qviwqun;>;ykR<&ml4+ubV+ z8r@C3Gnxe$nV5qL2|!Ic_7L_`Ww#NxbwQmQB6zT^9sRCuVt!d(zCfBjII`i>6P8F; z#}2MQJ~;xlLH_rOLWnqc-v*_;z*K-T+xS7Oyj-B%_B3h*oWPUq2@UgajGo%skTBF5 zh4EZJw6t08()n6BU_gxViO^U55zY$y#~NXYVb!$E6gC_^ni^>_ zsc)AJS^)H|CPum5EVUXOBj9wrAJCvstn~AU2^o9CXAO@28j_xKy|oOWL>7VPOI~wU z=UN=onuDZ9Yb#G(EUF}iTfFhu!GkfOZYK`yi-RP@4QaY&ouQPIU!;Oh-$g)=u66*c z_NhZwVLiKNA&Z$XjM}Y1B6tPaJX<^ml|l?U03lTrn&q52J;Mnkf?f^J1Kd&s`by(C z2!Se6_@@&1+HPRBI7_xTVg|t@3^s&~E$Tv10;}fGJPNiGk6K4qU^avpw0?E~cC5>$ z-t3W1aLO5M<9)>(JoX3ItfCwU?_)l(U<1)$oJPz$Wcr1PzOnNla{NQ2B;e~V1Sz+B3>K&rK+mXB`AW68?2%X-US#leXez~+bj2q))~Iy% zc@Jj7I2~sSq`{9_+7$V$pl{Upu^kf`Bqwx3xECKnLPwLw5Ce*t0t2GadE zklk;f8Q-yXpiIuIFu z3yyB)D^|iSLPH4Fk%)qhNd6x_u%!Jti0a((SiSV{BC+t@wc02kZA6IlCj(coW5tK1 zhd5RI06~=bqB1!O`Pq%?#X_Js^rAT4fUVr_KiFOrun$Qz?`dK!0`WhZeP>t^Cu|_3v<)Ye;(oY(NE5k zu045rz-~C|SIkTTBO4y|nZSS;Fc{swNV&ZiE-RbSPpynQ`as_VI>j%V<%cm8Ei)8! z0{liN`Yxu0!+8)T^#0ZN)!n1x$){ztg8TSx9qEnxe$T!IxFA?Lm$mMDb!NB?pjlrz zxedSB-twq3=y=Sm&~z>UJ-lAHt*%^Z41M&3 zs&0J??H-aXfWE$OjrzWB*4xXYKKY#w%q{+BKwl4G!?u#|x9)jGZ+veiqt5YzSwU$b zP072SzRm4!%e&4_y=gb6RyUp}Jd1O2@rwJ>^d!7j)rN*4nM>Ir%l-2^zLm(AE3exZ z?^z}X1*+^Fc{lK4>%&G_-0jH#SKc(*=RS$YskZw-jpOA`01u#Qeon)>;-&f3$%;W6 zMskTiQu%hu)tcvO)9NBsE;~8o4EWr(W{XRb6)*6?^O;#{=f(GJepSC#P{^LRXSb+- z`3jg!%tyHVS}Q~(K+I1f_~!B~uvUK8+FG^Fll&{QL7iJHPYN*|($Qwi-7xv>W-~4oE~Cgxy~lm6 z_j9$PLR+VZmLkgQ)1YBv**LfM%KExuQBfdC5=$A0Ms)P(&C}E7L(k3hk>kT#X40|m zSyJ@;_8S4o-djn3$oR6SuXpxGSfMlGJQ3ogs>9rLy;_6(-e>2>vi)nC)`%Jj0zla@ z6A>zw90|(nTixnrOWuf_5EJfUr4LVe12 zYQO7kS_p+oon5nPX4a}`)R`p@-1gHVa`rvYHISquYqcvF)O4@`YQh6GaopaBcxe&7 zc06p#AaQk8-cF7#-Pp<0q-Wlyv>M_p_wS!<-5fISLh}?Jr9PbBI!?MxO9Z67ROmXu~aFBuUcyYB29RK^4e>w>rG{YI$n8kFBJnlER*3OyVHB1qk`>EE)RnS zrLkE&ZX{8J#lS9j&)uTg{h}BBo)8ib#z!j1Zu6a@S$ji3&Q4A!TrdyoVI23df_P3|T#rb%% z5b^K#j_rn(ZleOi@yyU(<0ttLfr`}y2wD^iy3pn5wzUv*SZ=z&kCMxkeqsSHnqBza z(u_ut4)6CieAEQkL+DD0QhKpYqQ;D4T;JOdgkV%lZ^*%GQLI4lmZRH)kKb!U%!M}k zd4BBE1q%`DVe;$6-^A%Mj&wlWI3Fo#1Vd3(19i|XfjUS}Kpiolj%w*bW&~o9`vv1--F!8?Z62Oi+`ik|AzkqpeWe-jW zW7PzP5*P#mHp)!He|sH_qP&{LOQ< zbUpNpF8La07zSwAZ)+$vPGz!>D7ROaQBT3UWV^c5&sDPVZD2s}8DAz5rl!#w$iZVK zERD%YdZVN*3m=*hD2&4OYP08)g_y3yPI^J&QLZpKK@9cBc9 ztcd$4aLtw1_3@Oy#rtjF=I4>kEmy_hHV%IE}+=-Ld;mb-!2ex2F>)O*H zb0utJtJ&AgN@Ap~77>^2V`Sopnf1k80|g;gv-R;Cg2u9!=y0?0*B0jX&6~?;pTpt( z*~ig`oyF^CtD12=C!)}+VAYmW-t-A?^pxit^A_(HzLrk6U{jHbxl#Swjho)#=uyQq zyPrO5JAM<>ZVAa;rw%uJc3D8lhv~D)WPz3y@l%SCmHCSGWS`~l_lo^Z6^Fw=0lLnh z=hx*_;tAj7)F{)_XphqilAkXd&y1BKUyER&NR|YCVV|AhhRAPu@~+}d^S#@TFcZ$o zz)~<1&df0LI-Ze0Fmf&J{`Co}jsj}$`Oy+=NHGi6Ily~?EXM1?3@^x>l*PZ^5XCAB z=cheazJ6qk>l2h!5g?|}zep2VQISGWh|JwU*2d%5a!e6Hef4LJ*L(Epelvbe^1K0ie*-465Y;4L%i8TY=%hCI`I|3KZ&_dhA z9;@KCe11l1!o7X}a3u-d2bZZv;hu}$9p6FWZYvxx8~jCVQ&Rd9-VbpP9pv2-XUP{ z``d0=X=!bzkKX%SYwj_}+H;Lg92@aBQLx$(Q8pyZfDDz`im9@vFa(w9XT`*rO1N%O zryF&lc|rLB)mx4*4Ee`~(yk%5<$Hkp{*{p6Nq*Mr+W}vWr-8yi??IBld&4-QoAbKQ z^XqGzxM0?i@4fch;=yF&YqO9(7lB+Q(`)uFj&9+o*pe*Rcc$*&kWa!d^o+O}E?cKdDxJLvogHd8b8NoZo4UcMps)iz znG-lq^L!eW`;96h65Rd><1~S~4@SBSqvSdjTc^Sb{pcYRB;;<{zJiNyzH_g#k#7(* zCa~D0*fjKGk>I}U%jCOEPjS~lYHn|`3(hx_zWZ;hUp&1Te0PyNa0g*AE|wZRbp-M} zVs7nqkw%A{8b58j>b{5pwpKjO+PleoofF!y8MZI8)AD#q;E%`WTMhL=^#vPF)hG7_ zYBFS2s*?yIQN0O!4`a;9j-AzqtbOded__v{)6pE76{U?Ir#*gLtfgc`&FI})8n7FJ ze&L}DC_6|QT)b_rapGN54NSE!F_8-b?gMLDbAuAPJYrmqt;LndaHKUQJu*16C*Acj zrC&ZLp)Sodc)6X*uNPUqW6S7;mq3m)WAp zhzIuBt+8OpD=x?U>*Oa3H-!a8#k7Kh>$N*1)d0W*{`o33mZxOSqd&oq0&eiUD15gU z-$K#?&K+d89C_q=ygfOgK^c9VKEdX3`h#lfLl4I88pucy!rHF0dfh_&^Q6IgJyR+>BC5&!UPi=e7rOdTzM&oW?&D!rQYfl`t+||2l-ku~JxN?=={w1< zvXhgFo|8%RsB=AEN$Yn$KU&tU9T%%}G4HwXVEv|!2FdGsc7)c{**xiHy6_n4vDnd7 zdHnW_cVOPDSjJWS&78l*`rLqTxp{(lsRDX(N4W0YMV-DH=#&>y9puB?q?Sop;J(gdW{#fJRY$&x(r} z58^3V4;5dXj;9#g2_C<*kTr#q@JT$L;v^KAEFrsc zWF81RZoa)Z{hS!v`Z3mypY-!H3i^SUT=WDhD->0xEIBDmxb!Cyszd+u2XK^7Gcy#i z(PkoC6=zeq-vJ2TNd)zT*U$U$&zUi)VT;maWm&h4Kgyx7y&Bzh%~TtZdvGBBI|a*F59vi>uwcJOf_Ib+4EwQ%Ohwg3G3GI)8Ig+-`le(FHuvNDLWpJ zMj-c9fpvg%ehrK{syQ=<0`)Q%otKBD#b0N%{ATg&v~h28TcRPcqV9 zQs)gaV*$=d!T32C7dfn=Nx$1KJ+*q`v8uY~YRZPNOkXApoxQpmW6vulA;goyz3}+Vv~HV+er~W`a6e$Vo8oHuo^;+e=qm+xleyi? zXfC$4^}U1cSy9!Osm>yMp%Z}VDaB@%2O~LZ=U_V7smYl#C3JG)r84b1ja5u{B_+Ye ztmN07!;sl_##FZMd*sD^mUw&fz3eQZ*-}qBt+WhT{A$vhBa5n`az_G8#QNpcB`oxC zkrpcJ>cCmY1N%H4&@eiKYr2{3v!6vSB1om9Y7@MARB3gbU8+=*vdoA3{Rmm?>a}#? z8|_z9qs!hOX1>!K6@KMy-gIMHPq`MQOZ6{cyYRob51?&NJ@BWlLJ!?r|Oq<%X0tJ_^>&&!-Sb;$k`$Q$U_max7duyldBPoNCL ziaYJ|aj@Vx@2#8HKcp3Pp_^0v9d+4qnHX;NJUiB~I(+U<%9ig%cBMb`;t7e7j@Pxk zE@?=+oQ%d&`ZtVFeAjG021!ndAuxB2HrAyFYJVDC$EK;L99)O8lV{ZR++QPDbd)u0PKyESAyW6Jh zaqbH}xFg%H0wzD8R`UTLn^_b6Kg|JJedS%;*;hk70p6lWT6Rl+NlkTh_)F@~($#Lh z=pktiqdRNnFBsP`B}2ly+tCo4S+-n@fKKjf$9;M5CwoUX#os5}9s{<5KmY&P0XU-W z^S*34bGCD1A%h2aAHcVBufr+jxH^!n<{`@za<9r4`d!NlI-_B$Tgb6sop*C(C%VHGY~j zTCGG&|FUmO8_0|65NPTi=*V>_<3N-Cxy;#_LbN~RH=^|3?(yr+v&&PqHOHGPYsi0fV>J!9?*0buMW|r5QC5o6!)p%>p(3E@NH~y1o{=euht~B_VG< z{x>%Hp3_18rUm{X0v1=K=BpA=97b@_Wt}Ry{+!1Znns5-Z<~8V;CdGW^=9SN#Ux5W zNR-WC3h;^IDYR{+xJ|uZM-Z2`yM?No^SOAHPg$EgnKBUdOq%D-!@RY!ELkFBi z8!EK2O+7wik=8>Y~%UQv$3f5v`ij8YB|J^xqRwwxipJ8Nx{zZ4K=Mv%kh$m zM0Ti=cBt`h^C2?;QuMI7gFSF74szhx6L>6ycbJiJKy>M!B$EeQcR+~oW%D$%s>#&7d zQJ9jn1y4z;It82$cKd~skjFI=DI>9GVwJaRx8rLsS2`l6kE9rJXGA2|!GluwA}>FT zX?27dyr+}qALIk2+Y!F7rY}Db^q>}eh^`Mp>ek`7&_TVb5RHkN^w-O zasAN5!q8+4v*)u;1Q;eFn#fF@Unpetdg%3Km3mg;{n?G~+K{8}l}uz}bNd()%lgxX z!7wOfAcXZ!jAyFhApLU)2&|7Bk)qtD*sc@ASAg*U4v7N#?~oU37Qm2hmw$!idkS4@ zu=rQVY$y~m;qZPW`Tktx$r4g97i(G@Oq>nc#~2imD3x?(F~eDmQ3QJE2?K|+A(3p?6^(pH(HZUv1bKJKs)HbNYEn4X9yV7wE|ejS)46;^{Y%Z zJTesa0+;m#I+nXSI~Y_~Q@HyOn9Gd8^Z~{{9x(Wt&VhQbCIUiWKoDm7QB)L$c(TQk zqH3zW&W~cCWI&7^l zah_MXf?@dBLU?UZHQ7U0gLKjdU{Ez*$MeCTYAJKzP(g4q14zqr`Q{nEQJeN{|G09N4 zN!mRe@%|?t8BqvhDpw{QZAgjt7DUp(SUIC!lz>kvIPC2qxX~y9BXJ0PhCj3yDo{ZE z3vh9a&#ed~^m*F<44Ci#dB6aKWWUDloF1RgmuSb^$RZZ;Q&br{(mI|=-o|u~8^@wC2jtf1w9iC8$CTtu z)Ep1z=|3H~9?#aj4peb3R1rfr4RjYfmq7LDPh?N4*O@9BS7|g-A8k!(2m2v^^rC*~ z`^s?ijyKm&bM(#Oh;Da#up!jO#UmyREIN!Xj%{AfYzB|*bdC{s8WD(7!s|cL`1sy? zq3Zj6ABs(1&3ltV*6(B0{}3R8K1eiH1sp+9ww%#tB(2}2AjsJMl6flb_SK5IdD(m9 z-hZ4@h#1Arz)HO)_-SA<-^RTVkQL?bUdExE$ou1jAmiKt8@qSav_NWF-1g3q0 ztJ~?;4_?iCs;57GwD{!i@iyx57QmmUAagF;o`RpeR9a^WFrU(3qiNWqUr)MwF=HIO z2wU9=Uu71e#4|9})-=yFu#7HnSR{dw&^V!y-O+U`g{sRNy7*hz>Q3+K58xF{r*+dP zx%Zg03S_!S^fcW4UM-7Mw}VsXho@jJ62Wk#X0NE6)tkth!Duj%KO962h(lwsvtz#7_%Nr!hLYc+J?F!-M+ovXy7dlZ?;3?A!6H!m|6;vR2f zY@a{tf0Ue~bo(ZCzu%e)!hCvy;;h`vFXsA6>7q>hSb>xLT&ysXyZPlU5o_-eh&OzZ zmWLL@%*M#TKEup0I@k6&VbI4-&f^W}T6$JbM%K;C#?P0UI#0X7RwF+pv#6f;#DyL+ zeIapB1CO`$DNDFtfS`eP)1W(gZkh^tgNba_uSl3dY)5>mmlK$vsm=cvJ?BVA@cIM) z)Z^fXD@)#rcyU3YefoHBc3UL1o%XoDcL>k>Jk*FttDs^1MfsciuE<~z#Un|_t+%M4 zmMjhEAUsH=R*e#P4QluaiO=tY6(3svC2E;E+kbxZrKF$l-7{eZIeBEc%udSVMVN0}kXd~^xHHu3*dISe~Lt)Kpx zBgoSHv^!aRdFt{D3tjF*nV zDAs-=%*GH)b7ncxOc9PIm*)$RVm{KnQ$nk7^W$(?l$mo-C^p1-1R53@jstpyYsFOR zFiW6_!oM*7CE{FIl;e*GAglkkh?rrqCfOeSzXh=7!_FhncN3X!6tSJ7%v^@h{-Nd0 zL>GW121sn~yOYxAFL5;gMPU{`AA_2<#s zLl%8 zmBI3{Zr?JV8x0s+xK}s}nKlr-e99OaICol(%qvGUAI4`CHBxqN2yNgd46C+q#M=(S z^j@!2QpGU1+YlAK<`ou30Fx%xCaLm#soQNMB&PMgTwV71c;Akh`6AZxDIP5Ehz`>4 zuqD}TSHuw>J5$0D-i=4$tD{P|ir2utEinZ)MH^~6|aqsJl|0@mjO8~UT=pHk<^ZJpsVxp&H{il9e~ zx|VoHjHdP980m>XkB)4Kld+TksJNqJBm7&1Cup#_zHRuBwCd~o-K(Oz^1pPb( zggOapOuDo7q41oXx?RT`S+(vpLTLNs3*ufA|HhDIJ(oFc%_|e#Y-iU2(be~D>j#Fx z^!gj;P6L2T>R2t&k}nrezyZ|S8esJ1xr{t$l9mQO#(LJ(>K-4*KGSRx2AVhd5Voo_gf}x`TGr92sEoLoVq&PsT2vYM6$F0c> zFJ-AY{k$XysUY;Wvzl|=ho5n|nFRsGhKFP+QFG}24#Di3MK~vljntidlnbF~qt;ZS z4aHQb<{#7s2?oYG%;v@m<3Fg?0h<3p9l=W}KK~1~Av9rNAyeQX2g^nq2P&MC0L5Cm zdaqo4S5ckbUlY6`v{*TiXO*=WDTtv%A_F>{GaH5x(`FcLQb&Zoi)kes5qB6boKxF> zIZlaNr&@^?IO-pJPxPQ<2pyW!qVHVLU)^Y9y!e5p_*|iXOJja43Q?;xHa#|M^&X7UN1e2J)yX zGofoZXS9A>>9+I#CX0t*^WLlXNnImArjCU6ox@%)>nyu)4{^cIR_(;+hUZHV4>U`K zVQe>RMViXt%)~I(Q4Oa0UFhZ8N^p;0M6;tuv$f( zVlkx8mx=2h;y$nDp*2oLiGoN!4>J)K{IZj5HgntN-oa_>g=;hOCAp-u&@q}>ym4U} z3H~H|&8ir@tg39(qKLo@EMAn-TlpcrzmP;ExdkS&ye}7B${0$>ltRfUHh>CG8r|Z6 z1nHSN9Z^i_fV@IwUvrVKUiT zsexJ?6P5u^SzIeBKk}tY+Mmw+MpOb5^BAYRFhP|y+TtK%_S1lEe&nC|i%xx2bV5Zu z(u*cPa(zmw+<5ofNmAmpto<_8DeGn z05YzcYPv~&q=fQ_Cr)S+?@x%P06O4I;8v-b6Z1&{leV!Th|Zk3h?WQYPo~y)sm2_r z45_O+EuB)V!b+o}A~o_))MD6wqLLtmQW7uKQ>7!S{>uX0dY}af@K}E=nCXg4dM0^T zi`p&sLQVG4P#Vcz>WZX;GTT;DZJ_>HTi7W+{{@rsFTMwme~`DjBJW%fROh8CdGJGu z!rwxnZ35SYF*yYj`P8bviKUfAVq}~OV>YGDA39_~1vyQSooWCn18c$4(qW^d^aw&?(#8D_<@(NlM{E9SN;A0nyH8$a8k|fT~#G-C~wVSHf zcweC`r}H~d?pAH~6hWI@7QnH9cD|Bgw04eGI)t1*B(`usEIU6GiTT967P4Qwp`;^h zk7ZAxq~4!V7-fVthbOhUX;6IA9)gX6!98kI`@T=>U-tE88u{ba8B~K%cHB)JaY_d4 z8vQaa1w(fp1e64ySV&fxj{cPGHRFt6a@rNenq(=NdMSo_D4)YSxl)yUp;Oh_Ea1tk zkrtkVIZaS&&EK-uR1h4+jxXWuo76g0bWZwP15_|R4EKuw9Srwp;fsbJz-J=wCe&dN ziWMbtPur!~Urq?g&}};=Ie9*Z=KZJwZwgVmj0qmPk3=*Z)s*6icbvRWN0I=qGgWee zixweUt`WXa&ai|0o+fQdKi93ht!)HeXl4D3AUt>`rml@nneBlVqBOo`5bsE`ryIKM zI7Wbm6b}Yl_G8y+kObk^vp*zS>?h9wX-WcnHYVo1oBOX|b`8&e#Y~vkDwsY*f`vu{ zcrJ_s7aEkb51U{n@#FM#bDgSqN`I7w!U2_1r~;J&6a~TK9r+R%x20e$Fcf6AwT&OK zDF~!^(h9gYS;Kf$7j7mU@MIT}1#~D6n{^Jyrs6)F6kiJwv@S@9&SP@I?S}t1>vL?yinu=tU>fj#L z!5tcs(2fSQIegI?K5SUgU52REGXfeCMfRO3?Vm#KdemfjKMsZS9!xV+3cO_g*9=`A zu$if&K~yf1O!%-_5Q=Poss_8#V8q~BT-oLuB+#sHW~Yc>rb+ieXyYBdka8WdfKPj$ zg=UC%ysU7L&Vmn1i=L9@dG*O7!3Ny_9hR&@R4W1FudsX>2Nge380dThSf!GcF)j5f zohyZZvxO)_W~Nm|(b)<&Bhcl6O7Y~Bds!C-qf0hupp}^Ze|_fn7_`J|6vdDeGz$C z(YfGFWqLC)*M=i*u(u+5&UOtmUC$BeB1om8tt0A;GI<88mZ;2wgpB!~T4^tAK6Onu zGEGN>CiWGGiW(R8RFo4t1uZ`M^oG!BO}P1m721tq*Gdq+y+OmkyAp4MGg>J~Q#HGr z^Kh;z^nye(+qh@HlL?4V{?tJa#AQu(`AEpB__5YK<_Kl$-_6rL`|mx(p2m~UIr>UI zyfl)LA%*jh?E8m{wvizf;Ez&Ptf9Jq@QY3l2wSU_Z{*}Ph4Yb|&*`PXxnMbkVNt32 z?IXSXOwAp{NPw1QiChDx32}#+9Tg$C>)Hwz1X&FiOlR#|IzWyUe%(_Z#=V6eCPwkg z=Lq~21bQ1rgR~X@MoL&!F0hZhYY{HgELVFRG~aLXdk0A_%(vd2jX--jB+-;Uvk)OH(kfq?C6zRy-I8%;q-XX{-+SXW%E zE`N{gEVG~?zYwifgZGA6#8UH=cFM$Wdt;s!&@Wnu{=2|{=k&|4WkDr zdsdzz{PTZ0*~eBW5Jj{u+a2qB!9ZwSfD5s^G4ov*QrBR^)c1%zjxTFgM88$Wa_;}n zV4nbGychF>R-ucwA&b*0irD|6vmUXvMi{&H!^g8a2M6F1mUFChDL=;U%hGRkUAwpm zg|*A^#foH)V}m_D65t|TaF1V>kw4D+M+&0f;T0f8&LRkkh|E=p~ z473?NSoX0m?@YqQEcB%&6gq-qX4eHrTL2`_j2@m8&&(4-arvT;CbUowp&TVV?S_S* zf$NuEnJtrVr8`{TOqgy?7WJJ};>T4DG9UrBiAy2PT4ey5!x>|_O`m(S8W&eqmj#tJ z{Q=lz{JQF5N#)o__YN{{XKfR>{6M-P?X|ZD;>91|i1=6F2mqu@bIcM?_5Onx0)Zty zPzzF=g=&pQ!KQW|Q$-`xS|Tlzb_iVDIhAn?vL3WZHAbQqP&*nsd$Z8EMH%c?a#w_K z-K@=o{WD83BblGAUcW!>2?6wvev2VfFnPoH&}6jPr`1Z)rGXH!%a(237V)>}? zv3pg=5KlOtG!}OXZtTZVO&kpQq#_OX*y~)Qa!NsVB}+p|HX}-ZmZ6R|3YZ2^L$w4u zsEaZNXdCBg?@#wUr{~OLdqr3wG3+2|;VcXa`U!3p8ZST{=Vy$I)aEFB(*_B*U#3W( zK0%#jUoXm<22Rovn{g0F!w5&k#of9Y&YzXckS3+~26Jht$!ex(sQ-kd28QH4OLIn3 zC}g3lvhe7F{mdKS40a@j;9yQiebB)EW$gzdyA7!bZ$~zl8ZRw^l~E5bvAq(n6}XEc z;E-f>@@WA|*p;4oo+cgQ5<-k2)GWvuZM5k&`puK(A|XFJy&yYz35P)iKqG_rnU_}A zGTT|1hCQAfQQzJ(O$h*(^5I<56|!QMjGpjB2|OGZWIxF9;*KPR6AF&6js!T9RcAXg z%RDLS&`|3s0VL)<4zYIHYH7kDj}D!`s~#1z6o-6$_h}bDDn^_Z;Y|qA<%fj+W5p50 z13C9@g@9$8GaE8+j{lG%n}m&#P*hfKkR#78uZD@qcPwzi3kb(&s6`E@L1DuS0N#WF z9`5I0yh>4dln9za?q0i+=U{?4!LG$8h|r*8^6BvcxW9n+ReRJ?@gc?RzRqcL1P;by zJw4y=VQ~g>u|UTNBRSXDGTVWOwMnq#%|aWoW=Zl6HHwhK>>J`VmJqCv?_I&MZ`aaP zRB4rFD<-c7J1e)(@f;N^YLiRiy>8wyrOcBXT(PablmpX631ncp$mRvZfqYbKFe!~O z>N~x?df$?tpAAD#y&0AGX$fmmS|b_V;&OKM5(c*kh9Eg<%1R|A>0g|<*u9$ld16?y zsg=Jzpnb&=YG-h2qie`l`hoq0lDfm zKU2J4NoW;e*>$4x6sJ;d3*0WJPz#w=dItOg-XiJ9X;-DBck|`+{T25!K=&P5*{C2p z1YuE@whAXO6^jXi@ybMv7e(dom!5=(94E@3TbPN-39ZVDEa4Kj@gE79lx1!$g^h>F zg^C#CR(qf07X`7dL3ttndM%q_9IArz#_R{@HX48$+R<>uFRsA`vF!R4n@?Ej@y0Un zmXwcxI%~J195%<0 z6s!pYinIg}*1?eO|03YI+jN*r1}pF{0#rv(yqLHXP8>PjVB!jL6lEb6;|Ysd3!)@t zBxN!ZA^^AG#{);@MCq`W0!*l-nE$iXOyXjvYL}L?Oo9dWVY4IYxE1kzZeVs~ z2d>E%7L!Uk%_820K)BZMO9pMk36d=N1 zhLom)1Nlg=W(Bjm3&dp1t%*5n1ILNCN17hV8P2)V6zG!V-2}^>j7&}g7Y6>g)t%I0 zVxa4^q_uzc``0e7YSNN0*`$o&+;Ekiw5pTi54^ekX(F%R{HqaD4*Ebh-Yg$39V zUmH?-7iLKQs*p4>ulJL33Zj8VRZsOMnvO~TT{ojn~F9rt45YNPHv<}zu_?Q$70>oPvG&;2o1rUaCKXe-c z#DQfHFf6UKS(+&_+B@6;ap2h;b%_|2JVR*2AC*0O5|pUXr-h7!WhF(eJw+x7EQ2?x zAh0AgJ!Ocu&I6H5QJ{wsXDu{cMxd}NZWCZMP4)H*7@~@$1R$`q+EEx9nHiM%CW5XQ z*lvdEDY6LuL#UWP+e784i+oxaHe#jK#d~tKWi@3}~Yy6<~M7KWWN2+@O!}8kj%3wU9fc2Wvn$W_+3ZAwkV#-zp zSNz+pFj8Zyq||mSEFV^|NrOXqUm|8Zn6>_Gc>QR$ zZxFuH*6OJ8!x}VxTtW;E4P#{A1MaFYpASZSzYo)rXO~ntfkfi6T0jjap zDEdaW_ZxAU3$>tKuH2bY!UlrxtcpL!El%wt^l;*ogyp~`$7jybT?w%chXkPNZb-UlA8kvId zM}=99wrgF4_1S^iAkQ^JMLlw|cSl9krVi|;qog8Zd|#?VFqJCJd>UX+L?yU&@cG!I3^04EW+WRT_!z9~ z%SSSil{<}%>!0TJ1 z%w*pKvN*ke$J7pGH+o$Zkfr{5yBTfIi10hw-v-tx{O-Y-Urvq+8KabfqU82uO-r7D zsU_B^rmJUIQCOJ-(TE5dr1USiHj!(d^?v1feJ4DKE&rE3%heswe{Qcl)jm=I0k)uO z1^)bL4*ORNsxM~7D*tuC$IJ~_53wMC%z5_?9ww?Bm`1aHPGrL&>`E4CMRp{hWNiU% zhMIZ#$*#qP)Ac|_dPZ8Y?T0tRv@2ckXTLogl=^=D<&r7!kFYJ1Q5qP2m>8_gOSt5# zjbi;u$QPu~;W5Kx#uaRh(kCduM-LlY@VxXWNiCaOVO>=0sHSP1fxH` zM$)8Z%h)EhV4%{ChBi+j;d_Ii6VzjEBwPu1Ed2h)ZyU#QRWIH3U>EOoML$ge8VG~y zDk=p|%KI_}CG$-L) z_<2SYNPD9TzGrw8j3{2b2ALGj9$(K+3I$tiU=?f3@}!+t_=f7Z5repJGMkRM((xF} zkq!Ro6%H$&RDoEzjXC>sq%yq=Kg3zMcx`G+Q57wZE!vf>Y3Ty&PC<{X(d6xo(aC?=Ibw=!9V(rHx; zr;)MIndP8s)dSz?=Gyk$A+M$@95e!#${O?nLU_-DbnHh<5mfTn3ai^pt$WZB?%%rO zpY;RyJU|8RMa>V@ZotZRAHQG1xOw#;*40+%atpK%U6e*@c)_ygnRvRf;-`zNJ89od z@GyE7+&hAmk5A~Rce@?+>zZZT=Z>76?QJX$Az$3ymyIzSd?;aaJuN0$d2rKVcQT_d z$Fx{6YXfKBl@j81)g(e+QJ&Dia$sfOEb(bpCs=uph=y*7gdM}u& zGFDx`?*IwLJk#*w=xf9`x7V~@s*5r&`C5s}ueblBnQF2KS^Frkk8>9t2ngoCPf1rx zGdnZpzmBYb_sx`d*xZ+T|$g3QV?|F3VDfj$0ma(%5SWjg0Sx^Tk|j*FbEhW zZdYI+F7HGM#J#)L3!_71ol>fN%YO*i3qO#NteCzQ+!)!SdUL-+dDLgc1m6dI5 zR-UgbT9V3kcOr`|XT~xugeF#ANxNv?g2h;aHpa_GZKkY+hb3b3p%7_@8yHSp%AUDD zN!Ik=K!7f^`${0JWgNTG`}O%?BW-q|N|IUs)63EF!B`#9n=V8j?3)wX`|)q)ci$J< zUl-3`9CCeHK*p2$cl=&1+YI`2{ZXWcFY5B%Zui$O90Wh^!>GmE5uw7QH$l9^gZNKD zE)^B%44NtN8Yv6FvG*xlhlpKHMIo62AA_p~uH{Gr#Ql*L2p#h#jCI1>Sv|{XTP_+S zq{dQ1+mF2PjH8qn3aZyY+LCdkH{@S$!8+C`VAld1`xL9~>4LqIgpcuo=&+kxP%;(QJMecQ2b>As7omC}kzXcpw<|B>lyd zWlgu0*y1E&YL`$^CYs*w9TLA0zd&J{bnT{h3OV9sv?CuVxbMxTLb6s`s3}-^Qty=- z8}hy%-Wivm+4y;D$Yhlu+S+^&&IMDcCsb|%rf}H3lGNNQ>-@`_kb2*}X_xGVZOR*< zHDPr}@U5S3E410jsIlz##%JNqDmPk}o3QyMuD#(M3ATV)@9&-p{6DNL%F7t5WvYId zdaXuY``veK&AZL&xNhJZeRdy7&fm~=@Yl^8J)2rDnzs}(Svy3f=?xck_;u5><_QSA^f0${Mpbt{?2Us|d#>IjK!xbo2o@ z5S2X5jFZ8#W?k^Qwm&nv7t>Xf)j=B5X~980zugFl{;nA1O{3nQwUs?ole^qyHPqxX z+G7iD9hu(#uwRu~_Q;2UU$ae;3z`1@S&N1x-6H%66}Q}YTh+eNpWgwn-dVNh0>;Hz zy}Gj3{?XTiwz6|np{P>en;5q1HLphJgrXzFXs570ou^prCD*2g4=H}#M|2EMqnj^y z=n2Q3MM7WH%U6ed8avI8VxZ<YQLQ`tX)e(j|oFuia8ACZ)cp`hcF{DJjnQXR~xZP()%GSnhckfYknpu|T|N zMDB2qow|$was~UcBut!_mUFZPlGX5z2)Tcbs3=)+q0!S~#pRLdiB#j-9IK5T?+R|% zo-i)EMw&^imTSgQ1)Vw44h6FzHB<(9tSJoz0#S~*F>`3EL5D(G^E_Bys>bmmrO8dO z4;@n4jn(DI&1>F-e#t?BVLkuHUIqiKa~#iGo!&3#f97Jj{(P%tzz;kqVD^d*{B7dq z;_6_hX=lr9bOYQV3kJwfU-5~=iBi6Bj74P>YSaR_TIrYXP>J1%#l|1o z;eERvUmVAd?d0FVh&lKGZQ{}{j&R;r5&+_#_s7EbC?OXiBGB2jD3&S~l3H%<9+0F8 z;MjB%6Bq}&tXNAB>cLwfBl zIEtt*OtnxvMpreAxm%PWb?tCjrq033>;FTS;N;PA4^R&^P#4iZbp72O_CM!V~tG-oOz#aE!YqHH-4DF0Uq6(WNf*w)zJ4&jD@el9S&93N{7`$N7iwKav%l z9UNW$8r7Wm2Kyiu4Dm0$gLnHAtoaa@7~xVNv^L8!dW0VSl(ys>VlkEP-tv5$CSzY} zU9Xq<351Sl`dxRTu;{j!(2`A@aHy*Fx@CRGVab1B z0e6);zp8ONWtu5{zHnKXV_UyIl}%UYu-n(u%2QBkVeE54C20n{T=|4-*B(aHY>$M0 zAazGxP&^p^64++-=4dRNg#LA(O7`o2tkUA=!Xj*dHJJ!tcK4q(hrOGfv6(ZlD)T41 zo6+2|-{-;U*(noFkkD<3NaBFtXf701*Nc%LZ@CAd!l^&c8)s$Nyq3K(nW3-F5h{;l zmqT-(ib40=;eGc3yh8qZy$MR(MvB02;kpjeDccccIF_AWIe7n>c1m^mQyF$04ei@p zyPvSt$KHF~>~GYK1xPfyx-uF~zVFnxYu}|ZqHXzOxWfk@Quj4)lIsrbrYmMN=n2TZ zXGa#?33p93B6eA2R7TiCY@t=E@{3;CxZn=%7TmHGw@lQXy6eKJ!z*?p;o(X;F>OLn z>NXA~oTwD{A*nQpI5ZUJFGp9@>y-waRF(@^$<_KTC8aZ_FP!f`M-_;L%SKL^sfHs{T80r>%ncE?*1}8nbnVvI zImU!v@ZU-AoTU^qim<6@vc4@+$V=g7d-Z21eC3Xd&p|TeOpdCcqBG4vxMNuUOs*}@ zq!dj{fjI#GqBJ5HuwngP2i$>cNqK*Em^BWk{F`BvO|r(Q;v$%SMC6o*Z%5GFxRi2E zOk8uzjzs6;-N92NBlmV={chc(@Pv5;imJgPW+eAFfX7w$Lp18@cZ>0b<4@x*s)m!8 zkyxSte1slpNn`5SJK@TdzFpO{+Fogo)rUb?o1VG7>z*4qeX*FHo6kGY19}>IqlY2h z;>=L?IhcIkd(e9aB2YNo!4UdQ&*in7^G8xqC}!#2?tl2be;_pzM;M3mBvq($#x%TO z-TLIi1K3W*tX|B)*emiHFjXUg*=~r_7pjBJd( z|Ay&>qB7_?u5p4oR^qrg70&eew1eAq+oERi3R8IwYXSI z{Q~TlwNOvjV^65ZtNqv0^&*H2EJNLRYyAi=HiiYbP}YW`?9;p<>(n0w+aK`%oUsbW zS1fuUK|q2@KtQm8GZwIM_g~W#aODNOKJAUHY?-Vb%`C3eZ5+|nFa*22xoPcYP-qx2 zpa;9y`imJq(}QtYeJ@SsDrT&63YAWhN6(}(`m&e`$Vqqsc?=Wq`DnmUb&R0jbBW323Ub=kF}Md}17?XZS=h8>tleqbA-x075FN-d9?FrX z1BcB^faxD(z1Qh<2E&4ZtU$c^QAa)loCQIsAU(&)JMa_QKyE<4XeNWYTFmLsF@z;t z{1D3}H4Yq~NnWk$PQT+zVOHbd1kgKYMh#rKc*eJp=BcNd)+y{;BTbIeU7kG~ zo^@2b0;FM>=SZTq+U)kmd6ib60D8w5^M;M_(~6;M%`>W>(6PP4#}Gd`jH6GGjb^Dr90Bx#vVT#G!hLD0V6^vxP=ltWe7%{90v_8?t&>W^*S_FgciyieL%n6|)ahCaYoiWj*=7B^ zc_;Z^&b_REA7|#svt%VgUZ^9;{E;bQUW@;2&hQt9w*N@u(9enFK>e2Lb5bG6S7ht%|0X8h)!7s)QX z?WthHb=8J7GdZLA=5;E^vAme|w6DW=qw)O2eGC)!{H%PnzJz<8@A5?#yDQ>enlr`R z6X^YSSF$(mUeiZ^rZ;>pza6%1{jryUTl`Y6d{BeI%>$QjR-8|EJufT&VM~VqQY#8Ri%4Nl)5)PwQUdjel~f zKYr@O?P-UfP2rsO_O9}r_H({x)(hWmUy_#AD>KzL^V5_$yO*8YQ+@4C)1m4$N4HJ7 zWK>;Q>ihPQ>W`|satEW|e_lW3iAQkp=~vg<Hyi@ElVsEgtskSIrMTs9a3vQhF;c-#v;V!Y4v8&tq z&qq(5lz4MPW%c(7oIlSME5AD8ymF>+`Zr%IfA3(e-CGac`X8Li+^YJ@itnXNo`rIH z%g=(RUVJ4R_?I=YNo6c(#7g`(?)Y}dKERuiNrV|RJkG&zdZu~A+MuNqrvh83r+{N_ zpl$~YGyugI7^0nlgTbkJCGjDZ1*yfcpw=0>0hMar4nKfO?*Ye=xna72bOYltpb?NZ zKDcR*uCb$yJ2(@l2F|MVS}O>?RZIa zbI|8W5#~r1!OTILL_yb%KJkLk&Rz!9jy4U0ZUXv51i}Q%a;OO?(-P?V(MOFD`p;BC z^`nm=qZ@(V|3(;bv;k{x9Nhr)jxNH0xsAvMVC(jxn}yzYM3^vo+P>{=v^&@ sDQladp@P!!Lf4Pp9z^K(Xh+IosI9{QZ&qLq0_7?}hD2cYu<8Zz04(jp{{R30 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/search/IntArrayDocIdSetIterator.java b/src/java/com/twitter/search/common/search/IntArrayDocIdSetIterator.java deleted file mode 100644 index ea370ce9d..000000000 --- a/src/java/com/twitter/search/common/search/IntArrayDocIdSetIterator.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.twitter.search.common.search; - -import java.util.Arrays; - -import org.apache.lucene.search.DocIdSetIterator; - -/** - * DocIdSetIterator implementation from a sorted list of non-negative integers. If the given list of - * doc IDs is not sorted or contains negative doc IDs, the results are undefined. - */ -public class IntArrayDocIdSetIterator extends DocIdSetIterator { - private final int[] docIds; - private int docId; - private int cursor; - - public IntArrayDocIdSetIterator(int[] ids) { - docIds = ids; - reset(); - } - - /** Used for testing. */ - public void reset() { - docId = -1; - cursor = -1; - } - - @Override - public int docID() { - return docId; - } - - @Override - public int nextDoc() { - return advance(docId); - } - - @Override - public int advance(int target) { - if (docId == NO_MORE_DOCS) { - return docId; - } - - if (target < docId) { - return docId; - } - - if (cursor == docIds.length - 1) { - docId = NO_MORE_DOCS; - return docId; - } - - if (target == docId) { - docId = docIds[++cursor]; - return docId; - } - - int toIndex = Math.min(cursor + (target - docId) + 1, docIds.length); - int targetIndex = Arrays.binarySearch(docIds, cursor + 1, toIndex, target); - if (targetIndex < 0) { - targetIndex = -targetIndex - 1; - } - - if (targetIndex == docIds.length) { - docId = NO_MORE_DOCS; - } else { - cursor = targetIndex; - docId = docIds[cursor]; - } - return docId; - } - - @Override - public long cost() { - return docIds == null ? 0 : docIds.length; - } -} diff --git a/src/java/com/twitter/search/common/search/PairDocIdSetIterator.docx b/src/java/com/twitter/search/common/search/PairDocIdSetIterator.docx new file mode 100644 index 0000000000000000000000000000000000000000..e4c8c5ae2d75ccab243168c26ee984c6ea4cc217 GIT binary patch literal 37343 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 doc2) { - doc = doc2; - //d2.nextDoc(); - iter = d2; - } else { - doc = doc1; - //d1.nextDoc(); - //d2.nextDoc(); - } - - if (doc != NO_MORE_DOCS) { - if (iter != null) { - iter.nextDoc(); - } else { - d1.nextDoc(); - d2.nextDoc(); - } - } - return doc; - } - - @Override - public int advance(int target) throws IOException { - if (d1.docID() < target) { - d1.advance(target); - } - if (d2.docID() < target) { - d2.advance(target); - } - return (doc != NO_MORE_DOCS) ? nextDoc() : doc; - } - - @Override - public long cost() { - // very coarse estimate - return d1.cost() + d2.cost(); - } - -} diff --git a/src/java/com/twitter/search/common/search/QueryCostProvider.docx b/src/java/com/twitter/search/common/search/QueryCostProvider.docx new file mode 100644 index 0000000000000000000000000000000000000000..dfa3f8a8e9ed9d9ae37799b776e23546781944c0 GIT binary patch literal 36789 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/search/QueryCostProvider.java b/src/java/com/twitter/search/common/search/QueryCostProvider.java deleted file mode 100644 index 7e5d72433..000000000 --- a/src/java/com/twitter/search/common/search/QueryCostProvider.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.twitter.search.common.search; - -/** - * Any class that can track and return query cost. - */ -public interface QueryCostProvider { - /** Returns the total cost. */ - double getTotalCost(); -} diff --git a/src/java/com/twitter/search/common/search/TerminationTracker.docx b/src/java/com/twitter/search/common/search/TerminationTracker.docx new file mode 100644 index 0000000000000000000000000000000000000000..3a2c3466be08b6665e6f8bfdd977f7ce026e09be GIT binary patch literal 39048 zcmagFV|ZQN*DoB~Zfx6j(%81sq_OQZwr$(Coiw)5q_KT=@B7c^Ip=-9tX!FEjUUEX zduq?EAPowJ1_T5I1vHVyp;4t&6qf`H1T+o-1cVA`)fTa}aWb`W(pPb}Gj-IZceA!? zN|Kdd7exAT`Hr5Vh$sMLTrw{@`AD5Z- z=#9T#&)4nMOs*{=dakRRsa`+~TH;l(nNNRV#&IYXMGfrX9hh;y zc7R(SCHPV}S1TY%;~6NLqAErWgcW4Mf}00Dp04? zArzB5#=^z%X@4q0?0ugbq`k@|D(BrPs?SI1FF5G=bdB(OWC*^7^#tc%{V4I)Reb2Y z9*}P=Lz_&c{howZh};ur`0DurTT<~wl)vw7xn%QDVEmCd{}oME4@lv^s_0HGE%*ee z-WCWD5G>%YzJsZiBLn@PYgPP|6etst-zC4;C|QY3v#My}s-EbHY$1Pd>f}YSjgLg} zT6dSCsICS^AO7*>zOmU-Mgh(WO|ey=x{>B$K;Ckn#x~V;V~73*R5Em@KarctUXZ3$ zdc-{mf}kn+BfFUzAwSI)>X0^7!^NCXwXmo@wY3C7X;4`L@*S)brMj~>-MlS?t+-4x zTX;!T+kus9_>(}hlZ1hv;AyNKvT~Z72@@t~A%dhm>Ya$>@l14iY+EKq`%8zyH|>gR z`jbErd1XB}(mRN$PLx4T^G4p1xz_!!M|7klQ|cbmX3krIioSL;_`ezJQZBWcVphDN z#^$uyFaJA1p+8`iEda0i93Vl+fCQP?8Y?*1+Bq^9+d7#3dC9ZlC*%egk;ERo#1>@L z!fuhE#3ZSKPs61o(EL~09$49AttPVBr?&SCt+jG#T=2JfMsDr+H#wSGK#harg9$?7 zF8xiyVKvb|){QVWUbDrhxvG+a`Y(H5=5NT&xsAtrBNVaWU~02LB{P_GWtKv@Ne1iL zSQmaw6J@n373ZA@D`sMGBAC^E8-+)}!Qj8CjiCmfo9F{z2 zC^M}GHosB<9q6!Y1?GZXttG#AvZc+0z1|GJ?o`|UVtm8o>w~8SAN2d{kb%-srYU7D z1T*fr%QH9}A~1`fVw#d`s~Yo8__?El{q~FtsBQ&ZO9&i7@|V21^U_MefIO%TZI>E~j)@(?%E8Of)rOFD?e%BI zs}>>Xpq}-sBf@uDP`~Cht6n;2A!x-OW7Q(;&c__-%UZf}+EM5^Y}m*yWV^vWZNP`N6yS;9`LGne zx@heYJbuG|N20&BW;)(^cIJaUb%o&cX>EYUPdSISdLN6N!1r&p+D=L0pHkl@kN=zh8{?rD?Q8Kvza+^7jYU)z-m; z0r07HwgwDNf8LC9U2DhnR^*Q@eSdp%Bc3FxRmsduhZ|iv7ZmyP!KlRIcPG%e+#nXo zS|G}yt})+BdMK$xu`xL-1*xpbC^Ds;o4#)2YX^bP8?NZlRLLQ+pQ~GsTI)e%-B51K zzpZ?K_iTCA$tD&{3X;UtPCuY4ulL}-A0A8cAo*Z4h@$4kmOhZ)^JtS)&AT*|y&*@G z-56a+=ZTi`=?}^x|JX2}3X2uG&28Fd-d3XWDn{$9mQG+&)lSx-wfRa{>~npeyXXPD z%$xR8LzGl0xi=;+mTA$BDtbMhx&Zko~*B=6n}j0K+DSR{{jn#@}A@D>^*|2zcH zxjim=)KGadm%^(eFOe-Mv+u!5{YLM1DGXqPxKd7?I-k7Y~S*@Y_Yu<%V+NphBqOAPh8IsnJ%j zNw)-u4ek!P0d3<@0PF8F@&2Ap`7v7ciBA(5J$DaM_tL1hcH;2Vn&96oUv39Q!(pi{ zI{9tb2n4zz^>Ps{Xc$!(pH-NL4pOc0;zkY%jDUeDWE;U~AQ*)1D$fQ}aOt_&==_}L z7X2pt2)8+vvqcQ(UpJ--gOKobk@@zhFS)!TQ-5J?95Rs*&x0{@dQMESUmx7~s60hTyR%&m7|dHC+2=eVtA;0DJt_*z#0zXX`}t+X`C@5` z93kipPy&O^Fd_B|L*#-WLl#|MlvGS86voGtnUMx%e+3gq6nWjk4>$!acElI+vcC9+ z{)hzV;z28fF3KRTEe_0M?FwSzi0K!eYm&TQlmu*@5uQn**)y78!^8Y_@{N>qZzhhu zXbRvE8O@(~&dw4KPi1;!b;5u>aflnetd2Io)@*aqvq{PiPNrW5#X-vo9*S0*%y0O` z0S6}fsbVXDu4|{aH47`JWOqm!ldyu#F7FsyHaPCV^P#YC zi3S5XXcjJ34_nDHiZTQ zj)VW2Jy*<&4HVP&J5eq8ClIWllt;hDo*EAZ6ZYFUiTC6ugeF!%IF@X%G&Yrx3cEro zrW}bnkc0oqkPbDJ;5jTv|IF29E)@yWn6kO5RynTXx?g5ynvO9aS8q8%V$r(*rQ76|0OJwspeqjF3LT+vClA zaY%zY_Z9HT>yot+83aTLy+)w;YZpt>dP>5uS@+tZt*MtVd5Yf++3`-3H>8-|h$4>= z(QIDnSfjJm2W%d!COu!!v)c@QCmA{g`Y|8B5#*`nleLO<8JKapNwQ4cAgdXEjq0>r zdXO?RuR`F3G%j?#ITd+4-|CZ}LCjv*O^;IUPV2z?xyE{_bGHLVrZZe~O<&QuUS@Od zyq%Mk<@8!|xn-rrFej3~7KDr!Kz-N_kq$l%KTa0)qi;u1y8zr36)Gna|Jc}zT-9(F zv{H>6>ozZn3I242wsIM{J4Z4lDdD@tuwZDY|F&POJw)U$&2C)SPgb{_6{7XxF!yd) zzG4Egmm+^F8sL~8FGa|AI=(N#u{=A)6oVM<*P2#64ILJnPFiau8Yl6Q`TIpb2ux?J z&ij5qTv@tLN~g^X(0mh6RSz3T`sp@SbVO_v&Xp(WBI98}6U8O>z!lXxQ)h<>1=@<0 zbpRa)ejev&c9|m4HdMt_XPp|b3&hD2L`s>qBpEgt4~7b*Y@U_;#TzF5EICJRq}jdB zrcS2CnEGjOq^CpfyUQRcvYsg$bf%xs4w+H>c3T5zD|~XfQmDVfr&#BDZy9zDXeLV> zT-UAo=gWIe%`|`Zf?t8ot=}U-hLl7Vlv;GtB~d{K{Es9dEXJT%FqRa~Zr)ZX%6KN} z*#`+Ys(h$WpuVpG5K9Cd-rkCr)eiB}#}?SdrE7%4QS5dy^=A&JX4Z!NWnIYinSF;c zr3UU)W^A~i9d$SAUuQSUcKU=n8(XkBdf#{JeB3Gt@GER$n!eZ!GD%B_&1Ch|yB4uV z@CoRXGfQXo5pnyrFcH-}Ug~`wyggp5zFur^_S}ZJ>MM&C8->Bj+wHbqw$kr3C-fA5 zD~(9jzOj3bLXSual`rb-k2Mc9EK_e2>v|)=OEsliHb=%w>8Hi4h`@QbKrd^gGzp;~ zZLStzIJ|x?l79cGv)7&)Mz1@G0U=8R7+Q!%$)3nEj)+vj;YQkqB5yfK8Sh0ht63W= zm335|v(xRWs!cl4QBll4DAmJOokGaa-GWk+5P50I4`e6U%0;ecgvnZ^kG|snW=C|1G<`;qS+@0&Ko4t+g3i`tzmhv~ z)kLFPqQX_brpfJ$7il>DZr*e}Bsq*=VZFh+AJss5mX@x;t?bZ~z>cs2o#&`X$5-tk zv##~Qwd2BXO#0S*j?QC%i&mUNhz&2pzUV%cjST&*TyRBmU%{z7MY?!WZDn@b z=AcJ=M;|Hz&5?fHEFm+92+WM%EY^?Ah38vFWsd?Mq~GFS~{T< zXXo>1ci{-6M%H;7WbHH9RpSiq^GNfk>gcuN_X#O<@Lk$&k+tSTe^SQM*Vc`ST9obL zu_gDYC(!vcnVZ9(j_cnV38@m?@&n?AHv;%KfcICw9%E=7XE3m~O16|z=)_dhj8OnN zD_Mb2R-LEM=G`YYv315Rh3t#MVP)rDeX0(~a&|NB zvv;lQZjHO=X;~L;_z|#I8SZ)ukps_gxM>;j(__j+1idYE!yJ9+>oM?pyA5Q=VUM|@ zQ-!6a^H~1F-s2CL0esn74Yo2dm`69_{>RZbqZoX+kBL_%O$E$PnwAg`ouoKk!8Vo4 zB5<6tH^Zua55J#O4nHjoy@vQtv>r<7*8SgiiZqqErWOYM#(1aqf;V?rf9Qx>2p2$A zT8$=|p{RSWz7N80Ky+W0XqTo(+8uw>fIQD&p`@XrlX zROIPt2BvDeOOMR-tX<{p8}&!XoZx<31B5~i0v`ugTEnsNIc%^7w)S#0g(uKBbI?LL2fIEq9fe)VvH zR%i+}Uq*(N?%DG~17)2-gnL$i(rw2zThm!vekNA3TZREzPhB?%v?XnY%bh}X>1#ry z%)xD@4Ro+ct$EISo?87}-#_vF?kQ;s4&5_|J*_-@6ov zLh^x(SU)a5VETg-(28v$zWmN7@1Pd1De?*yUyFYbIo#IXG@%vQ^WT4D_s*fPo}YS9 zUfSZpqG^;0;EV)8M4Jy*Fh$`tM@%{EZIDnE`d&o{&0X8a-nGIjEIW5zm-MajSSnHW z4W_P*Y_J}Nv?f^;C81O;_dj9f8es z$G#o82DN~GWU#uGMFU+DHZp^~%j4PmClg%XcSt=Lv&KbSk>W%DH(8x16n!wY$4t-x zmL~&?@qM!;V<1u29+4Cg=Azn6B%q9e><>_4FVdOwgHNF!8P>k%C5U) zk!6|xJv)o}E#_R`myAe|KvhXqO{zS;o~J(>LxJj0Ju5-Q^!+`@x6|s1CXIOs) zh;rTb-8x5{7&(90^yZv>7Z9G}J6GQVY~WaXa*O-o`|y+clKT#Q!aj7&UtgTLPV8GY zJYz}0L%OX78F%HJM`yfVCEee+rQ>l-+(q~}(0RObd63*DRP0kZyLY>h7T6b)Cck5_hcE8_?yqGDa;1AeuZ!#cm`=p8ycu8cR6MYWWJogy& z)l4jsCpWw~X@&S8r;}kjbwGDrZDDt$2>7^1sC0PooTC!egvH*~B7zr%T%d5zgft+A z)Km++*Xny~3V3q{Gjw*umUS5Qxa9m__ z$e(?B>s|WrRp;0&f1(a{Cr7rf^_r>LS;FaX8siT*{NH-H1m2s|6=!O z|2`u5a4T?r$)Bkx-lV&@a5Zprd;9BRz%i4RCb$i^NImLv;K;2UKl7GSH4t`n_V9_! z_ljUyKBFZi!V+vY^gB&>ZMhhyAaWeAD86AKb9e81NAEQWPQ=EihN+kTYffpTt$GYY zmPKc5OL*|I2Dc05>-opkFKe1i{NbO-Ug$&*P(Ovd@boDqBa28l6ZkL9DpW@|MBh}1 zVx%M#B}!405?LyOXb;h7h@|P3rJ&;F+IuQ}w{aPs)W$nU(3UDYnKBB16|JswTHedB zQ?di9}hi~Z1o+?54k);g&OVXe0+vkD}jlt^e$0_@^j{0K7-ba`UpkP5Rq zD}r~(Y=Jd7$Fv2J5%W)>NQ^CQ zZFcM4_H9GeUa@w>71dZcvhP?OnXvkxjpU=(PJX)_+I+otZqv0H@)UX-Se|sr`?lhC ztNk=QpHs8zR`Y9-U;g;;Xe@vCDQa6lx8+`xAlhb+epN6@C;E~t4*T=f4o-y5eZ~NZ zcB2e0b9-om@ZrM8WhK)UerUa$-ghKN!urf1{rF%N%bv)AX_DJ=W1dI;LdXlNOkG{>gVZ{e(l>vvO zjjhvjx3!+Z=;X)T#Gg0hoIOsi%HO6D#xO$9${XE4!A7W6F?P%Jmoft0KL)Rg<&P(r zx18|9Iwi+5l%ysycHZL4Il!qzmM&!_xe1sX=H0&wB}tzz`DTiusFM~iteVuj@0sW? zoh|1GKO+MAPbgVmuhEyW{g?Rl(Pa-PW`|yq~W2KKZIa6b!Bw9R&v19cFKHSl@qq;0I2wA417}W${r+ zog+`7DT^9MUDTvsXc@XEg`H2J1(r85sd~wzSvA)^)Da=coPZ`DXd7{??xbmhQ+Ght z89Qo^kNPFmoL6n)JdlKzHMq+i7Wj)a+Am>4BBPn#`0SJ=LwW)xG`w+(m(ho~!J zbENm9t`oG=y(19<4#lqpTt8rCTj^Q*obn_&biP%_z*5;&0|z?7BY9bj-xpC8Gst%A zN~3yvK{MeQa%mM8jz4>ZXrfMa5SE}Kk9hwux)|uWR9^5dImq6>;4Rvg-W;+mE8kV) zdHQ9afi_RjvVBSX`H{ZRG2{AjH*)iFGd$$c@ow+#^Z1eUxpe+A|Lg74j?u95qg5d5 zf#Gdt1l;2T2yr#Ty_FwKf4ie4W#pddSt;(7&0r&_p!CAg5kX9Lf_x(9Aq7Dq5~saW zVPS;x4Y`4x}v3{L0 zYgh~in)H7m3p12+9mIn`my0cEFtNPQ>Mc*s~tQ?Sc;Fn;BCv^ z$-rQ1r{R4f7j--DP2jLCm)20Dqg9#m_~mX59>$cqA=3>JsK~$9Bl2wvynksCnHI3U z>u*zZSS%>kePG5NzZqY(I+5+XiSL~qr`1u8`8|nhmz0marrxA}5?X>(nig@kU=yR# zr4)4!b}0R`R@Pf=c&vPw`%GY!f_4rkndM3vjLludzHIfptQ<3=4nNOJRWr)pH|xxX zWiVFJ5sP>kw|+)9UzV0&cNve`3rth!jVh7L5#&f3-BwaQhdc@f(%T;vP!)pLBdIy(;!5+EPLR}wT5VKm`>)wMT8!qHmWJ*Z&7Au{*ToD} zC%in|E#)e8^lW&w1{aj1)5xnZxq6mXZB1KJj?AZ{z-*c3+Wll0+QS?gJED z%G}tu0)$IN*nZ|_d-*N1mVOK8$H0U-&W39wgMP@>mf!JZQGM zbXs9)W*|#BB#!K>rUfFCrGb6XSdK1yhV1Chefy^L{p1TN3bweUw3163k>@n6_$m=y zb>)k}a#KmK(578?YiF5Wcdc+^4loR$Zuhd86|<(9p=B7nYXCbge=vmMO~HKNJtB zwAh=nt&Liml!131-fTxm58QOZ{G6K9ur#6gcC0AWg9U7T)J_>8*hSXams$9rK zI(=Ua2LmR{x;jDieqjNN8FkO^p6Qg162y$2>X$Ei`z$_RIe9?- zlR>aCG1?TrJlnm`mQ3xs!9;n^I1R!6ntu2R@Z-#@~b@FI=PuQKBMON_rcr5}?$5gWH`2FKb z{c;gB*lc?`-a(E^v;%i`nEy)Du@d5h$&6eJ^=S<*zFlnGFKDGPV;#H`*xCg%R;)CN zR(f;_>)YO{-p(u6xA+{E*T_u;^uo|B4ecGQlc+9KImbJ8XRBoww{3K1s4i$PDhSD) zqyZFULNgwB?k!56F?Nvq}@Ku&s%vuO>CsD!9%NSHtoNyfOf0 z3SGpuI_zYsWpl_+*|X!Y2qCw{fY%vMuGo1Oy3;{J*p_?x8f43leFS!t_)a{T?9L31 z6PkDX`UZ#k*3m5IPl^iXaE^CIBnUS43B(Mv4xyKyyq%rCsw(lk-djT`t?h(hN3tTk zIgpZt`rf4b=u~%m@&DfLml?|?OLL;iY;|ClwM|Nq-8J(oFL__zpIX#~ag<1X#LAqD z%nPQG+!d?WoM#6WS_#jly5@=)hgXK0FMr^h?XZ9uJuX9+#;miRE?-px@fL4EyAlSL zr%X9Q;?pVDYm{ylsn3ErJ-knsEYNc+_(FcFI|*5Rc87j1^$;=Ju?jbORu(Lasb~ub z$AI$|@A@me^dI31{|Z0(6CQ{!+*R()erNL&^v1*TeO_!KqrtM-Su9790lZV87xlD= zOB6As9P>W@Jl3itz{9;O>SrnD)=H>CjioP2R|bxMXSNo(GxGgWWxDnAocV$@Faz3E zkcS1r+(6N(SeFS8>3UhNo}PRu>uE4Y5b;9A+OpVXu|lmg--2a%U@3?BqE$sAe}Nv1 zTb>`qg0y2OKE3K~yIwtB^tp-xLrsbr_I*E&1@futc}RgP3tjB8azr(K{#K@H1D)AR zqzBbbFi5rn!xWK6t4ddCidBdSkHx}k&A?Gupv!(rF5zQ+f0`gY8zu4=mgQSS=Y?&B zuVjSukd%mhKCay2fw<}!QzH^ZmlyiUpPK|*Gs3r`1(hO^OguKpzcAkqwC-LU@5GNN z)JK$0Z@g|BCDF=4jiw?`@}`NVzVENPsF$04ONvtz^nQFn0izu*jhXRv z5UYIHx}aQdogulPjv09J$ZgY(YV)GSf;T-zB9m*g_L3&%vm`4ZQnjdhryaGGzh#>g z?z&(L&rDq!O2J!g5~<{?L2a0dySZVMO}|^EHc{GePo8vFy2=QX35 zfThHrzl2oo7`fWp!~}KwwX04QkNapr^BUq)4vm?K8Z=r1-xNp#OqFV3$VpVEND&sgj^I->!*hoBY%Tn#{%L21--;mMKy zo6Ru%f3R^m|9`Skj=K4CTvIH^H5`8{sj<`oBi;U%bZYV2@g5y`?3nesjXT`0vmt$6 zOz=r_3Xnt_;F1RHim$=y5_bn~butK~_k)QmgQQ3Z_5@UZ?thW|MLh zEc?w{CQXzNN+8f~%%5=403UBD?z?yv&l;Bj~4ybW0x)UhhjdBS;#wtGS+g@&- zYkgr27reV*$tdx0qQ2_cle8fWs|P+&gw#wwlED_HQ@yY?Ld9%o>p!YhcM&D`<%+1P z3I&0>F@^f10cUnE!I9ZgTCiPD_9xaN$p1))H*ptc<7%T-B1{e#RT{osHR$83MESnw zC*d!Hhs5PK21*PusCEF3tp5u}KX25Eg83`}sLj~F0aE-itu3|yXXj+l09)Wymjj_- zHSAHVK6S6}j28n`z$Z&Xh6sl~;M!}_qVap4ED;h_Zo)K>1L4;k;KAN#yA%vj+F}~o zAH)q=qm?zWX}zH;== zg$bW-8Cy&lV$vqRsjz0CB~lQUV(Z z(u(UL)umR~Vueq-5I4{x#qwwpdmc&rhenc$bS=f=Nys2qU& zqY@0bF4btH?Uxthk%5Z_ zi}(4z5!YEe%fO1&*Db3wWDcu+p3HnodJ2O*wdM{V{6p}Hva@^Z6%90dNq)}mq@yKn zka7qeGs8DEOm#>OGbvq`Lkqa9+_jZ*XLMt!xQ$kpm3C8CI+BY-FEv{YHA<_a(KzcQ z_@rNv&)G_*|1I+$XVjku6~rcsBcx? zLPG&)OyD$MR*D}qu{N0awwDPAn*KY8^M3~=O&!wRAKeUcg*l=e|Dj5)gtxkq%|xAe z8sv&%`Qp)ua$G6a^yj_{jtSE7g8bunX2T67kn}qx&|cG8MO7 z$?l<;Cv;x=#bL~$R0r~AFz+Yb=zMkI7nVbJl_8Nngue166-Z4hqc@S-?X2jyZM;7t z^vN^e!~yMRhd^geup*YEP6(2P%LeT{!^>FH$^G$3)TDfMbjiZu^N~eCq}lg+2F8+- zRXsKjT!?9>-*p!Q{gM~$Vo_X>_4j&!j(v&_V$K%fNA@M7cU5!4(ORn_;Zdn&qVF*N zsqPJQ&`vG;IVV^D+Eim$ce`suQ2fWx?WETGbGU$CYge31etXGca;sShP z?p8TA?e2rpbU%t4iD>{?Yc1(=Bok@`2JawE2$_ZvCoOWlU5lY)M%}!*hEeX;oB?1e z-oWRnZ1G_ES_^iswrBv|vT25q-0NwLLfaQi*5;#|rqQ@dq{l_uhcaLo_J>;fFKQG3 zHKg>P+4p4I))IWO!C%xaCKCW^9`?Vff0Cg_ApAe5ue%4KJHvAHx4hcEb{RmQR+aam z*vx0s()zppCejG#Y$okE6F`k1aSK&PkggrH(;zn4wHb(KH!hi}9Te=^??d@B%P#uT z;<*6#5Ap}+Q2@Czu`-0VwGKb8x|?ywn#VGK$V>jErwp1R+-|En=dRWk8bbWWvzPWmrb8< zd_fmwg%_P4_cYZ!?WzwgcJ?cVX6=Z}d0jir1qI=IzaTS1l1*Uixt=YPODF&GC_2xY zZvoQGqIw%O&-$yZynx=8TlRaGZPo>Al?ynsEa+V0&6a<%$E9Gt1zxTN$W+h4ad$I! zxWAx$k0%Yb=)B34Ew58~Lb2p9-yCbyw{*XAnMJRCR#}ho)6xkXx%sur{W31u3Vk8b zc|q2y&Xn?^E$O6hT9Dt;1zALU13r_vY5QF~?%J0t|LIZdv3P9gKfrE1=S}`H`HQvc zzI(WRzH#lJCZ)AcyNbg8HW`xi$0R50ACq0y|9>VqWxw~#bR4l(`2b9!7F&FBTV=Q6 z;TK?{WAj937@CsX;{tY+>%-O$_g2r3fm=5y=s@qpk{Zz@&^5Fq=tCB1j#@m1u*M%u zZY!m>^$i`K-Fz%(6}dn}`ZVW|=Cvoew4p$uU_4h$kltZDR$7MwU6E|jpuo%1`E!W; zJ?72(A%gt~X3PV@TY^b3xB;_{9ner*AYs2yU_-E0LdirzhEfVnp{je6kT{S@V<;NN zE-UtI$n4gXrZ5ZzTUB@lyN(#MYmm-Y%H3cih6V#(0!Q{S?a5k5XBp5x!z9?KKkGbb zDDW;g0Il;6nwwA+q*loFA2bHL2Z*U*7WI{hwL#d@mhvB%t=3odZopd*F;~JwzmFe` zn09|JHKrLN_Q4`iA$0=9f%d{8F%fnGVUmVn9)RD2Gf=Ya|6+C%rNgRT`@{tL`43~Wh7_*wrgGONaEmZXZq$Fr<3G6_qO9+@|xB=5k zpfHTWooWaZ)b^_gE^~1_AWI)~$nKzM6{99a<&>wMFL07`p-$%!ccDR1m5-<(m zH~Ih*g8#Wd)&njO%|5`i5-#rnjk(=B;6>+Sc*C%aF+`ocdT5L{;{31L49O`??LNS_ zYKvDOt|1;6485+UsCtwat{Kyi#&RnifaIN*1Cn=tQ3!q<_vo5aE-W@#G9SB!E z6sd5>8{W-=KPVU}OZnvQYh!(Q7Yq8auR^0~*6m9yH?r-zFq)@Z`W`xaVOC&oLNAfG zNxDm-kV7x?R)#WONv6YzH?j0zt=Sg1a;T+%V_;okUz%*VZ!4aJ<-6>mnR*Zydxi{H z?KqJwh0=0*b92S17YBr2idAA@z9$fKS6itkmfL&wziE97_z7|gOWu9#*)K0SIRj)T zJy{bWPIwezj5(3v>3H3^MST0cM<|~AR#}W{$9}iSf9($sjjfPrSxYYQ(K7H6N7l?S z$+Vse&iES`1b9D*&~EF1MtN za?1j=fpUA6j~x2E%h(f#`DA4C0kfP5ClIJTyl6drlP%U*AMWk~WXk*=+Pv^>69S)>n^@A(VGZNRP~c zTFH)<#Ym8DMd~6rZr^(`Kjxr3eK10T$ABsStVlQ#~`^TJI;P`$RF&7R}u?a;b4PREMro^P*B-kpkjkZRg<@E^wyU;sY@*~8s`DGR5RGZ+s z#qzx6a)pa=><5}vEN+Q)O#xz|_z0CJ&{<2y6*)^HWc*S{Dtl*cVKqrC_D(`CN05Bz z&q&308)K-eSh>tO-CMTfiOV?0CBivn!Tfi)r8SreWr&L_D!*BrUlg55rsP;iwk@-! zTx&K$PWLUrdu~M5tnNkDN_W0e1;F^=F+4RnprzBhZNKG~1Q7HWX7kul;()4L%`d;o zrrmh#zo}fYH0^|BgWlhRP(S5iXTbOr%L$C*rQUH5#(Pybvu}3=5R}JMpubT+T$JZb zNrDSVA*)=SdGyspp)xx6z5WsWhD3h9!Q}`L9Pn?!0Xb#h0)Gqc`y=@3kKk&YGiMj3 zXSFk{ZclIl6#{jdrzCtEu-bcB(bBj{| z{Y{4MDeqX&yUP#8r*ya&Kr|myj$`3s!uMamQG+l(DG76BJ72*C;FZD9->_<2-#a~Z zuezUwiem!O!nwbOmB?umkoiBp|T#)<(%vCyLLV-HV5vEl3p=qcYKXd}j zVyhShOGH(5VX)*8OSSVK@0t*2CQ8_#@=Yjh`3!rPNUMdKSVwfWa4k;5#z9rlt$gf& zDuEAwoX*Y3s)Cd%^r%7$ZHzshiSXZad$ssLTL{$g=LJckOAk^fK}K^FP3ra9>zGpaUhnzGgL5MA%f#=v z3|wJ@5PT^*>>Zu%#^e1Gz*LbG3U+>!wK4Hy?!`B#I==5>+;)g9ar(&9~!`d zvBUL30`0rz@3Y_Cs{Drn?ZCM~JVy|}9XHtTBO$2f+?X6tefIn3a|E1QiOinBBlbyU zKqC=V@vwHd8{}z!(;u_`gTBProOcHtVE$;g)wUx7xZ`Mu^?!y_fsX7yz29LV;*$G; zVE1(TxVnR)Md-&$!fNnBO2j87iIdXh*%e(}wspmiDHpLzCl|SH<)W8Uf34aPk}meR zN-dgFP{j6iOwXf^dRMrLkaJ+$j`B%EBl14qXm#dfi|Q^LwCdO#Y2f#0hON+N209~H5=)12C8$K(06DgUPH$*42qRvZxi^d**foo6uwA^ zRKC*)^%F`ikpAi|1OW>SkYf~i9p(w<3`K3Unu zMyge(IwgwDz+lgqTN5-YZi*rzn8Bgu+_8Su4d1Q%stScB!Q6CcxR_TB;?h>CauQ69 z957xcjpZveDuyLlOpXVHT|Rfxw+>CpRYq!PLTaqKS<%rxU}KqmiW-@s{9-HF&@s@Z zU!EApW@M~m&Z_hu9)FwjVm7yBHIWUqu4iUQjWYi&wo<80rba$99{z6aUJ18#l&tZE znP%d?dR#^jAu;LjW!?;;NwW;oS_6m%6)Q<2ZMxD5?S|QI+9xGKNO>Rlh*fjfW-7yZKuA8&n%#+?00;~G!vGlxIA1j z58SZkiet($8y=+6eM;ZKKdBf2R9KOJs2C%LjCSf~IE(={nN!^v2|TQfM%z_i^dz&B z(0N2|HNJETvDPu0s3o7hB&Yf5P|{2|yG+Az8x`p_8WMTdmVYHvD`uj(?dpYJNl<7; zH$T=$6a0-rb4E$iFnnP(Sv|^(GYcq>L=D&BQE|}3Vfv%NqOF0EDWH(Hh{xL22(0 zRe;PkO9@q0@>E(~L~j7&crd*pq5cP>ho&Yd1i4yq0^6*HCgWo!R|g9OfH5Hn{B|hP zQI7jeEi5Ulw*EwvoF6?xKlo?O#I#Mmeinaj*>&-DlN@i+2#01>ZcCZ%jMalv|HjV_ zjfKc0M~*}x-eBG1&HkX=v0+*2Z*$DP!ycQTx z`cyaz2gg^ZTa*IXmPsn)VJhSWvxkA9Ls28C5S9}9_I^hS0Dn+Nsnl5{SAn9ny_g!Z zZIUZh_<2ePkG|u*1x0-aO3k|6QDLh<6p7_aTzA>vQX1Ql2d6@5B}-l^s33${y7SV_ zfikUXEe!690msJL#{Av7S0O< zI>>h`#FdgnM)lEU1at=umF}>>To55}-P{25IOkoR#Z#@|v`fh5r>Z4rbSamdk~|Qv zGcKWEJ;7j%X4FS`>XqrijJmVpNeqgAsencNTSaj1EuLJ3qFS}3b5+2xJQuu9T1z+r z`iJuh?=_L|8#UUOl_0qB^q&jMe1}8~CP6dxs!m zGZfW5L?KrNM+;+~3t-GshZNasp2{b;rQf0m$OBK*XFq|u&}Msq_M(LI1n>Si8da=Np&pYt3T?-e2$~8>sT7r}^c=$yk?N`7*@PdX`%;cD_$5b^q>vHt-MHBR z@zIiML7XrsVuY)e6C=*d3T&k&07&T{KGJKW5hz1FW#_}U0i^sM-}d%pi4!rlSAl5Oo4j@5C;wr!(hv*V6!+wR!5ZQHif zv2AtI!Cl$=oO93q{(JBLtS7aeRLvUi7-Lq=HEUMQdfCkGoN9Hvw0Nr@eTuA}la0N7 zd_J0f__&zwt&MvXbU)Lz`dxYZxbf+9l(s#(<`;i(e&~-o#1Cf&riU~qAGrIpbh@k^ zIN0~6KU|tUxL>fZF2%*m9f?xmbKKSF=!9hb$_ZH;T;BJog1cRR-@6f`pC0C}wzlKg z#)xhBIZp3tO=xrHNv?kFm3WqBdE~8fw$^RKZd1Lyq+(wA*79y|My(DZ{EI76;c?d4 zoc(Uc>?Tb*CpqNG`?X`!5*;&F5oz<3}A2uQguZLGj?)op&-GC(hb? z9WO379v42(htn(fX2nx`d-WErGeY@d_2?UEWp@R#5dXwd`=Xb#x~Ejm zdq&3RckkM_$NuwQeNR_R8@4aR%L+gJR8_V*(O#^d+FaFetqpI?x}}$z41X(?PnV;x zOs(*L+*CI^PN3QRk$I=nu6K!LPsO8zJ>6-28YOz%X+bANr{RBVaQj{7`C20<+tJOh zCI|oiXIQ7He3DIleQQguxHtemiM||PB|3Wi;m@C)=e~#eQ@iJntfVuatEA}Vy$@{s z!;jLzkjXW7AI}^qNZu>Fe15#7>XW<-tvc<3{#S>W@}qn5_J~>`Y@6~kT3iGaX?*zi zkNS*x zs~)Gve?3@<*Jflrrnc*#tqmSs>^_{(9e}eJou)lsKiW;Z%nSLazt?P8D?Vx(jN3t3 ziqKcfg>RUv+C=Jec+047ZfrG|4{Lbj$Gue!_0dm_7v}6 zZ>(o>UzC!~uu^S2Jj`@|L_(x3&(CUo5?s$La!hLM9oM*@bx6&dq3cwrbWJ+H4|mn9 zo2J>P(=UpfO)kG1(Xb!UJO9QLwf?0OVOvRS(8`&u8F*!kfbdgj4Af|GQLQK8w2nqM z%-9Q!LA+l63kHc=EqKK!?Z$`3d)Kc_=;q%oS4(r@o8RzDUrvvwxyeI$(kgF+#Q6pZ_1g}7{tOHp>anbaa5?-tF74&~o?ZN65rO}PF z6+7JaQs!m~p)A8q?MJzYn$U}J7PB4-L9P+qmWEa%UI*c*K(Yp&{H+eM6x!tLE;XPD z6e8G1>)VgDgVv)LY5QgSdaSew2wq7Uuz~UyU<1JgU_%UGLyc$)xb1%+aF(E&f!@-v zyGeIH3;lcV&qA(~R=_w#C7&n_pYVU7{C9!>M)^Opz+i0#w@u0W1;QacYYmJ8Vb%-; z9}oxtWBmu$e^L4ca!QM211JU!C}#1mVm&t2U$z-U8b5J1KsaFMK5_oLz<+735p4ip z&?MRf6hj6S`;-Q6VP7us0{?h-8}%pXfbc+*?6q1Vz5~eHbHRs}pSF4Y0d)9`7DZ)x zno2im7w%rS{@H%`Ny1mtABWMSJbJo(a;LC_-v&0qVoUeq==Cz>;2?9X@9ApnO&$nneCf@PUxy2 zo7xS-va0Z4cU$?L_Riq&A{Mq*542@@84R~3AF!Ls-=f0}E8bh_I(Hs!qrFZ>j}~9X zpZ8bqU(ISKwd`?2?}C(CFF7)%JdsjgAB&~%(G0%y46k*7horxlA z$d{FA=yA3n1f%O*)_ZOWR!EQ3VLKx$5V~7!GL_qJ?paXA~jW%b^ zTJR$>#`zDJS+Pw_kzcVYoSYmn4=lPN}1bC_et`$fFdtCu5SBRmVf-luj zyIymVs!$(ol6S)315jDY#IAWrz42Ydu9kfMi$TGHJHn!-7&G78G~f6@0;w7lVuDBYOI3<09WQs zYVUViypwg_z2N6N%1M8H+vCb~(~;}#+KcCTuN{GNvS0OletnG=;Y&a8zSDS{-y5rY zZQ$2t!;vnddu>_0VyDNUwMMXcTwqC!`hL?TH|)CI>h1B|vYw?MTWHrWWStaO%R^?J zizk{|xqmdtd8D#hnKgYkh29AMO7`VcuR)GezH=PEnNyzmtfpu8_PR;R)+rPTU5o+! z*3fwh;VAU%haNl4dDBE;nY{HN2k(&dA0$D+z?KIn zyHTWF5W+<$1;_EIY9&U<2Up1eerMB`B}{DNtvjW)9G!q+p80n9`u?kVoV#L|v3JSN zg7&?ntgZwHj46ZeyQyUtHxC-`ZFpDAK4_G)g<3aFo^0318*452p?vV&haJ$Tkh~68aAlu2*L(iK*d}KW%J_Y(W&ZyGA?I9HVY zldKC3qyqr+!0K0=Ao$M@XcwcZFhx^sDGdn^bWW@Zx7`h?7f%Vui_&ynZpL$J1Q&0a zQoCT-qJ8j?=a}0mc|9gnr?-SwIUTJ#`7rwKei?Pqo7C%ZKtDUx<@UQrXBvBr@tQcv z&C$vy=k8su+`=pS$&O;5E|a6ViDf?c;#}pjgJy?gJH2@45$3XPAvk5qAk<*(Nb~ne zYGZWsHH=X2Rgmwy(sopWhY8|VwV%{zYqCzFyJoPO49^x6c!n zIPOg|BD=gfXe%CkanKlfxOM@RCcQ|Et2|T|F4&=Sz~#?^Z)vkUZ&)%SwK&Qh7fzZi zYPaM_X;?DpUAw!h)3@Kuq+=+5vUZBvABj%hO8$a7>1eXJ&a17rj#71^P<((_nf9v~ zkJT!8`MzXLBl_Lb)u=E}NDf_XF*84@z21BbzuMG$j9Y0dGwEw)8s3BE1a(!FFn3Lh$L$K?7YkS$@+cValahH5CTfvkuccb~K z4%cGCDE&eyfgwhlj#F%aOKQ#bI36j%3+7A#JzPvq)F`aVb|NZ_U=nOmSuQNz%ur zAGqMPLJb%0B-IE%v_QP7pH-pk-ISRGy;=e}fb25G;@sEawq@{OA2sYN?uO5A_bA^V zQvQ&J3H3LAiOG*MqvA(gzuE2G;eQNaYU}a2h`d$E>G!mgw|ME~-pCl2?>j%a^Jv9; z_Gs090Ey=ue?c5bTV~=rd}ko44<+CdeK^L5%{N#;aAZl_6R=%>d$D^O9p1PaZo!U! z`iA&*&s{oVl#vmFEKQ1-5GquHmw;^FH{~7_G1$lmQFy2U4^zqBQ2LJ_tVcXf4esUh zZp?F9WKzhy1W|GNP2E)q1iE{jvzC!^EkY-zT7^ARf@-YZv)G`}V02jZ7RY&XdR_I6 z+>xOwbTD&vq+-cW3R2wa73^dfpo#aE4AOI?M0(QJd-y@{U1h*HKnk}i$_&|zkxi~j zv4iHz{lfh36H0EQ7-q`oH|Y(bpeP~dxILY*^3g$(U=C zMRgNrGRlS$8?v%79BWf!O&sSxI&xQ<@SZ>`pt=wjWujN`>Byu>Yd)bXUiCh3XFrL% zx&Bpr65C+%!4JJthQ`R6hzSc<<%i1cz>P}BK=~|Uegu*G)A^|XcE(K zJ;QT1omh~MOjFq+aQUFj>@cH9p)zri3-i|jg7C#_(cBcJm!aNy*Oig?#9FCONwWvl zu=-<`Nzp>h3&{4D-%e?0zOO?=Z~o)Y+cF?o6HzKnJvcZwK2}{2fGf?AMV;g+T(snr z{-B?$zrHxpsK>`a58nJj7$z!MaPKy@gNN(3q_6bUuyXkW26&hdendL1kA*W_@A-Vy z)1ipLBJ8e60NO@kr+t@&n@1Bq10m?}5rJKI5oS5P(xubAi?bST2D~F-Q$UZLwtK%h zP71z<%K74Eo8Ij_b4CTc=Lq~7^0hIfyB{QlXNDJ;WV{qjmeUJJ4z z$=6nkDT|KgddIDG1+CTd_NaLAPHO5)ySFf(y#b?4nBtVxc#`v)qNVSk~Yln{)%Re|C;JWYP0 zt%YxI6C>1e(Q*ZsV?Re2Ohwzs;`X{44=mWFjG6b>U=O9(!vgHf$pr_mWonPL{O(J* zBTa_6c7`iWHd~wRO?e>|>_(J!(D4$|b!^=lE7-oy6V~b|z)Kr-)YX$zkD~iJYaKD5 z*3;*t17M$uh<0?@*VAkHoz^)$*lj(|H>CpzFl5GGL^e8iEb%Yl*0JqJ%=44j||NO@3LLi?O9vc(GWoWJodh{u&=@> zWIEaqEoUQ0=CLo!dclRBz{{rC--JYxAN3?^tNW% z6tf^pJT0=eCF1S&`wS|)x48bkb!&H%YRdFr3)x=xZ%Mub`Bi7ekk~w(#SIso-WzU>b@+vL7ltQh-e*5Xf0|$IppUhvqJ9d3IwGIM0nwTV^|?uoiD8lr$ghRzBgJh zNS;MlT4qF!$E4R!ZZStry-l0l`Bhu}t9Ghqk|{1{4)zq2Oy_YQcl{i9KMsQ1?hU}*ufxNj$eq$W?Yt++t^Me>q#Z*b<%Vtj7=r9jSOE%a}?|b+!0W*w&PBv`bni8JO&r! zug4{zh$O$<)5`BfV$<#xD6O+Ql}7XyJPxhD@0m&H+s+q+emS{X$hcbo=1wUM_Gw!5 zX~xS*R1xpE_ES!lqW^HUP;s|N0S%t=YwBbL$~V$2akofZ-K^il5-D?WwOAd;k{h7A zA*#bP+cYZ1s~hRpw773?%02VqDSlh(% zon>NB?ra>}e^9rHBy!;GXgoKHJW52*_6|0zOwM!{4@0o2l(4DvZT2M60Z??cxP{(x zDhROQ*x`A|`(iUGX#?lbGs8L4)C{5901HcLb8)q{Xporf%u#)rVe~b=hf|2_J!$?1 zAB$f3XlDM^1}iN@$}CH&HIn`8jn2yBsYc^14Sw^_pX5Owwl#cXXvDdpWau9m7b@ZB zqsNXkydMeLBd-Vj*4dmm6?m$Hgl6k{r;6UkxvS85>fxwjl(~=b%9^>X_g1@kW8jCC zqKSi1C&FbnD>ox6FBh7E#}9-k(Ilv)5_|h$oInr-y@vhJN67U7AO${0SPfP44}-d~?7$U{LYxnCt-(u;w3e3W1`M3Nsc0Lm?GGA{x;Sj>`*9KrwngX@iBL!=ngG z)BKG{RP*C&O>x-|v(TQ5I%f^=A?GqWBH@``6wyWP3Ee;_L?R&E8avt(QTz+p(EkpJ2>kDmXDcRvkWS}+h2(k+UZ^$sSI7(qL?VIE9(b9aEXA=x zLJ$XYN()qsHOhxbM8R;S6nbIZX_O&YYdr{JVci?z0Qi;mBu6S?AYD_4;2if;F$E5Q z+OlHnOH-F`U;;U4Y4a2zwIKUe!B9ZuUX($is;t@+&dUB5A+QT3TY)5+IAXagIeVx?K>6`B6F_8>KqlrZM78?lA|Ha zT@ciHYF|n(?WYGc-i9;49?NmEK~O-jlRbz^a{U|`!tvpi74D}8QO@MTKw##%oRRhz z)B>Bvp+E%9`1@@_V8ok`og491Z_nHH#WxK&=l1%eX|>ZbD#u z-@wR%p>}T;o+M`u&|krBFzM#nCSK9Zbo8CWS?E!T5ZMV@Ty3%bCm%^6FnuydI!z65 z(f39;LjNdfy)HyQUL_3XmLSXsM8CmkST5Zwjk!`pVBcI!4E<9x98qnKmd^_F{y$fk zEH2US;aj_h$6LU-Z_4^BpjW`5?cmaOd`aX-4F*}42#bi5^X#n~^G>~M-u+6f7ZVCGh8+(BHZ=3_&>vg{mIj7 zlbU@YcS&m=^>X%HEFBFjT`eq~9pYmlK~hj9ciY!Geq8uhI;q6isK^Z86NV$sUn3SM zN1BO#&SNJk)3zqJJ`=nRYaP}NN1*mfuTW{62z`qz%p9#e9LUyw+;cpfu72$;XP+y_ zhpg}ID6lVt=+++1m{6%Ul-Dm;ts_6!7}p5&LHOuG`q1{4Wa%1dsF`5tp1}~>>~Lj* zt%{C;i|w7a8JZtnKc8F=9Nuah#&6TZ5h4Ae{Yc^Iedms(?enWYDrGtQO&meHn^F6N z2M=;DPG4E}0D`pfggP~T^)?Y!((3fWQrWL}u+tq$$Lca;UUT4?0 zA=fuQ?rb^9Q>m6j?1Y7)YC~D$aaAUY+8yfE_}dpF+P<@p<*m?VdVW$Y9YYN@<1`)9 zh+La_0w__{BMPZ4EvF)g>g@irzlAMtbuC{3&R{C_>pHQWhxBCt(|NqdfsXeIDfsFw zjA|b&Ib*?}G#B5kDH-Kv?>7A+R*Dq^NFO}79R((x+J_<(Ro$qmTokrUHBEUMXZ>!^`Fu!F3dRq(w zZmHQRN@a9LGnBpHQ3IF`xRlRFQGt^h{x5n?;SauO_x@9ljSr?2aTDCx8HvX6!=2Gh zzW8SH!|u-h7tZJYIyg!>RdW}`Dd%m$z5tR3g4P=kAwG2}3gEskKxOKc3ZRupp+^Ls zfA*FZcGBthDPLlC-wFK^iZ^z4Lo$~Tq(Q{$uCWngiqZ+)}ebBL1@ zNXZ0gi=eQESb3Q8x(TL3syeH=71gk_G#;43%%2!9t$pE)J$R^fL8iv^(u8S(EcFi0 zXFvs9ggeK$W}(K1p;CyGr@#%!43aE+)N+^dN#r4>0160>Pu1}1IIq#mG_rfLsVy==J0~?XF@JHs_!=-#Hp2g? zl1`?k+gNk0-@KaRto2Z<^pmen* z2&$_5W?xW|!sa*B%JsTkM0xG0M?p71H*8=mifW?yolBE(QRD=40n@-+QM*3G)zyJp zv5VXeEPRQ~Ta{$JaV70AEX$mZpf57{9YI(atww{SIUN}n0k{6QY#=Q1+9E~$8`DXV zBoy?%Gq48_`4l*e&$$-V2a8YQrwPq%p^{m*ipui92eewISO>I*HB+?Ic)$k-miP(i z37;x%shDv8R^bL5Xsm4++ApE}`hNQ=@2vPQ9ZESz03GiR|JLz7x?aab^#35?l&7BI zGx+c#pQNbm^_LZ2Q$DSDRQxx@V+p{Dum2A#hV=G>2KOP3Lh9mg%{@un#>Q_}u?CmT zyYyh2dA)(0D`Vbh(#>bmCd@e{BO0u%TEW`8r#7xobS75cShs3r*~AaO$C+|vVe!}i zo14q(y}4~;R!Ig}Dj4<*AR1U;2toXK8=m}ztEkIee4 zoi*(XlPHKYLKUu_P=1HM`07S(_h%O#8R= z?P3E1ETRPm!9tu`|J^OD(UeIjE24$?txUKBu27x&c$@{vc(B?hYON>@Z8d5`-I@L; zYK5QLzfcFU5(`fMLahys?VU^Gxz9wi(7=EQWyL`>m#Ek&QQ4MPq4re+tqm?v^ygS+ zEPxN7X%$U{3}wxLqD8eBKpxW+q;98M3WdWQzzSv6@Lh~nVArfrpoH`<)#f@zw7{V9 zV?|YNqg`U*{|{FMli}QodeB-3eK?6oe7hsumBXp#=l$!$AgWAX{)y4R9u)?h-5s zR1lWRlHZIrV>VtHjj$rjs-I*v0p&Z3^^f$EjJzGVIUmdKN1oRlE&&{n45hkJ9gL;PO8b+e184`8s4BO? z=Wk1aoqT1y2+xgT4nGF_%IGTDylC#%J%?2i6C9z{^V@_Y37^m7R$WCrUyXw+?egRJ z;Gg!>VCQ@?;w{#*nrGfYDQg6((sIPu#MQr|G%$EzLet`WcJ>;SQ8*cunaG9U06nl6 zAyN;;`OkvsIZdmtgqtw5d4ND3VKm~WLOekP4)=jpUG3;gcbIPOO*ys!wlWZ z#1&#;l^H!SWpJxqaU!Jb@wpbmbCiF;qBrh!06v%$f1!pf1y1>27HHJ~EQtMr_G!UndszH4!Tn13c8NPug1f51V8%jw7!`!k z=6B^<@~5i2Hj!BuRMNlr?ty0K=ikER<2jz#p1w&f+uL_{D^2Kp|ub2`} zE)GLUJr+Q%PoCYkNrwoq8znkc1yBZz1y4vAxdJH1=ZXCf%0wXlq|A{rZEUGMn5N4n zFA^C|B8SS!XOjCn%xI2_SvX4HfRj!PKO+r|yy4YqyhinXiL`{uXHT(1xxq~kd2Epf z!vxa)LY&szK0;w1e0Cq-#0IYTbYC!%mwhE@w_r^{Q@|R{nnXdRCp9lz4{ZiZe0^P~ z;JPIU9TA0n$fD|fm(sV`>v{s=2 zv^F*LK=aJZpJ4_1PJ~r7zLI9RA_pmqZ0N+;66|ONZ`uyyAj8LiKo?(a+w~E^{(kla zM~>ok>y;qIv1X#9-?_f?0L z1bCvRatDY3VzRBUMslpJ@UP?;Tj8|iINJd@C`pbC2!b8Qys+?Cg)8^%knP+^ir{I<<>6G80u8WK z*}&o)nI-P#d4XTWYE_X74gbGBbG!DLV$}(uNb~9X1sce0m?=Vsr2i`}P|9Sq{t+oo z6b=VUsZCMp`~?Nu#ysckG3O)?nWteRyx#cI&5tOl`%sY)?i&uXcCx7$ZxsN)IA)c}I7Q26`BO-ziQi>sL1(YJl z8ESe+5a+giBa{zlIg~Gjv3p?;AxhwNM{xl2266x&(Id_JxljfZB%hv)Mw2O`ci-Oua2z79z&DWdjA6e4QQp^A zZY+5WlCKO~H$wRVf%yLp#Pc(0>ITwK>l>hK2=@Sf89-xC(;BdE z2mD`!Z_#2M&iz_A5*_Fqzn{eJgD{q2~* zYi{`sBzfB4bAszp5ZA|du)iI{5UlFZWy`MTr^CIuE1`;nazML*oKW{Tr1>Pa;;Zy2 zi2*ksAY1Xc`hx*R42e5%=$~3V{eA~T|3}H}Zy~^-mqZT7^ff>*ztC$hls#(n=OtXX zmp9(`LL|M<+TgU9{*-eAiERt0ja`Hy1ArWPm^VcD!}>TmS2b()U4$OiT?FF^dH`U{ ziubcw<63-Sy9}*yJbmhEO?J80aG9`83c|6ZhaWzG~S=<23M`Q7>%TBqmlb+ zToEhNdIT6?U=)mBieJp(b{HP*6>&uMUd{4Tc1**SEnfAT2b@xD#cq5Ua6C=(=Y}C)WtlUKIVQbUetHex z;4~YG_|C7>7rULdcAeb>0LwbKWF7)wia%kB|AzS?Tl}mzj{CWvX2zizB3M49!)EL1 zP9OjpQ`Q0BS)cwk1irnmcKp}R9Tt}rGrT`a!k(k%=Me5R!SQa4s{5|+qm@3+0n=+ugKAP9I zQ;Hc;)=34Iy@^{0YEUnhrP!a;mtOb0GpclOWOSHQYS!+BUc|1hC=gSOdT?$fVz<{Y zfXVTv>epC#yT_lun!@8=g29m`T$rI3eXQ~AL*el+^n{obXU+RwcMxc3316uvWCF3Jy0tS6iJ70uY$kny3)8{afZH><5ILCk&FuBp;|{;9 z_Q4-v1QI$AC{K#C_dQPnm_qMPX-fL1*8_XITRMi1N>8g-6%>)!(=mM!yTH004CT1K zAYLU2n1?R=N~L2Gq6;YsQld#A>XTFznNC&gYcOS#v{Tf5QjObBZ5_#a#I>Wq1KBeDHBIX)6A>+=@WoPT68@c>|g-) zprD{bE7ks+f)V_f#7-!mu{R zROEZL%q}ZeaLg8jf}E`xY~ML4Va@b9Iq|I(IL$yEmd76FAOsw#$!952z|O&h zX@ZRc?2(7+ZzA5@D9&PYGE#Cg5*9FMlw>I+;l6QFYMEx(D^f7W5W{I(yCo~g!X$p! zSGET&86|v;eIx}e4s$c^r8zMN<3n-zMwSQt?1?HeZ0RK* zgn}RJ+y7ENC}1cE@_P4d5jiM;n-JuT4bb8Shy1kSfaIQ-eY=#$G}@jC0no;Oh!c%L zM~ccTD%MI9=af`HMdsM%+F|*HV$)P1g;F3gVfg`W!T=U`Gf?hDNE`|{^+C6OF=&s^cROgT{%j18kpl4cm6r5Y zK*G(U4B69=dW`8}oc(oz#8A7s7OT;@DFwC1(6s6_rMH%u5%YpWaEi)Vk1@aoi zVpy;1w{(fK#5xyD%P%E>?xH9Hpu5QA4#k3SP@pp=fimPhvAKNLn3IzMMNPgQ9>=?Y zHYTB(@YUpedgvSqvmOd3A%5IUDKY+EoY<( z)>z8R8t2=h)PmD35esrM3UN|WR%rkzEvNyZim$pS4g9^lM@@PC}KM~2Kr zuW`t&!$^V~lfaoUVQ#YTb0?u7x1uEHuXO%{)w*x{vrRZoCIjYYpbC-SxVc2BlEI2_ zVmp^3?2SNCEVsjIIxn-=vZr;Hi@Iwt&Ow(%o~kF%MVIl3{M}M)lOV&k9hI91nPRj5 zW(mpnplO9?+24R$B(0e(%B0jz-mKogqo4e=-XRtBax;Qp=cOpiG5nLz=)h<%48C(B zD*gTWAu1@%iuid8GcF;vNpYSbRP-k1BQ}k+*r_qEZa*PU9%aOA=UdD?AKE1_C-`5V zMI)4bWl+w@-N39m9bjE63bvT}73ctlZJz?;QL`VMQ8b)|C4<2B8ZC(X4bhEA0z(wDa0t@?k_~=*$#B(t_aBHtMkCFg23PXMZj&l zem{W-n&)2x$POSlQ87pDSTa38MC7DNii1o>V&~K6gb0cWiX}w_Wt{>a_G}g7BtjZ< z)dXe5^t9rHeV@fAH@F%4W845CQx#!dbrRd$Eq zo8g~9g$d5NC@7n$Y`VWGZ%I(RLldT-{I?;iu%CPq0SJE?Qj`P=;3Kh|9?0y>6PY@* zB5bb#s3*=&32JzI82d6qfJT;PBJ_0>xu;Z*2wsI%3ZCscI9~>soBHoG{!U}7kr8B})1+piF2@;t- z*k927*&l=0CCO)MGC3jQpLz66W+7ZyTE12qMSngi%)<=#TASE4H%ai<2uVHtY7ZeR zA2M)w#dueOQ7p=8at{#zL*y|?MAD?KCR0Q-Ul%!|6(5IYE=IN?Nko=+*=02%J+-oY znx-xifJ4;p%9d5zjb}88img^KBu1ng>tq&JM-xXRgREw_^Q~s2t491J0i~&aWF~su z_f4Prthbj4?nKx^eSamJi%w3*Po!y1wM~7W2eu#cL#x(L1TYK&f~KB4O)*YHd5h^M z0yvt(&*8!oCUNz+!!xFj0^(G=)e+#)%*4qx#)-rL!{GHwunh6_kEtR}vj8MRM9BWQ zX%jVvK?tLA^fZcGqX8E*OxOK2BOmL0W;ixafo#+ z{u{^|4HNQiHA1HK-=vsmZf||!GhaXcN2c6-eo>unP#~Zq=>N(q>0spOXl8Bl*F396 zl@0q}94K8|#kws!#?Vc6(tDIABsH5dWR`%J1OU}}0a@L%$HC^xZ4s}9jV2kVT%4oc zK2LRbISdTT(PzLp=fEZE^TE*j&jJZkQd6B_&zoyax9EPf}mAJqYn0W zole4*2U+JU)Y`p?vy1-i2>T~R)oQe(f+N_3BvOn3^np~lm@q!u*MR)x6?BYt>RP*? zL%o@dmkBs-@>n$YoFK9n+YE5}`S!?|G!)oFp$TKx$cPs*QvCCIT)`u7jC2L=3=W|1 z*t2!yFHqRv5uEPuQV?L77xR&1IH?Dukuu;Gip+n6!`3AaHm34&g2riQ3mS49L?rK< zV*1QSJG4nZlAQf$7FPzA`eJZ-%vTgv_~+)9ur$Qr5;scOV%}~9;Om;i#5bd$xzGX) zYHdoo<4{{b%w?v#qjTku*B)gFekxU(fy-5mw(>HJ)C^^K2Vg5~EDtH(ufX=u8(wRJ z5NPdBi-#8n_``;tr9Nl-v!W+4mZ>OPlwJu3#Xpz#k_|71Q`a%QUyDedeGk}X%bG00 zt;P98+{+@{w@(rWHtJ{x15F>G?&$&ZvnuXn@fL+CGVc7;5Q3e3=eA!WJ=>(S1ul++ zFUT-_-#pE!^MtEUsre6HBR^*voU27GLB~u2tco?aY=&rVwoU1^D{u?_Hpb{#U%;N- z7Ytd9aa%23#D?22tj0hm2V?3y_RcL?q3ncR^A?|n??iF}AEic>8jjUJ%}@5e_iQg8^hv@_iu=z5B#>c422w6!4?|z{EdLQ z#qaEB!sSvCgsM_ zzDS$x!l*WRu=9LwoX$gi*XU=wmE9|A)wxNAkdNbSqoMR=?o0Ww52Dlfy3CV|RiV!4 z1_axM@g_3(xbqe{Xuj#-=of8s#L0|1*>qNqKao}a8FlVw zxkO37->!#RQh)j!>}~?aDSYlg>0gcx@@T^q0>Y(tqznrm0bNV9AvH(0ko=HhQM^Gx zWN?Y!FwKIO9IHKwv)Xo8U>m+K-KNW1!2g_Hd8~1u1O!My)dcwa%z6G-3Mv;PeWm|8 z;Ui~y&HEW(fo43q`u5|L_6#E!zr`_O;I=0SHX+#JkTNy`CPPiWJTa@YVYJ_q5uOm1 zZu($N(rruRe$KaNf>7DbIbSfuzY5tf7@~mUhKfW>JBLZQSS!#j1Al@478*G~q+iNZ zCvk)bcvbQ!W<(AS?ur`DEH;wE`9fia}2{}KepY=cP-*7dW zU1;jagsG@nu6nR+Y5G7J3q1F^@n1T}gAFJnpAp6Uziy=>9jrIeYs?!{w5TMtW|otE z@${&0T6g?`8Ufv3MyB5vi2*ZO!)>vBTB5l}N%AH3XO%(J#1mn$&OosjYV_iK>i z?T26IP)_chaMe|%TI@V6{bxmCs_xLt*#>S-jMyn6Ds~#Tqa3tuxp%f8B_pGnDjiM- zJz7Q?)>(rmCp&BN{Rn3_cg4f>Iv)z?Y>)GCX0Gg1=xy|0=duS45&B~`WA&U2`rrg+ zfR>FSp+CS7d7ByAIr7NNz6+ieMuyIfWRjcK(3oagOU%HVj&#HP(tmeg{Ag_H)|u$e z=ChWD{rNh5ONK1*vtkUJ!Hqj+!|XPRze#&rS=V;IH|dTqNolyEX4eKBgnqL2>cH#g zl+$Z+7ui{{yG)g6nb*z#$Pu0(NYpX}0R+@e1q6ip??ckj)X2(+{;wtDUm4CcWNg;h zFuI;p5!?0`Ue=t#+CtIl>hEXWk9}dd=B840#dgk%$)=|7(JPW}C{u62^{r0GFpy&oiuvG;A zIDFCQ5%4~^gtZOw0#C9acF{<=Yq4DYqXniK3f&D#yk)w&r|AF&NsBVEg*Jq+TNreI zycNj^59KyCQVKo*GH!{u(7bh>#trcg+I4QouceJys5K~9ltQNq5Fm$lyjc9MZF3r& zM(DN1{>*rB>NEsZ4v)lVrQZ|99a0!8Aq7^WZ@BIZ0wH}MVD^OMzf?G1>m?b*B#2{C zglY1mXCC_bGwB2oCDj&BR$MXezP~&?jHjEKm8G$OUu#z{UwofyC*PTADioo9MtSfq zpOcV?0U2Zgk8>Q4wBHbqPb^B3tKU3v#5yBO(+DoglAEVuKg0h1Rfbn+o}xy^B!A5+ z%@hkW&6rQ-W9rF9(ANqIi7s}sf&n`Auo{c~w@jY8U zFXzoV-CDkg5(8(|*>5+yt7kTRA9o?-A}w$bArk9A9-#r;$3W-ua#T7Eq*!&NxuEE~ zB#!;~4#z^^bp8*4<-M2EgnlBv@N>Af*`xZJp)HJVC6tY4bw9<2lY(0g+_Ch-73Xp* zR)CrlFeKJwUT;8JS4f~&{A|1BE3Byk-QxugvFO$d&WL0Zt%&krqGF@LyMYbW^xN``(+xcg$&!iDYifp zrJ-B*{PfkXRhc1{7_p*Q|0d#GJh6l`90Xg$NQ82aGvG$}n=aj)Y9p@EPSDUQwzOC% zrN<*EW-Vrp#4!HS>Blknpu66dj6dJ52a^)PN>QE~U)fQOds0-;`)+7kbgWw4w~c;- zWt<3e<31P%RE5r9=~1Y>0p~J8WB2q^mlb}M?mNSFsWr>QH`%7x^dtW*69Y2DU_*{H8sAxyf-~nVFOn(^g29Um3bDhh6&IwQtNiO=~)? zVe5T!9!$tt)3Wi^N*g*EU(KI2<=GFX&-0`1Hvg3nq4pDp83P_fbdX%FrJWA8KpK_0 zu|LJ4ZXll^M{6^i){9D~AqC;*>J=SZ3t)$jJL83^L%) zJQ>sW5vukXct~wCg2U>`HQt5JP5C7ZrO7i-4SAIv6uYB%nk;+gX3fvRho54t|2R416@ykkHhgNO*1 z8QBQs&`NBgyMZezV>=xqEpPm8wy3e7k@)mI{CE^`$CTw;6N9LmK2@U=ivd-;BN5`7 zQzj?_$=4>(LZ?#&F0PbuP<5yG9z(ywa9|{-P_c%UHX-w_-2H9T8(CH-OUAmc;-o<7l8A3zRZy|Dt92 zl-e<$qMV=tRF^^t3iR#mnqTNo=@4f!`R=r()c$wr^KC|5H8#B+rog7biOmn|WywX? z9H=iVmhsX-6TiNxQ!u2Mggzo+0`jygTi5w=+sLlAmG3x!u(4JwFYUB^bax^zZ5@=# zE9H8}g>1Xeey6fS)a0kNlG~lgmM?IZZvKu9E^^t8cL++MmBY912E&|AK%L*kRgG{Q zHNlOj^WC?C3|+H+4i5poFj7Oka$(av{OO9wTz=>{ul_lS2+4x;Y0I)AGmwZnv@w`) z0ruIeLtM$A$QwypwsT-yoHgdzD1{3c4qpft=8!F8Y~6@2ow+4M;j|OD@%GaMogqAh@_ z1cI2@mckuZhC;uM*kUyJe=QsI54TiJ@*rzu!4jiCG$ZX^^-;makVkr+kHa|55i>YS_r>T0s9C5n{Vjj4E7rxD*(WWGz6wyW^JEx&>MvqBr&rDb*ig7pEyG5#U^Q?k6hjjh99wVD}IYaPIV zBI453ce^{vm;+{t5-JWvX|X8z1J~7;)RK5jII`^BLxzjhVA!R~@p6$HhyNhZTDM|` zihP!g1WLJ_J2yC^qnnk5c!aBpi|>E6b>2};WNjD^NC!hl5JWT(q)D%?=?@|O&7LY`C4J=iPQKW+kQj!RU8agbZLHI^LT_nf+k(`+`&+pFMoO|be z-uKL0S6bDEXpvW^Rr~`9KCf!t(47SfZwSuh_pQ%QHp6=BAUa;kp>#8yHvF%PH2T{7 z3CTR-xU(Etjy}B5C)Uk+kzI_CRUY7}Qr}%uWuF3PV=a>3@Sxn-%Di5lnS$rE_01AP zV~o^uA9kT<249xLWAP|rVhtXfun%rdA_;HV?VQ8QhAI42(M`XznR9xF!lk7R#wWT1 zIhjNty8F*_cm;SmIQs%wnQzfup9RiqT7|cTP@$QA`4%QIQ-Ma|S(&DpHS#h9vk8Lo zK3y#7l9icU(OY)xlXz03@n@3!HIBd@Bxe*sbuZjtmv(1&Ejj}aPUP}aT8Xx*AY7E3 z)$1Mkxc4b{9=i1DI^!4zNB`hIQJSv%Q+ufcWcG<+S`Kk^#Tg5=anben<2w2GJpMo` zCv~P?T4^HNZA7rnZVC7>y=uN60JlvI2V*0o-98hS4 zb2Rg5Mkk0SRDMWeW_r}f?He6F>Q0X zqMP4K^4-)*F4a!ZOX@u(FL+1HK~7?TC*ef%V2KCQBd?sA-=Qj;N^(7%-r z4^tFilopH1k3RES0u7_-r%iE5V)D^tyfZ2(p&GHX-B+&49fUKO(4ZwiuP9BXEGM>@ z-Kyf;1)EO|EsP8YV$a>ND+9A3uNb<&q`k#vntr{xqC|&egAx5l=MlVixA9Sna*$z9 z?TnL{Bvy}m;(}aV*^+#oWnIdkRQe9{_^AzF9i#k*$Dn8K_rDR=*WoJ+ZOb=|P)AZ@#)y7*mTiX-a6auMP+ME{kEuTHW=CBD5h=1K& zjoRA>KRcP|kf4%TX{Ly*{lc>z{(#v)ZeH8<%WZ1;%92{{8%aR48|xDU{Wv+h+9cA$=*V-P(5JS6u~sHCw9-LsTV`u~=w^)-Nb{Nn;pYi_P3ss_*e(MKd<_+c zv@TN3Y>Vh6zvs3MHV-G9h)|oWN(tO=W!AsU!p}birl&Hpx%Da7dfgwhF{PnqEh(Q_ zwC5H2(W3$V^noMH4#mgww(Xq!5{hnn<<&O(>}cCc@6!uMC1pCBkH2qY@pHE;<)d@6 zyC~nQ8apPsUy9#nK0ITUb&bGUXhEPDArR;oFk=A=cYmLz0OtjaPcM5{kF##x&ah=O zcW+KpF7>7`Wiih_wlh*(^c_udZRJv064Xkr>Dm;a})uG=xyQeo6BRJsUF@@5|F}>x$>NY>%u@;>sC~V$yB@(0b=H*`#a+^Jnyy3784 z>tNaF(V$CUmb`~h=!#RwwPHG^D!>hocAIMSSzwUiVl_NDxsQhQ0ka?oN*mGzY2Z(< z2dz;BS!7Z9!v<{zCF9dctJ=k<91vZ7S)c^hik(xwWE1`@sn$?eO2A!+reO3ZSd z(1z1);O?$7+z7;c(0vza0f#OUD}(L={zXLcLs_;&v@+eQe`RSXl>@j2Cz_+`*xb4N zmnozqAw0^W&WP+p)VOrqEji7Q)-FB-n_+1>fS*{bzKJ-;+3-qw!rfte#Ln6|TP=6l zgF(vsr2-k3!5v2TF}-Aiahpl;B>0?GEpnUrGp}vABu|M%Zb6mjx=M|@`=jIWoaT+) zC%XPlM{{267gvO#Oc=7%-tA1{pDrcLwEateB%9mqngg5gqs!Q{WVi0O4Nf`tq>YR8 za>BlfZ0EH~2^ejkp1oX`#18Yk<~JxZe)XLS5yAEZi6veMy@h>NFP}CLjlIWA!*Jn* zI*u)-$BtSw3qdQ(ayqp6Lp;cmW{b&XT|P+j$T;1oDi^R6YEr0kphgk0ngwNSuEPH& zMu$f>GrV~&jY%$-D@{u#{WDQrE|u#cCasq*kECN+f(i%}>K9M2yHRDulJoCadf|)E zOV$sCojq5q>u>A5CYvzxl1`L8-L}M`7 zx#Fb}mK|>DZhK>sj(88e+unM?S=Mn8FV6aCGJN9o^0YcVXZ?NBtU7TUxO=aPv{du2 zrrr%gzvV~ggwl~PAgXAr%(zUukq57Pp3|Q?FXWy0e2+TEiOut!U&CjN>Y=c#J!^cc ziyz!88-azdN^e$bURM){c{jSW|K39`j>th)Y^sB=%>1JTd&5miYAe5ACGmD0!bi zSw)k1e!f_?kH|!GElE!<5h0wQkATq)u09CWw)Gb$C_^_jJD}1ud1U6|oAjJ@GwkqD z5%`mQMk{b}BE*JfzF;OLLBCeM#J&}j*8DkS5$(@htY1+!lpJicpiF%W&xYK?@gZ&S zh;>8iC9pPGvktS<0%ATkY;y8CTxP88%~u-0?W-;b0;~<6c z{rbIV&WZT)+qaPd+2>t1vI?6X_cw=)EFn6=o?z=ThULOS0`!-sMRr1Qg6&qTo9HZ} zj)`B-;z+z;Byk8s5)2Ff__(4ta&~O4II7gIXC&7q(s`m9-ST;4;tzaCz55(0RUNGl^%xx;id(z$!Dte(Y&T*rznc&;5Ro#TOSV^EqML`f7%H zCgM$)j`4jH=OeKqi)!En0WTE@EatQK%vG@eQ`W}_y5lYn?*8^`Up`^GL&Hdqikj=l zxAZszs3%|9qUQRe^lTtP?FMpg-)zUv4;Tu9>^mz|5O9NaH^L8;{P%J_t2hFm=MQo;tCux1PIv=3Fm-4|J{2W@A!VtL{rMQ zCMJ%N0J#SZ2*h?s9tG_APj2t+{kyZC80qKA0!~-RiL&uLpd-Fl4gf@eCvfe*lY7DW zIpl!Gdw`|{4mEBC#I)b#|G)BIA;0YfWHrwp$ekr0*$|(yk2XcJ)4>?5{hLS*8h&Ujy zMgAZhDoar6DYM20`iJlzddeI!C4$m_A0P_jf9u960hC7f0N|hSE8uswmy$*49S>NZ ziNCTAJ4s3krPVs1#3cRbl|#mhQcoEV9_UY|{4&H2M~6mww7>}ZHmcY`_Q3F9&-%9Y EKcgZu)&Kwi literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/search/TerminationTracker.java b/src/java/com/twitter/search/common/search/TerminationTracker.java deleted file mode 100644 index 916415078..000000000 --- a/src/java/com/twitter/search/common/search/TerminationTracker.java +++ /dev/null @@ -1,202 +0,0 @@ -package com.twitter.search.common.search; - -import java.util.HashSet; -import java.util.Set; - -import com.google.common.base.Preconditions; - -import com.twitter.common.util.Clock; -import com.twitter.search.common.query.thriftjava.CollectorTerminationParams; - -/** - * Used for tracking termination criteria for earlybird queries. - * - * Currently this tracks the query time out and query cost, if they are set on the - * {@link com.twitter.search.common.query.thriftjava.CollectorTerminationParams}. - */ -public class TerminationTracker { - /** Query start time provided by client. */ - private final long clientStartTimeMillis; - - /** Timeout end times, calculated from {@link #clientStartTimeMillis}. */ - private final long timeoutEndTimeMillis; - - /** Query start time recorded at earlybird server. */ - private final long localStartTimeMillis; - - /** Tracking query cost */ - private final double maxQueryCost; - - // Sometimes, we want to early terminate before timeoutEndTimeMillis, to reserve time for - // work that needs to be done after early termination (E.g. merging results). - private final int postTerminationOverheadMillis; - - // We don't check for early termination often enough. Some times requests timeout in between - // early termination checks. This buffer time is also substracted from deadline. - // To illustrate how this is used, let's use a simple example: - // If we spent 750ms searching 5 segments, a rough estimate is that we need 150ms to search - // one segment. If the timeout is set to 800ms, we should not starting searching the next segment. - // In this case, on can set preTerminationSafeBufferTimeMillis to 150ms, so that when early - // termination check computes the deadline, this buffer is also subtracted. See SEARCH-29723. - private int preTerminationSafeBufferTimeMillis = 0; - - private EarlyTerminationState earlyTerminationState = EarlyTerminationState.COLLECTING; - - // This flag determines whether the last searched doc ID trackers should be consulted when a - // timeout occurs. - private final boolean useLastSearchedDocIdOnTimeout; - - private final Set lastSearchedDocIdTrackers = new HashSet<>(); - - /** - * Creates a new termination tracker that will not specify a timeout or max query cost. - * Can be used for queries that explicitly do not want to use a timeout. Meant to be used for - * tests, and background queries running for the query cache. - */ - public TerminationTracker(Clock clock) { - this.clientStartTimeMillis = clock.nowMillis(); - this.localStartTimeMillis = clientStartTimeMillis; - this.timeoutEndTimeMillis = Long.MAX_VALUE; - this.maxQueryCost = Double.MAX_VALUE; - this.postTerminationOverheadMillis = 0; - this.useLastSearchedDocIdOnTimeout = false; - } - - /** - * Convenient method overloading for - * {@link #TerminationTracker(CollectorTerminationParams, long, Clock, int)}. - */ - public TerminationTracker( - CollectorTerminationParams terminationParams, Clock clock, - int postTerminationOverheadMillis) { - this(terminationParams, clock.nowMillis(), clock, postTerminationOverheadMillis); - } - - /** - * Convenient method overloading for - * {@link #TerminationTracker(CollectorTerminationParams, long, Clock, int)}. - */ - public TerminationTracker( - CollectorTerminationParams terminationParams, int postTerminationOverheadMillis) { - this( - terminationParams, - System.currentTimeMillis(), - Clock.SYSTEM_CLOCK, - postTerminationOverheadMillis); - } - - /** - * Creates a new TerminationTracker instance. - * - * @param terminationParams CollectorParams.CollectorTerminationParams carrying parameters - * about early termination. - * @param clientStartTimeMillis The query start time (in millis) specified by client. This is used - * to calculate timeout end time, like {@link #timeoutEndTimeMillis}. - * @param clock used to sample {@link #localStartTimeMillis}. - * @param postTerminationOverheadMillis How much time should be reserved. E.g. if request time - * out is 800ms, and this is set to 200ms, early termination - * will kick in at 600ms mark. - */ - public TerminationTracker( - CollectorTerminationParams terminationParams, - long clientStartTimeMillis, - Clock clock, - int postTerminationOverheadMillis) { - Preconditions.checkNotNull(terminationParams); - Preconditions.checkArgument(postTerminationOverheadMillis >= 0); - - this.clientStartTimeMillis = clientStartTimeMillis; - this.localStartTimeMillis = clock.nowMillis(); - - if (terminationParams.isSetTimeoutMs() - && terminationParams.getTimeoutMs() > 0) { - Preconditions.checkState(terminationParams.getTimeoutMs() >= postTerminationOverheadMillis); - this.timeoutEndTimeMillis = this.clientStartTimeMillis + terminationParams.getTimeoutMs(); - } else { - // Effectively no timeout. - this.timeoutEndTimeMillis = Long.MAX_VALUE; - } - - // Tracking query cost - if (terminationParams.isSetMaxQueryCost() - && terminationParams.getMaxQueryCost() > 0) { - maxQueryCost = terminationParams.getMaxQueryCost(); - } else { - maxQueryCost = Double.MAX_VALUE; - } - - this.useLastSearchedDocIdOnTimeout = terminationParams.isEnforceQueryTimeout(); - this.postTerminationOverheadMillis = postTerminationOverheadMillis; - } - - /** - * Returns the reserve time to perform post termination work. Return the deadline timestamp - * with postTerminationWorkEstimate subtracted. - */ - public long getTimeoutEndTimeWithReservation() { - // Return huge value if time out is disabled. - if (timeoutEndTimeMillis == Long.MAX_VALUE) { - return timeoutEndTimeMillis; - } else { - return timeoutEndTimeMillis - - postTerminationOverheadMillis - - preTerminationSafeBufferTimeMillis; - } - } - - public void setPreTerminationSafeBufferTimeMillis(int preTerminationSafeBufferTimeMillis) { - Preconditions.checkArgument(preTerminationSafeBufferTimeMillis >= 0); - - this.preTerminationSafeBufferTimeMillis = preTerminationSafeBufferTimeMillis; - } - - public long getLocalStartTimeMillis() { - return localStartTimeMillis; - } - - public long getClientStartTimeMillis() { - return clientStartTimeMillis; - } - - public double getMaxQueryCost() { - return maxQueryCost; - } - - public boolean isEarlyTerminated() { - return earlyTerminationState.isTerminated(); - } - - public EarlyTerminationState getEarlyTerminationState() { - return earlyTerminationState; - } - - public void setEarlyTerminationState(EarlyTerminationState earlyTerminationState) { - this.earlyTerminationState = earlyTerminationState; - } - - /** - * Return the minimum searched doc ID amongst all registered trackers, or -1 if there aren't any - * trackers. Doc IDs are stored in ascending order, and trackers update their doc IDs as they - * search, so the minimum doc ID reflects the most recent fully searched doc ID. - */ - int getLastSearchedDocId() { - return lastSearchedDocIdTrackers.stream() - .mapToInt(DocIdTracker::getCurrentDocId).min().orElse(-1); - } - - void resetDocIdTrackers() { - lastSearchedDocIdTrackers.clear(); - } - - /** - * Add a DocIdTracker, to keep track of the last fully-searched doc ID when early termination - * occurs. - */ - public void addDocIdTracker(DocIdTracker docIdTracker) { - lastSearchedDocIdTrackers.add(docIdTracker); - } - - public boolean useLastSearchedDocIdOnTimeout() { - return useLastSearchedDocIdOnTimeout; - } -} diff --git a/src/java/com/twitter/search/common/search/TwitterCollector.docx b/src/java/com/twitter/search/common/search/TwitterCollector.docx new file mode 100644 index 0000000000000000000000000000000000000000..8c421d08c0cbe6a32f31c521c54f544711d0ec50 GIT binary patch literal 37250 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 R=d7Xtm}90#T*l9{{{dJl#ccop literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/search/TwitterEarlyTerminationCollector.java b/src/java/com/twitter/search/common/search/TwitterEarlyTerminationCollector.java deleted file mode 100644 index bc7711e7d..000000000 --- a/src/java/com/twitter/search/common/search/TwitterEarlyTerminationCollector.java +++ /dev/null @@ -1,328 +0,0 @@ -package com.twitter.search.common.search; - -import java.io.IOException; -import java.util.List; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; - -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.search.LeafCollector; -import org.apache.lucene.search.Scorable; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.util.Clock; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.metrics.SearchRateCounter; -import com.twitter.search.common.query.thriftjava.CollectorParams; -import com.twitter.search.common.query.thriftjava.CollectorTerminationParams; - -/** - * A TwitterCollector containing the most common early termination logic based on - * timeout, cost, and max hits. This class does not do any actual hit collection---this class - * is abstract and cannot be instantiated. - * - * If a Collector and all its subclasses need early termination, it should extend this class. - * - * However, if one just wants to add EarlyTermination to any single collector, he can just - * use {@link DelegatingEarlyTerminationCollector} - * as a wrapper. - */ -public abstract class TwitterEarlyTerminationCollector - extends TwitterCollector implements LeafCollector { - private static final Logger LOG = LoggerFactory.getLogger(TwitterEarlyTerminationCollector.class); - private static final SearchCounter NEGATIVE_TIME_PER_SEGMENT = - SearchCounter.export("TwitterEarlyTerminationCollector_negative_time_per_segment"); - private static final SearchRateCounter QUERY_TIMEOUT_ENFORCED = - SearchRateCounter.export("TwitterEarlyTerminationCollector_query_timeout_enforced"); - - protected int curDocId = -1; - - protected Scorable scorer = null; - private LeafReader curReader = null; - private final long maxHitsToProcess; - private long numHitsProcessed = 0; - private int lastEarlyTerminationCheckDocId = -1; - private final Clock clock; - - @Nullable - private final QueryCostProvider queryCostProvider; - - private final TerminationTracker terminationTracker; - - // This determines how often the expensive early termination check is performed. - // If set to be negative, expensive early termination check only performed at segment boundaries. - // If set to a positive number X, this check is performed every X docs processed. - private int numDocsBetweenTimeoutChecks; - - // Number of segments searched so far. - // This is used to predicatively early terminate. - // Expensive early termination checks may not happen often enough. Sometimes the request - // times out in between the termination checks. - // After finishing searching a segment, we estimate how much time is needed to search one - // segment on average. If searching the next segment would cause a timeout, we early terminate. - private int numSearchedSegments = 0; - - /** - * Creates a new TwitterEarlyTerminationCollector instance. - * - * @param collectorParams the parameters needed to guide early termination. - * @param terminationTracker If null is passed in, a new TerminationTrack is created. Otherwise, - * the one passed in is used. - * @param numDocsBetweenTimeoutChecks TerminationTracker based check are performed upon a hit - * every numDocsBetweenTimeoutChecks docs. If a non-positive number is passed - * in, TerminationTracker based checks are disabled. - * If collectorParams specifies a value as well, that value is used. - */ - public TwitterEarlyTerminationCollector( - CollectorParams collectorParams, - TerminationTracker terminationTracker, - @Nullable QueryCostProvider queryCostProvider, - int numDocsBetweenTimeoutChecks, - Clock clock) { - CollectorTerminationParams terminationParams = collectorParams.getTerminationParams(); - - if (terminationParams == null) { - terminationParams = new CollectorTerminationParams() - .setMaxHitsToProcess(Integer.MAX_VALUE) - .setMaxQueryCost(Double.MAX_VALUE) - .setTimeoutMs(Integer.MAX_VALUE); - } - - if (!terminationParams.isSetMaxHitsToProcess() || terminationParams.getMaxHitsToProcess() < 0) { - maxHitsToProcess = Integer.MAX_VALUE; - } else { - maxHitsToProcess = terminationParams.getMaxHitsToProcess(); - } - - if (terminationParams.isSetNumDocsBetweenTimeoutChecks()) { - this.numDocsBetweenTimeoutChecks = terminationParams.getNumDocsBetweenTimeoutChecks(); - } else { - this.numDocsBetweenTimeoutChecks = numDocsBetweenTimeoutChecks; - } - - this.terminationTracker = Preconditions.checkNotNull(terminationTracker); - this.queryCostProvider = queryCostProvider; - this.clock = clock; - } - - public final LeafCollector getLeafCollector(LeafReaderContext context) throws IOException { - this.setNextReader(context); - return this; - } - - /** - * Sub-classes may override this to add more collection logic. - */ - protected abstract void doCollect() throws IOException; - - /** - * Sub-classes may override this to add more segment completion logic. - * @param lastSearchedDocID is the last docid searched before termination, - * or NO_MORE_DOCS if there was no early termination. This doc may not be a hit! - */ - protected abstract void doFinishSegment(int lastSearchedDocID) throws IOException; - - /** - * sub classes can override this to perform more early termination checks. - */ - public EarlyTerminationState innerShouldCollectMore() throws IOException { - return EarlyTerminationState.COLLECTING; - } - - /** - * After early termination, this method can be used to retrieve early termination reason. - */ - @Nonnull - public final EarlyTerminationState getEarlyTerminationState() { - return terminationTracker.getEarlyTerminationState(); - } - - protected final EarlyTerminationState setEarlyTerminationState( - EarlyTerminationState newEarlyTerminationState) { - terminationTracker.setEarlyTerminationState(newEarlyTerminationState); - return newEarlyTerminationState; - } - - @Override - public final boolean isTerminated() throws IOException { - EarlyTerminationState earlyTerminationState = getEarlyTerminationState(); - - if (earlyTerminationState.isTerminated()) { - return true; - } - - if (getNumHitsProcessed() >= getMaxHitsToProcess()) { - collectedEnoughResults(); - if (shouldTerminate()) { - return setEarlyTerminationState(EarlyTerminationState.TERMINATED_MAX_HITS_EXCEEDED) - .isTerminated(); - } else { - return false; - } - } - - return innerShouldCollectMore().isTerminated(); - } - - /** - * Note: subclasses overriding this method are expected to call "super.setNextReader" - * in their setNextReader(). - * @deprecated Remove this methods in favor of {@link #getLeafCollector(LeafReaderContext)} - */ - @Deprecated - public void setNextReader(LeafReaderContext context) throws IOException { - if (!terminationTracker.useLastSearchedDocIdOnTimeout()) { - expensiveEarlyTerminationCheck(); - } - - // Reset curDocId for next segment - curDocId = -1; - lastEarlyTerminationCheckDocId = -1; - curReader = context.reader(); - } - - /** - * Sub-classes overriding this method are expected to call super.setScorer() - */ - @Override - public void setScorer(Scorable scorer) throws IOException { - this.scorer = scorer; - } - - @Override - public final void collect(int doc) throws IOException { - curDocId = doc; - doCollect(); - numHitsProcessed++; - if (numDocsBetweenTimeoutChecks > 0 - && (curDocId - lastEarlyTerminationCheckDocId) >= numDocsBetweenTimeoutChecks) { - lastEarlyTerminationCheckDocId = curDocId; - - if (!terminationTracker.useLastSearchedDocIdOnTimeout()) { - expensiveEarlyTerminationCheck(); - } - } - } - - /** - * Accounting for a segment searched. - * @param lastSearchedDocID is the last docid searched before termination, - * or NO_MORE_DOCS if there was no early termination. This doc may not be a hit! - */ - protected final void trackCompleteSegment(int lastSearchedDocID) throws IOException { - doFinishSegment(lastSearchedDocID); - } - - @Override - public final void finishSegment(int lastSearchedDocID) throws IOException { - // finished searching a segment. Computer average time needed to search a segment. - Preconditions.checkState(curReader != null, "Did subclass call super.setNextReader()?"); - numSearchedSegments++; - - long totalTime = clock.nowMillis() - terminationTracker.getLocalStartTimeMillis(); - - if (totalTime >= Integer.MAX_VALUE) { - String msg = String.format( - "%s: A query runs for %d that is longer than Integer.MAX_VALUE ms. lastSearchedDocID: %d", - getClass().getSimpleName(), totalTime, lastSearchedDocID - ); - LOG.error(msg); - throw new IllegalStateException(msg); - } - - int timePerSegment = ((int) totalTime) / numSearchedSegments; - - if (timePerSegment < 0) { - NEGATIVE_TIME_PER_SEGMENT.increment(); - timePerSegment = 0; - } - - // If we're enforcing timeout via the last searched doc ID, we don't need to add this buffer, - // since we'll detect the timeout right away. - if (!terminationTracker.useLastSearchedDocIdOnTimeout()) { - terminationTracker.setPreTerminationSafeBufferTimeMillis(timePerSegment); - } - - // Check whether we timed out and are checking for timeout at the leaves. If so, we should use - // the captured lastSearchedDocId from the tracker instead, which is the most up-to-date amongst - // the query nodes. - if (terminationTracker.useLastSearchedDocIdOnTimeout() - && EarlyTerminationState.TERMINATED_TIME_OUT_EXCEEDED.equals( - terminationTracker.getEarlyTerminationState())) { - QUERY_TIMEOUT_ENFORCED.increment(); - trackCompleteSegment(terminationTracker.getLastSearchedDocId()); - } else { - trackCompleteSegment(lastSearchedDocID); - } - - // We finished a segment, so clear out the DocIdTrackers. The next segment will register its - // own trackers, and we don't need to keep the trackers from the current segment. - terminationTracker.resetDocIdTrackers(); - - curDocId = -1; - curReader = null; - scorer = null; - } - - /** - * More expensive Early Termination checks, which are not called every hit. - * This sets EarlyTerminationState if it decides that early termination should kick in. - * See: SEARCH-29723. - */ - private void expensiveEarlyTerminationCheck() { - if (queryCostProvider != null) { - double totalQueryCost = queryCostProvider.getTotalCost(); - double maxQueryCost = terminationTracker.getMaxQueryCost(); - if (totalQueryCost >= maxQueryCost) { - setEarlyTerminationState(EarlyTerminationState.TERMINATED_MAX_QUERY_COST_EXCEEDED); - } - } - - final long nowMillis = clock.nowMillis(); - if (nowMillis >= terminationTracker.getTimeoutEndTimeWithReservation()) { - setEarlyTerminationState(EarlyTerminationState.TERMINATED_TIME_OUT_EXCEEDED); - } - } - - public long getMaxHitsToProcess() { - return maxHitsToProcess; - } - - public final void setNumHitsProcessed(long numHitsProcessed) { - this.numHitsProcessed = numHitsProcessed; - } - - protected final long getNumHitsProcessed() { - return numHitsProcessed; - } - - protected final int getNumSearchedSegments() { - return numSearchedSegments; - } - - protected final Clock getClock() { - return clock; - } - - @VisibleForTesting - protected final TerminationTracker getTerminationTracker() { - return this.terminationTracker; - } - - protected void collectedEnoughResults() throws IOException { - } - - protected boolean shouldTerminate() { - return true; - } - - /** - * Debug info collected during execution. - */ - public abstract List getDebugInfo(); -} diff --git a/src/java/com/twitter/search/common/search/TwitterIndexSearcher.docx b/src/java/com/twitter/search/common/search/TwitterIndexSearcher.docx new file mode 100644 index 0000000000000000000000000000000000000000..c4898a8572024a7a4593a81b421a9d25ddeb71a5 GIT binary patch literal 39959 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/search/TwitterIndexSearcher.java b/src/java/com/twitter/search/common/search/TwitterIndexSearcher.java deleted file mode 100644 index 97f10160a..000000000 --- a/src/java/com/twitter/search/common/search/TwitterIndexSearcher.java +++ /dev/null @@ -1,189 +0,0 @@ -package com.twitter.search.common.search; - -import java.io.IOException; -import java.util.List; - -import com.google.common.base.Preconditions; - -import org.apache.lucene.index.IndexReader; -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.index.MultiDocValues; -import org.apache.lucene.index.NumericDocValues; -import org.apache.lucene.index.Term; -import org.apache.lucene.index.Terms; -import org.apache.lucene.search.CollectionStatistics; -import org.apache.lucene.search.Collector; -import org.apache.lucene.search.DocIdSetIterator; -import org.apache.lucene.search.IndexSearcher; -import org.apache.lucene.search.LeafCollector; -import org.apache.lucene.search.Scorer; -import org.apache.lucene.search.TermStatistics; -import org.apache.lucene.search.Weight; - -/** - * An IndexSearch that works with TwitterEarlyTerminationCollector. - * If a stock Lucene collector is passed into search(), this IndexSearch.search() behaves the - * same as Lucene's stock IndexSearcher. However, if a TwitterEarlyTerminationCollector is passed - * in, this IndexSearcher performs early termination without relying on - * CollectionTerminatedException. - */ -public class TwitterIndexSearcher extends IndexSearcher { - public TwitterIndexSearcher(IndexReader r) { - super(r); - } - - /** - * search() main loop. - * This behaves exactly like IndexSearcher.search() if a stock Lucene collector passed in. - * However, if a TwitterCollector is passed in, this class performs Twitter style early - * termination without relying on - * {@link org.apache.lucene.search.CollectionTerminatedException}. - */ - @Override - protected void search(List leaves, Weight weight, Collector coll) - throws IOException { - - // If an TwitterCollector is passed in, we can do a few extra things in here, such - // as early termination. Otherwise we can just fall back to IndexSearcher.search(). - if (coll instanceof TwitterCollector) { - TwitterCollector collector = (TwitterCollector) coll; - - for (LeafReaderContext ctx : leaves) { // search each subreader - if (collector.isTerminated()) { - return; - } - - // Notify the collector that we're starting this segment, and check for early - // termination criteria again. setNextReader() performs 'expensive' early - // termination checks in some implementations such as TwitterEarlyTerminationCollector. - LeafCollector leafCollector = collector.getLeafCollector(ctx); - if (collector.isTerminated()) { - return; - } - - // Initialize the scorer - it should not be null. Note that constructing the scorer - // may actually do real work, such as advancing to the first hit. - Scorer scorer = weight.scorer(ctx); - - if (scorer == null) { - collector.finishSegment(DocIdSetIterator.NO_MORE_DOCS); - continue; - } - - leafCollector.setScorer(scorer); - - // Start searching. - DocIdSetIterator docIdSetIterator = scorer.iterator(); - int docID = docIdSetIterator.nextDoc(); - if (docID != DocIdSetIterator.NO_MORE_DOCS) { - // Collect results. Note: check isTerminated() before calling nextDoc(). - do { - leafCollector.collect(docID); - } while (!collector.isTerminated() - && (docID = docIdSetIterator.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS); - } - - // Always finish the segment, providing the last docID advanced to. - collector.finishSegment(docID); - } - } else { - // The collector given is not a TwitterCollector, just use stock lucene search(). - super.search(leaves, weight, coll); - } - } - - /** Returns {@link NumericDocValues} for this field, or - * null if no {@link NumericDocValues} were indexed for - * this field. The returned instance should only be - * used by a single thread. */ - public NumericDocValues getNumericDocValues(String field) throws IOException { - return MultiDocValues.getNumericValues(getIndexReader(), field); - } - - @Override - public CollectionStatistics collectionStatistics(String field) throws IOException { - return collectionStatistics(field, getIndexReader()); - } - - @Override - public TermStatistics termStatistics(Term term, int docFreq, long totalTermFreq) { - return termStats(term, docFreq, totalTermFreq); - } - - /** - * Lucene relies on the fact that maxDocID is typically equal to the number of documents in the - * index, which is false when we have sparse doc IDs or when we start from 8 million docs and - * decrement, so in this class we pass in numDocs instead of the maximum assigned document ID. - * Note that the comment on {@link CollectionStatistics#maxDoc()} says that it returns the number - * of documents in the segment, not the maximum ID, and that it is only used this way. This is - * necessary for all lucene scoring methods, e.g. - * {@link org.apache.lucene.search.similarities.TFIDFSimilarity#idfExplain}. This method body is - * largely copied from {@link IndexSearcher#collectionStatistics(String)}. - */ - public static CollectionStatistics collectionStatistics(String field, IndexReader indexReader) - throws IOException { - Preconditions.checkNotNull(field); - - int docsWithField = 0; - long sumTotalTermFreq = 0; - long sumDocFreq = 0; - for (LeafReaderContext leaf : indexReader.leaves()) { - Terms terms = leaf.reader().terms(field); - if (terms == null) { - continue; - } - - docsWithField += terms.getDocCount(); - sumTotalTermFreq += terms.getSumTotalTermFreq(); - sumDocFreq += terms.getSumDocFreq(); - } - - if (docsWithField == 0) { - // The CollectionStatistics API in Lucene is designed poorly. On one hand, starting with - // Lucene 8.0.0, searchers are expected to always produce valid CollectionStatistics instances - // and all int fields in these instances are expected to be strictly greater than 0. On the - // other hand, Lucene itself produces null CollectionStatistics instances in a few places. - // Also, there's no good placeholder value to indicate that a field is empty, which is a very - // reasonable thing to happen (for example, the first few tweets in a new segment might not - // have any links, so then the resolved_links_text would be empty). So to get around this - // issue, we do here what Lucene does: we return a CollectionStatistics instance with all - // fields set to 1. - return new CollectionStatistics(field, 1, 1, 1, 1); - } - - // The writer could have added more docs to the index since this searcher started processing - // this request, or could be in the middle of adding a doc, which could mean that only some of - // the docsWithField, sumTotalTermFreq and sumDocFreq stats have been updated. I don't think - // this is a big deal, as these stats are only used for computing a hit's score, and minor - // inaccuracies should have very little effect on a hit's final score. But CollectionStatistic's - // constructor has some strict asserts for the relationship between these stats. So we need to - // make sure we cap the values of these stats appropriately. - // - // Adjust numDocs based on docsWithField (instead of doing the opposite), because: - // 1. If new documents were added to this segment after the reader was created, it seems - // reasonable to take the more recent information into account. - // 2. The termStats() method below will return the most recent docFreq (not the value that - // docFreq was set to when this reader was created). If this value is higher than numDocs, - // then Lucene might end up producing negative scores, which must never happen. - int numDocs = Math.max(indexReader.numDocs(), docsWithField); - sumDocFreq = Math.max(sumDocFreq, docsWithField); - sumTotalTermFreq = Math.max(sumTotalTermFreq, sumDocFreq); - return new CollectionStatistics(field, numDocs, docsWithField, sumTotalTermFreq, sumDocFreq); - } - - /** - * This method body is largely copied from {@link IndexSearcher#termStatistics(Term, int, long)}. - * The only difference is that we make sure all parameters we pass to the TermStatistics instance - * we create are set to at least 1 (because Lucene 8.0.0 expects them to be). - */ - public static TermStatistics termStats(Term term, int docFreq, long totalTermFreq) { - // Lucene expects the doc frequency and total term frequency to be at least 1. This assumption - // doesn't always make sense (the segment can be empty -- see comment above), but to make Lucene - // happy, make sure to always set these parameters to at least 1. - int adjustedDocFreq = Math.max(docFreq, 1); - return new TermStatistics( - term.bytes(), - adjustedDocFreq, - Math.max(totalTermFreq, adjustedDocFreq)); - } -} diff --git a/src/java/com/twitter/search/common/search/termination/BUILD b/src/java/com/twitter/search/common/search/termination/BUILD deleted file mode 100644 index 913bb480e..000000000 --- a/src/java/com/twitter/search/common/search/termination/BUILD +++ /dev/null @@ -1,20 +0,0 @@ -java_library( - name = "termination", - sources = ["*.java"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/org/apache/lucene:lucene-analyzers-common", - "3rdparty/jvm/org/apache/lucene:lucene-core", - "3rdparty/jvm/org/apache/lucene:lucene-facet", - "3rdparty/jvm/org/apache/lucene:lucene-queries", - "3rdparty/jvm/org/slf4j:slf4j-api", - "src/java/com/twitter/common/base", - "src/java/com/twitter/common/util:system-mocks", - "src/java/com/twitter/search/common/metrics", - "src/java/com/twitter/search/common/query", - "src/java/com/twitter/search/common/search", - "src/thrift/com/twitter/search:earlybird-java", - ], -) diff --git a/src/java/com/twitter/search/common/search/termination/BUILD.docx b/src/java/com/twitter/search/common/search/termination/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..f784a73c80ee068ad0e528c3d87fdd73e318f489 GIT binary patch literal 36906 zcmagEWmp}_wm*!!dvJGmcL*f7yGziGI~xz~7Tn$4-8}?%3y?r?_y5k!oO5Q*z4v{; zG!Ip^ezI0|b#?Dj`UnYy1qKEN2R4z$qgAC+6rT(Z1~v`@28Ic0)s+C)yO`U%7^-IwgLt@`4^#B$_Qx&U$K{6Zyry?{C9ad8?%ahkh;h?5+G)l9_ z@M(Ws$?av*&z<~1!e1);Wto{;Bg-ZOp*?{2OSsXwy7XtG#)LuVI=3l?1}95($NIIt zA{38dL;%{i?{>Y+?h~3EM=LKOnO;-|Pi)kJmI9K6UD7 z$Ef*Q9RAlv$|yAih<-0`9k5| zFO#Rm_CT59)$T53NqsGxKH|f(JyVOti~@pXhGN?wO%v^fz`UhCtu4BX#ty@ExD@!# z05T7?-C%9o^vD|u6j5{PJ8laNQelQo%pqO6hSOQGYH>+JdOI1E(%`a0^lL;HT1{79 zra1r%Kw7SuE25;T?Ypge#Jxzfi;R)K=uw;lx@ww&85=HdA&RUc=Cy?E;Y>_4imC=4l-Dp*ofw0>mW_fXv#opY511$^rZl~#EnGK)l>HoLh<~xx zrJm_D#V-58jm_$EpZzmIVV@CItw7U!7L*`#P=d?=rb-xtDO-x3uPQmX|E%|M?vmP)-*mh;QW+l!p*9;*HiJ!H zZZV9XVz8czbN=%*Syrn`ao!JcRdo54&l;i$wCxngr2ANOKLY}Y!xJeI8qmvHiiyE8 z(M$8d!&3&0<)#gw=9VkqgPeA3q1^DRbrg4hZ0fS%uQemDxzx5lnqIQ`0f}^wgMYmr zGEzCnG^eeFVJAFsdw@nl1?Lb|PE&Dj)nMO_IB|Az+?sKN)UQBl2}MFld6zePQd%h* zm$V9PEUFuspWj_)a;EYZaWQMWTUs$na zB*|ixh-E^_w#$5D?4HX1(ct&?{`K85A;Ue-1r*+qC5i#voV bN?m5KkIV6wuXBQ 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/search/termination/QueryTimeout.docx b/src/java/com/twitter/search/common/search/termination/QueryTimeout.docx new file mode 100644 index 0000000000000000000000000000000000000000..a15461c793d05d9d9daa078311d9acd2fb77fd2a GIT binary patch literal 36958 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 F2LN!6A}{~| literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/search/termination/QueryTimeout.java b/src/java/com/twitter/search/common/search/termination/QueryTimeout.java deleted file mode 100644 index 52ffa2b54..000000000 --- a/src/java/com/twitter/search/common/search/termination/QueryTimeout.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.twitter.search.common.search.termination; - -import com.twitter.search.common.search.DocIdTracker; - -/** - * QueryTimeout provides a method for early termination of queries. - */ -public interface QueryTimeout { - /** - * Returns true if query processing should terminate, otherwise false. - */ - boolean shouldExit(); - - /** - * Register a DocIdTracker for the scope of the query, to determine the last fully-searched - * doc ID after early termination. - */ - void registerDocIdTracker(DocIdTracker docIdTracker); - - /** - * Return client ID of query. - */ - String getClientId(); -} diff --git a/src/java/com/twitter/search/common/search/termination/QueryTimeoutFactory.docx b/src/java/com/twitter/search/common/search/termination/QueryTimeoutFactory.docx new file mode 100644 index 0000000000000000000000000000000000000000..8cec84e459e6ceb58799fe06f2851032884cb9f7 GIT binary patch literal 37109 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%0D9v;fGqB?=I(V38_iQVVc6rSZ%*HHvEv^P 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 tracker.getTimeoutEndTimeWithReservation()) { - tracker.setEarlyTerminationState(EarlyTerminationState.TERMINATED_TIME_OUT_EXCEEDED); - shouldTerminateCounter.increment(); - return true; - } - return false; - } - - @Override - public void registerDocIdTracker(DocIdTracker docIdTracker) { - tracker.addDocIdTracker(docIdTracker); - } - - @Override - public String getClientId() { - return clientId; - } - - @Override - public int hashCode() { - return clientId.hashCode() * 13 + tracker.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof QueryTimeoutImpl)) { - return false; - } - - QueryTimeoutImpl queryTimeout = QueryTimeoutImpl.class.cast(obj); - return clientId.equals(queryTimeout.clientId) && tracker.equals(queryTimeout.tracker); - } -} diff --git a/src/java/com/twitter/search/common/search/termination/TerminationQuery.docx b/src/java/com/twitter/search/common/search/termination/TerminationQuery.docx new file mode 100644 index 0000000000000000000000000000000000000000..f5e172cb74ed5b99801e6dd0c1ca211153d2dd51 GIT binary patch literal 37340 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


    G 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%0A}iOo!mNF* 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/search/termination/TerminationQueryWeight.java b/src/java/com/twitter/search/common/search/termination/TerminationQueryWeight.java deleted file mode 100644 index 41aee0e7b..000000000 --- a/src/java/com/twitter/search/common/search/termination/TerminationQueryWeight.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.twitter.search.common.search.termination; - -import java.io.IOException; -import java.util.Set; - -import com.google.common.base.Preconditions; - -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.index.Term; -import org.apache.lucene.search.Explanation; -import org.apache.lucene.search.Scorer; -import org.apache.lucene.search.Weight; - -/** - * Weight implementation that adds termination support for an underlying query. - * Meant to be used in conjunction with {@link TerminationQuery}. - */ -public class TerminationQueryWeight extends Weight { - private final Weight inner; - private final QueryTimeout timeout; - - TerminationQueryWeight(TerminationQuery query, Weight inner, QueryTimeout timeout) { - super(query); - this.inner = inner; - this.timeout = Preconditions.checkNotNull(timeout); - } - - @Override - public Explanation explain(LeafReaderContext context, int doc) - throws IOException { - return inner.explain(context, doc); - } - - @Override - public Scorer scorer(LeafReaderContext context) throws IOException { - Scorer innerScorer = inner.scorer(context); - if (innerScorer != null) { - return new TerminationQueryScorer(this, innerScorer, timeout); - } - - return null; - } - - @Override - public void extractTerms(Set terms) { - inner.extractTerms(terms); - } - - @Override - public boolean isCacheable(LeafReaderContext ctx) { - return inner.isCacheable(ctx); - } -} diff --git a/src/java/com/twitter/search/common/util/earlybird/BUILD b/src/java/com/twitter/search/common/util/earlybird/BUILD deleted file mode 100644 index ac7f561d9..000000000 --- a/src/java/com/twitter/search/common/util/earlybird/BUILD +++ /dev/null @@ -1,32 +0,0 @@ -java_library( - sources = ["**/*.java"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/com/google/inject:guice", - "3rdparty/jvm/com/twitter/elephantbird:core", - "3rdparty/jvm/org/apache/hadoop:hadoop-client-default", - "3rdparty/jvm/org/apache/thrift:libthrift", - "3rdparty/jvm/org/apache/zookeeper:zookeeper-client", - "3rdparty/jvm/org/slf4j:slf4j-api", - "src/java/com/twitter/common/base", - "src/java/com/twitter/common/collections", - "src/java/com/twitter/search/common/encoding/features", - "src/java/com/twitter/search/common/logging", - "src/java/com/twitter/search/common/metrics", - "src/java/com/twitter/search/common/relevance:ranking", - "src/java/com/twitter/search/common/relevance:text", - "src/java/com/twitter/search/common/relevance/features", - "src/java/com/twitter/search/common/runtime", - "src/java/com/twitter/search/common/schema/base", - "src/java/com/twitter/search/common/schema/earlybird", - "src/thrift/com/twitter/search:earlybird-java", - "src/thrift/com/twitter/search/adaptive:adaptive-results-java", - "src/thrift/com/twitter/search/common:constants-java", - "src/thrift/com/twitter/search/common:indexing-java", - "src/thrift/com/twitter/search/common:query-java", - "src/thrift/com/twitter/search/common:ranking-java", - "util/util-core:scala", - ], -) diff --git a/src/java/com/twitter/search/common/util/earlybird/BUILD.docx b/src/java/com/twitter/search/common/util/earlybird/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..52e60076118219eaef1f9c099d4b93cd2900d7e8 GIT binary patch literal 37039 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/earlybird/EarlybirdResponseMergeUtil.java b/src/java/com/twitter/search/common/util/earlybird/EarlybirdResponseMergeUtil.java deleted file mode 100644 index c41003e7d..000000000 --- a/src/java/com/twitter/search/common/util/earlybird/EarlybirdResponseMergeUtil.java +++ /dev/null @@ -1,269 +0,0 @@ -package com.twitter.search.common.util.earlybird; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ExecutionException; - -import com.google.common.base.Preconditions; -import com.google.common.cache.LoadingCache; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Lists; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.collections.Pair; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdResponseCode; -import com.twitter.search.earlybird.thrift.ThriftSearchQuery; -import com.twitter.search.earlybird.thrift.ThriftSearchRankingMode; -import com.twitter.search.earlybird.thrift.ThriftSearchResult; -import com.twitter.search.earlybird.thrift.ThriftTweetSource; - -/** - * Utility methods to merge EarlybirdResponses. - */ -public final class EarlybirdResponseMergeUtil { - private static final Logger LOG = LoggerFactory.getLogger(EarlybirdResponseMergeUtil.class); - - private static final String INVALID_RESPONSE_STATS_PREFIX = "invalid_response_stats_"; - - // Stats for invalid earlybird response - private static final ImmutableMap ERROR_EXCEPTIONS; - - public static final SearchCounter NULL_RESPONSE_COUNTER = - SearchCounter.export(INVALID_RESPONSE_STATS_PREFIX + "null_response"); - public static final SearchCounter SEARCH_RESULTS_NOT_SET_COUNTER = - SearchCounter.export(INVALID_RESPONSE_STATS_PREFIX + "search_results_not_set"); - public static final SearchCounter SEARCH_RESULTS_WITH_RESULTS_NOT_SET_COUNTER = - SearchCounter.export(INVALID_RESPONSE_STATS_PREFIX + "search_results_with_results_not_set"); - public static final SearchCounter MAX_SEARCHED_STATUS_ID_NOT_SET_COUNTER = - SearchCounter.export(INVALID_RESPONSE_STATS_PREFIX + "max_searched_status_id_not_set"); - public static final SearchCounter MIN_SEARCHED_STATUS_ID_NOT_SET_COUNTER = - SearchCounter.export(INVALID_RESPONSE_STATS_PREFIX + "min_searched_status_id_not_set"); - - static { - ImmutableMap.Builder builder = ImmutableMap.builder(); - - for (EarlybirdResponseCode responseCode : EarlybirdResponseCode.values()) { - if (responseCode != EarlybirdResponseCode.SUCCESS) { - builder.put(responseCode, SearchCounter.export( - INVALID_RESPONSE_STATS_PREFIX + responseCode.name().toLowerCase())); - } - } - - ERROR_EXCEPTIONS = builder.build(); - } - - private EarlybirdResponseMergeUtil() { - } - - /** - * Tags the results in the given EarlybirdResponse with the given ThriftTweetSource and adds them - * to the given list of results. - * - * @param results The list of results to which the new results will be added. - * @param earlybirdResponse The EarlybirdResponse whose results will be added to {@code results}. - * @param tweetSource The ThriftTweetSource that will be used to mark all results in - * {@code earlybirdResponse}. - * @return {@code false} if {@code earlybirdResponse} is {@code null} or doesn't have any results; - * {@code true}, otherwise. - */ - public static boolean addResultsToList(List results, - EarlybirdResponse earlybirdResponse, - ThriftTweetSource tweetSource) { - return EarlybirdResponseUtil.hasResults(earlybirdResponse) - && addResultsToList(results, - earlybirdResponse.getSearchResults().getResults(), - tweetSource); - } - - /** - * Tags the results in the given list with the given ThriftTweetSource and adds them to the given - * list of results. - * - * @param results The list of results to which the new results will be added. - * @param resultsToAdd The list of results to add. - * @param tweetSource The ThriftTweetSource that will be used to mark all results in - * {@code resultsToAdd}. - * @return {@code false} if {@code results} is {@code null} or if {@code resultsToAdd} is - * {@code null} or doesn't have any results; {@code true}, otherwise. - */ - public static boolean addResultsToList(List results, - List resultsToAdd, - ThriftTweetSource tweetSource) { - Preconditions.checkNotNull(results); - if ((resultsToAdd == null) || resultsToAdd.isEmpty()) { - return false; - } - - markWithTweetSource(resultsToAdd, tweetSource); - - results.addAll(resultsToAdd); - return true; - } - - /** - * Distinct the input ThriftSearchResult by its status id. If there are duplicates, the first - * instance of the duplicates is returned in the distinct result. If the distinct result is the - * same as the input result, the initial input result is returned; otherwise, the distinct result - * is returned. - * - * @param results the input result - * @param dupsStats stats counter track duplicates source - * @return the input result if there is no duplicate; otherwise, return the distinct result - */ - public static List distinctByStatusId( - List results, - LoadingCache, SearchCounter> dupsStats) { - Map seenStatusIdToSourceMap = new HashMap<>(); - List distinctResults = Lists.newArrayListWithCapacity(results.size()); - for (ThriftSearchResult result : results) { - if (seenStatusIdToSourceMap.containsKey(result.getId())) { - ThriftTweetSource source1 = seenStatusIdToSourceMap.get(result.getId()); - ThriftTweetSource source2 = result.getTweetSource(); - if (source1 != null && source2 != null) { - try { - dupsStats.get(Pair.of(source1, source2)).increment(); - } catch (ExecutionException e) { - LOG.warn("Could not increment stat for duplicate results from clusters " + source1 - + " and " + source2, e); - } - } - } else { - distinctResults.add(result); - seenStatusIdToSourceMap.put(result.getId(), result.getTweetSource()); - } - } - return results.size() == distinctResults.size() ? results : distinctResults; - } - - /** - * Tags the given results with the given ThriftTweetSource. - * - * @param results The results to be tagged. - * @param tweetSource The ThriftTweetSource to be used to tag the given results. - */ - public static void markWithTweetSource(List results, - ThriftTweetSource tweetSource) { - if (results != null) { - for (ThriftSearchResult result : results) { - result.setTweetSource(tweetSource); - } - } - } - - /** - * Check if an Earlybird response is valid - */ - public static boolean isValidResponse(final EarlybirdResponse response) { - if (response == null) { - NULL_RESPONSE_COUNTER.increment(); - return false; - } - - if (!EarlybirdResponseUtil.isSuccessfulResponse(response)) { - return false; - } - - if (!response.isSetSearchResults()) { - SEARCH_RESULTS_NOT_SET_COUNTER.increment(); - return true; - } - - if (!response.getSearchResults().isSetResults()) { - SEARCH_RESULTS_WITH_RESULTS_NOT_SET_COUNTER.increment(); - } - - // In earlybird, when earlybird terminated, e.g., time out, complex queries - we don't set the - // min/max searched status id. - boolean isEarlyTerminated = response.isSetEarlyTerminationInfo() - && response.getEarlyTerminationInfo().isEarlyTerminated(); - - if (!isEarlyTerminated && !response.getSearchResults().isSetMinSearchedStatusID()) { - MIN_SEARCHED_STATUS_ID_NOT_SET_COUNTER.increment(); - } - - if (!isEarlyTerminated && !response.getSearchResults().isSetMaxSearchedStatusID()) { - MAX_SEARCHED_STATUS_ID_NOT_SET_COUNTER.increment(); - } - - return true; - } - - /** - * For invalid successful Earlybird Response, return a failed response with debug msg. - */ - public static EarlybirdResponse transformInvalidResponse(final EarlybirdResponse response, - final String debugMsg) { - if (response == null) { - return failedEarlybirdResponse(EarlybirdResponseCode.PERSISTENT_ERROR, - debugMsg + ", msg: null response from downstream"); - } - Preconditions.checkState(response.getResponseCode() != EarlybirdResponseCode.SUCCESS); - - EarlybirdResponseCode newResponseCode; - EarlybirdResponseCode responseCode = response.getResponseCode(); - switch (responseCode) { - case TIER_SKIPPED: - ERROR_EXCEPTIONS.get(responseCode).increment(); - return response; - case REQUEST_BLOCKED_ERROR: - case CLIENT_ERROR: - case SERVER_TIMEOUT_ERROR: - case QUOTA_EXCEEDED_ERROR: - case CLIENT_CANCEL_ERROR: - case TOO_MANY_PARTITIONS_FAILED_ERROR: - ERROR_EXCEPTIONS.get(responseCode).increment(); - newResponseCode = responseCode; - break; - default: - ERROR_EXCEPTIONS.get(responseCode).increment(); - newResponseCode = EarlybirdResponseCode.PERSISTENT_ERROR; - } - - String newDebugMsg = debugMsg + ", downstream response code: " + responseCode - + (response.isSetDebugString() ? ", downstream msg: " + response.getDebugString() : ""); - - - return failedEarlybirdResponse(newResponseCode, newDebugMsg); - } - - /** - * Create a new EarlybirdResponse with debug msg - */ - public static EarlybirdResponse failedEarlybirdResponse(final EarlybirdResponseCode responseCode, - final String debugMsg) { - EarlybirdResponse failedResponse = new EarlybirdResponse(); - failedResponse.setResponseCode(responseCode); - failedResponse.setDebugString(debugMsg); - return failedResponse; - } - - /** - * Returns the number of results to keep as part of merge-collection. Recency mode should ignore - * relevance options. In particular, the flag returnAllResults inside relevance options. - */ - public static int computeNumResultsToKeep(EarlybirdRequest request) { - ThriftSearchQuery searchQuery = request.getSearchQuery(); - - if (searchQuery.getRankingMode() != ThriftSearchRankingMode.RECENCY - && searchQuery.isSetRelevanceOptions() - && searchQuery.getRelevanceOptions().isReturnAllResults()) { - return Integer.MAX_VALUE; - } - - if (request.isSetNumResultsToReturnAtRoot()) { - return request.getNumResultsToReturnAtRoot(); - } - - if (searchQuery.isSetCollectorParams()) { - return searchQuery.getCollectorParams().getNumResultsToReturn(); - } - - return searchQuery.getNumResults(); - } -} diff --git a/src/java/com/twitter/search/common/util/earlybird/EarlybirdResponseUtil.docx b/src/java/com/twitter/search/common/util/earlybird/EarlybirdResponseUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..3aff400adc218f3d0a1ca607705a3202ea647aa6 GIT binary patch literal 38837 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 G_U-@bI?BWV literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/earlybird/EarlybirdResponseUtil.java b/src/java/com/twitter/search/common/util/earlybird/EarlybirdResponseUtil.java deleted file mode 100644 index 51c81edfa..000000000 --- a/src/java/com/twitter/search/common/util/earlybird/EarlybirdResponseUtil.java +++ /dev/null @@ -1,204 +0,0 @@ -package com.twitter.search.common.util.earlybird; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import com.google.common.base.Preconditions; - -import com.twitter.search.adaptive.adaptive_results.thriftjava.TweetSource; -import com.twitter.search.common.logging.ObjectKey; -import com.twitter.search.common.runtime.DebugManager; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdResponseCode; -import com.twitter.search.earlybird.thrift.ThriftSearchQuery; -import com.twitter.search.earlybird.thrift.ThriftSearchResult; -import com.twitter.search.earlybird.thrift.ThriftSearchResults; -import com.twitter.search.earlybird.thrift.ThriftTweetSource; - -/** Utility methods that work on EarlybirdResponses. */ -public final class EarlybirdResponseUtil { - private EarlybirdResponseUtil() { - } - - /** - * Returns the results in the given EarlybirdResponse. - * - * @param response The EarlybirdResponse. - * @return The results in the given EarlybirdResponse, or {@code null} if the response is - * {@code null} or the results are not set. - */ - public static ThriftSearchResults getResults(EarlybirdResponse response) { - if ((response == null) || !response.isSetSearchResults()) { - return null; - } - - return response.getSearchResults(); - } - - /** - * Determines if the given EarlybirdResponse has results. - * - * @param response The EarlybirdResponse. - * @return {@code true} if the given EarlybirdResponse has results; {@code false} otherwise. - */ - public static boolean hasResults(EarlybirdResponse response) { - ThriftSearchResults results = getResults(response); - return (results != null) && results.isSetResults() && !results.getResults().isEmpty(); - } - - /** - * Returns the number of results in the given EarlybirdResponse. - * - * @param response The EarlybirdResponse. - * @return The number of results in the given EarlybirdResponse. - */ - public static int getNumResults(EarlybirdResponse response) { - return hasResults(response) ? response.getSearchResults().getResultsSize() : 0; - } - - /** - * Determines the response is early-terminated. - * - * @param response The EarlybirdResponse. - * @return {@code true} if the response is early-terminated; {@code false} otherwise. - */ - public static boolean isEarlyTerminated(EarlybirdResponse response) { - Preconditions.checkNotNull(response); - return response.isSetEarlyTerminationInfo() - && response.getEarlyTerminationInfo().isEarlyTerminated(); - } - - /** - * Returns if the response should be considered failed for purposes of stats and logging. - */ - public static boolean responseConsideredFailed(EarlybirdResponseCode code) { - return code != EarlybirdResponseCode.SUCCESS - && code != EarlybirdResponseCode.REQUEST_BLOCKED_ERROR - && code != EarlybirdResponseCode.TIER_SKIPPED; - } - - /** - * Extract results from Earlybird response. - */ - public static List extractResultsFromEarlybirdResponse( - EarlybirdResponse response) { - return hasResults(response) - ? response.getSearchResults().getResults() : Collections.emptyList(); - } - - /** - * Log the Earlybird response as a candidate source. - */ - public static EarlybirdResponse debugLogAsCandidateSource( - EarlybirdResponse response, TweetSource tweetSource) { - List results = extractResultsFromEarlybirdResponse(response); - debugLogAsCandidateSourceHelper(results, tweetSource); - return response; - } - - /** - * Log a list of ThriftSearchResult as a candidate source. - */ - public static List debugLogAsCandidateSource( - List results, TweetSource tweetSource) { - debugLogAsCandidateSourceHelper(results, tweetSource); - return results; - } - - private static void debugLogAsCandidateSourceHelper( - List results, TweetSource tweetSource) { - // debug message for Earlybird relevance candidate source - List strIds = results - .stream() - .map(ThriftSearchResult::getId) - .map(Object::toString) - .collect(Collectors.toList()); - ObjectKey debugMsgKey = ObjectKey.createTweetCandidateSourceKey( - tweetSource.name()); - DebugManager.perObjectBasic( - debugMsgKey, - String.format("[%s][%s] results: %s", debugMsgKey.getType(), debugMsgKey.getId(), strIds)); - } - - /** - * Extract the real time response from an existing response - */ - public static EarlybirdResponse extractRealtimeResponse(EarlybirdResponse response) { - EarlybirdResponse realtimeResponse = response.deepCopy(); - if (EarlybirdResponseUtil.hasResults(response)) { - List realtimeResults = realtimeResponse.getSearchResults().getResults(); - realtimeResults.clear(); - for (ThriftSearchResult result : response.getSearchResults().getResults()) { - if (result.getTweetSource() == ThriftTweetSource.REALTIME_CLUSTER) { - realtimeResults.add(result); - } - } - } - - return realtimeResponse; - } - - /** - * Returns an EarlybirdResponse that should be returned by roots when a tier was skipped. - * - * @param minId The minSearchedStatusID to be set on the response. - * @param maxId The maxSearchedStatusID to be set on the response. - * @param debugMsg The debug message to be set on the response. - * @return A response that should be returned by roots when a tier was skipped. - */ - public static EarlybirdResponse tierSkippedRootResponse(long minId, long maxId, String debugMsg) { - return new EarlybirdResponse(EarlybirdResponseCode.SUCCESS, 0) - .setSearchResults(new ThriftSearchResults() - .setResults(new ArrayList<>()) - .setMinSearchedStatusID(minId) - .setMaxSearchedStatusID(maxId)) - .setDebugString(debugMsg); - } - - /** - * Determines if the given response is a success response. - * - * A response is considered successful if it's not null and has either a SUCCESS, TIER_SKIPPED or - * REQUEST_BLOCKED_ERROR response code. - * - * @param response The response to check. - * @return Whether the given response is successful or not. - */ - public static boolean isSuccessfulResponse(EarlybirdResponse response) { - return response != null - && (response.getResponseCode() == EarlybirdResponseCode.SUCCESS - || response.getResponseCode() == EarlybirdResponseCode.TIER_SKIPPED - || response.getResponseCode() == EarlybirdResponseCode.REQUEST_BLOCKED_ERROR); - } - - /** - * Finds all unexpected nullcast statuses within the given result. A nullcast status is - * unexpected iff: - * 1. the tweet is a nullcast tweet. - * 2. the tweet is NOT explicitly requested with {@link ThriftSearchQuery#searchStatusIds} - */ - public static Set findUnexpectedNullcastStatusIds( - ThriftSearchResults thriftSearchResults, EarlybirdRequest request) { - Set statusIds = new HashSet<>(); - for (ThriftSearchResult result : thriftSearchResults.getResults()) { - if (resultIsNullcast(result) && !isSearchStatusId(request, result.getId())) { - statusIds.add(result.getId()); - } - } - return statusIds; - } - - private static boolean isSearchStatusId(EarlybirdRequest request, long id) { - return request.getSearchQuery().isSetSearchStatusIds() - && request.getSearchQuery().getSearchStatusIds().contains(id); - } - - private static boolean resultIsNullcast(ThriftSearchResult result) { - return result.isSetMetadata() && result.getMetadata().isIsNullcast(); - } -} diff --git a/src/java/com/twitter/search/common/util/earlybird/FacetsResultsUtils.docx b/src/java/com/twitter/search/common/util/earlybird/FacetsResultsUtils.docx new file mode 100644 index 0000000000000000000000000000000000000000..7f45b870b71abf3962118d2ac0856c257ef0e0a9 GIT binary patch literal 42038 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/earlybird/FacetsResultsUtils.java b/src/java/com/twitter/search/common/util/earlybird/FacetsResultsUtils.java deleted file mode 100644 index 43d5732e4..000000000 --- a/src/java/com/twitter/search/common/util/earlybird/FacetsResultsUtils.java +++ /dev/null @@ -1,495 +0,0 @@ -package com.twitter.search.common.util.earlybird; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import com.google.common.collect.Lists; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.constants.thriftjava.ThriftLanguage; -import com.twitter.search.common.logging.DebugMessageBuilder; -import com.twitter.search.common.ranking.thriftjava.ThriftFacetFinalSortOrder; -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants.EarlybirdFieldConstant; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.ThriftFacetCount; -import com.twitter.search.earlybird.thrift.ThriftFacetCountMetadata; -import com.twitter.search.earlybird.thrift.ThriftFacetFieldRequest; -import com.twitter.search.earlybird.thrift.ThriftFacetFieldResults; -import com.twitter.search.earlybird.thrift.ThriftFacetRankingMode; -import com.twitter.search.earlybird.thrift.ThriftFacetRequest; -import com.twitter.search.earlybird.thrift.ThriftFacetResults; -import com.twitter.search.earlybird.thrift.ThriftTermResults; - -/** - * A utility class to provide some functions for facets results processing. - */ -public final class FacetsResultsUtils { - - private static final Logger LOG = LoggerFactory.getLogger(FacetsResultsUtils.class); - - private FacetsResultsUtils() { - } - - public static class FacetFieldInfo { - public ThriftFacetFieldRequest fieldRequest; - public int totalCounts; - public Map topFacets; - public List> languageHistogramEntries = Lists.newLinkedList(); - } - - // Only return top languages in the language histogram which sum up to at least this much - // ratio, here we get first 80 percentiles. - public static final double MIN_PERCENTAGE_SUM_REQUIRED = 0.8; - // if a language ratio is over this number, we already return. - public static final double MIN_PERCENTAGE = 0.01; - - /** - * Prepare facet fields with empty entries and check if we need termStats for filtering. - * Returns true if termStats filtering is needed (thus the termStats servie call). - * @param facetRequest The related facet request. - * @param facetFieldInfoMap The facet field info map to fill, a map from facet type to the facet - * fiels results info. - * @return {@code true} if termstats request is needed afterwards. - */ - public static boolean prepareFieldInfoMap( - ThriftFacetRequest facetRequest, - final Map facetFieldInfoMap) { - boolean termStatsFilteringMode = false; - - for (ThriftFacetFieldRequest fieldRequest : facetRequest.getFacetFields()) { - FacetsResultsUtils.FacetFieldInfo info = new FacetsResultsUtils.FacetFieldInfo(); - info.fieldRequest = fieldRequest; - facetFieldInfoMap.put(fieldRequest.getFieldName(), info); - if (fieldRequest.getRankingMode() == ThriftFacetRankingMode.FILTER_WITH_TERM_STATISTICS) { - termStatsFilteringMode = true; - } - } - - return termStatsFilteringMode; - } - - /** - * Extract information from one ThriftFacetResults into facetFieldInfoMap and userIDWhitelist. - * @param facetResults Related facets results. - * @param facetFieldInfoMap The facets field info map to fill, a map from facet type to the facet - * fiels results info. - * @param userIDWhitelist The user whitelist to fill. - */ - public static void fillFacetFieldInfo( - final ThriftFacetResults facetResults, - final Map facetFieldInfoMap, - final Set userIDWhitelist) { - - for (String facetField : facetResults.getFacetFields().keySet()) { - FacetsResultsUtils.FacetFieldInfo info = facetFieldInfoMap.get(facetField); - if (info.topFacets == null) { - info.topFacets = new HashMap<>(); - } - - ThriftFacetFieldResults results = facetResults.getFacetFields().get(facetField); - if (results.isSetLanguageHistogram()) { - info.languageHistogramEntries.addAll(results.getLanguageHistogram().entrySet()); - } - for (ThriftFacetCount newCount : results.getTopFacets()) { - ThriftFacetCount resultCount = info.topFacets.get(newCount.facetLabel); - if (resultCount == null) { - info.topFacets.put(newCount.facetLabel, new ThriftFacetCount(newCount)); - } else { - resultCount.setFacetCount(resultCount.facetCount + newCount.facetCount); - resultCount.setSimpleCount(resultCount.simpleCount + newCount.simpleCount); - resultCount.setWeightedCount(resultCount.weightedCount + newCount.weightedCount); - resultCount.setPenaltyCount(resultCount.penaltyCount + newCount.penaltyCount); - // this could pass the old metadata object back or a new merged one. - resultCount.setMetadata( - mergeFacetMetadata(resultCount.getMetadata(), newCount.getMetadata(), - userIDWhitelist)); - } - } - info.totalCounts += results.totalCount; - } - } - - /** - * Merge a metadata into an existing one. - * @param baseMetadata the metadata to merge into. - * @param metadataUpdate the new metadata to merge. - * @param userIDWhitelist user id whitelist to filter user id with. - * @return The updated metadata. - */ - public static ThriftFacetCountMetadata mergeFacetMetadata( - final ThriftFacetCountMetadata baseMetadata, - final ThriftFacetCountMetadata metadataUpdate, - final Set userIDWhitelist) { - ThriftFacetCountMetadata mergedMetadata = baseMetadata; - if (metadataUpdate != null) { - String mergedExplanation = null; - if (mergedMetadata != null) { - if (mergedMetadata.maxTweepCred < metadataUpdate.maxTweepCred) { - mergedMetadata.setMaxTweepCred(metadataUpdate.maxTweepCred); - } - - if (mergedMetadata.isSetExplanation()) { - mergedExplanation = mergedMetadata.getExplanation(); - if (metadataUpdate.isSetExplanation()) { - mergedExplanation += "\n" + metadataUpdate.getExplanation(); - } - } else if (metadataUpdate.isSetExplanation()) { - mergedExplanation = metadataUpdate.getExplanation(); - } - - if (mergedMetadata.getStatusId() == -1) { - if (LOG.isDebugEnabled()) { - LOG.debug("status id in facet count metadata is -1: " + mergedMetadata); - } - mergedMetadata = metadataUpdate; - } else if (metadataUpdate.getStatusId() != -1 - && metadataUpdate.getStatusId() < mergedMetadata.getStatusId()) { - // keep the oldest tweet, ie. the lowest status ID - mergedMetadata = metadataUpdate; - } else if (metadataUpdate.getStatusId() == mergedMetadata.getStatusId()) { - if (mergedMetadata.getTwitterUserId() == -1) { - // in this case we didn't find the user in a previous partition yet - // only update the user if the status id matches - mergedMetadata.setTwitterUserId(metadataUpdate.getTwitterUserId()); - mergedMetadata.setDontFilterUser(metadataUpdate.isDontFilterUser()); - } - if (!mergedMetadata.isSetStatusLanguage()) { - mergedMetadata.setStatusLanguage(metadataUpdate.getStatusLanguage()); - } - } - if (!mergedMetadata.isSetNativePhotoUrl() && metadataUpdate.isSetNativePhotoUrl()) { - mergedMetadata.setNativePhotoUrl(metadataUpdate.getNativePhotoUrl()); - } - } else { - mergedMetadata = metadataUpdate; - } - - // this will not set an explanation if neither oldMetadata nor metadataUpdate - // had an explanation - if (mergedExplanation != null) { - mergedMetadata.setExplanation(mergedExplanation); - } - - if (userIDWhitelist != null) { - // result must not be null now because of the if above - if (mergedMetadata.getTwitterUserId() != -1 && !mergedMetadata.isDontFilterUser()) { - mergedMetadata.setDontFilterUser( - userIDWhitelist.contains(mergedMetadata.getTwitterUserId())); - } - } - } - - return mergedMetadata; - } - - /** - * Appends all twimg results to the image results. Optionally resorts the image results if - * a comparator is passed in. - * Also computes the sums of totalCount, totalScore, totalPenalty. - */ - public static void mergeTwimgResults(ThriftFacetResults facetResults, - Comparator optionalSortComparator) { - if (facetResults == null || !facetResults.isSetFacetFields()) { - return; - } - - ThriftFacetFieldResults imageResults = - facetResults.getFacetFields().get(EarlybirdFieldConstant.IMAGES_FACET); - ThriftFacetFieldResults twimgResults = - facetResults.getFacetFields().remove(EarlybirdFieldConstant.TWIMG_FACET); - if (imageResults == null) { - if (twimgResults != null) { - facetResults.getFacetFields().put(EarlybirdFieldConstant.IMAGES_FACET, twimgResults); - } - return; - } - - if (twimgResults != null) { - imageResults.setTotalCount(imageResults.getTotalCount() + twimgResults.getTotalCount()); - imageResults.setTotalPenalty(imageResults.getTotalPenalty() + twimgResults.getTotalPenalty()); - imageResults.setTotalScore(imageResults.getTotalScore() + twimgResults.getTotalScore()); - for (ThriftFacetCount count : twimgResults.getTopFacets()) { - imageResults.addToTopFacets(count); - } - if (optionalSortComparator != null) { - Collections.sort(imageResults.topFacets, optionalSortComparator); - } - } - } - - /** - * Dedup twimg facets. - * - * Twimg facet uses the status ID as the facet label, instead of the twimg URL, a.k.a. - * native photo URL. It is possible to have the same twimg URL appearing in two different - * facet label (RT style retweet? copy & paste the twimg URL?). Therefore, to dedup twimg - * facet correctly, we need to look at ThriftFacetCount.metadata.nativePhotoUrl - * - * @param dedupSet A set holding the native URLs from the twimg facetFieldResults. By having - * the caller passing in the set, it allows the caller to dedup the facet - * across different ThriftFacetFieldResults. - * @param facetFieldResults The twimg facet field results to be debupped - * @param debugMessageBuilder - */ - public static void dedupTwimgFacet(Set dedupSet, - ThriftFacetFieldResults facetFieldResults, - DebugMessageBuilder debugMessageBuilder) { - if (facetFieldResults == null || facetFieldResults.getTopFacets() == null) { - return; - } - - Iterator iterator = facetFieldResults.getTopFacetsIterator(); - - while (iterator.hasNext()) { - ThriftFacetCount count = iterator.next(); - if (count.isSetMetadata() && count.getMetadata().isSetNativePhotoUrl()) { - String nativeUrl = count.getMetadata().getNativePhotoUrl(); - - if (dedupSet.contains(nativeUrl)) { - iterator.remove(); - debugMessageBuilder.detailed("dedupTwimgFacet removed %s", nativeUrl); - } else { - dedupSet.add(nativeUrl); - } - } - } - - - } - - private static final class LanguageCount { - private final ThriftLanguage lang; - private final double count; - private LanguageCount(ThriftLanguage lang, double count) { - this.lang = lang; - this.count = count; - } - } - - /** - * Calculate the top languages and store them in the results. - */ - public static void fillTopLanguages(FacetsResultsUtils.FacetFieldInfo info, - final ThriftFacetFieldResults results) { - double sumForLanguage = 0.0; - double[] sums = new double[ThriftLanguage.values().length]; - for (Map.Entry entry : info.languageHistogramEntries) { - sumForLanguage += entry.getValue(); - if (entry.getKey() == null) { - // EB might be setting null key for unknown language. SEARCH-1294 - continue; - } - sums[entry.getKey().getValue()] += entry.getValue(); - } - if (sumForLanguage == 0.0) { - return; - } - List langCounts = new ArrayList<>(ThriftLanguage.values().length); - for (int i = 0; i < sums.length; i++) { - if (sums[i] > 0.0) { - // ThriftLanguage.findByValue() might return null, which should fall back to UNKNOWN. - ThriftLanguage lang = ThriftLanguage.findByValue(i); - lang = lang == null ? ThriftLanguage.UNKNOWN : lang; - langCounts.add(new LanguageCount(lang, sums[i])); - } - } - Collections.sort(langCounts, (left, right) -> Double.compare(right.count, left.count)); - double percentageSum = 0.0; - Map languageHistogramMap = - new HashMap<>(langCounts.size()); - int numAdded = 0; - for (LanguageCount langCount : langCounts) { - if (langCount.count == 0.0) { - break; - } - double percentage = langCount.count / sumForLanguage; - if (percentageSum > MIN_PERCENTAGE_SUM_REQUIRED - && percentage < MIN_PERCENTAGE && numAdded >= 3) { - break; - } - languageHistogramMap.put(langCount.lang, percentage); - percentageSum += percentage; - numAdded++; - } - results.setLanguageHistogram(languageHistogramMap); - } - - /** - * Replace "p.twimg.com/" part of the native photo (twimg) URL with "pbs.twimg.com/media/". - * We need to do this because of blobstore and it's suppose to be a temporary measure. This - * code should be removed once we verified that all native photo URL being sent to Search - * are prefixed with "pbs.twimg.com/media/" and no native photo URL in our index contains - * "p.twimg.com/" - * - * Please see SEARCH-783 and EVENTS-539 for more details. - * - * @param response response containing the facet results - */ - public static void fixNativePhotoUrl(EarlybirdResponse response) { - if (response == null - || !response.isSetFacetResults() - || !response.getFacetResults().isSetFacetFields()) { - return; - } - - for (Map.Entry facetMapEntry - : response.getFacetResults().getFacetFields().entrySet()) { - final String facetResultField = facetMapEntry.getKey(); - - if (EarlybirdFieldConstant.TWIMG_FACET.equals(facetResultField) - || EarlybirdFieldConstant.IMAGES_FACET.equals(facetResultField)) { - ThriftFacetFieldResults facetFieldResults = facetMapEntry.getValue(); - for (ThriftFacetCount facetCount : facetFieldResults.getTopFacets()) { - replacePhotoUrl(facetCount.getMetadata()); - } - } - } - } - - /** - * Replace "p.twimg.com/" part of the native photo (twimg) URL with "pbs.twimg.com/media/". - * We need to do this because of blobstore and it's suppose to be a temporary measure. This - * code should be removed once we verified that all native photo URL being sent to Search - * are prefixed with "pbs.twimg.com/media/" and no native photo URL in our index contains - * "p.twimg.com/" - * - * Please see SEARCH-783 and EVENTS-539 for more details. - * - * @param termResultsCollection collection of ThriftTermResults containing the native photo URL - */ - public static void fixNativePhotoUrl(Collection termResultsCollection) { - if (termResultsCollection == null) { - return; - } - - for (ThriftTermResults termResults : termResultsCollection) { - if (!termResults.isSetMetadata()) { - continue; - } - replacePhotoUrl(termResults.getMetadata()); - } - } - - /** - * Helper function for fixNativePhotoUrl() - */ - private static void replacePhotoUrl(ThriftFacetCountMetadata metadata) { - if (metadata != null - && metadata.isSetNativePhotoUrl()) { - String nativePhotoUrl = metadata.getNativePhotoUrl(); - nativePhotoUrl = nativePhotoUrl.replace("://p.twimg.com/", "://pbs.twimg.com/media/"); - metadata.setNativePhotoUrl(nativePhotoUrl); - } - } - - /** - * Deepcopy of an EarlybirdResponse without explanation - */ - public static EarlybirdResponse deepCopyWithoutExplanation(EarlybirdResponse facetsResponse) { - if (facetsResponse == null) { - return null; - } else if (!facetsResponse.isSetFacetResults() - || facetsResponse.getFacetResults().getFacetFieldsSize() == 0) { - return facetsResponse.deepCopy(); - } - EarlybirdResponse copy = facetsResponse.deepCopy(); - for (Map.Entry entry - : copy.getFacetResults().getFacetFields().entrySet()) { - if (entry.getValue().getTopFacetsSize() > 0) { - for (ThriftFacetCount fc : entry.getValue().getTopFacets()) { - fc.getMetadata().unsetExplanation(); - } - } - } - return copy; - } - - /** - * Returns a comparator used to compare facet counts by calling - * getFacetCountComparator(ThriftFacetFinalSortOrder). The sort order is determined by - * the facetRankingOptions on the facet request. - */ - public static Comparator getFacetCountComparator( - ThriftFacetRequest facetRequest) { - - ThriftFacetFinalSortOrder sortOrder = ThriftFacetFinalSortOrder.SCORE; - - if (facetRequest.isSetFacetRankingOptions() - && facetRequest.getFacetRankingOptions().isSetFinalSortOrder()) { - sortOrder = facetRequest.getFacetRankingOptions().getFinalSortOrder(); - } - - return getFacetCountComparator(sortOrder); - } - - /** - * Returns a comparator using the specified order. - */ - public static Comparator getFacetCountComparator( - ThriftFacetFinalSortOrder sortOrder) { - - switch (sortOrder) { - case SIMPLE_COUNT: return SIMPLE_COUNT_COMPARATOR; - case SCORE: return SCORE_COMPARATOR; - case CREATED_AT: return CREATED_AT_COMPARATOR; - case WEIGHTED_COUNT: return WEIGHTED_COUNT_COMPARATOR; - default: return SCORE_COMPARATOR; - } - } - - private static final Comparator SIMPLE_COUNT_COMPARATOR = - (count1, count2) -> { - if (count1.simpleCount > count2.simpleCount) { - return 1; - } else if (count1.simpleCount < count2.simpleCount) { - return -1; - } - - return count1.facetLabel.compareTo(count2.facetLabel); - }; - - private static final Comparator WEIGHTED_COUNT_COMPARATOR = - (count1, count2) -> { - if (count1.weightedCount > count2.weightedCount) { - return 1; - } else if (count1.weightedCount < count2.weightedCount) { - return -1; - } - - return SIMPLE_COUNT_COMPARATOR.compare(count1, count2); - }; - - private static final Comparator SCORE_COMPARATOR = - (count1, count2) -> { - if (count1.score > count2.score) { - return 1; - } else if (count1.score < count2.score) { - return -1; - } - return SIMPLE_COUNT_COMPARATOR.compare(count1, count2); - }; - - private static final Comparator CREATED_AT_COMPARATOR = - (count1, count2) -> { - if (count1.isSetMetadata() && count1.getMetadata().isSetCreated_at() - && count2.isSetMetadata() && count2.getMetadata().isSetCreated_at()) { - // more recent items have higher created_at values - if (count1.getMetadata().getCreated_at() > count2.getMetadata().getCreated_at()) { - return 1; - } else if (count1.getMetadata().getCreated_at() < count2.getMetadata().getCreated_at()) { - return -1; - } - } - - return SCORE_COMPARATOR.compare(count1, count2); - }; -} diff --git a/src/java/com/twitter/search/common/util/earlybird/ResponseMergerUtils.docx b/src/java/com/twitter/search/common/util/earlybird/ResponseMergerUtils.docx new file mode 100644 index 0000000000000000000000000000000000000000..c1ceb98cc126164d0e29e22eb42ced71ab2b3599 GIT binary patch literal 37221 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 =)>-|t~@25_-JM++l4SKBh% zfrzzAu;k7{8?k0e@(wnLki+a7;xrT!tdQ?r!Le`G(3Dqdm1HRuePP=7o+J^^i;}{l^(+H0XTn zI+y$goD{?fX@V&W_7>*>PYN1pJ6dX?>My_X+7BJWJH!&?v*5ym)XDrOt)N=fhL!|C%Y_NTw@JG8PW+Bk7nG@qJD}Rzy3l$yXMW7>fHzi@!)!+#~yC z1!U3TLh>$)0J2pr54RO6;CCR&SmOB}l?0PN?{4uLLsl|i<*C|PBzpVFfot{;s#i6oG z?Pc&x8NG3FkquNC*PAoc2xM2zZ(XTV^Yb9=Df#@b#LR@ixz;v9E^LWGSs*?4QO{C) zLH|03E=o;HA)CfmxDN|qlGDaf;SA8hhgrJG1gQ2$bcB)Pr>3c79Dlj;u3|1Xi@FN1PlvtfTk32z^B!(>rt8M)s?dh z4beaxvO#yQocdlOvuR9x&7u)WGQ)T`tAqxI1TuLvP1C*4bz?nsQfEmREsbMyv73Hx z#`G8c{bYz|Vm4ZbYq@+(3I_h-EejeQT89D%gSa2M_5R|(G6)!!R_ZLxBpK};uD>|& zY>vD{j7*v)G~$oUnmq|j(CF1dM#8d^qSl@ylLVH*8&wck5*we=#arfqNTw*zg9)=1 znl8goSmn3zFq)=%`}qu!MN$F~SXyl;3=PZ-%6#L2R}5@7gLM>{1pgsa#GmD^^3+K_ zr3>=SJl^gh`RON_P|K|N8Zj*h(Bn$?RF!)aUl!rSBEAOdX4dFy|bbE5+uT&hQk4%(F zE;q-X>sH9Fbfb6~n>n2AvZd)(ZL~lCJYam_b<#;JX0SmT;6kOw!#O4iURO5j;(j;i zCT)8JeEES{e=v1%HMkq){8L$@7VD(w1R*Jf5+@LQC|w~gLeTLwuyAz^8>f@L-YNLl zXfEqz3Xz{W9?LT?nCitb3zB)UGdeB<1L0V7%G^CV>V=Au_;Qg@1|Kqt*Aqz=3L^VzF`9}X{fIJJ9@0jc{kK@erp(dSOhI1oB;$NhQ=W^s%tK4u zfc1EnKIKQs7k`H3wV{=PI6?vIHKjG7g@qM7ZArxBt#Yoow_9PPh89Vw?HE`-tRRzm zhqB%T%r-D<`Ptssd=f1tbyb`4A7a6Y&z1dDqpOkh4Q%f>;xZR%fxBEe(ui!vubVE+HmW$1GNF3YliYV ze=QT$p6?(%Lr*PqcG-<*d21$P)E+y=yj=yUu^99Q8$Uo7|NDDQ{P7Fun!F zb!EPd208gmHEF>GeChW-zP4^CF)t z<=5NINLzZi@6rA?uukE756=8@a#X+=sT3F~wRLX5eP1>6f4ET3k4t4^*UQq~+Vb zc+*U~()oY(+p|Hb@8?}EnG*j9-7*=Wf#HXV#>%*aOS;-9(yxGgLHZmPJw#?)&ekA( zf&zS0@;Gi(9s%K+Cc!*Ds_{9seUMQ07NEe1tW4huv*xvihG-%Bwv~n_MrMG0q7f8- z#p7B;5|wd!Vm`KIvw-mw`a}s#scZDqVHU>BH~sFN*fi-uiYG*XsL`%T*{O?RW$ZKw zSF0O<)qTpzVHLE%WyIj4Xc;}ZaU1OL>?etk-PVWh=7fj{T}+B)^M0~nclTdSyMFWL zxtIVufc}O90YUq>W9Gnyx2i_Qwtuw&-Ad`V|IR`%^5a_sO=^~mZDKP9D&0s((COkcIL|BkDGJa47+hCTDR5HWkJ)GAkB2ux?bfdh z4OC)ubZtNS@EjQiz*&pD5BZ5-x+gZQ(ov5#TbQ*M&1u@yQ`)mDso=f6 zs@yhR^)RDg2P>$I2cmJ{#_PCJoe$X^#FZRL6`M#D$aCbj+2GM_G<+@K3LBSn;It#ma2V*`Fhn z>0S6C&cei7h69c>QL)jG$@Vu!#_SC=)n{fhxOmM=-hD=($YhFDqgb&cgbNiM4>$4- zO*${u`*CE&A3V9}EJ@8dGO8)EER|49Dgtk1G7Y6uD;Z8BVxlt2K-a4JXXxfy_r5@0 zO_e)n1T2-->-h)so(1aIkCY&&_)7uDc9u|XdApJiO}$bWzRM7aAUo&#Am zi-!GxK>5_l+R0NuWu+!^Q5+q%FqTbiS;t_RZ7)5CWI5Ig_ucs2h4rJkt=C|xH&@VJ z4k7$?_KpfoI=pHEpT&beZp-Q}MW{u8SJlw*us`KqFhymws&3x_5{!Ae{>Ra`@ENz) z)E=sfQcw9BiHdKx|J49BNrbFz1lW7IlMVy~^WUeWtEHKp8S`I9*1tNOY0EooaN+d) z)IjMtTzc7Xi|7!)T)SE+K}2g6jcpRsv87QWIiu)7ymIREGuo;fgu84Rtg9A=zg&3B zuqSLmIyJzdU5}tqay}lG|4s=#O7<+^-D{wHvwRUs1o}J7N$%}Q`$*XXkz}U?>1p(; z*(>mUcm;14>;;KpN%E?hcHd^TR<8}N76#h`MyhSLwy)&~4po;nxs5TDv{wxLaIziM zj0oc{K3Wzj5ISLnyx6*ZlfeV!H`Yyl==YVad6*3t1dL+0D=-k3ccOUWo?UAOf@au_ z=E3YlDf$d#4IZ!LXO&-5rCqW(YoSGU<8OqXEW)7!U=Yrv)Zf*4UmImuC8f#ZF~k@O z=?$ur%A15=dtST}%AaC?*SFh9-I;r>OT8hQ#pD`YNDi@@s z;5|c|(6dJeBT=6cbGPFZVaugQnxG(V4(B(ggF4EM=TNG~CWmw|j zW|#}gf82RC+80?-S?UJ7b$g>>HlGPElAy5^9GbJr$~H79&({_%No9R;B8w?w#xgB{ zCRScay=dBk#aM$j#>+!(qO5_3C1UfY5NU(!A4*utn!Z0t()8OvfG)86Mj)(Z9JA8% z?fGCMb+*4!l3D-L%hB?|Xf4s3E<`Wvn-kjm@o(mLpBLI+7tdcEa=e>C#uEE>d|xhG z4SIF`P^5=0YIEOi_t!5R1V8RWsm0q6p+coMLA=5O`A;W+Se#x*ZduO6|3y&f;hIN0Fqz=eR<$c^`y}5G*hRUYl$&ASQAX5GL5Gz-{$g*90%o_YDG;uJ}bAul4W4q z_l5iE*Q?KwOOM&nYM;q%s@$tppV zwfO*?3#L+ch}<|#!O)iqQghGD^RH_{>b>`-ow6IY$!~y`_|+Z3w?4kDkR~IehSJ{~ zpM^Ur-Dq8ILg$yb_J(#O*!*X`zI!O}|FE(sD`l*bsr+H;xf*fpd*8V=?>4LBx`A)> z`O9!p-iEG&pKiv;+2nfRyrsZlBy)j3eXsTRq$tgB0(KlEFo|Jm&9+V^gd#ai`sTqj zn}(r6l04n*T*hy724xQ&r*9Z3DM;9y4?iXOh%t1Q!dI3jj)U_H?!T$*rzCZ?(=9En zP!~&F-C30@h2tnl#mXF{c^>|{GB`txE*g-_emP86NRgtIZ^W~rZbU;nEMt*}d=|)> zb&k?-<qXm=hV*O0DxL{?bxd#!{X-_p_;>x{K!fK!8KpR>TT7mg|0CU`z9M85e`$ zV4hv{A)%ztBUn4JMm1_e{Z5N*|H8cWCFJPOc>CXOE(N9F)wbFxHcweK=nGI$k@90( zVLZCYEljtFB^6xf6O@(BYF5kIOWMgl)gn*FQT8l3KDV$)co@?)yK$J%b-I$FY`A5E zvrwS7fET-+EAjEAO@eE=z4w{=m(Q}PG2a}6rTF}CD0A8SECq%=0|%h*-4=6Qj|w|d z@aoUIn|GX$sBF-?BK*!&+K{zz{b0vkNjN6SNo@k7qYuD=sNiX0oCuON>x9>}{h8ji zn5LSf4$_cD3l8%6?M6uSclii!D)s)Xt?Z$i+~qE-p(dBn9$Qe$@YME){i@8edmaq@ znr)(7@YMIuS~M(a7GY1QxMjxMs`d?j{0@Nij>ZNV#$e%yRtQAL23mTtO$WU!~f9}{;We1Vbhc$ylD2De*zo2XqfjN^!!`*bA|%#)MW&a%h{JDVPZYC zoTDs|tcG?($o;ZKMahZ^jGh+DFON)5q#D-dSZ(ZhS8zl3gmKw5QcYsCT+@%r>CBOK zD3}eYq0-4?Olc?(h_c0vnL}C(+7(ip=D~7PG>#W3O>Tm`>5x)ytS*OdUUSFwix2V* z>-azR(ivc#V|m_c^?pJBGkeYP<6A8Se&9g?vsZNBZxc5cR|h*yJ6mQeS2Mf6KK81k z>fr`hFhG9#h>s_Xm+*yQEGnZ=qvpfaNWXlCO6W=`GXB^O>)mz#>Nt9AC;tvc%)tj} z6_<8#g!8(R01*GYKNh}63BCvxfzGNyu~e~;)N*Tcha^=1$EF(}$2ibs#ae<;4+67r zEJr-84ugFgbHr&1K(81Mh_uy6@uF(xz>{P?wxaA^_f;pvQAB-Vs)6D$x~gW(*`f@t zZG+1+bq-oy|1VvF6GzM4Kt0qzT}1!T^>=sJ|ET+`HEi^3Jup8AZ@a&Fteb^ z*L*?)TmS4xS{XOn5>|}fAuF}rQ=kHl%eGDU@zcf57rC-cgerEvtfV5@@6_?ZiR;{A z&DTDeq{XR;UV`NuwCLr!@Ke8ayQ$@ExR?kTZaYhJx4_UG47hw zEXupOyqa8jr@GMF>KoWU2ei3UPJRz4*cd1r=O4oVNLF-qaCG@=RI}si?E_gb#J~0o z-0hFE=0R9ugh_$W+APcH5xV{eYqn@Xt zfKjdF&kxD!>gD7hALFax6SRWlZ4aazCF61Zvg0&by$HpGL~%!SlsiZ z^soCAvS0tTN{gEd4YvW-WWs^j-G9~`_HK5@X3oH>%%ALTT64>Op9iOVr&KszLbo|Q zkpqIGsX$m=FIs}U`5uG{r|vv=jFn~cTK39hn!YMqs4RkA4(-ciG`jB&@4GkP74p~X zO<=+{QaFYS*L9#y>5eGFvFy~!!TZnDQ>x3K%CPHbXftzdzQR@?d+)Kczfm_9AkpY* zOKCLuzEj_>eV0m)vgMEF4jXt#+1I>Dsy(!uDxcP%Cm{El9bWiCxNE8rzRN13GRz)q z3$0R_SNO`t1$S__;FhJhWuorXRU1YfR=yhn4_DlQX%mc6yKyMtM5VY7Nu^1|p`kc` zIkKW&r_}GHvYgLKuGVKMDV;ub;e7u&GG8oAHe!mDoydXKn2mlGE37PlSC*TH_k1Nu z9+I0<`YJ?$t5d;mXXYW@&x?})mYLQ!J&yJ!n8HQysH$>Q43NG2xv|D247~_Aze`Pbp#vL1%jbzA~6j@G1XPS<1$FTgFTw9(=DT#?-TS!WGHA zyQ--*J<{&04+F3^-E(`_-8XXjV$t0zxM=U^^AFdNBuMFVC&V zRE+>;yTMLhsSY-euck5;3f8^9M?3vcm@~opv@^|j*R03=8>R<}%AotW+6n4diR0o_ zIK%tX4sPddvzo;#ObwD;O-Qs}Hg96zx2fN2mqBs{G0ew>vNjZDpW+Q(r~b&_{(%4Ij8!nUV$lr=0un?50)h>kv4D-c z|C*+ND=*;nX>Vj@%Vh0nW^tu%4&rm~V4vVPiID_8*GE6WKjRn_ zF<|A=r)E^x-SSim+7#o3qHAU)F+PsX&C zGe)5(mKbLGZ9TEnZkiIstduRA;`K)Pl-9#Yp!h^~EYT8yYGEhmGDrDcW|`+O0HrE= z_)yYQcetsQJ#IE|I0_yDMubps3nggM5R5u00Fo7f%(H7Z6hs^10nYN4{i`tecc@if z3}7qN2v4&wLfO%k2sKI?Jot-2Qdq2s-d!hgaBQg}g ziy~TZ``CNc%cloAxBGQGC_tz`cc>COf~D0jL5Y0ZhZ32VHt-Oy<2I!~ zcvf&JIKfq;`V_Hd7T|749n_qhN|*mld%#-I`h9)VWZQPz`u#S83HdvvJ$h^4Z@-Q4 z|FyS|?AV33&wl;P?#VY`?fqVL?`rAy{f*`8uSl<-R>k&uD+6QmQG;6s2Lo~>vS*~M z@Hk?eB3ZN!PvC9pyj$LGt~p2iYrk0WZE<7`f6R$V#T=>h(AOZ{!%Y zJrVkCx_ev0yQe#x(l3j??mDn!_A2cwPhXwV?0>#|cGEtmnp^8`mA;b>QBYYq>Ghm- zZ>)BOzkH*1RJ{>+PqC40#@dA+vM$EIpX^(i_Bkh5ux=I0WZM_>49`B{V)5znHtK9r z>F{kzXS?uzL6u82zBvN!Ht(?@@%H+(L?9ky-# zv6q2c{8F%dP=mqE1D9`BoKJS+{~)Bs&R=jUvSDkTf?;)P&f85l@<`?WqPuhD=>t5oGe{!ime(J>SX@{Rp;hgsNuJWArbG~QR z3*T;El9tvhGu1Zp)08>8mz~>FeeF%tq3Sh9w@tcaR9#u>`}UFQkE*+J2czGAUO(lD zM{x1!SJ&F*>YiNO`dY5K=JB%S^Xi`6d_J#!Ve#o})8pz=Z?9gz_vf|S*7qv6XFp%p zZ+GwW$$PcG?fc>hmY3pkNx$x-~RuiQo{qh zQ|vNgZ?LqfwkTIci61r#Zk+hxaZ%~vF0q%ftK0g|M^B!VcymK#_4f&!KhG5_zdGW) za;9+lH(x7%?_jOnTMym(ADqhEs`|=`@1;zhg>rh!&w{63d?g$Bmo>3TWh`jKO8htO z_;$!Xz?+dtgc&qE&cSeIrg_BLprsS10$Zr3fMaf;ZU+oB0L2&>qMd<*!KryA@gbE3 zsl~CN))~41m1^D&KY&W_0mqTKVY-2I1LHBE5s)@MxM`2Bv7?PUI1{MkB2c3sipJ+a z5qRB`oL>YUiALA{<@Rmy*Ffz#EDQ_+DBA0RB5>`A1qIk#tv#`3VJb4Lwt^G2-Z;OT`gwat{zBaEnQz}g!}Hvqk(i!dOt z5!nE2-ClIF(EE-Ev%H#+%|h)-qML%=)k2t(*bEI7l#Um=e)RSrLjRvOq%4NoIt=h; T1?C`7t`cNO1ZIzSJs=(cSdyG; literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/earlybird/ResponseMergerUtils.java b/src/java/com/twitter/search/common/util/earlybird/ResponseMergerUtils.java deleted file mode 100644 index a0931a1da..000000000 --- a/src/java/com/twitter/search/common/util/earlybird/ResponseMergerUtils.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.twitter.search.common.util.earlybird; - -import java.util.List; -import java.util.Set; - -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; - -import com.twitter.search.common.query.thriftjava.EarlyTerminationInfo; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; - -public final class ResponseMergerUtils { - - // Utility class, disallow instantiation. - private ResponseMergerUtils() { - } - - /** - * Merges early termination infos from several earlybird responses. - * - * @param responses earlybird responses to merge the early termination infos from - * @return merged early termination info - */ - public static EarlyTerminationInfo mergeEarlyTerminationInfo(List responses) { - EarlyTerminationInfo etInfo = new EarlyTerminationInfo(false); - Set etReasonSet = Sets.newHashSet(); - // Fill in EarlyTerminationStatus - for (EarlybirdResponse ebResp : responses) { - if (ebResp.isSetEarlyTerminationInfo() - && ebResp.getEarlyTerminationInfo().isEarlyTerminated()) { - etInfo.setEarlyTerminated(true); - if (ebResp.getEarlyTerminationInfo().isSetEarlyTerminationReason()) { - etReasonSet.add(ebResp.getEarlyTerminationInfo().getEarlyTerminationReason()); - } - if (ebResp.getEarlyTerminationInfo().isSetMergedEarlyTerminationReasons()) { - etReasonSet.addAll(ebResp.getEarlyTerminationInfo().getMergedEarlyTerminationReasons()); - } - } - } - if (etInfo.isEarlyTerminated()) { - etInfo.setMergedEarlyTerminationReasons(Lists.newArrayList(etReasonSet)); - } - return etInfo; - } -} diff --git a/src/java/com/twitter/search/common/util/earlybird/ResultsUtil.docx b/src/java/com/twitter/search/common/util/earlybird/ResultsUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..890855c071b876a00499acaa03b1d41a074816b5 GIT binary patch literal 37223 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 Map aggregateCountMap( - Iterable responses, - Function> mapGetter) { - Map total = Maps.newHashMap(); - for (Map map : Iterables.transform(responses, mapGetter)) { - if (map != null) { - for (Map.Entry entry : map.entrySet()) { - T key = entry.getKey(); - total.put(key, total.containsKey(key) - ? total.get(key) + entry.getValue() : entry.getValue()); - } - } - } - return total; - } -} diff --git a/src/java/com/twitter/search/common/util/earlybird/TermStatisticsUtil.docx b/src/java/com/twitter/search/common/util/earlybird/TermStatisticsUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..3a67a0c3d2cf63a439a595d532052f65cf2ed30e GIT binary patch literal 37230 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/earlybird/TermStatisticsUtil.java b/src/java/com/twitter/search/common/util/earlybird/TermStatisticsUtil.java deleted file mode 100644 index e599d5cf3..000000000 --- a/src/java/com/twitter/search/common/util/earlybird/TermStatisticsUtil.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.twitter.search.common.util.earlybird; - -import java.util.concurrent.TimeUnit; - -import com.twitter.search.earlybird.thrift.ThriftHistogramSettings; - -/** - * A utility class to provide some functions for TermStatistics request processing - */ -public final class TermStatisticsUtil { - - private static final org.slf4j.Logger LOG = - org.slf4j.LoggerFactory.getLogger(TermStatisticsUtil.class); - - private TermStatisticsUtil() { - } - - /** - * Determine the binsize base on settings in ThriftHistogramSettings.granularity - */ - public static int determineBinSize(ThriftHistogramSettings histogramSettings) { - final int DEFAULT_BINSIZE = (int) TimeUnit.HOURS.toSeconds(1); - int binSize; - switch (histogramSettings.getGranularity()) { - case DAYS: - binSize = (int) TimeUnit.DAYS.toSeconds(1); - break; - case HOURS: - binSize = (int) TimeUnit.HOURS.toSeconds(1); - break; - case MINUTES: - binSize = (int) TimeUnit.MINUTES.toSeconds(1); - break; - case CUSTOM: - binSize = histogramSettings.isSetBinSizeInSeconds() - ? histogramSettings.getBinSizeInSeconds() - : DEFAULT_BINSIZE; - break; - default: - binSize = DEFAULT_BINSIZE; - LOG.warn("Unknown ThriftHistogramGranularityType {} using default binsize: {}", - histogramSettings.getGranularity(), DEFAULT_BINSIZE); - } - - return binSize; - } -} diff --git a/src/java/com/twitter/search/common/util/earlybird/ThriftSearchQueryUtil.docx b/src/java/com/twitter/search/common/util/earlybird/ThriftSearchQueryUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..d44f42381d182a345e7577d6bf0f4693a6c5ab87 GIT binary patch literal 37110 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 0); - } -} diff --git a/src/java/com/twitter/search/common/util/earlybird/ThriftSearchResultUtil.docx b/src/java/com/twitter/search/common/util/earlybird/ThriftSearchResultUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..d1b726263f35695309d0a97479ebf81d64bbac08 GIT binary patch literal 38845 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 bAZ0Ps)?t7*D=-Iva+M%MA~1W%^?`T*r_ets literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/BaseLegacyScoreAccumulator.java b/src/java/com/twitter/search/common/util/ml/prediction_engine/BaseLegacyScoreAccumulator.java deleted file mode 100644 index 02c92b0d6..000000000 --- a/src/java/com/twitter/search/common/util/ml/prediction_engine/BaseLegacyScoreAccumulator.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.twitter.search.common.util.ml.prediction_engine; - -import com.google.common.base.Preconditions; - -import com.twitter.ml.api.Feature; - -/** - * Score accumulator for legacy (non-schema-based) features. It provides methods to add features - * using Feature objects. - * - * @deprecated This class is retired and we suggest to switch to schema-based features. - */ -@Deprecated -public abstract class BaseLegacyScoreAccumulator extends BaseScoreAccumulator { - - public BaseLegacyScoreAccumulator(LightweightLinearModel model) { - super(model); - Preconditions.checkState(!model.isSchemaBased(), - "Cannot create LegacyScoreAccumulator with a schema-based model: %s", model.getName()); - } - - /** - * Add to the score the weight of a binary feature (if it's present). - * - * @deprecated This function is retired and we suggest to switch to addSchemaBooleanFeatures in - * SchemaBasedScoreAccumulator. - */ - @Deprecated - protected BaseLegacyScoreAccumulator addBinaryFeature(Feature feature, - boolean value) { - if (value) { - Double weight = model.binaryFeatures.get(feature); - if (weight != null) { - score += weight; - } - } - return this; - } - - /** - * Add to the score the weight of a continuous feature. - *

    - * If the model uses real valued features, it multiplies its weight by the provided value. - * Otherwise, it tries to find the discretized feature and adds its weight to the score. - * - * @deprecated This function is retired and we suggest to switch to addSchemaContinuousFeatures in - * SchemaBasedScoreAccumulator. - */ - @Deprecated - protected BaseLegacyScoreAccumulator addContinuousFeature(Feature feature, - double value) { - Double weightFromContinuous = model.continuousFeatures.get(feature); - if (weightFromContinuous != null) { - score += weightFromContinuous * value; - } else { - DiscretizedFeature discretizedFeature = model.discretizedFeatures.get(feature); - if (discretizedFeature != null) { - // Use only the weight of the discretized feature (there's no need to multiply it) - score += discretizedFeature.getWeight(value); - } - } - return this; - } -} diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/BaseModelBuilder.docx b/src/java/com/twitter/search/common/util/ml/prediction_engine/BaseModelBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..d8bb334dccd6203514dca495f58098ef888de8f8 GIT binary patch literal 38332 zcmagEb9^1$*Eby7Zfx6Vj3$k3tKo@lG`4Nqww*M#8Z>EaKd0CA<9$ER`~EZeWY4TG z)|xYW&7Q3w4Gw_;0s;a9GL^=qQKeKAmjns|G7bd-f({(j76sTknc6z(tGL^lI_fgI z*;qFv$;z(_p?tr1!%SupAodhR#w_2nqqd`u!xgK^xZ~DbVLFomdwQ7U4O5*{2!UdZ z%S?OlCS0%Q@Ahh@)D{&x)78yXFCYak@haHNXFNCKIuMT|ky@7ACs-JQs%_2m`ZU7{ z%Di7Yz^jiId?Avn6_BLy1QJbE6{ChmG#m`0#6J!hT2nB`mDfpTr=oN+O0`e-?OUzFy$c#W0J?%c(^|7Pee(*?{b5*S9!$bygSA8`KkSd20b6IkX{ZAA=hvo5&WwkBwxFV z51iKn@{MKalWDZyk_ZY>d*TdVJfGo9Dn5w`^t~>ZY#s=XKal3XV94r$DEwCy-6^Go z9)Z={0s{eo2maM}Ftv7MV*GQgil6!l&Vu51As{|VQDWPyDpt6vCw44bDA1cad0uSm zBU!xG-K8j|tAW)=cyzIEY_^n9fVVq`4T7x7??(O>@=Qp}zr>4BP2X;-<0} zq-mWVaYu$EWJ>wKX{JUjK(~cHq)pRsJ||o)BBoDkBZ*WRRF;5x3-3g&?(EGl4}bzl z$TV|=msGX=v~~@D6l`{qH1HETiM2yjPLnfX!R9VRlCnp?6_q-gi7t__<`Rb^psD13B50y2rGc^H!juuiXscZ|1s`3$3P@ z6>pfaIc?61|4vZocX(wB;B7t!Ob{wCK_&oW1qXngBa<<}!Sv5fo)teKH^7V{{@^9P zAgdO3g90NiMGJZo{#6pgf2Hl7okP}oBAat+d%w^|E0@lNaGP)B#!g_9tEmOtI5<9- zC?xK}-y|Gf6Z3uD2y5ddTb!1sDk-S{qW5|Jn$n!tc)T}45f=fjHXB?jgGEs_g1_HKBOwb}~fb0}Ps9{{Dnv31smNsAVn1gdmxyrFo!X z$%BS6(|Qo|D;2PT4!hP6F1XcN@_WZy+AO&1&4}wxwe8Qw*DSt11X_qezrPF_C>>^+ zQrAMU;-9%ZK_Vc7vI!}sDY>?)vF?PQIXc*H&$xi=Rv@&5ARr}w%9}eYtrQB#gW1q_ z*#Zm})r~AH>}@bOQuqlvnY6OiqQ5mya8soi`ebhAA&t25n}@(=B|h9vFrkj(rNOi!}rY z2+Duf#n8^~ud=92*se39biU9*=sJa4KnpA4#0M-1&xvm0*2ZVHER2(Wje}@o+4J#! z3dQ94&U6>X*TDDEIR3IMYzEyZ_e~XZ;wgVr!G062sV02naDD2C)DfZ_vJ6vg2vyf! ze`dUD5sCrUDNS9Wdfbz=!D#Y|5ZcaBo^Hlz4M}LL(X+Ti&dzK0)l^9Qw@cmQ;AN6R z)5=z=BC~vW1^8Rdw+i>t8Gep0`*$ar$w`Pv5@3dJY!DOf6&BR1p%U1##CR+QU6+&J zAS~fMo$l&Qexc@?+h}8do+lGJC8W2zo=12bg!_qYT(~3TGkYgtSCMs2y$*sM-gw$T ztXyBF9(o;h7TcpCJd(@90sbaR9Xa-cEXmRk(07ZPqv5|{AKQB0P{tRFBz=zr@ysW( z@`@!!yCw>)MG%|NoQCdOHx9V@&Bcw7P<0Ki0UCb&^W`wB7ClkO0)Mp~mE3!JPC&eF zqPF7e9%Cg5fAugGc{0I^5fL7pG0nO9(UIt~mad$36lM+wE~*Q~Zm>@q=mCHVGSP}3 zN8yW$)*jKrH{3TA#w#0^qn#&be)tntC~lwD23W$BGg#}lvB(KR|5oemlq7*E^=)## zkW6ea^ za4=y4{%W0VfRodoJL5oGTN#fB%V%5Pei*rreAaf|AP}8Rw6&^&SQIqP+9ugyY_q;9 zOzR|R!DV#m{efS}^+kl(5RBA%4|<)UB1RzVg~zhz`OdiCP$bDr$w~c0xD`xAjMdC& zLD${WzO}mvYz+k!oe}b^T1T<#`gD3*PnNGPvOWk7TvGUWnmwvLsgA{>L~VX9l~N2E zHX?Ds;ah+tB?k|FedtoL(omCx2J&W$%2=pn)WjJo3rV|Dtn|;#QVMd~9?pI{_?ooT zxkvmsnX+D@5G9Jiog&;_f)ml?YO<+B98QDGG&<=D4l=f1YOEBzkWqJ^kUZs~L7gaJ znW!e1rl$O{hzRGR@8OgA+&IK}z>-B`GNwD5FEWzGfQjI*vjE8$b4iRpASl*Si*&-6bJf6Y}CFMS94YPf<5*s=}l&Hy{w+d zSAzLW2IfKy3N5Lt`KFxnWvVMJD^ZMSG!)DTW-{@UsA?{a;@nFA*FqT90k_yoVpVpt zxTYQfOft%2Y3V8MblQ^Fl%*Q)0e&8{-~`6oPG*0VfYdC=t4PGx@5G`d(0F`JEJmhH#am(xhp~AxtetTx zEH%t2ZKsCjXS6NUVei@z8%}(Hcn=Re+Oq?!a#Dx$Td6h~lWIMou7d4f*_F(KJD#nw2+)I|ZCJMtn1(hi-1clo~BO>LP z&(S$7+m6`D*c|H7TPCZ_P9OC#vi+W`29B*xjo?`D!(e!@H&uoj#gIih`x6|`y8i?X zX+I6vb}Ez(dja84#|~Mvsrr+>WOY zGuwoO_wS&(G2Fi^&{TFHH-7R3z6B0!wv1rE4FqmRw3tIj)OM#hzO>^qvMjcha*?+I zB%DT?;H!w3uQ&6rtB4)3T{lZqYuGFoE4aXq5(8E(zlFq*<{RnK;png;h~z}PJ%ojA zSqXroqGCvOL-q5prh|FJqC(N~K!9CMHVm4=473LCf+^GDO?=y9;r9!XLh0TcIhtl; zWZnKuN6T1#Lwfv)i%BrY+idmD+C&d4^2R2x+4>O|jgAmE=OEyByS5YYv6DKDgK14U zq*{+z2Mk#)_M-a`cB?>|v;NEUg&J%n-){&yx2q6YFSQH!i@qq-aN?_XG^g>jx=Hco z*SS z`0eN~4NFb-NCh%5mF(xRnQsgFOfu&|rfHlLthE`EZ-g=A z8C$~ahx!n+(dQjtL_(+#X>(|aIZpcYX~-w7DIB_RV^IPWfOJzSo03PQU=yI zyojbjGuQlkM}K*39qYaXdPa>P*LuR+elUctyV{HEG>PYyclYSsoB4eyRJ5<)iLPJt zXpGVB#jpwpTkN4;TKu=)_&4bU3&$F|9kJ7_pEKB##MdfwjxoTa0>XYUXbZL;V)J0_ zDThl+BF(BD28Si9h1+WBfGRal9f(A#;zok)m0$Z8mt-dctFS~NvKCw7^tSQ|QB>!}*<~Gd}9R z2YagIUS3;6tB$VC6>APHJngEf!{lv-$AcNbw7(u-t$Pp!fEV+sy>iCv0MH{}sziV9 zft#AcN}m9C2hu#YRxZM( z7|62;kdr+02vMpqq0UxgKBL{_;GT97NuCYYW#2(ZWtMn-v;?ocy4SCQm!XgCi4$~V zB`zg9b~WLV{Yr>XjM0dl#&N$vAAj2CeTd#e8k-)_%#~o^R^?W=z{+u^GjwZRUb7`s z8_!cVg&t5_u{=)-JaS9Gv$1VFVR(Q}baHx!_04jjyOS^`Yh)XF^mc^rS-ys)8mu-p z3E#)NYbG;GWA70wm7u(_k_&e05~!hgyW!_3x?X5D9uIH*18HP8&7n6@9N zi;Pwvptr%8qG3bLw{Gqa5a!|9SbinqXnG?0aCwLR@3zO*4-btM*bh$t`(b=wKm1qQ z^Y`1_e>OjVzu6@U%Lg*!e7|^y>km%AD7KCG^gExjgI1!Z$SYW4E&g8gU|W0BgkE&d zfB%8gJBP|In~P6149UrM^5`JF znyPNS?y9uf5!_67?AwuRPz&fsg{WIuG|(mEpfK3GIGVkCG{N_MgVuvHYh1(^Ek5vn zmDPzt(}z%d$OIo?do-{Z-#1$_1`%`Z5ls4zddVG-btY zc{`Ul=phH|inhy;PZy##rJf0?xuB~oxJ{L`*xloxI6-Q ze~S5ddRe}RE)i@w-Pe75+PvyWS?qW@n*Vjz5fZY0;{I0u`Q7HDeJhyBXN^cNx#V(Y z;3y>JV0U8uw58&0;`F-FeZ!ioM3AVmueVG7J5Ok2{l~3EgO=yZ;`)S#Yq;Qtod#e4 z^`T?`=J3w#(^B9mu186a)!AnQzx~8=Ym=9SOPK* zU#=8(M?wN0^_kXRfTCQteYeh#Cq~YmH@&%M-vmXb_|Me0fG@o^p1cyiggye~zLdU0 zAMp1b^H=Amt`qx~4No{<5ux2ygN(a!&Z0A3E|c!A-O>rTCT=5q92h*_cs$5%5-Rp- zoZY+K*ER&jL}Gk{ncllMx;t7bCz6I(d~G^5yt{R@FS_6EM4!!+QV0j^w>O!Pw|!E@ ziM%AU&qzK7Yo2QbIG56cH` zK;A7yW>F&QS0ys46c`lq4yEx5o%eBe>AoE~vlya+(^Gj03z%2&$=@MM%Asx*JD`Fi zQ~(b3(FrQn0)YP=(!UK_e)`aToRnOF7O<6DcQysXr7dnJKihum{7f%Mlw338I=7(} ztHjzL(lU~;QiZf=dpGc_cH6re!&uYO=rv{e=)m5w605NEIR^Ez?Pb~UMuo<5FwOii z@S{_=dTHk6Z2sBq!TxPT>i$OX>_Q+@QKCtAap7{{@aE>%`G8|4J6&)aevx|A$H1Xm zIbr4vwQ3;z>g>TIh3_TNvV2BMN`xiEY^W7ocx|~jw-9O^s2HJPA!~QUIhBoQjtYu z+zA2~W)-TV8)C02Br#tl6(vj2loHu0g6I!0=t!g)mcPQp%eD7Z`flShJ*tg&j$kZR zcCus?fGS#F<+Qw&;ihVZ)4#uLT6FPMUknzmhS##NZA-0a*z6^s6mo)pg;C0Yqk!l; z60;{cNhk=SZ_-o}iCuG|A%QX9!syk9xheL;2y#~zf?MmPA%?fvs>~{ogi#`+LkqBr zZ}B6}{He8rn8}KC7 zKTksJk^?}6|8aeF6D|cK1d}`bXus4J*gvt)*yDkr#K7xl{tDFsq6GtS|10!wDu^d1ukJAEWSqjvJ^#n9%%j7)OWwB?w;S!p;rX1JUALNFivsdT2Zv+%yN^-Zg1RktVnorldyK0>NjlLN z9C5fGFLnr`4DK@qDD)d;1ex1I8^rhLJ}xVnu82eH-Hg5?Ig&P~4)I5AzX!tsHGBTm zF(_r$-qfG_Z=M|JPwYRfU2gL&&D(HwFr}Ox#bM1%{50l**V$r`bs;qA3e3aZCXhP} zvyAUDE;-m|dHOi;Rvd@BV0pc9_VseTXiXqTF4}SotzEifP+lh>A8(ITUrE5~u&gJW zYJ2b7j2l+Gr&SqnNZQysIdfa<8H`ST$W8olP08Kkr=-@c9WN>+3c8JhuNl|BhnWn>M&*@0{^y^U|XHlTq-s zy9@3spUlwk-hr<)C)O7x2QDmg0rzzceBEvvdY{i9uJ%6pszFptt`;2y2Dlw&uX8w7 z-`@!XC)W>PmKNcl4VZ7 zQVz6@I97MkwIQfGpz4erw#P^P`r4dVZQ?wTgpoD4%NrK>i#*ydVM8*bS-|-8ge~L7 zcl|OKbvaNXm5}}9J2cO;o5HX({Rqw8HC=r+9mja&e@UpFp?0rsoQd~OUDr4Yj?5aTn z9T8EyEXMDOXo{I+J9eefy}e*r2n>0&iVMe|JVG?lr#gsB&{0RczZ;zo^js(}c$fUl z-ar3bv@N|k1Sl)tRpWd7WuJjDPt>w~LHhBYzR)q_`g}Wb{eC?>Nc@Bdc)_g2qPvTS zYW|97P4a2wB;6mcB3U|po{^&@%0#Zi^)N`}_svOmC;zlMORe)~rBAhlNFa_gr?0ey|vNXuL-yb3Y&8?O$I?8R&ql*uY$m);sPjYjE1 zt6?W=EgXQYQ+S+TC#)J4!vVPmvGSQ8b*orCZt{8yWWuFhr>b_zyQO{{_)tqII^)#o z@T_V-pCT+JMxP0`Wp8ERaJAD2K2VFgo%bg2IF?ImXfZLWO!@qBw+0VlO5IQyhKN+; z-|CV1w*}umwTMm&0&e@;6de`|igoW<@yD;nSFMj_JFnw=XUFMvlw*ERqT40qRXoG#eLsB|es-9a2k|EQJq79SofALcz3T&1F)!%Jqnl!oAN7qu^2Ju556 z&Zr~I^HSA}^7qX;wPhQORdmE5UB<7U(ao2oC)!;mp!I^#6n>>i`^81PaDBSd}nWJwsD(aRD$@x0$P_%S;$ zv)#PTv3_w8znrc*kOcSr#k*6V#f`Rn*`vr7`;Ppsa?zyxb&W;wN zIhLiNyG1kSKJayM1JwyH4|hwsN*z7h&su{EO44bRRakNxI*UJ?eukD&d^bM!c(QNf z{hfAKk#d|w8q@9r5?spK*tY_LPea^(>IS&@mRZZVh4+16LLG0zHIhj`9Cruh)79$&raqHcm+%%+23wgNF0xKFx!5h-Y%SJKlHEfk-Oo2F zAIzd9*BeEelkEE{&c!jL&YL+#_oA#CwIZUpnz6mOaifL!HSR3x+Mj%3z_~+@G5o}( zh054cesNuia))jTM%?tC_|Vx|b7r5o>d3yeFHKC&g`p^0zl}fpV}0~cM2ar@YZbRh z{az`&TBWa5a^cyA(t4X@vtx%rM={r`l$L{ziAQI_(2T~cB3_U=cApfO0w4d!xJ1$ z9JrWX5@Y01lzQl&&DIxAD{Re76e$O!k$u(lAQZB6@Xs2{(S=XY9o@OF-;}J5Kar#1 zN=Qj7xwMgZPSZ=Qk}y^!*Mj*uR>?u7d>HL1xvYWpRHnB=aJiH4IX zt=K+Hh$|vPDW7gG4MIFitY&ZolUX(1)~nC`S@Gb37KZ`xC$I4&@J;7#_f^+v<5K~c z4U*Ego8~F@Um2j!mDJOwzRy4G!Ebk`7#jzlyVgd01HE7Ka(xok6EVPP1Wc)U>VoPp zD4g@r*fTf2zDA%*)UF#`l;@1o5d5#{`yXJB6cy}=8!M}j zYGX;NRoSuGU@jRpHs^8DPwI+oI@ulX+UL)r5=6+@4E%+NV=SjGQfg<}s{00r7bo5Q zQ2B%b>Qe{VP@0aQqi{Qa#+tcw5ax`Kc__M-ih!Ftg^N$n&Jpn1&OM`K??HS*{QVdZhv)8}y+_l6M#UH;_cEAErJx744* zD-Xb!!?P+80Pm{f`fU}xHGIBMkNq3M#1*zn_UPv6+qkEK9as&1@@z)5W2YZi?$i}n zJxo`eDQs67xSY=RgM^Hok$Lq!R+k~IBx)Dt%!*k)*S-IGdO?fgj?4&~3s`&7PhP(* zO7P`0%}!`Ys>^Xh*sfpPBk*qEYxqpW5wm!jKx~$sLHN!vLBjxaD#xapV?cTlnras_g&PC=0(@E`$*K5vmf(x&NXVYBqM2sUU!_1f8^Urozz>OZ2VM=4y z*-V$Os)2b+v|wC{fXY*+9HQ{+llb=tR8BgpYi^ELTrYzLfnWm@9~Mp<-=W{GwQ))|r37 zvOKVq%Y4zgB2l0~56&&mk7_~MF_e%|^`>2~o*?>6MS-a%MGg0^AI}2yMD;ABz?F?5 zc3C;1nlXPXQ?-G?>^ahdW+xadTY+hc#G_TEt2D(r#Dvdc;iYEaFf7nzKP8v=p}s#& zh>?RD^%L9j4YKpXw!#+*Vn%3cI2T35LRYV5ywAjtp8BeySw4Z2%$ zrGQ#%;CM33#7tWXLk+Z)_~Vzb$}KZbdz-kBZohWbiQ-Woy$Xa1J=h5jG6s?g#KPtK z3(F@9EUz^z&@q?z<^-D2*6xd_YBF==Xc_&*Mi|NNIoiefm7^0nu=p8^Jx6B@Q1=k@ zVxX%5*fJQ6S{?#9@_(}#hW`&X9_Rm0HtJC~f37R4<+z5UZzVOBS`g&h-;z!&emmY_ zf{q=rU$yau`*k*?&x;E^YEA)@XbW1>fLrk;_znVtK;30tAd5j(967KcV;fx|;Zn^y zKyAOS3rKhdTWa`Ofm;DpVc_Lr#H3L3(n1@8d|hfyu9(>PseyPs?2Oayxx83h=sHTR zEPGf$-B@1enup)3I+`?>P6475-$zDVD2SApK$qcP=HLjLWW{@T9)-xha0@&g{S^?I(e{5S9&@;#V08{BfQcwOMShn6D+WrS$1A0? z+K%zk^nxSl!g!Khe2eY` z>NlfY;`gzNcl);I>!(^@c*6znE_e!RLcFLidiG>(NW(DH{FP`{dw!DsG6X0*eq-RIP=jheAyM^z!RhCXT2rx}27t5~`!_&KJfyY7 z7U1n14;tVKzUXox6|9CmXw|3g^__mk0vGhj(vTs+V+^?RnzU%N%9ABQp~+2{25}(% zk^?%}8*P_@B}QLNNB^C)A#1d*)Qj2J@b&?r19);uPbXxyrt$r2=( z12mgy%nqh$DVt}%JdR7Y|u?6EJFnsZuC$-AcS?PBAl5}39FgP^Y*jF zD4`g${s|yFvFOyGMnd!wdMI_N)wMX`lP;tUj3}{unxvkGlK-KRtRh`Yv3NO8>W}YL z{y)C^LNsLTz0XWoF7aJB@&EQMJ_dvY9$0FU5UL@g zu7MzK#uulF4KsRoKk4Fq_HV>>_RcbhV)b>)Dh-)~YM)0lpOT)!U{9^NgM0rFf}-r~ z-g-p?&0ew}vpeY+i5uix!bhx#O$}2WQo}4t7v->mE-SZfrMwy4I4W+Vm1U*fw3UvO zqR~su)KJs+Itf1Mmy~k=DK*I+G|*Y++fPnN`Ri}zOQ6zfkD%M2XX)Jprok-hP%V-L7p&2 zw4*;%sg;PL}vtBc&69V&SquKhN|$)^vP#bR0D)Umabt zaPV|!Q4ncnRnNp+QnISY;eih|?ex3ue4tU%R>)}I^Z7~8{B~?z80A!Fn|hv z7Y!x#c^%#>M{{ujF)??m9G8CgUTL}?&5g`7fTFdQd^wT@Jp$|VAYBNBh7mVCYQ0^H zp;SiQyt#%^?$(?EuoZ9M_f)pHw|uFExKmp+fNj|{!%FV;v_Yfq3#MrE(M{86+$GWD zq3=T*Fbw-cE&UfY8ju=V`cL;g*|xQWm~8MDwTsCFkeZM4Z|WZu=n+W&59+J#LD+?J5B}BBgouB)sduY2kkUSO?GVu;yH~= zW@-n8y7v3f{&d+zpIST@5dJ}a?>q`5SBCzJyoH4wJ%aK7K|W_7weu96vc2K(5AuEk zsV61%M>zEsMT{T)PCuZJmD}Q&y7cw7yZqbu9~;@);j#!m+Kz9HOa^mIJ*w4t2cEa z>({5xa@-ZR^OxC?S(gYTZ>j~44Z1PJ`orFd)Gm0EpirEGP@u0&(hHt8HHqRvxIAyt z^%GlCTKVi7DrfzaVLcDawh)_vur@D0#H0H5Ls|8U?v`Enl8-*xl$6#R9BDdKz6GX! zYT3hglJq6ebjsNcVV`rW3S$VE+uIJ;Xkm8QrPpE65?+gRlMQs)`Osq6m1&hJF1h)_ zlJe;G&RzDZHv!r7`Nn5VF?K|;`EgHE&6BSB&|+u5Vp#T$xSW@@lU#5x{ zd<%kH3$Ur4pGV!zyy5;r@;#n(xMK4rQ-IG-!OBZ4j>karw=B4j<@wjbYuKcG*t%u^V zq5lB8@timL%j7Tis=Myt_W8!Of0~rmKItk7``ctl(jSxD@PABp+5G>RC}|&M-8kw8saoDA$LrAMCB39f7uPP%(htiYGN-PSjBcyjZxoK@rj6YbNSLz&l} z=jV>F3wht7n|(Be)vvcisVCH>%F)?-Hj+35f9WF=gdHyX7%*l%od=7=_FK5>9YjgU z#uC(lSeF>sX1IYeN}@51!k@tEDV)O18Fqr);Pk`GFl9jBkeD}-PyAb4l<*&MI6;>p zS5~8AMms#eYl&C}2pfGsi6Q?SpzDDLsAeBfdP$eJfX3YJ9mt}yF@j-u<`|OBUOf!v zYYBlDZKmXurgk6D8@0ttFxLvjwO!WTsZ%Qn%>PgbHvoTdioZL7M>W+8ZfT%Qm0RXU4dYRUj|Qen3k|sw zKh7ddEM})7HK=&z!%Z+TiF0AJ1 zmcIMWUbq$b>(C3-ZL;o?DAdr4yp^Gh7qaPa(oG!w7aNWRo*de*pfT_+vCmDmyf+n( zBJy4Kuq-`D%soQ}>~`F!mcnT{y}7v(w2K2G&&4V+a8?PVyw%p~iRJd5{jXZz0)Bwq zz*BY~dG^aoP0oPWNl(^9NDv=}7-LUlcsgD+Zjs(t^$5rF-YARH?AY%X`LF%qp#un; zmbK)P9xj6(a%IgNkxlEl;ElgRKtVROmJ(w9n9KK2(Ex{^vp0QFRf$^1K3w+VtKdxC zrvB;k8;)3W>yJ6DLGjKJ_%s8%UZCVmkHukI0Pmy=m{19-oOW}ARsm8vNe9P#$h9yxd#gu zy}9p|UJzylQ*KEa?S>6x1MTKCA2sx8m$@en`_bB9M&^`(wdXz~xtvWC(q^#WQwZ|NsBh45FdAoSJTyiHdQKD#UtYyVk~WXjIc)V)^=}x= z)>n^?pp+lB*!u+p#s3g>&(ye7WlX=0 z<9TVHAa(8Qs^J~vx6?vJuPPKxqkD$wDF!d3(Zz+q_Nr< z>~dU!RHUl&7rvFU{st3_hW9Bs*JLrrR0KEIK<#!Yzw}q zQFaI}s%e0~IFe5Z8Az7$>96Nx_2{dKLT7gFd-)^y6@~I{gU1mlIN;xc19HkB1^*V@ z_eb#MAHmglr_L@cPim*u-JXzwDn#mZk4Z#h))ho!GXDT}>#Io$jQJ<9Lc5bmH1^am z2rAa+<9w7d5a5K?-_zZ70&ya7_b8mEnDkc@*@Sa)GYv z%6808ZVNUB06(L=TsBjO2ugRBg||;UfPO|6;e4t!`eup(h=9^$fhjTW+%o86y7UUU zL4-POb)zaA?d-ONwKB`7|Polk>;JkSC}tW`Q=!ht%= z5vDZup=szD-*p1aVyl>iO2kxk;c(=UOSSVKZkv#2CQ3M9@=d4#{D!?t?1l` z_!cK&6`dFq%DNy8y zJ0plU9DetjGO-flY(XKkY$`IF0&Yl&w?zEd4PxGfu8I>^;hCc=WFWcqKG(N{jP#AD zqT^qn<6{f-MelI;T`~6CFW2Kw972HfU13ct+W}Yn2N6Z=HrzaKp`*EqCiQylbxdh{ zulD@oA-RzRWa4++a&}rTpI9MAV5418qxrh|8dqfRZPetbxb+%@|E%?kN86KdZ(;sV z0DJjA04HI80oXmb2JAzObij<9^%6#}Y`gJRX3E)hngvFJne%3c;RWrqUfmxf;{(2? zb@}bLj;r|X4-MeJ+2MPkfcISq^x5xjRsKVPcHrC~fg_mTjvKtyNC>()FE$rUpZ)&X z91-_cBC99ph<#ES$Vfz0JiHzL24&jc^hfOfpf52t|GWbUG=I3;3h0Oc?Km7_|DWMB z;3NBwZ?{;;_>_KNxILXduI}I%5&E%G@EV_?CF2v5B*+=^?267W+PdP$l#4i}lZ#xp zaxu$kzf|oAOBZ`wrWQ>pDB}7$rsvT{y(wHq$T@IqNBN{-ka(YMv^sNhM0J-9T6b)Y zGzfS!!&m4t1@*G5Ptjq^fQy zM69zBo$S6>w6zkClM0JKzZ}QPRtg4ie14d_X0id9ikf|(?nbhKr zVChhXwr5dgOjfqF{o1Niof5@iV6bP*s|g+zH$@c@%;ZpW=2*Y#M(EakS%pTIU~W1z zT>M!L>H_e!auPy~5;$KbjpZveDuyLlOpXVHT|9L%whm3oRYq!PLTjwLSu@bzU#ZllP@|j~ z4}Y_9uSD27OxF0sN;h#=JuV}Jl$dnzJZ}coq*;b-qX9yPj+3O3HeG3ran0(|#jvhW z>sTp6>=KsboR}2#dNpd6gFI?oAXO)3Em(ut1pH$31DxAnaRLl`WMmu#gT*g3~tf}tI zL>|^gqwT8CdQ#a*n0%r)8lO6a+3Q$M)RIr1lhgcksOcu0U8WIujf(Ud4M{v}%fC>l z6|>OYboC;xBq%gvnjdMT3H?T+JEf*;7(Tb2tR7{>n+29fvWDm2usCSqApOB$5ny0s z3M?c5Ir-FGz*CvkO2pb3d1(~y$+~``UDe3+y0UVGICErt$Gbl)iKKxQRE~6J9Aby` zKPw6*Xy0pBbGA1NJ-V8-L%JH76g(Zd6)*p*e3SdU)2mh#x)(ZECf0XC5lXJbE&x} zXbG90tx#XaOMwBkPldBcaC~*TMJWiNOiCdSTOlu)GYkR~h89JIxRltp*9s*7@?IUS zQfHA;1%@7QJ~aerk}FmCal(Lzx#PVBLwgHO%f8)F0Z<@`#PKDqyJ&DJjqS)oP@%S# zr7RUv5XLUudG6*yn^v_Ef%L^f;O7K4-m=V6$SW*S!lmuSqeWFYhF1C3EhV>|+rN^- zh#yAj+9VphfoPg5l7~zt3>g5IE(FPRNtv1D02D#1g5wTqE(m#}b{Ygn5hd_L0d(si zFjs^rR|Gx_?->dc%*q;hr6iGAeRLTK(}7E+J1j64Oc+u(Hvluvc~@ugL@PM$0=oIJ zY6%wet4mHv9+=lDk8rS_P%u_A`U4{E%Jg7H-D&Y87S+F0z$5>yBDnX4K(0bjt=iJL zD&R<-2T>=jB^(L!-FfBn6^Y0zEykynAcXPs9}CO;2P9188L?uf7bq~XiL$nPbZGlT zeH~ENA}JYr2VmkeRMkBsA(sV*3uB%O5Uf)NRM~5u%EvdQ-=c^p1CP~bKR~)LW_v;Q zqD1n9?#xDybx$%#VDV5mOVRO4ZLlqo2_}J$rx{zNc}*{c4>qeH6l+%u8FBmuc$_@{ z5OGo1hO5uy`~7+=lybm#RPjQEdTiDxj2%xBSQ-?iQgoWqGb~GFn#Y1C69KI53pwK8 z=NwJ4LT2E%akBx^!zI;%I1zB<2v=(-X1tjd_)1M6kkUVZF#iB){|m_G572_|WS5U* z-n;n{3{B)_nQ6plYwXy+5I$D`pDp%G*61|Abw5%i>Q&e@3AoFw*dPoTnuTzT#Cy1= z5R4N+IW57$zkFaw__Gl-xE3&b>fl6S;JRsal7U+Z66nqZZeYfVj7f~LEBOI}$P0xe z^W+M1n^jBsfpMrM&m@04FhHi7PJC;^abydhlLTgBNV`PgC9KPXkg+lpK0Dl#Ldi1jh+79!tbq{QXo-(_VR?;bTTBL zoeV-UHsL*u1~#lWv453z|0qyVv7nn?9e?tbwgtG0Uns{9Z8S!5H0aDHl}6}OY#W>7 z2vX?dyYIW3d-scX+h!H#>BBa{2j}CVZJW=^=jx@LZQq*<{e1w{_Qu(L#NGa$dxKv0 z$KlMudB(@n#mDpescXku&dkK7?)A&vc}GnR^2J5YJ#cIPR@XZJX9j(&j-IYc!sd+4 z!})graz=`4hJ211@`S5C*ZPR-v;jBwYtQo8p<&xP#qeRo-9^OaTUlEQqP`VVM99sD zGgP3|^@F9i#r}OXXU&AO!}Yw`OZ^I!udN_e&x((`=NqTRjdPv8w+?^Jy>GG2Q;M07 zukS~*uCJ@*{`!P>Vb2p|oBxH6ue*SLXIcBbTS3VO&xg^3W5P&IP)0~g%7KS(YnSW# zfuqAf#@)HaoyQs1>Qa1y{E-AL5%*24zJ5sdT5ibt(DF~;YQ*b}_x-CcOfw^VHMaKL zJ2-KTVG~Slwj_WXFDlJT@1)ao>mwhv)Ab$z7ocW&NzJnAt@Yi(f=&}kY>hWc@qW(5 zlIv#I;woJxHznl4=e2Xo8k;C5f$yuwE2H?&H{XxtP2Kv>{I-Ps2PH%6H$EwZJoxMH z_51{UguFzbKb&9rwkjVwI%>8VT#zdkYsTIvs(LEXL1 z+_JDdz5CR?-4Fa;>wmal-L!iqTUHG7S6AEa!g{uSXm`^fur;}|=#g1!HhEO8n5n>E zpI#CCxTexYq5&E2wcEBz_u9r2_Au7s zOf~Wmo0jT;C?jqkSi6eeyj6WZR$*Y8tjerOzw+PvK>~cjYou=?vF@_wBrk{HXy_I%%a4m#ocj@3#~(G z-V9l%L1$>veLUP%w`rQ@oKC+eZZ^GCF{a}@Vsv>V5VQHN8(~*TZ`jJ6trhUY1PLir zcnsWlaZ$Y|;k1rUFU;f{29rd+{0A&D^;*b^QTmPFnr~g-Ghv$_TYj)~G(TW$#37;> zu>Ahjw7MK`6#TjE(Y{l+>gzZ!e>?-E$K*u;n7>?2A)GqtiWX!Aid7xh653ZSFKLmr zDjy-gSG69TUNJhoNIUVv?QhDwEWy-e_^JJ97f}=XF)rdZL&2yuV%svX>ZI#nTooub zpp%apU`ruQKJL;3S|Gtfee^#4I6D|U`jK`Ywy(xYn?Mkilz}^_zXNv=T>y8)0C&`g zwLsea8v<_$rWxcl4Y!+o_r1}-KK4iEU=m7-_3e#Z9Z%>i8j9DY=CjW z&%NXPXM_LHTqD*1xu8X|32cT6Z1ye<(bAz@@)_~r_9p6A-~sW07R5`oWPAsRm*;{v zy#Rgl_&xaW89kcn^fZlL(k{ZCUj389@J~q}Ek8VFkMij0^2wdT5&>KI2+J+K-$yT( z!3PJKV|_nAM&L>cxQ=^mx^THXU-Gni{ywstJGFdZuN>av{80RL90~L7(e(-D!olO@ zbv?5SoiDR}^VbPO6?9X(QCLt-+DUB({E*u~rPfQXj44l))R%kXR?k=N*6y!?h60sK z<6j=O@B2ri$K}$k=e}+3`%KM$O-N?Hw7WmF&h`>{n*TAK%-g#D`I2;OeYtWg`P*9C zqugL~<;m!rt(GHj{JNG#Fy+0L7G-!D?RI%hIQP2!LRTdaRtyb6_?`D0{l^c?VA)-F zt_`etZtSB7BmV46G=LF*R;H21*@7^fo=aKpxfw(~Da7H+vnj}kTsE|$pXUm3jK{SR zR)8@Pqi=&QqIovPoDF-ym&h2GUl8WSwlPJ%#cBw0a-@8ph+TCg%}t5Uz9X!vTq3b< z^OXhNN|0uVe+#ZR<5&!6~EtNV35#`h?p7H z%x5=Ego9EsD!E^X2cb{$OKn(|qOZbWRfEDTi0HnlN>Qcb#Sg*oN)u1=agk+k9m4ik zssgk8vc1aJY{6)<_q9ds{mzTG0GHhh0sf<$^q1E?o=i7gx!$h5c)qvV5d>$4RnMoF zmuOM`^aHP3&DZ(8vAUNA0UZuJnKFi#men7ejCk}mNVX3PY^hNy*IjbMuG_6%9#1Xn zSq8C%_Wi;(NpZD&6gIg8VyTt;N0Zz~s;iY*)3;NYjgT)CA5Qffhat~uain0qvya=Pp#pl z-!5O@|6?BSw)pGVn^b2(`(9F3SArwflwtSn)bdw14?3@HL|5!SShTZ+S~o4eY}d$Z z8*Rj)e*3yln@-x#B7lu0*OQhG5-*3?W=y)x^Ni$duEGz8BeP9d?b_+9&vCM1Urs{Iz8Htk+QMYk!awhi)<2KN)LKh9PXQ^O~}T$|~#>Vbac zqVX->OYED!Zm6{9UQzZ-vMDr_@dvI0t6y=35;#AgUyQ247E86GHX=UIJ+UF)b~mD3 zJSCzmO4EJ59?z)}TD)ON?SkWo_9j4`V{NDYwi-j7^P@a%A0=Vz}x z;#~GEB2I+-r6 zf6~!kN2@wfC_W&lO#5C;z-}G1d{?rj8U5zzYFwBnEQhJSn3xwY}`{ z^$BOsq)Wb-qhQK}x6$HMmuInIlyRXHdTdLu`pxjVW+NedlkwyP6?XSV3ExjaR`(K< z@N26x8@Jt?{deCJ)-D^D(I$Z@E2Ts=#Nbss$NR!PtC6-F#bJEcj$}Zcu#Q{lS)?oB zxU{R1msaaTri3!*B>6+r7ktQC;f4!$vTCF++F;+RpVVL++>}{_zO@8!f!Jq?$GNW~ zY|9eBKWI8s+zy}L>`}knr~D!h6Yg*P5R)HgP9uQ4e!bhfBk&N+($?dB5qYDK)9-07 zZ~5HGyOA+2-*(NT^qR_{Kz1A40?;(a0_ny&(Fvo_uOS7MwywRDAJ@!iD5z{KM_&v`=s1~BL^89BZ~|* z5MV1g7|Hzdh4+ZZtHHl~+KqWii%bfhmn11pzpndH0)^>b=b~+_T#M9+tzO~4lAso= z|0F&rJQy8Ty#;pOoL*ObEq7$31{=hh9jRCnN=1%ey@Hzz2Qu;2l0klslE_HjdWSd& zxvLDE2T0*nLz|(PF}BTBEq2s;zFU}oJfY?_j$x&a20kN3I50}sC2mi5tUPrmZWKY{ zv{q`^*C9RtHxunFlUX?aSIfDZMrRC0dB;p;aX*I9^QfMKdwX5fY3Ue*XoK3%8(9t9 zK5OX%55;odZTc%V_L^-cI+?x2pEmb-Nx)sDZFbR{ zh^%aUZ>4#XSN3A4HqDr81E9M}uo!206t8+6xO1MwU0;1KK8bBG`y!cKRE#8gG3LRRPElL7B?cyB@%-W#9JD`A z4V8Ye=b+_^c^U(#9h$^8TF>y@O(zxNr_fTi3|KxWGe68IQm9N^cS*Ac&9KHpmTA#K%`@2chezi$44;>wp;y20r)^oVtcfVqrXD=J zYj5i=DBwslcu_Zb3Lhgmr9Uuq_4@~BI*s@^*um@XNW&xr3+~+}_J|1GR*aRNn$}-` zK>&YDh&Un>*T=>kuK#qt>gia-WEpl_BnWFOxzoPO#>=OLn1K{{_<+Qzw+OeKUir1t zy^FgVVFt1zVN+0_lD>PtIZhg}hsNdNdYjShJaa}BvgZi$3i_onxVs-Lg>U8)DBXbk zR?BQOEI8I%)B5EPNqKGPh9n<5ZI&zsx~m)wWy9{C_O|9;{y@WT-(QyBb z4rA0`=qoJ@r(s>7c#cSypJ-?4)7!)hvs|=X!Q<4=6$V$)HnOL}oY?sPRYlGKi(`#Ni#uwd5H=Vbihe-@GK=y9&6*9thVb9->wd7N*`_!D8tjz5cT zbnaLYULvgHI*eH4CmDRz!)^@l0Ecgi6l&poJzVrc3nZnec5xKn*;MBNa*L$g-ZWy3 zcA4wM9^7=|GyDOyoCEm1o<7?1(*&T=UDD2(anaxD>miJ&VZHE2YLcDpAE`f!mOFSN z`X$-)Z!8$UqFqK7_6u%rMnJ5mTXD<-+Bh%mc4fgIZ0wxne;sYQ_FD1({QqYMU<<#^ z{<`kK-olB21n%px_o0Pz6;2`3$(Cd}8%ZjUb6Gae`%;!K>se=%L4%Hjw*G@-6Vgwp zO9XDCMg{3w-kJ!_zD`i6wIQPQbe-E%u85ABl$vs2Piz8vLh*7^u6(0wte87P?WbX# z`BH@BqfK*iZ+3JmUwub!YnE*>8>-~bMfSEtg57@aL4~&#*T);Tb~ov!Ob?FW?RCGF z>Wo&C^-D2+`@y(aR^7<(1^_%R(Epxl4`6HbKNTVusX1zTae5C|z7ZV6;Gp zFWj$Qeq#9{2Iq&++!-F*zYNToi(0(Sr*wYL(0MWZo}P)!8O{Sl;RZ$Gd1KS4+o^hT(Do z!YsDqfKOx(LCs4A&8j_G{MghTjT9a1PX)_7ikh4mZ0YW^fz2j`%|YCH$9QIITHs8Y zP(fwQs;P2(XO#+MAA_5dIxDV~w|3{JV?=iAl#txUb}HFVD$%c!rYqrWD`9PA`GcFI z;5QJCK#Fyob}BVaD)kYuc%Z*OEP+HM`R1NhsuYP&yIZ2Q&hAtiGg|UFwm#mmk}{?4%>XwxR{`Bq+iSOuDy|O^Cs06NO7lf)Kq;rR-khS z{$e4Vp@W^alYIhI_(*VV6US$kg-N-yacuuy!#0w{@l!|RxpCxCB4)N%kWpoFrn^KK zl5M4=ZKY4MCy6eQqO0W%?4EOhzb)4e-+kT(+es-~1jn8k?wO`$D7^-Fcxu~=A8U(- ziODWp)t4E@ALDztg?ZkR=C28H7?qD^=3i`a(t@SUv!q)iInQ1htUZ3#XuhT)ZvOg} zJm}4_MrZ?0<}S6^L71GMX%%BRoFa@ zaCC9%+=qB&tz7my>)pID$iqsp#KEW&k+SQR>yee`3oW7Jdt$Wc69S^kfIf*^q30h4 z)LMdc9uq5h89iUxm5YS33_xq}L2!F0w)zSaJ+n>$C(a3rnM4<+jKa>8!ezX*9kySf zAd(RmipS_ZW1g&k-d|8NDbn1hE9r}rTde><@nGKQ0s3h2{qR9|NGF6&JwuHJO2i-_ z!mLaKX!A1&dsJ;JW6PD31Q!4%5SWF}jyMNQsy-c)Js^TM0wd1BFf`I(Cc+SCB*>b(S#gwDPtfJnb}1XThy7* z3xGi;0l}}ar$12+0qL26hiATL3lruv!gLxXya0s!XGmnwe}z0-F$IQnKK~Pv=OJjJ z*7Wa?8BoY1f+0PKvOQUfV}-7&n?x*4kTtKyD#Wt5_Uq3?#=3u1FQw7(8?OO-IfH?dTs^S&dz7B$^ zd;atpVkiLSF}!np!Y+2n_^?^x7izs$fm*KT*uWp8m60SYZw$KBe>f@nDf-WlwSIG59qv%W# zL}-|OmkLosVH+6Z#bk2aS~Vg1phW5uuCWC}K#0M3*+4I`^F0R3zSNIdqQIoiv|5>? zV?8Z%1i#Cy6hSb%*9$+TW)3i4Ag-|)=GrD+FwAugT*BEH(Mgaw ziCSFkaQ>T*lrV$=g%g98CZyO~BLcBsl#G5CvhOD)EY_Al>BYR!?pk!ekSck-wj@E?_v*)lK#k$X!y$~N$A^9#(~AG~AUH0p3WzyHI}X zcuBE!jWpCuuyxO132%0|vcOkG#~{S^&f5;n53iq3t_KWnwG9)t>Enr#f6#fL^7OiO zN73>A-XE2+oc$_+q|?o;^P7(VdN0mE8E^na-grWr8ozpz2rp&zDD_a#;iVCN^}KV> zxqCk@7dnKQijkChh>2r(yynS-<7!pCrC@4t^~~MjH8Ht4A?x~D>G7(N;aUM0^-KN) zSH0Dt6R@29P(yooZ~Do_^>xVg)t5J0PU=*;B@s7ap{UvjU^1@8LRGs%yBdG{YZj4fJ5K~7rglUny`}A31XZ2gfA*KK<*lyeAHXx1M&qhZ zeCIxW8OU^=;9;QStwI{HdJC)C8%NGWD3tC(#YSE+y(^A8m0ou=XCSEBNN(&bxe=zC zP{*58r~4(r%rn+pKh@kTmpP~lod)Mf+PweFw(s9j+Lj52cF58a=v-IxubwB*L|tEp zSw4T(`CWL5+~F19@pf&*5A*2(ioI+-r-0)dxuYWCeJNJLQ-R!I*811iIEm(!F&`k5^*gj8Z8P`{!YboiSsp(hGYd@bWtKF>on)JODjKe$M;^sPy zbp%8~bzNUq$Iaj#0sg%$M*cUnoK&T1-7V7@SA4o>^ybhgLYB3xoi{DTkF#JLT?TzmRW<&j^k@1mujL+!?!FD zG^!jyS^SS>b|>9Fp@Az~EQouvJbBu2uVsaQFjXZe@3dMpj3s1!)#kNN)cPXDl z8Egg=k@pAVZxN@0!ffv%fUN#^5s?ET_0pX>e+gjDft`h??I18&%V#-7o;(kvey8Qa z;EnI2Oi6~QQS5B zK>h+YL7W!4iojpfv-sX9W66s*5AHF;0f3F^47Fv~Qvd$MUQ zGr>D2HMOw6b3gkSvQRf7eyNg4re)YzbFJU}F~?o&pdNmTCkT)o|lPe|=?zP#xE`)xCF@~cSWrx>v80~$#0 z{l*06Z6Ui4m}z2mADp@5zS${-D7p9US`m_Ak~O2`_#V=*;9Yt(S&<1jg9eBl+Z+ek zqcMZ)G@y{$nC%(l+3(QP1YY*(h0+{%IOIFAe-M2h=bK?JV>6? zk#XUF<9EXW#wM>LTGYQWofJt%#pp8we{i2qg~$AqYe{>s_*3FEp}8$YD(gm3SswI& zUfT@kfZnKPik_AL^x(jXFaa~+UBwLz3;tg!+&}|NbgV-9C6!;^ZeHYF6#v$tlyd~s z@#gq19dD!Sbu1+R3kl~ujSTO>`)BziMV)VdtoWGnZpDM*zaSn;fL46`U#u9?-wzzz zhdK(bi@&k(By$@Zzh1=|T(;=ahj0Gm1>#Z}^GcU)F_Si7!7UZhU~SzB(cV3^@dHhF zV)d1Ms}{f^ai|h!#*>A^XA5d!0nmSS+s3Yv^0!hj>KQ;bw8lAcQT&a|GHodyNuc_Q z%Df?v@b%YAi)e%xOzgZf_U-Kjne+tE=Zi>IGPjI+e9j& z@u3V1E3%11ol96fp0I=8Se!)xUZ7xq=!~MT7+q^FdP3b9YUE0cP=T*RKBW39mUF!^ zPU1pC%4wlLVr~%d;hgNNp1kyn4NUOJmRv*&aq9iIH}J+&rXlRemJ&Cz;g0yibsFPw zmSp2W>hGwvVs!M?=nZve2Jfg9zUqIY4&o#hoc=+r4T|lZOXIuC#IV%Ff(l{BL$;8t z*eOxnmRF_qQ3tOLDp2&}T4pXl^rveTON9<$&w!yvw;Vtn(-NX>XIKhBz#hN}Vb}Co zj8@>(s!*VY_AAxlIYzd`qVZ)%S8k(UViWi`R|V7I+=_beS||eq$w)%`DnkiKVhx8# zFj1fw6iu3?ki^fmeyT2CDo}7)-W4@~loRILG^yt+j=(8(I?WI-F?Ds<7CopH52j%R zff^t{2WX;Na?uQMC!p^VEeTc-mjWoSN1L%5e;AFjOPvW-?1-4TP2uE{=%~(&RfV$~ z2txsbM`GyR8!k*@SSm{~8I&a>@(kbvN$JThj@g8>Pa=U2;2^>@k}cUSa5z(0rhf*S zCakEYl5vKm*r<}EoliwKfCC6f3S&1opsdVE{DNsY5Cm_4Fn~kfb2?m-PQO%whBTzi zi0>4_9--4*wCV7F$>N|{zIA>1q^jmCRZT?w#%A*+{UjrA2Vu_JO6AD&itDRC7c^6; zUQ`EjX|mG(C4Fd2u7t(V(GRgo@?w>lBTV;Fr$6;t<%GRozi3pKg-4Y{ z!`!KI!dAy6N({EAj^g7cq;2j=sD#lICr0H($^B846-KkrRLE+mB+!lN{b)|7jS{oR1KYaHf-;p=k!)_emm1iZ&xNrmW zLtcZRE&Wyn(b@UqcvLE;M3Rfc&{B^D(d(0E_ifXm{Ow0cj@5vafpftVlE$t;%JF&P z|3#Su?4OjmQl?F;bOzJ(IOIhmqsipZx%o|VAH$62cvwZE3=Fv$#0fLfFen>dtjBBA z-j>KqXuS6nJCqyTgiyy8`LIl(9WEs3EgT{g_918Y2~BMgicj~2B0q7i1nw5BDQF4W zVAzl;sP?4hh3jL?;7F{m>lR$K1Y#niaSmBlz3o!_6o0##K>B^{0IG&BJ>sm2FfIjl z`SCnE5lwp*1e6GuP(WIdhW41{CG`YvY{CiIf@mRuav_qkKZngDp-h={u1(p&*!RJ> zj`{-|V=}+SijP^B5kEMxHBap8l*B4UL}tosEmQz54CgZ+4GiaJ!L!;Q2s=>QvDIk! zBKdKg6V{0~=c58rG@Ewu_HIu>*+0s`>jM?eBLn(x!w`&z)FrrL?8a_W5XHc&jTG$R zB7{g5D+SLKQ>`JtCrcX9&U9#RYU+dMnOi);3-+CesA_&B&u~QzR2bRNjjh>F$b?wuin6aZ9xfA<{u+XRg zx49AEK!cq6ZXL`pW`vezrcD_~;azDE98f8lGEgZ%o*z8MjwhCWQv%i$O-^c4)8HPH z3{Qe9IhS*tIXD2k07!}3b&f8Ym{+8C9~?u1>tW%HDABHEw521UfBGkE*O{dkng{8Q zowB+;6>WuJpKpND>7E=^SF$8zqLy+8m?3hqorq>~tewdBTXNfp+3f=5Lp%eXP3exJx)4IeA%!6I|mfoWh!{2-q5EmfNf zY;ydd4~2s$?L+W12w4U|S&dbpFSKtZx_JE+5@^KHqB#4I}uVBv>p zXu24?^HN*M^bf(w5#!QaFP_;%n1I{A!jhBgNESt3CZ-Rw)5 zLz&<&mOw?wwB+(|8Y{sDc$#cb39if%cZ@}a3y+zGf+ig%XA5tNIl_!s2@C97H5#+$f7q6ZqoQ?5c!ei=1uaxc)-to}LwJZzXTBuEIbzrcV^Ao2 z?;<|`Ov>s*i-neE3R?lE3Uq;)9umU4Y2OIp2U!l`Phsv}*h7jEeA!VPz`lkaAVl`g zVe@rEyt@i$ot^4!jK_73S^s!dE6m+Lr;O@3@r3{U;vBHrl%vGQ(86NI7WViSY({ znegm@p8bauQs2jZn7$6G!0<82YCcPv1xX=zlAjeG~>xdP(MR zOdz`^^uyfYmd&Hvk#La!LDUYEe$u80|i; z8R^FU{oa8ZO}cNj(+EW-i7n)DQ#`tjsqpL<6h(1&?p7tOv5-AxL@WWM6i|4U`1N7T z(*(b+8eFyKVlXG0;LD8_jD}Jy**kO8bP{P){))vwSrpzyFe%A}`O5mXMZhFw)hXIHTij6WUu?ZG42 zE(v>Y#oToDUi>;C69VGWVS4?5qXs0nRT>;Nc{R&d*(nVlP`v6p4?Lwfirx6J5crzr z&y9jV0$4LlxF)}?gnk>o#%neb^_gF1EOt9>?K->m2L(8O%{&Cc6u-k1{{`~}Q2eAg zj{p8St&Br+WQcrf$IaH&od6&-Ho%e4#enf97_q&tcKmzj4%^oibAn$=!n}$ADhx!O_m)3s9*6a((HTeZcf@|^tzMy2@Qyp5M6JLh>1NE9Izpm5Q zE~yQ}siG~8DMN;BrI-O&(S*I6v z5x2UcKwL5E-ldg<(?Qb^F2|3iUvuU4j&T0R6anuN93FspVTMucp~j~VjnA*p6KYO^ zJx`_XAi&7lbv%ENQbVY5%o?79GqWt3PTG|ku~J{y6lzOtYiAl7J3p1xT;>8Fu7kM& zzh`nGaxm?)`OEi*9RYyO!7mXcG6oMAPpY)HJx?OILa$C4YQ~>02M+c(3{1Z(J*{6< z(L`fU#|%X61L}IPl;ipWKPgGV-FG=uDjk!NTu4)qlS~TJo}{Xx4gn?rlu(TUwyMJP zzM2Nvn!6L7PbrzRnC_wGh;&5dmW5hAZoxUt;N|MTPD$4hel)#YOC&><|a(PTN z<)*Ifu%Eeo9l#Dm;B8H4DEDevzpng1V6`L`;%?30P~oPAH`njvCbUuDHV1c<2ka9q zk3Gym2|CeI&Qhg7oI{Av1sVH0pbphvN4&aGoyF#4q~vBKEMU3AO~&^b2IK_xUmQ0L-6@WmIr+uNGdYy7^NQM zwWuh+C;-G}UH37znyaWnAP@E(zAGOTFck!Td-H4&Jt#n!5aN#Y*XD(Uez)R)?2eRk zyOhr?+JOZLc#Z!pK{5s#DJHL|SSv%CQ&IsFnPZo0kK-GHOIL*wLWRtN;|shA1Kixs zz_=Hoa4F!`2j0B2C(OVEu!CKSjuN0kN9NGt_;P*)@2+sIrr<%0+1>BHg)wW8JKxDlOM2 z%8*Z34scLxnc+Gpkk=#?$9Y-5VMv@M)xBU@el7u~i(*K?bdkj!h7IYUKzB?MZOCh4 zbNRM0Cnp1jmU2Bj?$ZLsn50_5N7M7^p>r7QdKkQf_;GWk#Q48Caj?2K_;6EEI>cB~ z=8Jy-na!H*N9qsBWQ`oGv62UvSq&iK zgpGY5Qt%BHxN)PRd{qSOQazAxsEu}q0*?}P?j4f zz(|Y-I&&cMZ)Y4(p>r{79CPcik`Tru@g_`Jn;iPw$*3r;sVN02U4G%T?%Rd7iNwif zz=Z~=lK75WNR}!Yu81VI^Ekm@3l_!lIRD59#LTb2`ZH~N7nqEif8maz<1Q>2 z1a;7CLEdkOZbT6Th>EdjVCIDiPEmavHQ&K@*uSH2#2uj?DUDNzQNrI}h|aSc=*(Ra z1mtV*!LNcL-u@xrwq3uUKmyD6Hvx(RC~kD@QG2#b4=_R)Vlr;NO}SmeK`Pc1bHBlkc*LCWHp?#~tQFhv zE0bXq+3mRLA5vwvNIn^U88q0C+>1hhOl7nEO?fM#;vKp$gXF&qS%rV+lL$okV@OdF zIFOIza(V!(3twdF%!-JECa|BlJ0)om9pD_wjDRkQ-;6TdNJ(YZa-iXknBPdu$N4!; zh+Ft%ynSnTuOKcAmR@Kr`M{9Y9TO8?N0D~9K1B&na^djWkvuUw3&NU|%lkseh!4Eh zT7}7kEYK3fEc0=fud5TZ8e#qV)=Tg5v_!HbaOF) zh9ptIr{%A!5$UOw<OU>prgrv}e7&BnT%WmKysj**pw#y1t@Kb82lG`+V^I*uS-FeMN!O zAYd38$X`p7>{ty=>L5yM=9QgfU{95@YLuLRE& zU;mIQ+B6G9GD3##kDE4CcN~PmD7}t_Q8)Usn@bm7Ai)QLq0xd&SI0=F$TRAHLC12{ zUqhCT_isW4ycw=a5ACEA+92OdVy*8IAAXXE?@$>eyXyUiI&8mpb;8L1SDh6+P#qUc zr_bvt`oF=9_MaVNor?bgvcbTHzFm!wZT%N17P^}o@A%A@-~UxzG+#hWw;LP;cgQx^E!XcbswX zxpG^iYhj~FCMg%^=r>PO-Cd3Y!*Yxn2rfAYi3a>|jDE8qBGj}r9JjN}#a1u+Y)nZZ zVNBF|{5(F`-`d_T_W0TL=q*w~-H|B{4m?{LRSV-oshfL3TVvoL{47hkYadHFKLYL? zD~AgA!_+n9#V+(wA%$4Z*GHaemPjtNBe>}s*&M7hC25u|H9!B{qrc;}*NQKsvqbFU zK%vCJIwT5QRW$D4eADeDZn+1z{6MeWn>f4Z-;Qwjsi;wpO8e3<&Qa#Di;&R zZ};M#zr2Ep)lOS$A9$!glkq%(z)Km6;hqyn@obj?$vEF08Iy(ve<(a*;u;z8OhHa~ zK94VS1c{Zdz?;DZ5*~ZDj`{%x7czp|9Z?zzBJ*NCk^(RFfILzb(o&K2mq^&U)WOD7 zUQXaR{cJ%)j-#m5T~kb-#b}2P`R^nbU%JJWfu+6}d_Id6g%yFhxg{J;afHN;QjVC{ zYeB@iCUJ?)C|Dkh0K;0_lI}S47BCCh>F(%UIn=cW08yw?r8%Tr)oAM{rjeSV3@?9N zg^lGQ#k&>w9!8@p9WWy8{b`BtVt+sQkh9dMY(I9)B<3r(-2%OYl%8$65v&BcmWw=x!Ja* zSFWHfjN4eFXMO&A_8+hSSmSoupO71F!f+Y`oE=SQ^Ef-V0K(Y`yB00p_bMcEg1<|R zD>a>}LoH7BRQk9s=}K#m5C2{hH|~I|e)$_Ex=r8-CHgnSFb5tj zFGHXQR&a$!Js**>7v0Tid^|SDl+?2zxu-G#bfV=02AX zdm}rKugm_FwJy{h-GJh_FxfSkv1xP0H&50 zL+Va$!TG_(Vg!RisF0G6aLq!OT&q2bvpV)T5F0+v-Db;Mp#NN6d8~P$1OhBU)dc)| zuM_>J1l3n#1Ev2s;Ui~yE&7?@L1sL<`u5|L_KYH!KgY3P;kPFUH6hvIkux^}7eh@x z|76wRz-qsvAU+{3-SozpWZ0I>eP3_S0;Rf}bG~3i_#=43aEJi9sn#o#YWR@KMR5*bzB+_$%sov$!Y*r<67U0+}0tJbRK79dq=mmntfP zxyb8gDy}H0KGv~%P~0WAOCfO-`pL1`=%)2N`eW!L1u%t<;bYrr7-R3$n>RwEggXhY zAU=Y6>jp*p4!Wh0;{c1Q_0oKu0);F;FQ(br?sn_N^6W-8|Z(&r) z8B$j9jc6z|LqQGWh`1ggAMt81)?zONTjzdF@mfVQUDQan-&x1FU(imFf%?HsutCx*35E>51t+s&g)KJ&?8{`%P0)`BC+5`YdDe}_F3ozD6Wl()FasOXF^U> z!$Df=9C6)3!eNAQV$?_^uy%Mlw-U)%qWsF4BNxZ4-9y%tNA&4L1ru1bOcV}>nGP&* zk1w#8aU^m@N-RxSpTZPr9eE*6LPVPe{SMPnFj0|6cGreRY;@ICr>4?4xJ`=QyoR7i zqzaWIm@&fy^X2UJ*K+m^+s{^ev7|-s+&O5>h)vkiD#5jvq zBGO7gS1Nj^Xl9ysTp%wdN^RBr7K&@X_y%&H_-ok=6~QZIv*cAY8(DOIgui|5h5eOo-tsQX(1ljC7N&fJxg2D6Rv<6QQj z5mJB5W~{!mVIP9v49K!^BGP&`_Y?$992{h?!E9=?q_a@!)Cn*hA z)a=?qf-z3k{y6v+I_3P5+(mI#>@Hg+R`%`szv?O{2$8f50ZY2K(|~}W|Lc%+GBdU| zX8f~d{!`&hQ`UBk1FP$&8gkqI!tbH@8rNVH5>_cR^A zp=eVlw$KL?cZ-1UkGG;26QJG1MoJ_4L&q(V7Fx8f)43u4!nn!}{=T#^3$q3Tk5=e> z0S4muMi5KbwQWI%*9g1T*q<3ML7Rr8#^sUtr1UsZ+#!v%5?o+C`ik$)BpBQW2H`+V z`CXO!rCy3zT#_^vO@uB_X6C+MAd^7|SxSBJWW^QhR^|EremvdWyey3k@=B+A`9fu` zopNWUsZf;m3GLpid`?m_25gWGGR|o{(qTg)KCviCu72~x3FnL=O*5z{OKzTq^9)zz zqwFW)d8!&&)BH8-G&3CRG!uT=-#6~{HU;JsX4-zQot~)ZjVFThM5s)8`zFlN(sd1r zv(@1w)>zVrT z?CGm*mS-c#NPN$h_w#wPZnw4%vgE*7b@uD^?&_H>|L@yiO3@Yss9?!;5RVXl-eZt+ zc{v*026CJ_@?3DtT{5SBLdRoaNCvwfoknU3$$b@fFY% zyS&B!+QYLE)S$0lSNv=3vtV1fGqvMY@azJ|&cK!!i|@3@cQ-lSALgbd#q&)^PPdy9_4etZCc&Xr~RGjIZX;n(^(2Gv@iyc3XT;h)@s3W5q%Q z6C0#dZ)s7&BDSGWue%`jd`g;D3+W=wA5aT`~KsF?g>g{L7zqD&sgEBQI}MF<;bN&`kWP5`H|2yko}pxrs^4 z&48xSnaz-<-H8Nw%{ddCiR@z&c%k#D0uN8hIJk!MTaS@%=`@Q9!z0kKUY{S-UZ@^13e<_}>|d>oV3Z@2ok?@khkjDGgz?bO2Zo zWn2yPV*%2}?H{zQex`QJrzj_=g4Cr@gM)m2y%G@qRXW6-Ou0L4CB3gAbH2^2r_Q0j z!xGRmII;QLW?5>{H3#OyidDQ!;KcXO8dOXvrXdd~*d+#=$~JXAytaVVw(=cEFb?*L z<)xjL-`$<4OIrt}@=Cd0alzZ}vnn+9$XWvQ)^fWO+42SMGR-QukfN8}1c%^M+By9D zZg8yWM6~%`Jk?0YQ4_q#x+*>u6qs7|a|B3;g^`*Xl?$5|;Xi+nSjZ0@=hZ(Yk)T*| z|J<^w$P6H%4QUJ_UVwl4)*+!}SmcGG1LzzWmtc>1GEU(EMIe-d<(!29NbDXN@Wlv+ zW)1jTt4i@9m9j31!$iAlI7FBtnh$IVk@{o`3zHP&=|9Yuo*x(;Nz|>(Fk4!4FJTAo z2x7CUB^yR*IHewx(wHD_kumB~LZy;M8BvkJ6J&}SFa|a0w#p?p%z|YnsU6Of8(sx? z(jX>ZnV%0{y=0H-6z=8f)$sn_Nu`5zh~|2&{_^-=1yr+qc$SNSUwBZ!?DZq?-O$<5 z$<|uk+KSQK$=LeO*Is2rEnFWH8puyC(b2fkBAyVmc|~MOlw7zf$>;A-aUF352ER8$ zy0=}w+6^CC%f5jTvhe_#MI{~W;5;tG0E9np4+U?L1J445pfjqF&6G^VHJn>qA&KR{ zF=<9e(e|{NF%}?H1Heq}N)e7LLttM=?64aAK9&vog)gMs7RzKSjm&Z&ug%o~lla|=*%2NWzX4%C5{nOFf8>zfS zh$4Enq^K;>=h*Jfp5xSX#oH#4sL8&8R*dNswBY$N|5L9;tC87tsE7~=b}Lh{ZRIFE zGM!2aQPOw-w>pDimUG>uf$2J-M!*34B-Re(1Ov2^lvSmM9IS<8v zNOnVTkUDvNyxw6t(L^d?!|4un(656#nkg{Z)kIJ*>Vbv^xgI-L=AxF3(vsKs{PQ)&B2i0 zh#g^PWOsUxe4ET3Y<0zB(2uuCB#-|!N{g8Z4z&c%$%F#4yMK>4Y@DqPj2(cpGVj^l zr22-7;w@piL+Od7y|X;=L!p?cqXqI6P?7LU|p zdT`DKf7?hcbema9X^=J03R97f6RsvgU z0~Xq8jF1vPZfQ;~?$f0NSx8QD$%`O4j&?bpt*N_I9}jjsSVn5^RDY^b+G1#pTn71U_3{vr zBgN$`hak0)Rbmx8inArobQ&pJBno|MU)l;gIlsz{*B%&A(+x_auL-d<<(;#pXf{R7 z(8oT0_)dJ|AR(Wck4Zt5J~dA!D}kNi-jgc#jWaqX6H$*nA-t4=#wZp3hHmjQsirK0 zLIgD#dhds4g+YGbHH)`u;0jzb^4pXB^bt74Uvxt(;+6WPX92W>LdRS@Tl^*lMdULg zqUsygL|SKWwr)bHS=Vc;H><9BM~s6|6t$+2gIT`-T>q!7GY^MqjpO*(*9MIxk(6+W z>|t(}q*bDjB0CL3u4Tl`Sf;VlWM7gcuIeH)xiwsC){!K@G>ARATqc5`qs@!)ofH`PFYS z^VT}g7+XEN-;~OKs8fD@Wg%pP0e!YV+A&Hiso=5(q2#OZQs8}_3#wCwZeOo6s};fzUhxY}+CkyY~WYq8&pW+o08-a2# znc80a9ALAAA}^2V!EF@OlCm~DF=HO(q$l^C5cWh-;hx%KYO_T4)%lmJ0uz0;^KDO# z?@~~1sM`Ckme<$aK39|-X@5ekO*_0_mXS+g@N8eP@|t@Q)oc(*m?Q)u0<2iT#@(CC z6cBj<_UY;1=5Yk+<${>I?Cu4#5Y(;2YRcVc=l@MnkfXj*wKiYT;4t%1w}FSrNAnd) z-VtY$jA0ov4*qXaFJvWrg?x%U7RV?OG)HB6n|9;jmrm-R=HTZM-1Fifa!KQupdHK7 z`=NX;)35})j@hC9^_t9;A>U4I?4)Pj%RIY=uI1fWE@fU8mw@9RpVhQ_l8IhgMdxOP zj-nt_W##oF5O-!*-j=+lJ&slt9_43;c@%Er)te*K)2z8gw8e#Rp~#U6?`ckDK|YiH z?-?Yic3>5R$grWCrOL$;${>qO{#TNjP>3$uE``Vh+Ja&B0Y`judvae4 zc5Xp$!T z0;(Vv!{i7p9+FMfcB*Qa``bb)Cn_-HN~tN`nW}ekFETdXgv~w@-IQo$(McJcDY}Y3 z1}lH5H0bWQ+G}s)k^)bg^WaqUdZA7qN)*Dfk0sTWaNsez5O{bl)$|3sQ zlT(*3L}HZ7aETYCD8bTva&n>6y%kHTb>W@5 zJ>iKc%i^hB#Lf!=uCig|lr;I=Agg+$E^?#)y%WWQg4|fjIKnp|?FlOjrQ-%)&5i1E zz{>8?CUmK*z}I_0y1GbgA?}txsYi^IieaabAxxo7$^*)ErXG9T)1Ci1)2QYw>a)uw zLT*Y_XOWWFXGCn`Yh4swnEBvdPyuXwm3y^7{}Nn0>}}sH}d71&Opw;w-$va(Y&#N%j`7PqC_w zYjN%(vfFMU$ryco#luV>xR5nTXDVBzoyyI6KE_Bj8h{7@TDXrfv_r`cYs#$X z*UKoerqg+{uX4aj#|3bG(zwTWxvZht(NeaoQyJrTqKr$_avW+P@l|W+84`*o+xSsl zcWi*|v?lX43O`|ENR(hp!7rIG&q599`laMA)es($*Jk@K;gtJp-}DD`I-TNM+%3bw z=hbo*M-G-$!Mb?N{r&C_p?>I5qJ8$%htW)n{BD^21BQgBdzWOHSZMS-yAyY;oX>56 zD^d-jcc&!w#Fj4?N^Ur~T)DFd4{C|;Q5T%u!>!QZtuPXhZSU5`GR5IYjU==xzTRa= zeH~|)l2CTNVIr9;b#6#1GqS_DjRYHv%)fq}AfBS*ww#<<`LLr3+dGS|$3AWTS3ro243>-Qw?x`h(2wU?SKL zftH`&9;ZKiHZ##+{Nv!D2o1nJSRoMpZFmUK@)LLP^4jUGyT;Ii&72U3juyD{bYLPj zD+hpt-wj~wJK>%PKk{EicAN!5k?`-aN)U*x1seoFe;zm{ zIxwou7x6`*JzO@+mEbu5|4{M=jbnPMzYPZcUJ|SWu9I%*9J={K=a(W17zY<#w(#AU z?>MLo16BYRBDNF^vELQ8l_kJDIBUGc_XU0D!8v5G1UUZQlIRNCF&YO8fCJqvfxp6k z71$~41#5w0$1Sbgh+nm~N0ML_aHzGV@=xUVS=knNfqAe$xW${r{$gU=y+czYHo$_u QS(O090Wgn~3E%Gi18fn&7ytkO literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/BaseModelBuilder.java b/src/java/com/twitter/search/common/util/ml/prediction_engine/BaseModelBuilder.java deleted file mode 100644 index 2d4d539ee..000000000 --- a/src/java/com/twitter/search/common/util/ml/prediction_engine/BaseModelBuilder.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.twitter.search.common.util.ml.prediction_engine; - -import java.util.Collection; -import java.util.Comparator; -import java.util.List; - -import com.google.common.collect.Lists; - -import com.twitter.ml.api.FeatureParser; -import com.twitter.ml.api.transform.DiscretizerTransform; -import com.twitter.ml.tool.prediction.ModelInterpreter; - -/** - * The base model builder for LightweightLinearModels. - */ -public abstract class BaseModelBuilder implements ModelBuilder { - // Ignore features that have an absolute weight lower than this value - protected static final double MIN_WEIGHT = 1e-9; - private static final String BIAS_FIELD_NAME = ModelInterpreter.BIAS_FIELD_NAME; - static final String DISCRETIZER_NAME_SUFFIX = - "." + DiscretizerTransform.DEFAULT_FEATURE_NAME_SUFFIX; - - protected final String modelName; - protected double bias; - - public BaseModelBuilder(String modelName) { - this.modelName = modelName; - this.bias = 0.0; - } - - /** - * Collects all the ranges of a discretized feature and sorts them. - */ - static DiscretizedFeature buildFeature(Collection ranges) { - List sortedRanges = Lists.newArrayList(ranges); - sortedRanges.sort(Comparator.comparingDouble(a -> a.minValue)); - - double[] splits = new double[ranges.size()]; - double[] weights = new double[ranges.size()]; - - for (int i = 0; i < sortedRanges.size(); i++) { - splits[i] = sortedRanges.get(i).minValue; - weights[i] = sortedRanges.get(i).weight; - } - return new DiscretizedFeature(splits, weights); - } - - /** - * Parses a line from the interpreted model text file. See the javadoc of the constructor for - * more details about how to create the text file. - *

    - * The file uses TSV format with 3 columns: - *

    - * Model name (Generated by ML API, but ignored by this class) - * Feature definition: - * Name of the feature or definition from the MDL discretizer. - * Weight: - * Weight of the feature using LOGIT scale. - *

    - * When it parses each line, it stores the weights for all the features defined in the context, - * as well as the bias, but it ignores any other feature (e.g. label, prediction or - * meta.record_weight) and features with a small absolute weight (see MIN_WEIGHT). - *

    - * Example lines: - *

    - * model_name bias 0.019735312089324074 - * model_name demo.binary_feature 0.06524706073105327 - * model_name demo.continuous_feature 0.0 - * model_name demo.continuous_feature.dz/dz_model=mdl/dz_range=-inf_3.58e-01 0.07155931927263737 - * model_name demo.continuous_feature.dz/dz_model=mdl/dz_range=3.58e-01_inf -0.08979256264865387 - * - * @see ModelInterpreter - * @see DiscretizerTransform - */ - @Override - public ModelBuilder parseLine(String line) { - String[] columns = line.split("\t"); - if (columns.length != 3) { - return this; - } - - // columns[0] has the model name, which we don't need - String featureName = columns[1]; - double weight = Double.parseDouble(columns[2]); - - if (BIAS_FIELD_NAME.equals(featureName)) { - bias = weight; - return this; - } - - FeatureParser parser = FeatureParser.parse(featureName); - String baseName = parser.getBaseName(); - - if (Math.abs(weight) < MIN_WEIGHT && !baseName.endsWith(DISCRETIZER_NAME_SUFFIX)) { - // skip, unless it represents a range of a discretized feature. - // discretized features with all zeros should also be removed, but will handle that later - return this; - } - - addFeature(baseName, weight, parser); - return this; - } - - /** - * Adds feature to the model - */ - protected abstract void addFeature(String baseName, double weight, FeatureParser parser); - - @Override - public abstract LightweightLinearModel build(); -} diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/BaseScoreAccumulator.docx b/src/java/com/twitter/search/common/util/ml/prediction_engine/BaseScoreAccumulator.docx new file mode 100644 index 0000000000000000000000000000000000000000..9c43606a2d5895d1a4687e0d19b960ae6b348893 GIT binary patch literal 37219 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 R1j6O literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/BaseScoreAccumulator.java b/src/java/com/twitter/search/common/util/ml/prediction_engine/BaseScoreAccumulator.java deleted file mode 100644 index 1be1c4872..000000000 --- a/src/java/com/twitter/search/common/util/ml/prediction_engine/BaseScoreAccumulator.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.twitter.search.common.util.ml.prediction_engine; - -/** - * The base class for a lightweight scorer based on a model and some feature data. - * - * @param The type of feature data to be scored with - */ -public abstract class BaseScoreAccumulator { - protected final LightweightLinearModel model; - protected double score; - - public BaseScoreAccumulator(LightweightLinearModel model) { - this.model = model; - this.score = model.bias; - } - - /** - * Compute score with a model and feature data - */ - public final double scoreWith(D featureData, boolean useLogitScore) { - updateScoreWithFeatures(featureData); - return useLogitScore ? getLogitScore() : getSigmoidScore(); - } - - public final void reset() { - this.score = model.bias; - } - - /** - * Update the accumulator score with features, after this function the score should already - * be computed. - */ - protected abstract void updateScoreWithFeatures(D data); - - /** - * Get the already accumulated score - */ - protected final double getLogitScore() { - return score; - } - - /** - * Returns the score as a value mapped between 0 and 1. - */ - protected final double getSigmoidScore() { - return 1 / (1 + Math.exp(-score)); - } -} diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/CompositeFeatureContext.docx b/src/java/com/twitter/search/common/util/ml/prediction_engine/CompositeFeatureContext.docx new file mode 100644 index 0000000000000000000000000000000000000000..0d076e9c9a5300077043002bd96c54e2749bf22e GIT binary patch literal 37127 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

    60RlC4pwmiF?lbClm@mw66@ zP^x1`4yC;HMw;8$6J~=)V&EZQLV@tw;(=Mth3;>1I1=RjzgfdFlrD$N8>pMJKTERe^SeunHeR$nxst$C@2m*df|) z&aT$~wT5?3cQ~bA7Jc1yV9D%N+E<>wI;GkFeEICAeNHvE*4-+7Cmo`ovU1YvIqTk7 z?FxVSM(wD2Bk-PLBioF%3qNFCjDJ7bw=(T>POxCzDwfH%FXkDZeZs}!)8%c{*`(6p z+mz0B;r)Utm-rH``{rt&9S*7Kv&{I-Jui}7c-vFKhU=;gYi4pr^Udp2j$?T->uFzy z??&VKiTfBP?D<*wYJCa!Jm2MuE_PSMy)f*F?8g5=NR6Gp;8bM8);a~l>eQUKn{MQb-sCe|moV?egGX~h zms}K1So&WsFZ+VRcIoEMcWlXA-I_%`f)UDxC1<{nljz?0X_dmi#MFqs4_39OCR{NQ zc_YE4bGT6FVa2?J%rnd{*pr^L_ny|h#2f$QQh)r^iQCf-Kbyii?d@IVIqm0s&#V`| z-M%C(tygBMZRV#bb9OH~x2O8ro2En6YmRQ4bjhf?veftOBh?>OcjXR7zyG{`$`g;^ z;?u9Lwae8#xw!SUTy@RkWy|N)J-hjQUj4%2)7PfQ)urBEy?*b{YqzcMRc_CIzOLWy z-sh9|YJc1ReRKM7{8t&vsx{v$?!U}GSM&Ss_rK}&7WEGwt=}K}>uTD!L%y7fOemAO^*l@;GhnLG>S^p>9mPrdj`Ht;WNVw1{P(1?}zZ`|?i zkbQtRBa;X-Xn351;p|NFh_yjWCr$;nP)`BJ+(6w97-#^BF)&0s0|$ds^Gf1FDhpDJ zV?nJmbOS2Yyd8c3mEHr6BXh%a1L+3FV?ZMyZG3Rk9$jNc8+ULfP{~E0MnM#f&w(QF zx+gim2s{#vuKmmH+v2Z*+H+VK7z9wX*8@f1+7k;3u(`UJ;pqZlpgJvJD-_l88Nh%5 z&l~`aD9r`>9h>&N25BK9pyj85M#!L8ehWC14%QCwIkF*GL!o!In02>414CRWD+51@ zNp3t)lZs0!b5g<6mFQuBexM{we*@z`YZT3B$4jD{gFa7+FekqdW)9LM3c7ami5GR+x&i1N zU4#LjQ4GM=?L{{Wz3+%H>rErNV-P(_bW_l~S_o5^o1vkC((yvqkKP_c=%3eyl*Le6 XhXLNKz#Ih1Re}tO!0a)h2gCyaL1B8A literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/CompositeFeatureContext.java b/src/java/com/twitter/search/common/util/ml/prediction_engine/CompositeFeatureContext.java deleted file mode 100644 index 5da921b13..000000000 --- a/src/java/com/twitter/search/common/util/ml/prediction_engine/CompositeFeatureContext.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.twitter.search.common.util.ml.prediction_engine; - -import java.util.function.Supplier; -import javax.annotation.Nullable; - -import com.twitter.ml.api.FeatureContext; -import com.twitter.search.common.features.thrift.ThriftSearchFeatureSchema; - -/** - * An object to store feature context information to build models with. - */ -public class CompositeFeatureContext { - // legacy static feature context - private final FeatureContext legacyContext; - // a supplier for the context (well the schema itself) of the schema-based features - private final Supplier schemaSupplier; - - public CompositeFeatureContext( - FeatureContext legacyContext, - @Nullable Supplier schemaSupplier) { - this.legacyContext = legacyContext; - this.schemaSupplier = schemaSupplier; - } - - FeatureContext getLegacyContext() { - return legacyContext; - } - - ThriftSearchFeatureSchema getFeatureSchema() { - if (schemaSupplier == null) { - throw new UnsupportedOperationException("Feature schema was not initialized"); - } - return schemaSupplier.get(); - } -} diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/DecisionForestModelsManager.docx b/src/java/com/twitter/search/common/util/ml/prediction_engine/DecisionForestModelsManager.docx new file mode 100644 index 0000000000000000000000000000000000000000..2219622a55b05258804f85ef7676f782d5bf1804 GIT binary patch literal 37763 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 { - private static final String MODEL_FILE_NAME = "model.json"; - - private final FeatureContext featureContext; - - DecisionForestModelsManager( - Supplier> activeModelsSupplier, - FeatureContext featureContext, - boolean shouldUnloadInactiveModels, - String statsPrefix - ) { - super(activeModelsSupplier, shouldUnloadInactiveModels, statsPrefix); - this.featureContext = featureContext; - } - - @Override - public DecisionForestScorer readModelFromDirectory(AbstractFile modelBaseDir) - throws IOException { - String modelFilePath = modelBaseDir.getChild(MODEL_FILE_NAME).getPath(); - return DecisionForestScorer.createCartTreeScorer(modelFilePath, featureContext); - } - - /** - * Creates an instance that loads the models specified in a configuration file. - * - * Note that if the configuration file changes and it doesn't include a model that was present - * before, the model will be removed (i.e. it unloads models that are not active anymore). - */ - public static DecisionForestModelsManager createUsingConfigFile( - AbstractFile configFile, FeatureContext featureContext, String statsPrefix) { - Preconditions.checkArgument( - configFile.canRead(), "Config file is not readable: %s", configFile.getPath()); - return new DecisionForestModelsManager( - new ConfigSupplier(configFile), featureContext, true, statsPrefix); - } - - /** - * Creates a no-op instance. It can be used for tests or when the models are disabled. - */ - public static DecisionForestModelsManager createNoOp(String statsPrefix) { - return new DecisionForestModelsManager( - Collections::emptyMap, new FeatureContext(), false, statsPrefix) { - @Override - public void run() { } - }; - } -} diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/DiscretizedFeature.docx b/src/java/com/twitter/search/common/util/ml/prediction_engine/DiscretizedFeature.docx new file mode 100644 index 0000000000000000000000000000000000000000..c7a99545262b99d879d69a123dc9505e59564ce0 GIT binary patch literal 37384 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/DiscretizedFeature.java b/src/java/com/twitter/search/common/util/ml/prediction_engine/DiscretizedFeature.java deleted file mode 100644 index 562535c48..000000000 --- a/src/java/com/twitter/search/common/util/ml/prediction_engine/DiscretizedFeature.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.twitter.search.common.util.ml.prediction_engine; - -import java.util.Arrays; - -import com.google.common.base.Preconditions; - -/** - * Represents a continuous feature that has been discretized into a set of disjoint ranges. - * - * Each range [a, b) is represented by the lower split point (a) and its associated weight. - */ -class DiscretizedFeature { - - protected final double[] splitPoints; - protected final double[] weights; - - /** - * Creates an instance from a list of split points and their corresponding weights. - * - * @param splitPoints Lower values of the ranges. The first entry must be Double.NEGATIVE_INFINITY - * They must be sorted (in ascending order). - * @param weights Weights for the splits. - */ - protected DiscretizedFeature(double[] splitPoints, double[] weights) { - Preconditions.checkArgument(splitPoints.length == weights.length); - Preconditions.checkArgument(splitPoints.length > 1); - Preconditions.checkArgument(splitPoints[0] == Double.NEGATIVE_INFINITY, - "First split point must be Double.NEGATIVE_INFINITY"); - this.splitPoints = splitPoints; - this.weights = weights; - } - - public double getWeight(double value) { - // binarySearch returns (- insertionPoint - 1) - int index = Math.abs(Arrays.binarySearch(splitPoints, value) + 1) - 1; - return weights[index]; - } - - public boolean allValuesBelowThreshold(double minWeight) { - for (double weight : weights) { - if (Math.abs(weight) > minWeight) { - return false; - } - } - return true; - } -} diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/DiscretizedFeatureRange.docx b/src/java/com/twitter/search/common/util/ml/prediction_engine/DiscretizedFeatureRange.docx new file mode 100644 index 0000000000000000000000000000000000000000..c4787329454bb1939e1a77e088b5f371a927a466 GIT binary patch literal 37142 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/DiscretizedFeatureRange.java b/src/java/com/twitter/search/common/util/ml/prediction_engine/DiscretizedFeatureRange.java deleted file mode 100644 index 725009ab0..000000000 --- a/src/java/com/twitter/search/common/util/ml/prediction_engine/DiscretizedFeatureRange.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.twitter.search.common.util.ml.prediction_engine; - -import com.google.common.base.Preconditions; - -/** - * The discretized value range for a continous feature. After discretization a continuous feature - * may become multiple discretized binary features, each occupying a range. This class stores this - * range and a weight for it. - */ -public class DiscretizedFeatureRange { - protected final double minValue; - protected final double maxValue; - protected final double weight; - - DiscretizedFeatureRange(double weight, String range) { - String[] limits = range.split("_"); - Preconditions.checkArgument(limits.length == 2); - - this.minValue = parseRangeValue(limits[0]); - this.maxValue = parseRangeValue(limits[1]); - this.weight = weight; - } - - private static double parseRangeValue(String value) { - if ("inf".equals(value)) { - return Double.POSITIVE_INFINITY; - } else if ("-inf".equals(value)) { - return Double.NEGATIVE_INFINITY; - } else { - return Double.parseDouble(value); - } - } -} diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/LegacyModelBuilder.docx b/src/java/com/twitter/search/common/util/ml/prediction_engine/LegacyModelBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..82c51ebfb78fd5ca2eda0cba0f10d4005f978020 GIT binary patch literal 37819 zcmagFWmsL=vNepmdvJGmcL)S`cMH0a;BEneySux)yF&=>E`i|g?@o80bGpyH_xt`V z9_FkXV^r1JYu1{3Zbcbz2n-Mq5EzijR4&a*<-*uRP!NzYC=d{I;HZum!0wBg-4_E@ zcY8A@Jw`WMo5n;rg;imcujj9rNlb#oo?^(DWjprN_Vls1;??Q5+*(Uar?Oy=_Y=Hf zYBP!

    it|srTN5t91fhUQLubV&bQIdKnt|q~OI~`RjR%XXae{60s!GiⅅbAwPd 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 z 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 Ps^lT=!1Az2nfvxXn@PZY literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/LegacyModelBuilder.java b/src/java/com/twitter/search/common/util/ml/prediction_engine/LegacyModelBuilder.java deleted file mode 100644 index 4cb87f556..000000000 --- a/src/java/com/twitter/search/common/util/ml/prediction_engine/LegacyModelBuilder.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.twitter.search.common.util.ml.prediction_engine; - -import java.util.Map; - -import com.google.common.collect.HashMultimap; -import com.google.common.collect.Maps; -import com.google.common.collect.Multimap; - -import com.twitter.ml.api.Feature; -import com.twitter.ml.api.FeatureContext; -import com.twitter.ml.api.FeatureParser; -import com.twitter.ml.api.transform.DiscretizerTransform; - -/** - * The builder for a model based on the legacy (non-schema-based) features. - * See also SchemaBasedModelBuilder. - */ -public final class LegacyModelBuilder extends BaseModelBuilder { - - private final Map featuresByName; - // for legacy features - private final Map, Double> binaryFeatures; - private final Map, Double> continuousFeatures; - private final Multimap, DiscretizedFeatureRange> discretizedFeatureRanges; - - LegacyModelBuilder(String modelName, FeatureContext context) { - super(modelName); - featuresByName = getFeaturesByName(context); - binaryFeatures = Maps.newHashMap(); - continuousFeatures = Maps.newHashMap(); - discretizedFeatureRanges = HashMultimap.create(); - } - - private static Map getFeaturesByName(FeatureContext featureContext) { - Map featuresByName = Maps.newHashMap(); - for (Feature feature : featureContext.getAllFeatures()) { - featuresByName.put(feature.getFeatureName(), feature); - } - return featuresByName; - } - - @Override - protected void addFeature(String baseName, double weight, FeatureParser parser) { - Feature feature = featuresByName.get(baseName); - if (feature != null) { - switch (feature.getFeatureType()) { - case BINARY: - binaryFeatures.put(feature, weight); - break; - case CONTINUOUS: - continuousFeatures.put(feature, weight); - break; - default: - throw new IllegalArgumentException( - String.format("Unsupported feature type: %s", feature)); - } - } else if (baseName.endsWith(DISCRETIZER_NAME_SUFFIX) - && parser.getExtension().containsKey(DiscretizerTransform.DEFAULT_RANGE_EXT)) { - - String featureName = - baseName.substring(0, baseName.length() - DISCRETIZER_NAME_SUFFIX.length()); - - feature = featuresByName.get(featureName); - if (feature == null) { - return; - } - - String rangeSpec = parser.getExtension().get(DiscretizerTransform.DEFAULT_RANGE_EXT); - discretizedFeatureRanges.put(feature, new DiscretizedFeatureRange(weight, rangeSpec)); - } - } - - @Override - public LightweightLinearModel build() { - Map, DiscretizedFeature> discretizedFeatures = Maps.newHashMap(); - for (Feature feature : discretizedFeatureRanges.keySet()) { - DiscretizedFeature discretizedFeature = - BaseModelBuilder.buildFeature(discretizedFeatureRanges.get(feature)); - if (!discretizedFeature.allValuesBelowThreshold(MIN_WEIGHT)) { - discretizedFeatures.put(feature, discretizedFeature); - } - } - return LightweightLinearModel.createForLegacy( - modelName, bias, binaryFeatures, continuousFeatures, discretizedFeatures); - } -} diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/LightweightLinearModel.docx b/src/java/com/twitter/search/common/util/ml/prediction_engine/LightweightLinearModel.docx new file mode 100644 index 0000000000000000000000000000000000000000..6355ce4e93165b984580277659d806ed6abe5049 GIT binary patch literal 38728 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 CBYSrM literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/LightweightLinearModel.java b/src/java/com/twitter/search/common/util/ml/prediction_engine/LightweightLinearModel.java deleted file mode 100644 index 57324120b..000000000 --- a/src/java/com/twitter/search/common/util/ml/prediction_engine/LightweightLinearModel.java +++ /dev/null @@ -1,187 +0,0 @@ -package com.twitter.search.common.util.ml.prediction_engine; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; -import java.util.Map; -import javax.annotation.Nullable; - -import com.google.common.base.Preconditions; - -import com.twitter.ml.api.Feature; -import com.twitter.search.common.file.AbstractFile; - -/** - * Provides an interface to the weights associated to the features of a linear model trained - * with Prediction Engine. - * - * This class is used along with ScoreAccumulator to efficiently score instances. It supports only - * a limited set of features: - * - * - Only linear models are supported. - * - Only binary and continuous features (i.e. it doesn't support discrete/categorical features). - * - It supports the MDL discretizer (but not the one based on trees). - * - It doesn't support feature crossings. - * - * Instances of this class should be created using only the load methods (loadFromHdfs and - * loadFromLocalFile). - * - * IMPORTANT: - * - * Use this class, and ScoreAccumulator, ONLY when runtime is a major concern. Otherwise, consider - * using Prediction Engine as a library. Ideally, we should access directly the structures that - * Prediction Engine creates when it loads a model, instead of parsing a text file with the - * feature weights. - * - * The discretized feature bins created by MDL may be too fine to be displayed properly in the - * parsed text file and there may be bins with the same min value. A binary search finding the - * bin for a same feature value therefore may end up with different bins/scores in different runs, - * producing unstable scores. See SEARCHQUAL-15957 for more detail. - * - * @see com.twitter.ml.tool.prediction.ModelInterpreter - */ -public class LightweightLinearModel { - protected final double bias; - protected final boolean schemaBased; - protected final String name; - - // for legacy metadata based model - protected final Map, Double> binaryFeatures; - protected final Map, Double> continuousFeatures; - protected final Map, DiscretizedFeature> discretizedFeatures; - - // for schema-based model - protected final Map binaryFeaturesById; - protected final Map continuousFeaturesById; - protected final Map discretizedFeaturesById; - - private static final String SCHEMA_BASED_SUFFIX = ".schema_based"; - - LightweightLinearModel( - String modelName, - double bias, - boolean schemaBased, - @Nullable Map, Double> binaryFeatures, - @Nullable Map, Double> continuousFeatures, - @Nullable Map, DiscretizedFeature> discretizedFeatures, - @Nullable Map binaryFeaturesById, - @Nullable Map continuousFeaturesById, - @Nullable Map discretizedFeaturesById) { - - this.name = modelName; - this.bias = bias; - this.schemaBased = schemaBased; - - // legacy feature maps - this.binaryFeatures = - schemaBased ? null : Preconditions.checkNotNull(binaryFeatures); - this.continuousFeatures = - schemaBased ? null : Preconditions.checkNotNull(continuousFeatures); - this.discretizedFeatures = - schemaBased ? null : Preconditions.checkNotNull(discretizedFeatures); - - // schema based feature maps - this.binaryFeaturesById = - schemaBased ? Preconditions.checkNotNull(binaryFeaturesById) : null; - this.continuousFeaturesById = - schemaBased ? Preconditions.checkNotNull(continuousFeaturesById) : null; - this.discretizedFeaturesById = - schemaBased ? Preconditions.checkNotNull(discretizedFeaturesById) : null; - } - - public String getName() { - return name; - } - - /** - * Create model for legacy features - */ - protected static LightweightLinearModel createForLegacy( - String modelName, - double bias, - Map, Double> binaryFeatures, - Map, Double> continuousFeatures, - Map, DiscretizedFeature> discretizedFeatures) { - return new LightweightLinearModel(modelName, bias, false, - binaryFeatures, continuousFeatures, discretizedFeatures, - null, null, null); - } - - /** - * Create model for schema-based features - */ - protected static LightweightLinearModel createForSchemaBased( - String modelName, - double bias, - Map binaryFeaturesById, - Map continuousFeaturesById, - Map discretizedFeaturesById) { - return new LightweightLinearModel(modelName, bias, true, - null, null, null, - binaryFeaturesById, continuousFeaturesById, discretizedFeaturesById); - } - - public boolean isSchemaBased() { - return schemaBased; - } - - /** - * Loads a model from a text file. - * - * See the javadoc of the constructor for more details on how to create the file from a trained - * Prediction Engine model. - * - * If schemaBased is true, the featureContext is ignored. - */ - public static LightweightLinearModel load( - String modelName, - BufferedReader reader, - boolean schemaBased, - CompositeFeatureContext featureContext) throws IOException { - - ModelBuilder builder = schemaBased - ? new SchemaBasedModelBuilder(modelName, featureContext.getFeatureSchema()) - : new LegacyModelBuilder(modelName, featureContext.getLegacyContext()); - String line; - while ((line = reader.readLine()) != null) { - builder.parseLine(line); - } - return builder.build(); - } - - /** - * Loads a model from a local text file. - * - * See the javadoc of the constructor for more details on how to create the file from a trained - * Prediction Engine model. - */ - public static LightweightLinearModel loadFromLocalFile( - String modelName, - CompositeFeatureContext featureContext, - String fileName) throws IOException { - try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) { - boolean schemaBased = modelName.endsWith(SCHEMA_BASED_SUFFIX); - return load(modelName, reader, schemaBased, featureContext); - } - } - - /** - * Loads a model from a file in the local filesystem or in HDFS. - * - * See the javadoc of the constructor for more details on how to create the file from a trained - * Prediction Engine model. - */ - public static LightweightLinearModel load( - String modelName, CompositeFeatureContext featureContext, AbstractFile modelFile) - throws IOException { - try (BufferedReader reader = modelFile.getCharSource().openBufferedStream()) { - boolean schemaBased = modelName.endsWith(SCHEMA_BASED_SUFFIX); - return load(modelName, reader, schemaBased, featureContext); - } - } - - public String toString() { - return String.format("LightweightLinearModel. {bias=%s binary=%s continuous=%s discrete=%s}", - this.bias, this.binaryFeatures, this.continuousFeatures, this.discretizedFeatures); - } -} diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/ModelBuilder.docx b/src/java/com/twitter/search/common/util/ml/prediction_engine/ModelBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..3019f7b23c2b7ebe9b60d05aac4eae87573a9acc GIT binary patch literal 36849 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 z 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 Zd!s`O6J}rreVbK0AXi{|G-ZAJ_CM-M{U`tc literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/ModelLoader.java b/src/java/com/twitter/search/common/util/ml/prediction_engine/ModelLoader.java deleted file mode 100644 index 7809161b0..000000000 --- a/src/java/com/twitter/search/common/util/ml/prediction_engine/ModelLoader.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.twitter.search.common.util.ml.prediction_engine; - -import java.io.IOException; -import java.util.List; -import java.util.Map; - -import com.google.common.base.Optional; -import com.google.common.base.Supplier; -import com.google.common.base.Suppliers; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.file.AbstractFile; -import com.twitter.search.common.file.FileUtils; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.metrics.SearchLongGauge; -import com.twitter.search.common.metrics.SearchStatsReceiver; - -/** - * Loads LightweightLinearModel objects from a directory and provides an interface for reloading - * them periodically. - * - * All the models must support the same features (defined by a FeatureContext) and they are - * identified by the name of the subdirectory. This is the required directory structure: - * - * /path/to/base-directory - * one-model/model.tsv - * another-model/model.tsv - * experimental-model/model.tsv - * - * Each subdirectory must contain a file named 'model.tsv' in the format required by - * LightweightLinearModel. - */ -public class ModelLoader implements Runnable { - - private static final Logger LOG = LoggerFactory.getLogger(ModelLoader.class); - private static final String MODEL_FILE_NAME = "model.tsv"; - - private final CompositeFeatureContext featureContext; - private final Supplier directorySupplier; - - private final Map models; - private final Map lastModifiedMsByModel; - - private final SearchLongGauge lastModelLoadedAtMs; - private final SearchLongGauge numModels; - private final SearchCounter numLoads; - private final SearchCounter numErrors; - - /** - * Creates a new instance for a feature context and a base directory. - * - * It exports 4 counters: - * - * ${counterPrefix}_last_loaded: - * Timestamp (in ms) when the last model was loaded. - * ${counterPrefix}_num_models: - * Number of models currently loaded. - * ${counterPrefix}_num_loads: - * Number of succesful model loads. - * ${counterPrefix}_num_errors: - * Number of errors occurred while loading the models. - */ - protected ModelLoader( - CompositeFeatureContext featureContext, - Supplier directorySupplier, - String counterPrefix, - SearchStatsReceiver statsReceiver) { - this.featureContext = featureContext; - - // This function returns the base directory every time we call 'run'. We use a function instead - // of using directly an AbstractFile instance, in case that we can't obtain an instance at - // initialization time (e.g. if there's an issue with HDFS). - this.directorySupplier = directorySupplier; - this.models = Maps.newConcurrentMap(); - this.lastModifiedMsByModel = Maps.newConcurrentMap(); - - this.lastModelLoadedAtMs = statsReceiver.getLongGauge(counterPrefix + "last_loaded"); - this.numModels = statsReceiver.getLongGauge(counterPrefix + "num_models"); - this.numLoads = statsReceiver.getCounter(counterPrefix + "num_loads"); - this.numErrors = statsReceiver.getCounter(counterPrefix + "num_errors"); - } - - public Optional getModel(String name) { - return Optional.fromNullable(models.get(name)); - } - - /** - * Loads the models from the base directory. - * - * It doesn't load a model if its file has not been modified since the last time it was loaded. - * - * This method doesn't delete previously loaded models if their directories are not available. - */ - @Override - public void run() { - try { - AbstractFile baseDirectory = directorySupplier.get(); - List modelDirectories = - Lists.newArrayList(baseDirectory.listFiles(IS_MODEL_DIR)); - for (AbstractFile directory : modelDirectories) { - try { - // Note that the modelName is the directory name, if it ends with ".schema_based", the - // model will be loaded as a schema-based model. - String modelName = directory.getName(); - AbstractFile modelFile = directory.getChild(MODEL_FILE_NAME); - long currentLastModified = modelFile.getLastModified(); - Long lastModified = lastModifiedMsByModel.get(modelName); - if (lastModified == null || lastModified < currentLastModified) { - LightweightLinearModel model = - LightweightLinearModel.load(modelName, featureContext, modelFile); - if (!models.containsKey(modelName)) { - LOG.info("Loading model {}.", modelName); - } - models.put(modelName, model); - lastModifiedMsByModel.put(modelName, currentLastModified); - lastModelLoadedAtMs.set(System.currentTimeMillis()); - numLoads.increment(); - LOG.debug("Model: {}", model); - } else { - LOG.debug("Directory for model {} has not changed.", modelName); - } - } catch (Exception e) { - LOG.error("Error loading model from directory: " + directory.getPath(), e); - this.numErrors.increment(); - } - } - if (numModels.get() != models.size()) { - LOG.info("Finished loading models. Model names: {}", models.keySet()); - } - this.numModels.set(models.size()); - } catch (IOException e) { - LOG.error("Error loading models", e); - this.numErrors.increment(); - } - } - - /** - * Creates an instance that loads models from a directory (local or from HDFS). - */ - public static ModelLoader forDirectory( - final AbstractFile directory, - CompositeFeatureContext featureContext, - String counterPrefix, - SearchStatsReceiver statsReceiver) { - Supplier directorySupplier = Suppliers.ofInstance(directory); - return new ModelLoader(featureContext, directorySupplier, counterPrefix, statsReceiver); - } - - /** - * Creates an instance that loads models from HDFS. - */ - public static ModelLoader forHdfsDirectory( - final String nameNode, - final String directory, - CompositeFeatureContext featureContext, - String counterPrefix, - SearchStatsReceiver statsReceiver) { - Supplier directorySupplier = - () -> FileUtils.getHdfsFileHandle(directory, nameNode); - return new ModelLoader(featureContext, directorySupplier, counterPrefix, statsReceiver); - } - - private static final AbstractFile.Filter IS_MODEL_DIR = file -> { - try { - if (file.isDirectory()) { - AbstractFile modelFile = file.getChild(MODEL_FILE_NAME); - return (modelFile != null) && modelFile.canRead(); - } - } catch (IOException e) { - LOG.error("Error reading file: " + file, e); - } - return false; - }; -} diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/PredictionEngineModelsManager.docx b/src/java/com/twitter/search/common/util/ml/prediction_engine/PredictionEngineModelsManager.docx new file mode 100644 index 0000000000000000000000000000000000000000..5abb766113683a03cef71d6b70f4193f840161d7 GIT binary patch literal 37704 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

    9Zp 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 Ghz9_K%7zR8 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/PredictionEngineModelsManager.java b/src/java/com/twitter/search/common/util/ml/prediction_engine/PredictionEngineModelsManager.java deleted file mode 100644 index b2a96fd42..000000000 --- a/src/java/com/twitter/search/common/util/ml/prediction_engine/PredictionEngineModelsManager.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.twitter.search.common.util.ml.prediction_engine; - -import java.util.Collections; -import java.util.Map; -import java.util.function.Supplier; - -import com.google.common.base.Preconditions; - -import com.twitter.ml.prediction.core.PredictionEngine; -import com.twitter.ml.prediction.core.PredictionEngineFactory; -import com.twitter.ml.prediction.core.PredictionEngineLoadingException; -import com.twitter.ml.vw.constant.SnapshotConstants; -import com.twitter.search.common.file.AbstractFile; -import com.twitter.search.common.util.ml.models_manager.BaseModelsManager; - -/** - * Loads PredictionEngine models from a model provider (config or fixed directory) - * and keeps them in memory. Can also reload models periodically by querying the - * same model provider source. - */ -public class PredictionEngineModelsManager extends BaseModelsManager { - - PredictionEngineModelsManager( - Supplier> activeModelsSupplier, - boolean shouldUnloadInactiveModels, - String statsPrefix) { - super(activeModelsSupplier, shouldUnloadInactiveModels, statsPrefix); - } - - @Override - public PredictionEngine readModelFromDirectory(AbstractFile modelBaseDir) - throws PredictionEngineLoadingException { - // We need to add the 'hdfs://' prefix, otherwise PredictionEngine will treat it as a - // path in the local filesystem. - PredictionEngine predictionEngine = new PredictionEngineFactory() - .createFromSnapshot( - "hdfs://" + modelBaseDir.getPath(), SnapshotConstants.FIXED_PATH); - - predictionEngine.initialize(); - - return predictionEngine; - } - - /** - * Creates an instance that loads the models specified in a configuration file. - * - * Note that if the configuration file changes and it doesn't include a model that was present - * before, the model will be removed (i.e. it unloads models that are not active anymore). - */ - public static PredictionEngineModelsManager createUsingConfigFile( - AbstractFile configFile, String statsPrefix) { - Preconditions.checkArgument( - configFile.canRead(), "Config file is not readable: %s", configFile.getPath()); - return new PredictionEngineModelsManager(new ConfigSupplier(configFile), true, statsPrefix); - } - - /** - * Creates a no-op instance. It can be used for tests or when the models are disabled. - */ - public static PredictionEngineModelsManager createNoOp(String statsPrefix) { - return new PredictionEngineModelsManager(Collections::emptyMap, false, statsPrefix) { - @Override - public void run() { } - }; - } - -} diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/SchemaBasedModelBuilder.docx b/src/java/com/twitter/search/common/util/ml/prediction_engine/SchemaBasedModelBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..855bd5ef2c533cc19ff286f6f2297f2ef6b43351 GIT binary patch literal 38079 zcmagEb9`Lg*Eby7Zfx6Vj3$k3tKkHVlZhMKwr$&P8e0vTG`64Vb^UnX&-1?jocYW; zXMM5OnX~skvz25ap|HTfz~I29(s;D0REpw~z`?-AVZgvJK~Y_Cfc;l<`>%#-9uDTt z`poWjwoOU$ifbZh-_BpLlUamFy~I(m%Xb}U9T?;AC2BHmd9{~WPURpT?0Z#U)Pl^)odK$RSI-3pVnZ&n$TMCF96smZbNH=7(TvTQj{s z%y5IV?$r+P8)5{Xi{@j@V zA6IgHo%D4he-!tV%zj;Frq;-^$v|lL=S>YWx=@$;X4Duz=v?PI#n9knsqR?6)>nk$ zK8y%J`|;DRm)UJXlj9hszAW-aRc8~!I{4=)z$S>gcJ2r=Tl3vsAopZVgW*f3j&`(~ zkJWLYG`{D(I7;S8ZvY)l1DSpzOgejKOqF-g{lNV_T~Q3B(BpEb!TtQ4yxpX_-ze%g zE_LBLl@8IE<=z`zhepN3B6w$3cfe~wl0Q=cK((EQGYBuA-A?3>jk3Resyj^qo4dQ&IQ zitT~Y#jD+2$`bloIDN#2=X<6Wix~w3%M8V~ftn`T3jujceOg;|myI2U>u|~No&IF* zYP&(&w&@YK6euF*)c4#L8l*xDo0vnobPZ>-qSay&hV*vQD5XJV3FtS7UuiX6e3<3{ zFaRmJX0Gs(s({2ESYWH`*grWNin7AIc?#x8K~^*Fhl&CwJzmc zrzvLH2X1Uum;3y`3l#bdQPm1`o6mv@gbpf@8NgJ@3E<$&VhV6F|8tXP#ZM>~>jxCfcezlI`?$M?$8~$1|^4izh_9xRTHeVo-4sy`%PeVp3 z2bt!ywJ_|2r>>9CNT}c(BFbqhZmk;Z+u^6qPL5kMu8{f_NG%~qD9Io4W=~5iMFR5R z)^%Ms0fR+#BlGjS>rBp6e!^ePS~+SlUz;a*X;O@VnHza1BW{A0A@Es=_cxbTY#E6% zSS6yFP%`b(KN!2G@{byP-#@*5SSDn6;JJjtJGMkIpqq0Oe|zb_BKYsV+^ntPo`Cvd z3k3#-_Md$*c5wKsEou|?YpiIU&kRudU&F0nMV0a50~SSR#W(P4<1<_4$H_m(LA9~% z0(~AsvH8BS+=dA>2s}5AKQD<|z&0v;QOBNm%pX;9+(2lm2_HFFn>r+ShAM|H!`2u= z*LO6W8LwJ^VS@jfrm0jt?nT~UGI>c1>)@=&F!Oa4MP#$ltGGkK!TbA*xrpR%*Sd$n zizKC{<;_%OR>klN$k&=L6&|HCf?S{WZjZH-laNuQAdFu*pe8&jtY}w4rEuj*3D}If zE+)S~StELVy{$LjzZ*wn9<>C4(VYK;U}(X;kF3y`>m8iMb;VZ8W?VP z<4FUlYJHhz=vCBdY>$@cNG=~2mjAkAZ0lV^nLsRx>>Uc! zlYrRr3yuW+syM6;QEWnU8m4dEIN4=++e)fJ=`c=*-N=Yyd!N4}~eEVj^yR?{;Cs?Of8c90c~vYCuFmE*=^~u~V=>3K&Y&I57hR^2ow^tOA zMCuIWc>m(G__@jX9!fky1K3Dr+~RcVXjV@2`<=%;Qfm%X5FHdos%^ANk9t_*=ZxF- z8;W?NUsUtBdRP8e-r4hyMj}2cB#!9wsQAyw&M63Im~?p^9FyO)G@Kma4drzLUU%8Hqr~g3`*ltla)? z+$AH7>kgGt)~mh^+pLVC`;$d>9Z<7Tl zudk>RA}DX>Pw{}S{YaP;LcIhz7v+F}NPC%)73=8#%ti_kMPV10WO||CLmYX_#U<<} zW(d5WE#(_@toU(g^!s*i=5|crx*%HhxA0CZY43I!x_UUAA_n7&^uTA{Yj#Ofmas0h zSidLFS3wLM6)7PrtMO4RjVsMt!}o98I2`gS%veuEsCANVQFB~q`a5Y?u3|z zj%0>jlb-2f(*vnkb9=hBn=@KcOWKuR>b1=o&(RyZtA#X9tvL2pL+>IaAs8S^<~vBW z%mdbq$-Z*^u+}d{3Yhf~6~1N>)Z#aDT*E;7E!t1&=BnDWZyAZ){N$ zLj|vtSBxJXN(wh}SqNuL3pR0;lWX7`$?t!NVa<|{@yM2p(T99-!4}V%$A%;A_*GKu zcTCMK?PO|bX`ZsgE8H+t>KNLxF3izLsiKmINPP^pV|Z&fynsRjQ0~=xeUVi0b};c% z_$aO|2P6Xh^OYXD-qRoZeH1md`OgcxJ)3E9|e)*g)KJMa&F7qOEPS zjfeN!T7J1WrHny7SRV|?GF0qAUfA|HhemG791cnCVU90K!>8i#%uo zM&P}*gyjlrmZuU_H2h%&W~b8NUf6_0;))&Gg+U1z_l{+?3<6ypTtYY5L z_`J^K-Ef%$*5{KiV#}l6l4Xy14RyP}BC=TJ=w)P2s`&BrHJvPCS&X498%V2JDMNsl zPDgJtWoqX`I^5i?nVOk#zkv-qzF${bJmV$DVT-6J__`~>zjW$y0_?a1XrwKr$}CdC zR5{T;ra4d+j#|y-*oGf$1nhljT_>2RYBkpKPc!ncBu477 zJM3t;(H2diZEY%>JFYf0Csi|pub5-3DtW*;=zBwNw4C(&BL5Pwhx8K7(*#c>P~Op0 zB?cbyQJiGryEV>H&sb~w3DDlPhXMDcW{nIz0A{cZu!|6x3H4>vAAK)3Gzi*m4qkX- z6(S*CghFgUTK*+@O08gCPp>2V%Af%br^<5jbB1Y?$Z4v`cW`=Xf~UM-Eu4|Fds!!m zBocZ4W`+8nltOfdvd*Gl%n zX5vJoJ)O4Vl${TY-P~)Ls4|Fa>;cRzt2>XU1HaV0yuNYvKtG~H(vd+1>{Umd#Rb9><}VJ0J!r;ulx}qN6vt*!7OWbA+NwR@eqgllbVc z+Kh!?MG`Exx+J<3misyNQ%B`|IC)Fqr}wr=75}diCR!W(8aT!)bFivCD%k2X0vip_ zt~J*=cdvU>V=m8i&kl~Wk5ht4-XRG$36EoK5i1@?6dbQqBo6kcM6Bj2s%w&mdz&85 zyFYiz@7;Z!oL7Lh?~A&^2mI3SI8vHg3GzaA13B2vOby+fXys9>jhxhsL62LKUSGnH z<;p8<-W3|3$X^+Mtv>EDIe%Yl=KWG<K^|5(jk}nQn%@ucnF`V z?iEoVLndmkiR1#|ufZLj6qaHdlZ2$R*YnOroZQvVslIP6ah8*%(&S9)>U5vm4_o*p z-dItG1{`gFq+TTsde2AXroCwtcy6?LyfkgJy?8(-+Cx(@*WT6}Rx_1eXl`NfCS{Y* zGP*iH8gD}57F}E4Kll9j<(6Zj?Ug)K&Ll0xnC|wNjJYj!cXoyc{y0B_~v3@_ATyF^Bd>yH*mnGs`0nJzL0O#ANpQ} zh5CIqG+Kw-NrqHu-)r9s(2J2RpWu|R6^m!sJ|u2RK?R=Mr~^N;?!snP{4hM)6($y?bt-92&d1sXNuhO#wWH#?Jw~kr1d@bHPgH7#}TBQ%-stq}4@j zsz~AaYx}snmOqNg&z{yLeW^VBoGAZ-P}fE^SdT#2lxHu}hFu+1cqFA7|E-=!2SQt7 zHa^ujBq#f;X9xM^RCViBSEbFi@J70G-?l=7MnFG0RNeA|kv;_%mC^3`;rH7IGeX~2 zSOWx$#sxz0;(h-YdA%qMLnw{=OvnL_2P3QTJ&Q$CFbTIF@f30PqS{Q=9muN^jtEg+ zs`_-*Ae-P1Q#QQTH?xU@o(k|^y$G6k=9B4=qo$-3M!86c<+});ouJK$lb#~nW0KVdR3p^g2x$B%| zC$GKQzn*0XFO2}+9%J4gpO?;~ON3ia_VgbfH!eF;7CN2}=YHLGgoNxJd%V_ve6xFR z-wb8}u96remt4#Y9EPOq?@X+nv{bxKoLn_}tlRRG2$NLy^>!(K;|qO{cxl_aE*XDQFwRYx zI<6Hy6V7_W5t4KIbg8s65)$}e$g=hf66Ln#yLpN_F>?B};lum=Rak6F@KkdXwC=O> z;+OIz1`1L7Qu_|QBi?n)U7nq|P3&1WJmP&uhIL;FGVRJajm~(!NV>gpPbcD;xQPHd zF?qi7c~V>_RP52YcyxQLt_w?u#rOuZymha4ceGSaBn`3o+I6h^bnEG!cfa0>KUt`x z5Dz$RZLpwj0aGPOyrr{G$=(NR9(zpsY9VyE%)2Z;kcEERCY~pvM2m?JL z)H=KcPBF=9!eVb~QK5@M&M^3ALK;v*YN~}_YYlz0g?)H~Svosn%!6@#U*8S~EPUZ! zZ#G`Prt7`b0#`b>J_=U3ou7rI@SJ7yD4x9g7@PwIt8?s^-Z2NelOtPKdrlP&*J1#> z4?o}Qbb6$+3A)>LrMMsIo_e`G@7btm-X7KtTzL)=`N}Sb-aA4Gsqai=JPcS0@OlU| z5Yl(y>QnbVBO6zs?v$dksgU%mlbBQr4NCZg(s_r@0bN|XZ$?h7hG-BB)E>hE=G1`s z+Z0JTw5<~RGzi2>pim!!uyQQ`^zDH0b7umJfmNo%+>_GtZ}UPY(BvuOl*d*TSdgLYc}^P5KM-7Xt^^*T2pNoHIEY zg4+m-G^5@J4&2L$Gp}jY0})rg?>|uaUXUy)X0)V4SVMgewP6UaEtljKL5~BMAT};! z@9ur==)I&Mh**EuGWYg>&MA!qXvVN)S#`#?gadJW;Oi~X>IJXA#xRy*lP5$!fB zvkIi)R45oQ0vzI7{75r@>I=lgp%rF#Rs?TT0l>9+$8<%|6s~a4f)YBRN14Q~aAE^u zJE046|D5~+I*IeolTbU90C3TNTwmRUPsI$y;(<8YFS7~pPwZ39cu*=S=sLQ;QguLR z!64lKO8uJ(s*L8`n#}!w5S%MhfFcNgsYvdGHp}~868{Yq>v>g;6OaPB>OY0K5`grm zpn<$%HU4BGMP&LP5}8QhXgm<%{!%@k;MRoJ`RA&Cg$kX;8>d}6x-kv1`6YA~NV|zO zTzt+S!F{!Tbx0OFl6pTQNcyMHB*vDuHoJFk`LW_8rNQwmWf( zKWzIw7!Ih}^{W99XJ+E3DG#FFCY!t~ zu~}DO9{v`Q!aL@V6@3458#k2YLMjSY~whyQ9i36yVI!m3xP!=_gxuDHF-!gPdi8z+-O12~r0ImNH+Ik-ANA{Vb6&NX%RmxV*5D3*Sl}5OI})01P4jBDSui(K@jK&ez>&f{;ed{6F5!?KJcDAQX~aNBu~e%n0EO8`B&9>jOJ}Mep^IW%p%{hBa7+d4bMho%%@XaIR5AvqK!G#L0W=|KH~Gu zK35opghFw~U{k5(Zl!>x{%l#yGqN0qo| zE~E9Jg3>c*XB0{K3F?WQyA%}ZNP_lGwXZ)LwrE}a*3iN{9L zM`XY=b}bIWZ9Gi#XJlKl56j2t{sa}tvgvcoTqRLv3LS0-L1MqJkFz@kr#0DXT|TOO zs3k@LbDlYQ`4!s-eW_beJTs zN?tQNSb#~eT({;$p$Q0J&KGEDP3TppYQfMM)JM_8ZIee?;$h=gieX%TadPG?=BS`f zR+G5!(VA&ANgrAXJ6>(!0&Jcj;{7^i*RmQ8$lZ@s%zUp~!Rc{VG?=FlE%iQ8cSznT z_2VLhSwzztr%gv>*ZBDuVJ$WKM6@M;BZq*mn@04GUexWfJ3+v;R9Zuija6kX;Fr5O zxF1vMj?OehqNey-k1Dt&{Q99qd|DWA)8D4-v`|p2f5%QZel@;gdnDg^72o@PoKa6T z=JzC~LsCBes%DesQD_NTXegRj=@-EXFT#H!ulEge0fHaoh2fAZzyfi7rI0~ zXNUt?Y=Den#+`@xz_rsoAAj+&khX4&K$O&s)?}3o;vIg@M)SH6KW#8l)JHG2guxku zEQw>UyB(t+-v?&4n%B72&d=kQ($xo&5Wc-Xyge-v;#SI{X0r13EW2~osvC0^ASkF& zmVe>rT`sRZ(HK&^yw9|ir>yyv8=}nNxh*mBIOJI{klubbkEs;A7D>-L8&{gYc!Z`g z)M~HJ*ni30(PA>owm5XVVByjSxh83(KH=@@VXaW9XJG$PXK-FcHjTOpM`2xW;m6mX zp=DIxOpiPt9ozVSr`=Yh93_#*v;)C{OW7Oymca<=NZU``0q0*bYne9*z70%h60EyL zvKWS3Y#OgXmh2K?4m1Cp6tJ~ab1YHd?Vx_Ve3{2KWRd6+-9*XYC{w^k)vKnIxIy?{ zi?f~Na9_#r^OXjOU9{+StxR{EeOJZ3Fox23Jg9b{H^+AG@~Dm|80?tf^3MGfcrrn%|KgxVUJ~?2%R-I=1$uNhr876=fT?31+{q zjUI@}FhqZ@;uWjkEk)F*^tDMYJY82=Ym;tv?l9^o=2?-^aniFMV~eL6A!?y~lj4!# zQ20E>E6ToCh-hJJ*^pK!SW`5f1(sWsHMeeva0BE zxLs9A(YkkVjHiu<5YtO$iaLr`5Bsy(_WbKIM>7jm%078yUo|5bl{^FDlh#sn;UjEE zckas<6`P|EloJI0LS8LvyzuSFy2 z&rS6Nu|35ZX!OdMz|!01s(d*|a_j+03kk@xb8M5ZYiPM_oDF!9FeslmQf|}QCacag zynV0*oERA7unSAeW4cygmCKYB9q)<<)LID=zT=zm@RPyk_vqVnasd5ZH_2KZAY?Xb=4O4h#C8-#ybQ9VMt4 zJ=ISi4E8vHpLjpM6XBr??eN+RwY2UMY*E2*v9a10KRr6UelMBYaYu;qn)y0}_-p#^ z2gCza1!v;=@(Q%ZSdw~Gc5F6;YlfZOS)A;nrgEEJcE_9U*^{^w2`Vm=U?K7t+li}; z#%Z?to)Pl-ad$sVK5+o&ylLuPNKX~&VNwM4fh9hoVNIS-P7UUnb%z1*)dls-^_&F( zX4lcZ^(|?4Y8F+2&EaYUk)F9s+2QNkh35GJWU$57bi9)SokR!W_hF$63Fk_fBQ^_a z9n6PSr1*BpalfGD#*8)SPH;O{+*rxdC`Q@QDZDScD+b%od|%>oIG!Unl&}j!H??%P z@s6UpFcq9{xLs_QT-~>@UEsRlz3E_Nwvz@hJm(yvaW7yR`3yvG@_6bQ^LR{q!$^WI zesT*G_sQH@8_p7x2Vl(-*pvuCcGdCxwu#;xKAW${{S9U22Hz!rc>VZg+)K#;qJ}W} zdq%W#ryo!5)FnhcTvwbqd{-Kzg5K7>l$?W!W%V6SmodFGdKdQ0vPC}6o&Q>TL5uRX z+z5v&M0?Ute!op>$fY#xPFQG~i*aN4u3x+(i0+W9ge;^H-wCuq*lgQ_h@D}=#sQc# z&P_E($m*iuM|PCoHl?WZdAxWXi=9C@{)Z^JJeESbjCz}a0hsRlwLzO-GxtC>0=TF( zF^U1qw8a1iewY(E&@0e-LwpTON64xmm?>;=Ky}#BRLjPYpQ=~Kei2G;i_u3HB86g? z9r#WsEinN9^d-cmANL62DEW<4GS!U*5-%&zMSjP^ue{`SZEtEpAHi8V^&T&CHZm`mL1ss?UVDxkQgk^yo9>b?VjNi&Zm#@J z@Oy_9!suZcwk&R)-E{ei2854P3)Y1gxFT)J0h*v*xk00Bvv_?L!twrXx=ewAd%*|l zWBp0k>XRGn+s}6q-#b>2Mo-Fu<#Ck(pmZE0AE~at(o6r5KL4-uqd)0^#A03LKHN9< zKOnC>tzYLP=QA3tn_VPxlv$uVm3lFci})l^Q_68~<4ImOn%=W z*_;u(mMEwck7N_DPyU7b`cvoT$@xa=fJSpf_4vyBx={wJEYxHw@+fbbY|3VD#Z|N1 z;!9GTvWU<969yFHaB0*8gjG5B{nl&Pr-E43{nmNadbq`1VRkMhoX7roN!|5PdqJf zrLyi7>Vn6=B@`q@_`Ur5$pnOtbR-JMNudoB`b20VzksL$B1znvN6xa-y2`E4WB3m%(Y(@)0Re{+rD>{C}|Vx%_{!(T=+N^IXy_#Wfs$DXFp6 zfuh{{l5}kK+xZq7eC&|(vW-97ud^Y2PEzDSdkR!Ud+?G5{EAP(w@_F_nyzy~SxoYh zsDT9;TbN1-7aFz!8hdqJAi`7lQsa+Gyh`Xw1JCCpW`)`pR=QA>Yci_}#iXW>4Ww&f zr`!%t<;9XBS5X>e*~3Dbrivn0e1hK9(d4-dN>H7IKsiZ~AaYV7eWrhzLm+CBm+Xzk z6`YK+w?|h>xzMQagbSv@24AE5e^!%r6e|1NJ@91oS3qP&+yA9`tl@sb)j8Y%7Lx1~ z#T_D?7#N`*@08AJ2j&a&bFQR!d#Wwbn~WCMyDt~c2&u5!tL=?QN@e;w2!&V7Oi;~0 zB^4y~m!I^6R^17-uO_*qZ(|j2j%`m@kF~yt#`8X1h*Y%11W}(194XpRhBX5pXhLeH z@2L+_%#tc2a`)Ti$DoqWWB6b5E#$&nE-2V8njS~c3_ z$&;bca}a0qm9JZ4j!$*D76Kd zK=9cpooJH`B2A3c2}~7E0x5K86pYaX8FmOuXwl?PIPRH~9Rf>aK`{!s}9UYBYz()P=n^}tLV*ABs78ra@4=^ z9WvCP$dr^RR7*}%3rW&KAWj<>ZuItU($(km--v6Ron=tPnrqfoT5|iy$jAhwR8r4O1O5!)z+&REt{hI9`G_;;6^4_{I8*Iv&S(e+gL zFN--Y#1tG2Yr;*ZwxLc}sZ;WiYng6gmIt}R>@e1T>wJ#awlz1vG}+D28m8&C${hQ? zmxO1@R8BQ5li9FF8pvA$Y}Y)+ltF<^JUI)7lZ%e<|S}C7mwIIZNWR+-D<5eqtl| zx57N410olZOw6gj6}tX!g;$x^AyaW%mE4}nd7`JKADqUVO7&o`2J?O}jm}jUe&E>m zP#Y5OL+LADRD;#FHF*)Q-O7rN+amfiLLWVDZS*j{cL;ap1S{jo=!KwJxvn$Lu{@16 z9o-%tMNKMJN0-d+KOR^WL|WL?v#^$wtQc^462eS>{atr9&@Xe=E*ZrKTYqZ+dazG1 z!OQ|szGa`Y`cySH9IUn~lOB{>C;AQ(AM0Pi2WXmH#%u}gyHSW{rV+2PZ@DGg* z?m(7Yjm#1nK!?1IhLQQWhUlH6y)ciQn7dhy&$x4^GTo2iPGKHE)mlrr6v>7ef%9>Y zA%sfHgqIP$-l4@kvqQnk9Xey)YO)mSisZ`rWGN$&Ns!(i+S zrfLJ~r)f3rkQwkX_F)Vdhy9_J{fim{L=7wZXZAhWwz-I$Z1fkktJwsIT7dg+>K{~? z5h(u;>dWpy_|C8#!%gqDPhCdv$5rKh81{47jEw$nzsa-$I-4mwPJ}TdDBMFeQDkce z9kj^JcI*e@xlK!EY6nHS_WCgX%(9Cu|{(wDFZHr^+GBnug@^2G-Xyj-|$Rc`gKN|m> zfBUeso7z#D+*ATIP9~WD@wo0r!iOHE8mq>b$sd8d=SfMS-v?3rlWk? zB&SH^;x@3R+0=z$b36u*`wNwnQj-LnC->(48sPAO2RXcHWB&jp_u93Uhgq zQTU{(NgN-_^=X5lpVXS#2DoRen)OqT{VXioN@51e*0TJ7fac2&RrOE$n-1ZNKtqfv z8J$-I@^qMdD{RBmviomj>5Jg$)Zf=dfoC=qrciJ&`{8s5^>zML$ zp~dja(`r*Z3Uh@e<~t_INSiOU#)~0X}{$Pbiid7M$gb`jYN< zD!1Uh$0_eweq1_1pfI<3zE{R4UtuUJF(<-V)tORWv?-hPMF;jvx(J6vZ@_ypKV!eE z=S}-k)f8QLp?=W^>%pc@(h3l6$GT_}gl-*e8gA12t3WX3WOx+RzrhaWWS*oF)x1QYWM z1viFjC6!4eWhtfM6|K583yFi6G=*be?Xu<0hRtqGX$r$p0;nUiICR8VTtaj{)9wVD zurwHbByr{*)19n^b&-SoGfYB_`g6`fhJx=vgU~wvpt*}y!Rmxu{y}4LxPzG*=FnW8 zSRF(xZ7KhT+iG`F?+(5R6LTR(_WSV8gl*^dVq=;yY9AsR9a<+?9Aqyd8XIXR7%pWP z?oa4jXck(oyaVOX{UO%E7O9t#UnPn5@ z#J|NwiT)9X7jz+ZX)`)zvd#CqmV|A9xDg0W3jOB*TMs(GGy}mIrCnbG8gsk1p^Hw( zh=vhaW5_yt4X{|Rq=cSzS&~zl+JWHL8VeT?ZXupHEWK`}maA$&mW~vv`+DMfqx6GXu z&a;dV145l17J55=oK2Ke!a+@DQ2Er`#}79O(4qDjy!OL@TY+JpC80u5Nizac(EVUQ z=ve=#oS=Q}TsZQA*DW3Z3Wv4Z`sK|eY8|^?maJ$*IG=7KnOoJ8+stxaH(U<%=PpsmQ-)LBAO9d5gYh!^Q7Yh3EFG8ak z)*MT$*RvhEaGIxE`tCY=5tb3JLeJ5+D7s6c&_mDjmWMK)DW=28H}DLf?YQRoa_B#U z#~`}KJ~i3%UspVcDRw!+v-O~`_6!+uI`E=fi>BrD=H^P#FARu16|2P{*d&niSKDeP zmOFa&zvz4k_yKW^NZozt)vqWsIRoY(J6RJUMS2ioiaU|v<$T$=Nq%k9BO1?tttv^k z?YL9qzxs!V0U&B#){;wpumpaT;VF#ZAs1KreGN{sVkHs4cC3leeG(fnCm zEou$-V98scf;)AK_9yT+0?i3s*kc-)eb}SRceue9rQaC0Xcx;x%oaL;xW}fgV}-28 zvV5$I)(gqrCYz0~2b!C5-&FwA(vvlilK^&ytaQ)i_h*sWmFpbF6Iq{30=u zv~j4(Wp9{jc+F(7wsLp~qqUZPWG2*)Jq4 z`G=@`rpC1@WBO&Bz+3kixf@gizeni3vJ(gL`CxWoe^F87k&2Mu8{8UV>_r8=uX-zI zJL-FPL61$}89SrSUtW555_`4(XRBs%Jb$a;a#Xd9zN`vMi~OU04zOkVC&lbNSFb)7 zc0O|!q1nofbT;dQUCxWp$~1NUqBkqxE8j^tCLT~FRj*uhfmsOP0Z9wZ6D}F3jC|ro+{;6HX;htF66d)N&j8b_7pS5UO zk+UdHCG;6hZTG}ItR{)W@vG?50jwbQBUGmhO00bZr%R`eB zRywo$)=O?l07-vgwtxdI0i@c++|sjr+LhS1?vNVpHbef8>vG?rQ1uQTgRRtKO+kWz-q0&nW6v^kTiKv zNlZI8jrv$FyhE;$VNP0|=^uV!->6-Pr_Kjn&butXj1&dr4F9v4|JT~M7Cf2^YtxSJ zqJZj~3vlV$26dDjS{UH*a0S{5L$CIjk9)SO=@;B}nVZ&cz)rw0^AmXyMnG%(!=Nx9 ztPlx%mEM?Wpx#o1Ih|u@8fL~fy#R~YDprva33Yu0JVn$}-TeETCe)dU5-zxWGg^S4 zaql8!wP+LPh~6fl)p6K3q&l`O&;hIxeE-|=?5w;xM5$7bI=txm*!_vP&{em03lQEe zU>mBBZF-anO@XvCf^^;Kcdt1MJ1O2K3{uO6GOIb@nw)e~%#YJ3=1t_XIB^A$HM&9$ zn%CfCeLL7l--tRU;W;KDu25g}HgDf0bHC$KJ>kRw6jJJbk#v>SS~K(|2SvizN$h5`+*L4)X@ zcm0ylj%2)>*#8s2QSlGJaoAq~4)<;Wdr%`Ca3iO^#L>%J?);UR3J#qXfsqiF{Mlgy zLEEjDcSop%fX``NetWIsYJPh|19%7ygx+Y7eV0Ogjys!`|4^VCI6Fw>4B@x!j%YIy zf@#T*%LCWvxOX~B!n>Ks?gc*Lm{bNf5>XY8=s>tmo%T2VA?H8nOH3_4ZbO62AMCUO zIwHV34u&}YXF46^$lk;24Gtm#gmd}5LmB~zY5(b;)h zSNxc25w~n|k=tf2b~*j0s%=r(V$X}zqA4Y1d|&7EJo>0trHcp!C$6n1U>X*g&*^%r z3olnxciEtA$Hqv5kY_Vug&|8&FWcG_1Fk$+q|)O>9*k#+e94b?i>!<9k)9`zddCTU z`zBH~OgzJocqxwdfxnvV^4=(si$p0EJ54a(;S>UyFJ3}0AgJoDc%QI4l|}TeTB04G zm)fAgJ7WuLxTIA`_12@4J$8#Wm*eqL;gJ}Z;@CM#Az(4_aC-Zpq^O9CIZ&@57>v#V zRMb*(l?8H>I=m5V9jdU7Z0gL(s`mDuTlK0_qPUEVc1`)UA*14^Xd;4HoN7*;>sQ=~ z-McTUFc=an&4-4IKWf0713p(yLTONg#>=F!e5FR^uq3O=@qn=N$4=(fp-F|xNG)wx ztrd4$CdNB_Jd1Y;6LXATTqWyzM*7T46XW=-taa>JmHxxyFSFk4mHAr)|6_UE9FRC!;)MQlcHWOM=f$tM{NsaD&@$#4iYmmFql(L%*~PUQnk_) z7DY_WvrpEX<4`(I8|s4(Jvc6PnJmqZk&2fwQb&xov;4#QNICGpUzlf%pmMQ;`bNpQ zK`#4_CXN2g0-DNx$A?U_;b}`LA{7fD4Qnqurz~+1!K&P*^!@xN6)T7eFY*r+Ys8Sr zcHIn*Daa;!ss}5Hr>)6oyZV!XOm-5sfcUl6hfYz>I(9RS z95k_?es8n@FfuU*H4=cDeBvSGrOIw2X6u5wI7;wnTR+jRZeo5_S-DJ_IWoTO(;t>Z z*1!&~Kt3}LwN3t?9fc5f@V*O5dxfb2Rkr!FXl129rR`btIyiwR+cO&Ge=vG#YeT|N zYZNDNeb>@vz0c(9;D7-!CL}>$4@EjF@SkXeC56@2A4yOPVMiDS|EQUmw$C@r63Q*R zEZ%BT_*gW;qg|ETQU;i@z5Cj~{-Z-{J~GLfCsFicu>RpvhqA=9-oEBYJ9SVHbey&X zdgySj`0b%>#t`Wf_M{s3TOT(&VroChEJ4$RJytk;IRReDj8l*s3w7*w)Y$LdpL7D? zp)ld7(d1&AOD(;?ODO#8Mfx(H3yf%i6)s}I@zv>8rC@+E8Kpd2rMzJ7Feq#|dNeiC zQc~Yu8?*rEJ57vAy#;DDI7YzP)DWOap;YO|F%vTOw$COU{S72N=T=7rK#438&zHRJ zyur0Jwj&Qojn-D4x>Q6-6t{HyshbC5THQ_z+7|~&kQ>r;(>hBjudqY~pT3uX9$oDS zR_#l-jKWrK|8fp9VHmYrlX&ntvU#pp9x8<>bO1uS2sFzDb!L_mNCdqao(H(4F!Z&? zNe}{6l+X_)@Xh_eTrrkhF~lr_Cm3u98(Y-nl0;U`(IpgYCmyx#u)tghQE2_#0PHxI z9leEPo#3={*ye|-MR@Gbt~n)n5Z)(zqQM3t!8pyB_sI0i(}NjxC&iOEH2+e8i2ApR z;NEK@g$iYjYHOFOfI~$-WWBVOa1`t}m*tO_WMVJ$SRa;ykjB%0%r6PWUVC<3fb->t)rDW{xLrBihRQHgDTofG4k9o~Qu}|&OWUqRu9$lAyi6Ws6 zJktFB4%UVBy%%gZN-R(0)?)NX|2TsTo&b%z6qBIT4%Zr$XcF{znz2`z)Am++=dcMv zvvtFglO$|F#LM#!kran-xco@D*Ke>)tpHl1N){^B;g*Xy;&~8(M4{QnMZuI#f|+7;bR5p+2Y7zi%AE1??aD- z8-xW%Hy@6bc!$swf^{scpd(!Pmk%r{e-5Gsw*po#J-jF^e0Qx*3P>AaBK?`bb?i8? zF{x2b6+b`_Wub_4o6R!xhjn=p zGgpRUeZCVdj)U+fp(KMALvSI7Zpson1?9zT%z+%dPvVn7Z@J>K6ER0hAs~Nb-1Sd! z$ssR0^iSa_ba-64BzZ^u?|u759szTFTwq|%H85cK|GjTt)9ULNNec^e)31MT;rG!` zDUhl^eSXAlIv!HYP6i_zoA8;&fEYHI*t<--dl0IqnAcCQjz9iP-vZjjFOuVjF&ZO1 z8gvRwr4#uO+s5HMf)e`h=KJRE(f#bxwo%1>a=(T2&i!y;-v(U%SiP9D<$HZ@xCfxw zT0gyuxZT_JXfWu0KbYA+%Xoi0e}8&AaqD=^nVHzozk0qs>!_(gJwMO618wc!>{=82 z$YhAq(bH8)+?=s-F!u&P%}8;}P|VRlop3YcSsQViHsa-d=~+5GFm79;8a{})J&)LU zEo)0bHnd@h2)TZDfeDnky0`YR+PjP9u9eS!yVM!_ z=n2-``4-zfrdR-deczk)eci10)+T%kdmfqF{Lg{D9zuqlW$kzF1tsr%?zk7m zgEoxBDu0yn-K?uM&-ISgWx8B$O2|3zrE}93mn0`a;Iroov*gcL-}j{r{rZoB_Qd`B zB|~f1z!YLW!nL=0K_UTSev*&xE-wO`mG>PTHCs%ss1*w}W3NZ!jp>~3qDR3 zZOf;Y9Sh`M?EFNsGr~oE8x#(_I6qY!-q3VJ)`=4U zDo&V)P_g7lP~P4fHg?(y#^nT=aDP?%@KiQ&Q#Bs265s+xsH{gQtSu$xqZQ|;Q%kep zl?7CXT<!1_AAqibB;7e1y}_W+(KaZA2MTfA-3ohY z5x#Xl?nonX^;F-@OswA8N!Mj&-=%dJ;;aoFp6=fMV%~@5DLzhryts3mahnql$at&W zvRAp&HJxyTvz272QH_bAH!-)D2cqYX+AIz?6}8=)uXp;hOX0N zGdCMP9PDb@H_!0QWSo|?Se~hyGx8j=xIPd|*{>Q#I#e;4w(;fY2Ax}=qK1i&Lz*uv zX!Rx@*E1T0TlnCxN;fDW;!$eVL0673ZM^Heb+2Z@w>-3-vv;=K;cUdCpqsG2KR2%| zC76YXwLds^8CJVZ2nZ!GLwo%n!rlTZj&17}#w~bocXziS!L4z3cb8zn-QC^Y-QC>@ z?oRLo0^~J0=iYbE{lEA9qX*T4QM>1wbMC6@wRiQdHFa4C79dw!1gB2Ass&kzVqFim zjP^y#TUunj+E>W`Rjn7NPmE4K%3l0v=c_U=O9*v2e%b)qW%Q&$tgE=~a0qIx*p3XW zI_U-&S0#!q=+sXQu;tKZUk~X)EszkQetO>loL!7wgDCqCJJ;i7%^-+M%D^4e-+()a zE`d8@fjer&S|RQK4S}}|(*p9Ej@v`N_ulAVpMG!THe~~fS6upz()bSl2jxE-{3pu) z%mRzO1=2n>{~H*W%$zMK9+X832x34W5RCmFT>qx@4eX2_#SYjE7TC<{?`FMrwjXww zM4R4mHo>^y=ihPuv%!C8t`%#9T+|}j0yaYhHhY(bXysTT`Hc8@cN_gH=#cnOi{hn5 zGNBX1+iTH>UVy%3;sJc*oE}YeW`;&Tc@N=Uzv0Pom*ekl1efrR(?nmHFR@_ad>t$0sLN@fXn_l0zu^B_S&H?;1iSa_S6Gz zbH!^+gmL9t8$;Lb!)?sh)3M{F=ZU9-wfh%~x+!f({Ls4~rM4@s%xN!_w3i2yHm_Ii zww^CRMgmpK6FQGO4+CQ{6LJ|g^Ix|Pe5V(_B&M)m**_fFBRIRCoyLRT#iUIGn4_>K1h z{rh*!5ZOHsu1%~3ZtUYoWB!~hG=MRGc9yZ{`JynKzH52kg*ik6Da6ssvl+;!Tn@C8 zzt<{ptmlm}R-g$HqhF&QqD2nIye)g7PE@SxF9?egyVzpC5;X)lIa0n)#BREh7G^}} z-w@VRu8>%F_{xLtBuF#GzlJoJ@n<^KI`eVzhcDn=xZy2;E!9Ak*PxVoZ~O7E5SDIO zSyd1bs0FxHq73eL2dsWa4($?pu7TP6Iv=G5^SfQ@P6TogCR>@*Egz*Xp_|mrn%{pZ zC|GD$M9ds(_OrVt!eN;hmE14H!>}j$<#sG9(N|%x>LFnkM0CG2rRcJWlE)BurO7Ax z_^5KYPGN^@Re?Ev**@hPwh%Pghq~g90hgsafa~6+0RM4r#>?wIPnNr$TwnKo0^eKR zD1wXQn%C3ION=Og#-aC}=Ig@#c>PPGfG!7~OgY0#>)LltMm&03B)i8&wzO!Kn{K%g zx1Ba`&!^UnY{R%BhXG;RQRp(vQ*OqjREuG2`zq31dVoOBn>lSSo@p7@S-RqR<-)3(Mg zFiOa*fKR4)j+0!UhGl-C2nhwYKEODPq3nSXFTp4{Pej)!F+)GNNd*YFnzt@vY zDXr(~1&r`5bjUXhd|$x3EBP}1Ce>Bgv7emXo#=!$ZPar&z4FD~lg@hw(G9yF7VUho z&RvTy$1Uo{RvU46z@h%rmb3P=2w-#B?X9$!_O)N*A4J|v1Ke)mC?Danze>VTz}ZHKo|@m(saU8B6D;lrfc_w&`Hw1_F4 z8*@EYeb6slG=3%fN&O2qja3fZtIGb#wnauV0l;-&4XZ9t0vCt$OVQQXVrll&#>9tu zr?$j99>%mwXGE06>3YvM6S=iQOSdd(-EbT+J_M-qtR2*!JSWv=wuRTYoo&1LvHI`6 znRGLnH5hQgKDpHA4S2+4nSLGrWac6_PcNU6w|}*Ii>T}e7{fhVp~P?(&wB91`<}-M zo)dxV^6Z^YoX5V6C}vg);gbapTDnJ~ZeZtu{?Upa$D4aIsZL&Pm<5_APV_YnQ9^V$Mc{94H-As(wVmv)Xh26VV z!uMB@)w{wZ{L<#a#%=%R@Xha(wcFNptXW{%S}92lF=Wl&>7i)fdbIskaRlG3GX+pD ztm|HO9_2E*t=0CJC85kYMgG{VgAZ9J+<56hR)eIY4feI>Ne#x)U71DbYil4E zh(nfmyvGK@jw}KEqo!l!-N?o5KK0u}>M!ze;enBB<-$N#HjF}mVB3+u47$#Km6A{IMZ|Xfb zaXnWxiE42MPvS$uLowks+h7+h8TBvGMu)(Z3QHrHuROI+ItGFp}Ad_#cndBEJ zNsQ!e_lQG~d&cFuQHp$LD9ml@%wt? z6=}QiV+aywby6dKjtPOdS!m~3%)$x3S})u+x?(XZI%lg&1~81D$MhXNI_jg(%Elo? z8`XZ?%4*>D+ejaJDpvS?t;$dex;R&H{(3e4@WilYo%8WbZ!7Pv&wMAz+59cxtfk*u z0`59}tDD|bWOegf8_kovvNuDGS>}8@0Nq`J#UuwteAvd$c)VSmJ!wMV_}D{f(t8r4 zkmgcCjD=Cbr!$K#z2%glWX=1~gYz{0=K5R7XV?(Zhvlj~(Zr7fN`BN~s{X2pxO&tN+re!8S%_`VDezxq!+?Z|>< zPe!XY_u}E*_}Fwq0Y{o4OL{5O_!udv13_VH-#)m|X(YtM4&8i18X+lM^yo2lKt$-V zW~}nkwE6N20{CM>#8H{}em3q1gQtr%FQ;NAtMI#GL0CJ<-HtsrUOp|vOr)TrMSUGKWLtzxu!-5!@L-3jeT{?>`b zCqz72)9|>UBJOZ77)k0~H$e7Ywf@~tbV3M$zJ0j9CfQg0!{919MKx*vDwvftt)}bl z3f?SN!{awPjPXE`pR_QXhE1X31tMKRlD(C0Uo$hzO7Ti1kMjUmI9z4>=+e%HIv+g5 zm8^yL$6!yTxT8YctEok&uPd~k>jgbm2*+AX^BqjzwK(kUcDCe&RdJipI>0AN$v1HI zYi;2ByH43_qJhtP)6>vMRy&UA@2Ydgg4xKJmkEIXQB1O{&$*FNC*ZQd?a68Hd9fuE zK!hbb@hrO8wQEgyg|LC^IBHptZ1_bVyD88U9KJb9sFm~eXvrHbh?Jtn)k%DJOPvSE zEsAny%a}FBb-oLGXv>+;=sVO(F5ve@##rwUQ-DTKX$NQKEwwVkYqEswPgH)b`@1LAh@#?39*r3&9MMz=e)AtlLddYwRe&Kb-d-)XU+fP z|DPRzE#fZc%Z4L+D<=jLxS!|#hgQxtIE5@{JCc<#z~DZI71{k(PWaF=e* z^5h8F+3;^oxdZ!FZ^4w*GLy}V5R=govvPV>QAO^tBD6`Hx7>tm8%%5~W<)*g_f>Y4 z($x(FMhk@a(&NUs5>QhhqlTbI=c%zjRyahNOdH4Nk4DHJnsM=lQUxDWf3SAJ-G0aR)tJ&*26MYy>vdu`lTLLNo!jTTR5WSU)-$LCUE2i8E#1Gu`RYtN(kyl2ehp2JDT{mZqw|56nCq} z%+y!n1iE(NFBc;iI@xKv*e5}Sj|JDaaD3-jn3TJk#t$Ae?4n4VK6N%-m_!{XVdi)T z8&{=dc}RpK*;Pr}Rr$7fk>~*_x>?=A?z-9|o076aaO$1qo^5V{(r<)^ zr?$KNzP@CXl;X-&bCqfGF`<`RnCC5d;f4^0QTcdw;l&OoJw)0fTe>ZZ^Zb>;#`8z5 z=4(3Q)~{bFLp~hqgr=~_^TR2yI+>TM5f@`8&UBxCC+d#A91hs#aN|`Hs0|TYY#5v= zdY|O2!RBj3po>%IJtin?<+0z}?B$O`9#x4Y4Mm@dl;5o0jIKUkY6+b@5TnJM5)fSl z_DkFeJ%2Z())J)ioLtS%?A7T|E*8o*1g*sf!R@8k?k`I6%02^}x+E@T5nY-w3cFAW zm-E(j+UY<+q#!PqjMIC?KH2S!MxD}4AA5U;DhgxP6?fR zhnotOh(SPvS(ygW7G@FlsoGb^SE{B6E&)s+FpHm^a1NPNeLJUmK?H3DMqNT+Xr#kU zg(1+$MNvpbb%W#cgA>tAo=)50VHgOg!qc^WB9qkWe5@@g*Rcrg&8&CTgdBD)XCM)o z-9r;w(w)=~gh3_&!LN0oKUEF|>79j#XMSJ{7v?m^bRHwT1cd%)NMz7|g*;z11BP_D z_!E-nF?g}g?C+47P{<^Lp}mN*z1fQ6MZ{oEmef}0SnJdeQOH6ON~w$@`ZH+5@U{j} zq$2t^qydPl9m&o#A|U$aP{Fw#XW|N6K(*y1wpZp~K0^rRVx%unh17u^*aX9XIQ|l< z<`vnw35KbE{`47QI1uJ%MAyWmecZCiQH#Vc)CR3W_cCO^R?xnofCZ4x5HKjKd9d~~ zSevw}m+2}vB*?6JPHXctOt&>QFeuK(aCbp47is;eee~}h(0Lorf_kpR1A<^c;HP?# zmE;DvGDQ+1swzFs4x?QuML-}d^SGlNv1kRiOhZA4S_lu?g&|0{ko#bW!9EH@=rU!@ zNL#ALzh4XX+rcvi8LhMU<-zV5QFiufnH%3cn+28G>luJ zz@*K#SzDlEJ*{vA!tk&Jaa*CNvj#B-Xr=bSps2r$=7K*~lV`!9fMBKj5tnB3%+XC# z8uz4+1CNIP?3yJ_2#~f1q7{6SYj4aLZm=2V+b3TzEc6Ur zBiI%0V7IUp$mGJ9PaGanY zzTz8-s*H?fv=86A7tVeK{vUdsBX)MH_% zw?@SE^X>!Z-ou1k*f3@qMsnH_CXUg`x)&3Un{~~$f|=#@Gk2%=Rs>4X{!RoyP_ zTEgwK34Q;0$jWx;3Znoyj-Iimx@o$ed1Rj50uhXu+A)>%wzf+#R87vn`Cr0Tw!2rp z1J7U@jq7^x-G_`7Akzhc$HC6GN@>KJZLAs}963{=FuF?>TY1Hd?s)DrdcCpS!QdKW zx$*OqCYTyRT^~~2o|i;(uQ&^XGz;%M=HPC08k}Qki-B{y{(nblUm+acB}-4Fb6YF8 zex5oPb$cCQ`TSY;chMPgr*}f<+l?_l%%?{v_VSI~LXNNGPKtyNWmt(%g>pmL8(&`I zF?Jt-c!TFDIjB*LEcA4&Q;clGvn`+F`n_Ca++KmMrDk-cWn4e6|9GydakuGjHt%26F@_GB-1z^{ zbB1{MLAURpdhC3#rAeC+&dh zdmw7N@f7CQkfs9d{{T|1QKbN0g%Wy9pfK8P~Dp@+b9{FYD2FW$_;-!#kT7io(hw2ONzWSg1Z+Lk94`*K0C%o}xgonD)` zRFh;Hzh;A=QRNEC;(si+Kb2Q)4b)EVf_KC|U>P-e)!rS#(vOjX{mj&WS&TeMl)BdT z;sTEPV%_hR?G)Nw5`Tzo+7HkfMhDDz4(5)$^L4=X7@yHTtiabS>{@@gZY2^E< zd=PeSQaAN8TY$Og@$Cwzgv;mtIo^5XsY#R+qVy$jcw?M=YAp}LLTDX6MTzM)1y#nDe{cq%3- zwtZT;EBR!~5Obi2{683fi#QV$W_uR_Wc9y`h#C}WknYm`O8|2&>>NC8CxPjD0m~Wk z)I|{WJ1tiRAADbBN;14IQiQolJO^No@u^p^m^d92QY_50JJsBk`U{ZHdweK1;&g+c zl|r$|lJ1d5@)xj4;`FdRw0vyrzr;BHKgF1QBKsfGQG``Oosg}Mn*r&=b3mSJ<qDFCtB! zV!?6_X&`+Lni5@hgzP_Hriw*GV4|~#b827Hyp=0w=?L2Y(Zxb z4py7V5P5EA=4HUG|1Ad?o4l@Q@xbOxaugXAqwg&I;X?rx9`jS4746~D4~etHmiADo z>{~@;dC)_8ZF8JMdgIz@dRhX|!$WJrM9jo@6}L1j_~p5>Djb-(_x;$!N&6_1Mlf_N+iTJiCJ zv0~WZAZX|S>Nuo6;nvcN%zb>~W({X(#j@J~zU7lQh-+2sD_w@=Z2F`nw^U@KjZGUw zN6+-;cQn1pwO97-Isk{nkxINdPc{yp9jK)xz~I$=2fJD-z*@n$cM#dg2ItgO@i#8Z zjFos4f$A%kQ?U5jXzV%Qdx(WD&%x-N&-!`ufe4v`1T#$0+9|aP;^jwoN{3&2An}S5 zXwFz~lWB-1M=~(1$fgqYuHg-M!jAsq@s@>nL4pHevxH~MT@Fvq{q3p<361TDu zPWZz08WZtWWD~*a@2GWRbo4dojrHe-@2Hi2>VKmS;UpEF{Xwk@j_aFG=ey6su+qeW z3T4Mbwv?>gEmhr-SEcn;2d@h*RP^UsVJ<`rplcILgAQfSgrP^b8blq}5~A&3SPn(N z9>fV{*YsVAQQ*|7RG^0TFVp2YLAJu8@nc60x(f5d!1uKcm0F*alE!a)pjmOxf&V?#>MauX zRcFVmBiIdvp@6}oF!Udc7N;<*l%<#q%To|}262L=^ktXEZ6nyHkiZ9V5Mi3gmhBfg zT&S!vJ_Ah?R#a2TJjYUOQc2b>prRYZ0R$$8vl|{#R^=w?U|J0Z!y6(D;?Vb=jg)54 zFPEYr4J$L^JBPAI>b4YbIsRX=IA~UH-8!FC)%>Jth^XJ#Y;`hDGxK*5=6$SHj=iqA zz65YVGnMH_cQTiyC>>0V4PqQtp{w2oU%V~{cJY^gLV9WvchVW^FK4LY_)2%b;WeU~ zl;{krQP3_DMf`LTzvd?D^e??_+!OiG&iHV8Tm#vOh`~LJ1g?DHufi zQQ$~^G}|Xae4Q;syPqb91qZCDlrGrxx)riOqf3A@9r7^u07DGor!Ya*=Q)Z4d+fSSM)MuR={(k+U zQC$%pQxXmLpvnzjn~*3q+?hU3h@X_UeITI{Mo*d?lNTiqKvh;4%SKZntEG}aH=*~Z zIh!#-C{OJ}!d6jEHOdVaQyg-~3U1*30ny+`1H2Nrl&fb&eUd|`uCEKAF=Z^E=E8i> z)Os#d82uF?wUs9&lM0oXsg#r?hW?3K2>VY|BE(>F!o^yOR0QR}Ezqt7S`haESs-G_Wf-UL1=*a=>F zPNJL(H>e==H5l5;e@zgboj;yOrE*#%r6e3J?L-j0A!Y8sE(0pSVT|NN4M-U{7d$Cx z;s&IgkT3pUlu5w;Ntr8k#?)GOC|#dJUNkC(Ob(r!-z@KExXC;Zt4Oq=5jTT4VP-l8 zW#fy@M6KG}GI=SD&%R=(a-+Kt>i7~LmKn6;r3AgDW2C|XQuh)}Ezi%8t)$pZ9 zT~rY!q`6o#Ks8IwM;WEhbVfMo|vrvUw(!E0fN* zD?6I_J(|>0e_&%w;n!I8HSad&2S>KyiF=)vSfhx{N`0+^3dDuseCDHp;ruLkUiTeg z7iuT21`S`NAf9v5Cdu|UNxEyVtnNTXTPfJ@7pQc$F9+3~A_JM7yg> z;t|UIyA=DksE7jFYS5-13RZDpLke!wgf*VvQ4z^9Z;h$nCvw*!#!Gv#$Q*ZJ8X1y4 zi06Jy)8+!3nmFu7;UG%?5HbTomI+W+V^!!6>tBs2*?5Hnnl){5g79UMco&2^*4_g# z+a3d0`(Or|F4q2{%uX`nLr6;Ggf!QSR}K*-;O?)mBxS-HacFWPq?S}D7=iD5QRP{ zdW7U6U{49p25uV2&2?2v zdSLRXs=JV=+ru}oE<==6Ik6@qAKS=j@X)5#1y8EO&CM@UuMawxgYfM3>-*mpdFq`~ zOF$Z{*j%55a#VcGizl&;dGa|PgZSi28E{Wn(qNN|h@^}gZP{fCU$XYiH087J?tS!0 zEa|MhxA^^YJqZb7C>PP5Z>Vq!31S}ZFnQT3iW3O0@MNE$rAp~~R!&1G57F7IP70h8 zhC>Jjg|g2c;`5K>?0&R3XlbVKRdA{xSD2Y$A-vm;%}{=jl~Ddv=AOlUq-epHUByA{ z8|XnoWS?9%|DOS%Hz8Dro3XFN_!Xsmdq_KGp#qIE)kgtyy+*&b5d~t(=R=vyP<(nb zo6M$3-h6)sAaIGkfZjkaFo*vHMtR#IF3;B648a3A*G|j5pZFgl7-*>_4QC`u!Y$`O7iEm%NG_Xv*}Vr$o2oAfDeU5Pvy_B~;z1&ymw0 zz<_^qS4tBFUqSFplUk??bqruigYIMJNXEy}@lY^DgHG8rL4!8+%B_MnF08 zaIeUSM-B0EZtAw2dq}H0O+Y5GT=Idr zTC_7ZMu)FkW`;??fKQM{v))_X3_`JKQY(4=|W8a(?YMREMShjnRN9AvLK5lbK` z1r(kYenU9(48gDKMmO#GSk2^XlhOMcd{GiXSWyc9|X>6>+EUv#;C? z!Jmox`skTrpNze~YGJnaAbyjW1p#s8IJ0rcQ412%CJhdovX87seqU0j!y(TvK0H!@iE(;I$Zw`YvoRmbjm_b)Vk^fC8MpWE}xvO5R~g z{({i~lsqX;;J<%PEAz+#8KQvNX{&8*HxLMo4R9iKHDtUELG0+SoA?&C%l2i}g5a0Z zNY>r|4E707!hJs1ZxOs;9kej1B#-$wowcydRs87H?_TbeSy%w4kgOwx3)vA?Z>C<0 ztLlXfD2yGpFBU|*Z0oGC;Q%MeygS^IwA@kdcPR)y3zG_vi2nx4>NDSqkyeG^ntF9i z-`pL{fO^pfiqt7-L!bkq%?tKhG@B8jXC1|#WpV;og-ifkQ}*c@F6r)4DZM~q@Fi`G zyf@AlQP3u|V3|kW+*5JqGtd|6P#@v#(>u=DTKpinrgU&5xTYTA3riQg)S(5s@MXw9 zP_LWu>p6evmfAF$F5c#tHe$FwUeI+=iXBzfOM?X5#4iRlYLoz|4yFucHoWdks+^pe zo#vHVbo*eJaBC_H#TBC;T-!)E9W{;Ma{XxrG*@5m2^YRk6Yws>;Q@#jXBovFYkm9C z`235!pynmm^Hu5(1C4FmCJKfqHH4bRZQwaLv&v)Wq}`|ys|UH@58^5Z#WNil$$mxRGlR^tqBrp zyF`{cd5ki{x>k@e3A{*)ZNxwv4#FQ67Itce&H3xh6hLR$rH z3vefSzyZ<9_~Sg3pffGy991gB1%wD)ut|U;>TttNBUhg08K5iUI&G>9=E5N6@lK;>Wm0a^U7DFY{i88+#}r6rX=|WysHw zq%zZKd3fOXP5H2psW9m4n^&voVIjh#5O-XFHZLUf zyA_9I_oSRVWqjr_jx0#PYy58sl5yB5F?mJBIvLX3(n^@9T>Cr+9KTRpx@weADr6QM zKj2Lm;O1@?#-kX8O98JT==P-}aTX?!9qdYUi~tonDwh_=kMj$7Po-N81rK7>&daPO zn}2^S#^cl7E(W_l2NQIZAfjWHHKPrPNQ)R#&J45xbA~wgK)nzt%$`10eG%R=>Fy;Q z>sB>YS%pS%rhMW`prc~zEZ1S7ye6qQ&dbIvL(&|n-X+V*b15)g6hi{0i!2^6Y)FTN zdgGF4!`_oyD|bz~xtTDulp7K8pB6F3CDjr?nqABcU%+5Dz~Ch&Ojsx-CH&2agVm$a zmz#>xG1iK*K>P#9T=v`m(m-eyYt&G!wLHMIz#gp*l3|%th?`lMo0_^>6G&-MJ?Jk= zA|iOmY5);uZ0tjk!mqHvjXM?Pt0G{J>XC#)ZLB8@c$BDf@9HLAVH)+P&?AY%?Mn!2uO({_2`U|J+ zz&@;9BwjWXE-X-$#Bah(>=8+w3nIZoznm-IDog zULcp33QvHaz*{73S*^;gZ=6(~34pVyKJ+JQ1Schp{BcD){`z6}*e?7}K+0Mm|7q3M`~ z4tF#icTwpOsH0{p@!2~ZqDaie38Ik07Uf{Dt>kd*|Pjm9lx z%nK8h5S2)Y2?1OJANK7P<0V6y^3;U@;s)CBBEC-&Q}GM!${iYxQgLRO2aWc`qZWjB z+5VZ~ZP-R%n2e&y?k3FskSf1J^3C+mq``*dUJ?RiDVrZ`$y*bZ?9zoBru=2d8vHw- zBp|{cLyD8ZfqW!aG6Gp$`J&QhS4A8(f&IkYB}t3u2)R^kQ4-2Zr>X*w~1Aiu9|EX-asKOUKvFl*zd{5Z2^8 z-WNhfeBia#I$S1nkxr2>E$2bUTytLcDw`%!MMEx&%15vl1AcJo7OX(#6Vu(HliAtHZ*Jg=|73iZz zwh`jd&Bp>7lSKiaR=%u7W~5bB%+S?G0dYtM+&Hr9dI(IW&~eoZhs8*?Z2 zWKq?PcR$yTcGpUrCZaVrjLybv_`Vv_p7-^UAe@R=X&kKP@G!{f`H42qtF>z!@WBsY z|JJVa69rC#fMIB)%ur2`P~T$vi2{%2hzo>>#3_6O-iXYZ?RII-B@QYk1nE6f)4^iqZOI1o{>(G zXDr~7j^%owmMjDB--HTzGu@OPJ4h$BLB5*C+1w{R{vZ+Gr7}!$)Bg{3*#7V8gpvQR zI%{~KIxd(l-`6wre}fqxJUhiXm;41}i-8S&w-zbe_AgQ_bho!Y30W_{|Es`efq$?Iw!dBO^Rw&ITc&|}AX6M3dbKvG7A1sHxAca!#lk`OTa|Iw z{Ve1B2)K8u8ZJ5rSJ#vmyEH(B6k@s97=5Z;Cb`s(YM{YyZ>$|@#S2W_20(2>Dx=JO;1FJ&BtM{W?svwbEc<3dMNY&shJk?^Fc zTU6vT1v%lx0>02OBvyt3ZzdN=MBMoX>IWEH$VhGvL}@69tjmQc3cR#K@+etID@E2{ zBHzmr}4=$2Lom-}P!`7BozRt4tgmvJ=3 z5t25`IAULK1QF|-#U-|)VRF2tlE2~9H^lU4O*wBLAuosu7F9#Ohx(BZM}C{pdvWeX%abrAb}NP}jx$1cRr>o=I4Ojl&Cj^@Ulcu#fX? zld;TI-gCu>532_(=AlU3D<2>LKE5(0ua{KqHDvtDRh2H@B;Ip zu@AbI$WxhjfDCreUs2Tqne`s$c_hg{U$2K-)53fX_qKrZ6h3$0jL*l1`ScMA0TD90 z(#A!Pz|<0BSl!t@q#&e3j9^Fz6;kpiT#L{Z*IKXQoUQ{7#HR0akNL_r=s%ZNo@gE_ zfdETTH3R?NOC|p)LG{JNQ0YHT_^8=F%K;{MkXg^}{)2d>ed9>x&+#l+_#KHt%}Dlm zjwtR4=7GpLM(e6nEMEN=O`qerkL!rg6M> z_Knau@m_)}n2(^rrcu$MlWuwRBoSMq3xLse!p>$9IL~1~=Php@HL-pZWcTDN4xiQ9 z`_aV#0Rg&*7{luAc-`g}@}G|V;?8w40@l|31qT9x`Y*>!fu*FC4GgXS6xiKN?z8>I zgg5;CYdBR(rj&I;6B-K5aB$-UBCaRMN4#2$^|(vHw)tPvyw)*Hm$i}|_cpN}m$Z{) zp#Ct}&cYJl#N5AUo(zBAzv64Qe4(qS5TT)I{oadXPuCC5TxpdhUTy$N5?xmbB=-2M3Kgu_;@66QRf zzGO-T-AQ;j3KH3BK&G5~M`FB%mkKSZY4!^AoeAvs(Ed{D%Smih_lRIzhrp0ZtK(p?SvcCO6 zU-BJ)veHOp?VcSZ7~@pk_rtGY(=IP5-4y2~9T|hQz;Og zl650oI`sM)Y}O9IT{I8WRtbK%n14;T#cxJD(Zix%3#U?WJQ|YyMh-nf^2F!Wqo;Vi zbRI$g`YY5y=JiqYP|+QMXuBBkapbbeGvIA#8D|IV8If#J{IZF9&uXPcrxmUS2Gboz zqIIUGxA_nbMVmUQl|F>HM+E#}q7B7_0PQv|N*XZ$I)0h7$g*vN&K>y|#&urEx8=<_ zm~|L-3`D0gR@i$rOk&>p-i<|QR#!G_o%95*Erl8Te%8n#ZIan32yHG_+@ zNY<%NpgbSk(&gvykE zV9G2lUEioUS5vSkk?HC{5?#uOVVn<5sJNVR-na>iwhC>ClZ(en zFn%#}>h3sE-FF=xI^X6io}h+d^m6ytr~UPmnZ62fM%_=(hfDh-H3YBP5IwN34ybQO zzZl=VpQ(SIKYg*w_G$tdP3YbBdA?}T>(TZ_mK;2<$$7omTRXSo|9uxiDcXtv6(YF- z;u#vidjfJHFGr)-NRCrao(GP(N9H_0=yW0s$>9GGSkZSSL+mH&i#U&OpEG8t723+| zUP|3`ULPhgk{sN6=z(Jxp*WvcxeC&fh$Xo$`*H);wn_%O>Sy00UujDd=#e0Jgu}2= zcupdlWJ6K_7abP^A@Agjlt=Oc9?AaO+8{##AP&aYn+xtxM-1&oHF=V;nh>3hG0q?? z)o`->bvCcien7UdM%cLhvtlbONjj!&Z-vFow(WX1_sE;=WWLmmd(vi|&go-9g4tHt^1 z{N=~B9?8)`Z+oHbF>&hkpEn1LR`4P%P5a@T&=tCZWyWCg2VKjFO+7NszN`wU_S_kF zNUvKby#ku!R<`+HdwDj48x0KVOMb0?7HqF@p?10snOo%89o!aU@tg7d<}Szk-NLN2 zguYU$;=8fOO8Aw}UB~8}%Z!%uI0O#`V`^@9aOx!PMf^j~T8O7GiGUeS`15i!~Ce~9xC zqG>ILEia891?A=6eO1~^PV8)>SzKJEEE2oCwJ1{v!;+JTk=jr7IQV&~cZw2K*e{dy ze2^xWEI}>XfMY?~fQouh$|MW<#Fsha7^&u%Nr2KmD>R~!QtMsh+FVe|RF*RPqcOj# zlj>W)zg_8O_%bJk^IkwebJJES2c7;vu1(YdzPR@TSR0{Q6-s>FcC&Tg{G87EDVKbuXa3(=scgX^0BKz13UgUD7z{8U|0j}Zl)@$rnHp8OAczpzx z?ET%Y)M@v#1Q_Nt9DufGOT>9CGW1Z+voH5{&VF31qF(0`{~JR|edhYry$xpt{-`)R zr4fvlE&vOnoU4(3JW$%Cvb@{+yQd3vdHb+TUMbHzK4iyZPKCw+SxbQ4Ms9C1N50TQrbPu8QuL~a z;0T;bJD2~!9ga1Fh_;}crv~XHdXg7ePsO*A0#mDDo&X84C`wbKYH`al;>ULqOZnlG z{D!Aw5)>=$AKTWIS%D<9p-sWWi||ihJ0+BiioH>E0bPR=66~>0CaFB22!v9woO3V$ ziM?Y(zF6U~?7;vVRVhBCGS($=m>3TY$4E0oi@|LnQr|3LVUogpgU5xki$mjMiTc%9 zW-A-+W$ch$L2OpF6r*Sj=d{Bz8dJn=GDdw$s5H`OV=6Luf-F%(#^7eXHo26>Ik22$ zwW9@cqw7E~8pM=qi;JP_mz*)(qWwJmTHfEgX>_oTF{+OqGR!6#XO;C3yR2;D0y(zlF#3u z;ydFD4S#Qi_UyQQu^&0Ik$nRrWa9y}h)O!y!+Bnc0SJHG9SPnc2b~8AL1$JYn=6@# zYq+$!K@!V>W73R`q3vrkV=O|b27;N{mm!=~g~Gm$+G92Pe=HyJkFZut_M~WH!x3jZ zvLNqS^HIgel1F)FsD|P)xU8bj-XssIX@$!$b_`rv`!8Mmoay?}`1r1IL-!s*i0FQL{rMtr*i8XyNl!!KXgUHe>UfFcBdV z>^7znyQ(pIWIB~pqU4D{ZgmEuY?t~gL$le8_P6<`9^wv4B|I_GI|J)NECSfAI*0Vm z0Q`0<-%&=I#tu{?u8@b+I=1k>BkWa)8RR!rSrwVG4po8Il~=HTc4$+FjO;E@upv-5 z)<1;5OO|)Evv>N_t68yiwgF6NqF=iEZ}-NSb0N&pLM1?`t(K&8@ZEgLtx4BKqRQVq zWqH_*M!r-#UoG+C2^Q~OvP|i`1!6;Yo<^^YV_OP>&j`CFV@LND~w*`=okZ?J> zZaa)rEkH3KlHC#AUHj_%&a(X}=4(Q^JWeH66I&Vi{&}=fGCK@?lQB>-5 zN_&sOl77bkt}1nWQQ>q*H&OU}?leEkvUYVMovO-av!|nxBd5?r-{XKn)ChRK^a|Rl zJ_xJY8Vdc5*cpCKcCY`FZ;RQJt-fR&`sZCT$i-M_~iwk|e? zCXT>anfL5&N`2FIj|;17yF@TfOuH#8fenJKF<($sCrXU8=?;VftM)8sl$mMcO8U}h zincOKpfsFS2Gw;U>Z8v#_nQ~s1@h<1bwK_sME8pK7tm%ci&=Wexa<-L!#2ulu)Vje51Ts{U(tXY0VqO8QOoJyr+JhSaV=A zSvI9ci%04?Gc@mtzhkTxw!Tkyid0k?lU?~*CMX{74VSrbYbTDBAZ z0j{VW-6{yVX8l0SfkJ){l0uz;O-+98Vt84#R-w;9X(^AHRHfHkTrzF)-0|*nM4m{f zboeAOD}f!gAq(vcMrf%&w=^dg_t|oyEF>qnjIG56yh8k(U)Oes@mlrUl7%H=T4XB zU5EJW^z#vsqr~N`h9R|)RpJyoOL8R6b(<(#C5n9OUfPSgIKRkE)EydA(+x?ZuM4p> z=U=d7NS0TVni7Qjd2?M zE#1;*QcYO~g-B{L^u7y~ddz!kXW_#ntrlo84{3!Ud%*T?R@Fl07YF!)~MGg-~X+@WM-vKgA!yYD`4zY!Y=!wf^Y z63SHBqw1b9ZoG0o09Z~$ES^olSj%$i(3Qi1*=~@-7mEFjqsz$*x%@S+Z&424cX$D!660Ra! zS>|eJxor|9C9b_`7(-&*%#39kG9uTEJ!!;M{W6)U+r_oy%2J~25i&)C!N^ig+`0H2 zuCAQN{Bh`^ z%AM8LW;~`i|KoGM;&6BM$CnTHZ7?vdtyFtcEgKr(m8U9>@j77k(&}oD-eMkmQD*Im zmEX{Xej)|{v04D20L=U75(+Z#P0zMrruSIGJw>M9_7_Mw#?m~SdHp@}RXLyfLtCtfBSHDk^F3=@XEqY0 zjAcbo;rl-SQPmVw%nY_<9OEgO;{a}HSih_M`TW5B@Kh0?H2T>C=ta!&~j&_ z_|ki}$XV}yl*E^r+vHhbpq#riGrKTw+Oh~4a7T>-J6qnkx#2O51v}8ZV-K3?B$nR@8MP&*{<@5)ufq?qO=2j9zmU;55rFuu~5oMFqh{_SFv}q=sy5E>K z$3dDV!+$HLzEsT`KjNCp4Esf^c}Kk0=|VTzj4wU3oI1k9p!8pY>eLZt_U7_k=&f{z z5DD8Fxw`a@)bV%S{Dp>t*EQS276(2@20Dg4UYJ48Mpa4VKKbWGEZOF1ZXH733V5KnvQs0Y-L8Jt%^yc_5lEVkz-jg~{80wSBS1z+U)ma$?@$q6nD5l=H z*Z8R;c2hvs`TrfMGdr&uvH=yR&sE(!#ZKwAW7f+zO{q?fy$`rw4sLvvckaIJDTGGs z>u%oS8?0#@XQNTcXkeqHR>mi+`CDx+8@!&><#;CJ#}5c9f@EuXhF9r`U9_Us2u^rpWJrW-f97T-hiQyX<9jGrj2C_k%gk1#K{| zJByk@0j*l4>M_?oiu+0@>W5rcbkVL=y}{Molvp-XsI}mYa`|-%5!p!X+zsb#k~XNl zWH1m;_ws)!!jC67wkxZ%{;HE*7J*o72(0x z@OPsZn(}%nviE-jIg$bAKZmrxUA9a8;=_ce+BG`VbOU zo1i@E&WKBHaZ63{?s>9i zf-JSsv2(#g$K-GiS@*DL7SFG-akLW>hKnqv$0dPRH!NI=PTirUgAr;Y zm~&gQ9p8Q=unhp*4uHvER1nVdG(H#=>b?}6K>>JOJKI_CQZ|@JmieXz|4Bm6K*YZ> z{&Hv!6~@QOIQfH@w1Gm!HNp|F<-d22@5PYiOf*#fxvx)U9F${40YG7mJQ{5IPwpKY zyxv_~3UTwBBmjV74(&V(9Ej!00f-0-1fP99c@Rl`qbb;V6WEo;n$AP!fYrLxOjabn`bI4Ex)PJuc zI%3v!<4^$9=&k}7vEKvMv%OFj)H|-S3a)<7TI(dC6sXl&rBuYNjLI701=U02!Bzd4 dgzu)<+UU^HP7ItuOS4K5@CK*H5$e*}{{hHORP6u& literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/SchemaBasedModelBuilder.java b/src/java/com/twitter/search/common/util/ml/prediction_engine/SchemaBasedModelBuilder.java deleted file mode 100644 index 3b8483f1c..000000000 --- a/src/java/com/twitter/search/common/util/ml/prediction_engine/SchemaBasedModelBuilder.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.twitter.search.common.util.ml.prediction_engine; - -import java.util.Map; -import java.util.stream.Collectors; - -import com.google.common.collect.HashMultimap; -import com.google.common.collect.Maps; -import com.google.common.collect.Multimap; - -import com.twitter.ml.api.FeatureParser; -import com.twitter.ml.api.transform.DiscretizerTransform; -import com.twitter.search.common.features.thrift.ThriftSearchFeatureSchema; -import com.twitter.search.common.features.thrift.ThriftSearchFeatureSchemaEntry; - -/** - * Builds a model with schema-based features, here all features are tracked by Id. - * This class is very similar to LegacyModelBuilder, which will eventually be deprecated. - */ -public class SchemaBasedModelBuilder extends BaseModelBuilder { - private final Map featuresByName; - private final Map binaryFeatures; - private final Map continuousFeatures; - private final Multimap discretizedFeatureRanges; - - /** - * a class to hold feature information - */ - static class FeatureData { - private final ThriftSearchFeatureSchemaEntry entry; - private final int id; - - public FeatureData(ThriftSearchFeatureSchemaEntry entry, int id) { - this.entry = entry; - this.id = id; - } - } - - SchemaBasedModelBuilder(String modelName, ThriftSearchFeatureSchema featureSchema) { - super(modelName); - featuresByName = getFeatureDataMap(featureSchema); - binaryFeatures = Maps.newHashMap(); - continuousFeatures = Maps.newHashMap(); - discretizedFeatureRanges = HashMultimap.create(); - } - - /** - * Creates a map from feature name to thrift entries - */ - private static Map getFeatureDataMap( - ThriftSearchFeatureSchema schema) { - return schema.getEntries().entrySet().stream() - .collect(Collectors.toMap( - e -> e.getValue().getFeatureName(), - e -> new FeatureData(e.getValue(), e.getKey()) - )); - } - - @Override - protected void addFeature(String baseName, double weight, FeatureParser parser) { - FeatureData feature = featuresByName.get(baseName); - if (feature != null) { - switch (feature.entry.getFeatureType()) { - case BOOLEAN_VALUE: - binaryFeatures.put(feature.id, weight); - break; - case INT32_VALUE: - case LONG_VALUE: - case DOUBLE_VALUE: - continuousFeatures.put(feature.id, weight); - break; - default: - // other values are not supported yet - throw new IllegalArgumentException( - String.format("Unsupported feature type: %s", feature)); - } - } else if (baseName.endsWith(DISCRETIZER_NAME_SUFFIX) - && parser.getExtension().containsKey(DiscretizerTransform.DEFAULT_RANGE_EXT)) { - - String featureName = - baseName.substring(0, baseName.length() - DISCRETIZER_NAME_SUFFIX.length()); - - feature = featuresByName.get(featureName); - if (feature == null) { - return; - } - - String rangeSpec = parser.getExtension().get(DiscretizerTransform.DEFAULT_RANGE_EXT); - discretizedFeatureRanges.put(feature.id, new DiscretizedFeatureRange(weight, rangeSpec)); - } - } - - @Override - public LightweightLinearModel build() { - Map discretizedFeatures = Maps.newHashMap(); - for (Integer feature : discretizedFeatureRanges.keySet()) { - DiscretizedFeature discretizedFeature = - BaseModelBuilder.buildFeature(discretizedFeatureRanges.get(feature)); - if (!discretizedFeature.allValuesBelowThreshold(MIN_WEIGHT)) { - discretizedFeatures.put(feature, discretizedFeature); - } - } - return LightweightLinearModel.createForSchemaBased( - modelName, bias, binaryFeatures, continuousFeatures, discretizedFeatures); - } -} diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/SchemaBasedScoreAccumulator.docx b/src/java/com/twitter/search/common/util/ml/prediction_engine/SchemaBasedScoreAccumulator.docx new file mode 100644 index 0000000000000000000000000000000000000000..252195579c84ba947364c0a2f56e4b152c89b64f GIT binary patch literal 37573 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 { - - public SchemaBasedScoreAccumulator(LightweightLinearModel model) { - super(model); - Preconditions.checkState(model.isSchemaBased(), - "Cannot create SchemaBasedScoreAccumulator with a non-schema-based model: %s", - model.getName()); - } - - @Override - protected final void updateScoreWithFeatures(ThriftSearchResultFeatures featureData) { - // go through all features available and apply all those available in the model - addSchemaBooleanFeatures(featureData.getBoolValues()); - addSchemaContinuousFeatures(featureData.getIntValues()); - addSchemaContinuousFeatures(featureData.getLongValues()); - addSchemaContinuousFeatures(featureData.getDoubleValues()); - } - - private void addSchemaBooleanFeatures(Map booleanMap) { - if (booleanMap == null || booleanMap.isEmpty()) { - return; - } - for (Map.Entry entry : booleanMap.entrySet()) { - if (entry.getValue()) { - score += model.binaryFeaturesById.getOrDefault(entry.getKey(), 0.0); - } - } - } - - private void addSchemaContinuousFeatures(Map valueMap) { - if (valueMap == null || valueMap.isEmpty()) { - return; - } - for (Map.Entry entry : valueMap.entrySet()) { - Integer id = entry.getKey(); - if (TweetFeaturesUtils.isFeatureDiscrete(id)) { - continue; // we don't process any discrete features now - } - Double weight = model.continuousFeaturesById.get(id); - if (weight != null) { - // found non-discretized entry - score += weight * entry.getValue().doubleValue(); - } else { - DiscretizedFeature discretizedFeature = model.discretizedFeaturesById.get(id); - if (discretizedFeature != null) { - // Use only the weight of the discretized feature (there's no need to multiply it) - score += discretizedFeature.getWeight(entry.getValue().doubleValue()); - } - } - } - } -} diff --git a/src/java/com/twitter/search/common/util/ml/tensorflow_engine/BUILD b/src/java/com/twitter/search/common/util/ml/tensorflow_engine/BUILD deleted file mode 100644 index 56923850e..000000000 --- a/src/java/com/twitter/search/common/util/ml/tensorflow_engine/BUILD +++ /dev/null @@ -1,21 +0,0 @@ -java_library( - sources = ["*.java"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/org/slf4j:slf4j-api", - "3rdparty/jvm/org/tensorflow", - "finatra/inject/inject-slf4j/src/main/scala/com/twitter/inject", - "src/java/com/twitter/ml/api:api-base", - "src/java/com/twitter/search/common/file", - "src/java/com/twitter/search/common/schema", - "src/java/com/twitter/search/common/schema/base", - "src/java/com/twitter/search/common/util/ml/models_manager", - "src/thrift/com/twitter/search/common:features-java", - "tensorflow/tfcompute-java/src/main/java/com/twitter/tfcompute_java", - "twml/runtime/src/main/scala/com/twitter/twml/runtime/lib", - "twml/runtime/src/main/scala/com/twitter/twml/runtime/models", - "util/util-core:scala", - ], -) diff --git a/src/java/com/twitter/search/common/util/ml/tensorflow_engine/BUILD.docx b/src/java/com/twitter/search/common/util/ml/tensorflow_engine/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..f18644d05f7c786d35fd7f78762c184455a73d24 GIT binary patch literal 36944 zcmagEWmp{9wm*z(a1HM6?hb+A?ruRFcNz~6+=D}KcWvCA5Zo<50>Rz?otZi3%$$4g z`+g}N_Fn5JYgO&qRb49b&@k8#5D*9ulj*!VRcb{EDUc8lV{i}z``ZbD zNX;3Qa5$EPtn^!dlGS?QF280PeMzZfL&GfX0t)C7zk>BIEGJgHd(sKya*MLN#B+mi zwXIoxZ>M=6*>-FD1&lGnP9^g6f>U(vA!2E(;NSK6K>zmLp@+qDT$}R{uD&e#N?mUQ(>Cn;F~BaArgruRbdL6`qhQ|Asutsi z4n5si4S$=%5Lp7BTS?Tcqn==T+6HpNWVj5Dj<_nn(A)moTl%6nDv|r82&3D%Sw)8l z&A<_~kKCG~b!s5-xYSWje%@E-LrDt%>%36?Wqv6o{|+f*VY(o(0pGiG)W>~O*cJS{ zH$m06vQM4Gd+w{jU(6MlQt9=dQ-}*Ox)V$veIJlZD&9(o^gb^B=tkF zP^9Pc#7VIuP_}rbt5a3VPzSe{c7%I<`E% zEep5(0i^Olzv7(bM~I}dx{(*v72IS8<^Z2{qfp6A>+ZXKW-7`_ZJ#MC_l*$M0HGx|KI|140%M`U#y@M%5+E)WK|Ko$UV6&HY$E2}xc#q#$_o}DGTqiH;yG#{hZw>Afs=&{EqC7q_DQcn;6x=5C>bULKa)1HUf3mR(y^Rb>NRf0E2wK>po zne2uN3lRd81NGcob04S3vs=}Q^M6RFV<;|v)DlaiYo|mZ+ry^+85BeknM9e`fKk>` zOahUGQJN1KnL1#qFl7WYyHtS~;<9ZI<3UiZr@ZrHL!X^swHamAt+xHa{DM6INUVnv z`s>}GiQ0aaC0#8X2hp*|J?tAaNKP@;bT!XbEsm{E$F45Uo6{c9h81sG!r!2#zRjOG zF0B*`&PQ0&_t*do6x9vS&F!o)yHW>=x>>Yx)?z(3kMq%{nF6!c^HGOAg{{L8vy*SH z&TZH;ljX2W#Is=J+GW2nbxnTx(Gc+Z?&a+g5#t^2ISl@xHL4N)tf%D5Q{M&QKl^gE zx{7xM?u$JP1O)ou`(oW8VS#-$&r^e`LLm6l@TDY#e)B6t{wJRQjNaGk*VNM8$a>sj24E@c!!L0fj3} zIcyn@)*yzVv+?v;)jS+CqFcJQO7)m8MT6PIISIUzt1{!X+X|}KMx$>rNXg0X>yxFJ z^e>OPyMeP5m8PYQ&#G+7pDLiAYd%zXmre_FzuUb&)J;u6L6w0reddH2_pY#^TaJ*y zQzRo~H|ac^_yA*z?CW-2Z}Af&&)PvBPiU4>?1+TP>0eJoCaWG2qv08K;Wu z6S`Fhyibis4P@%|W!e!JF~{-UI^x55{M^vbl629d-zZaTO#!`E7`Zw@YtHelHw|Ti z@u>1Qs4x$L5=&3GQVc7S@Os4YNzLh40d-@5%U`^FZ<4AmpmiWWU3`Ds&#uKv7PBE* zZpWbVpPCVot{bndc)!C^NiJMHL`#)Q{Afl>$Y@S~qJ3~6xu|ETq#uKm%T0jcLA@OY zY=hhb(84C$3FE80^U&KNz5PJ&jLvfIz<#iG?=Fmd=n2OMY;8a!NjpZge;$n#0z zXb6Zc@LBQug7pNrSg?YxT6YKV&FS}Lf<&SZq($V|f*G+3ZJ zPb$#3v6K3}xN!@SN-d~ntJ-koqMfu7cj!KO&J?DbHtnoPN8~xIXxNjaO=;4Tr=}RF z`WC}Ln=777eO4X#-e!`;1;@dmBqR4j(*(Z-chXR;vzX^(D|s1BQMLJJY|?k4VF>^` z2?qzxV(Vu@mAP$nq`5$VJGa!tCxJR_wN}A6?$y4^17{S0W44d_Bu2E-P(SrXV`{w> znyFW~2~n29Eh;XWUA^<(14N~#SPx< zJv3_sar@$@XC`XhLD8pnu{J`sCyyWqliWu~RZWHo6ek~a13Yl=~KnFPtuJZsnHsP-bl^mqsUQ`6?quPAm^vIC0*P-xgm!%&a0d#so)X{Z^V2J4cT2G7%8$*G8Mtg5Xh7I zfn!~5_pujx01A2VZ3RjSm(&P%A3tjL8a;v!=1V8Ynj{YOjq;~}e(I*D-1FKjD8}bx zj*RaTA~+1k_h*G8@wC`wD~LanWYeSNeJe_fVZ+rET&W}0o->RxTn}yMh^v(}5FRrm z4Nl^+R?ba2Y9P^s+HpFB-;Tpc!ZmqFoDYAR73S|q71DKdc*qVmlJ$D+L54l!Iuod0 z?{+cN6%u_DdL@91R%s`u`(!&UGPO(9)}GawV=$OmW_Ok}%9O6i!kfffifu(ZyZiz7 zWJJ^X5?cE_#F~pl8H-id>~)X-Mvn0;$VYH$%X9gIfDcZOlxjOLLL*!CS?9vfy6HRD z?#TW;U(dl%YqqH>i0#(|J0(yQ4TSZZZ^{p^ zicCPLe_o1?frOYG;5B+2yhaoK>r(u4hw=9d^3UByvbb^x8~(@B7o@(hBqTd!-InNjhHLMZQiE1-9|la_(!7ZwB{#Ln z&gsF|>pKggfM<9kB&)`GBFW;tpeIFx7))art=lZZixSQ#aX#w$4E0dEu(y+Te709J$pb!0h;F{{P@=mc(IrGX{KPtTs^i-4j)eQp zK4S)v(K_I|u9Rx+o2<$6tz6C2!0_LPd}IA*tz#;11*2FYAdEC&A<+I+YgadKdrQ~f ziyn97QynmQ0>pf&jp0 zd_Tea{Sz;}lbqDmXUFH0Owq+*z{`Ey>;2>6X>5sT%h9gk-TnGGC~Y3}crg3(8WbMB zd+7aKFZAN@+P)FS3S1#IN-a5??mq}m+uI&rJ!+|V9zVKh^j@>)EfFQH?Ct4P{>UE@ zUH^Jz)1c@3IKMjX$9lD zr0}u!26!Xp;42^#Kmrt@3ZMxXd_}$i&7Pked5-VeHr(UCM}hZR4mI!0J&w(MJWIL0 z@X8?O9lweKx-k1Z^ZQUS zJii?DTLmCIU#&m8Wf(lw0+%~Bg@mg-PfxDbnj14Y zZzI+M{BA-mq>LSe`p>)XQA{h)woB32)kym^NzE!n2BiEW==~yQf$kn%SHs6PgS1FS z8uyXGvl_rJTa+oebgfc*v`8c>;GtedQPo-i_`iLo=KI3rzD&TL7GvW58?VaNEXwp^M| z3?l(jio~>#qpRl`)N@Wr7`67QW9b+4m|GeR(2irxw&{p(`4qOOBjADec>Hqq(}6LI zWat})9}f8q!Z&e0Vq-eF=pstKB#~3A3eAxk*fR?tRqfAnTb|1ZKI?sAdU;&8=@hI!9VlG>RLjn} zDYvBKu#<#d$OHWzK`j%B8m9L^%9;EysUVc8NmorGe#MQR9Km`6yT=&evN#Ys)LUH) zX{Cdn4B26$GP^()L5-3TGuSDyC6FxZyP;rQ0(xOiM@85cH2_kVZ&Y6lUFiZBJv6BU zc7$2t0yjQ5z5})}@Au>f@FecPCSkUz0FdH;#aA~GP_w|WdLxhY$!$RW3;UQW5u8c} zj-&r0RS%372FCqI>Yr3FWwfWZiP9zps;MQR7EMgISg_#dcvpNneT;52a5 z--US)g7v7OgS}!merF~_X8tdU%w!0(-pB}lsGdvmY(nq&9rf>_LRZPgDGyK=mQjv? zl-@j97m1d;|LHwsfNp>u=>jOF=RJ~iP#SG=d}(X5SJ!4h82z@Y@!Gx3&~eaL{HcF&!Xy8~lGmmF-Oy}q&9+y~&v_B$gT4LHFWYx9 zo1%s-*HWahjyo*NVkri(r`!nyua8b|B$>UZP0*Rv%80Wz2iM4MPJkXuS)M3^t6eMs z!@05!M=ps6ZNCOS0cv)Fs^ieh?EUG4`Y!KXm=2xauAFTOF3dXcf>_gz4ia#u$G@BN zA{%V5D|(PvbcW;;Y!WN&N7^QKnwRYDvfsb%`Kyj0ow7e&x(E1qp0*}Yp%rboM$|4` zGpnx>Q;oGpYcD0?f^6$4C)-|n*As?RZx}TCT~gLI4v)Q7x(8xYZ}XDBUC{7#yLqaA zm_i-JjW{ZA^n!*NX3)glE;C-p41RtYI4f2@80XkcWd_E#keZLuAhY) z(F~Cuwm@Xa zPpa6!q&3;hW)btFL(a_0fYq}+jKvU{&m>%jAL02Qyi|tdnTAoPHf0dD@|^>>cv%(! z1`6HIplx1C|EFTAMXpn6^J=^p_RbG$D6B3qXB5`x&-6Mk?><$Z^Dp_HvwI>`v?;$n2q-Jx))Kt?>70o@OWLw|O7Z%VF$bFVe7G9E zc)1uF^Z`9PdjoG@QeGF1A7+0(9Xhd@cD%HTX5X+rO%KERyg;BWXL`4az!-0WTGEEE z$?w$?9=T1{LJLYyTwPJ66~}4Db8pg6Wupn(J2Xym)Y{}j0AH);AD^(gyZuxH&$;!U zG^Oqv$?j1Ak2tlsjMs^9&F@j{$=@y=W&{ydq{?T^vT&EgSSW!!_d_LqT^{Ci2v2FV z*SZU-y{#odg>aoddiojP3wy3#P&_@VR@6;FLM?@fJz+G+LMbb zS21S=O{#{}nZM3-qglq_a^&Gk3pZfn2pRw9A%~95P;lN}ymHoS-7;>sm$K0urFf~| zk)~7Xc4;6t5!?d0!5CczGKbdp`zTwPkq6>U#VZ9Q0{wL2SB#=A_nmP0lU^%6HAz0CF(*6-qf?k>)bu{M~r_reva}Bd6|E*ThUwUY?d`RF(beWcE zhA@@$Odf{YThh5~`M9hcFSCv$-%nFFCMY2L$dPj(Uey(!Vv(qR+VG1a6Y2IMF@qnB zuJ{vuGQTU-zB~>`jc2 zFMHC!v{AOyq3_MM$+xfl)0@q!+^eUjiHjMU{V7NvU+-QX7KrdF<` zxeJh#G^oly2=FbH*B)sNDxcqG*(*}j{LBki<@DK-8onR&Dd^8=znQ~Q30sY3;G0P( z{j%@_U2Cw_QIo0foCnlmHp9L!cs+0B-V41dZK65u=i_awRB2%3D5N(qrzW3HQ-!Ov zW-$NF?R!KS^+)p`KKIUT0>9F)E7E?XP{g$ZA;L;I8he)@i0H}MkGue5MvFoe4h}sx7KhjQQ`y9+@C+q;TW?@b&7AGW^$G(5uh1V zQ%PMReXYgaN^!caWc>b23&bf}@Vr!|Kg_wQ;+Y>s?YNv_@h-})(JCTMs2SZ!7&Dto zT;a>6tNkt*3BGq2v3xr8XrVQ?Ri0l}quFAdM3A<;A=`I%*PY%at2%IQ?M;_b@?b8? zF>Vvid0idZmylzOeP6{VQNL4)tW_Ccms)tdrncH9+w2N50TuHu%jvlo*p9L%QV$ci zP`$|T%5f^apX3wg*eyi1vbSzXFBC2*y2+wgc3pw>wQb#wQjEtP^}hA4s7^dmNgUA8 z;WArMc0bsvs-$e)-9NP{U z?T?sS{+!oxR0m;vt6r-j$1eiuRz&rEf`!4|s_s^}9Dv0&n8ee%%8Yj(M>IjBCW%a! zr5Tsv(F~{N2EsT#l8m$lWy}y6ZL?JYT*JAJ0G0V9l$lxfiRV@HJa(=I{Af7TcbsY0 z>1`8LCt7~~ID#&Wj0!k~rR8y*%kZjYs>;qc#r+yB&X(LOBeoW0upN6Bn^E%p7ad67 zCMR?SMjYRzk&$0FveNUArWZR$it$Ees(oRcNr#cnmZ}*T#$nS;boA@>eo)=JWx!`f z`7U5S0e;fC-hMK4TYFmo<$$X8;j(#>>t`n9LnYmmWx&HXXXvZ#NtVWeht8GZfDr$u z{5)XNYBDx7y@(|pe_d!DHnsZ~Os=f8_fOGSO5x)fEWI_ntazNO+N9OHg$0~e4BfxF zr_w+rXqnyB4{wcjIf3u^gkFj9F+{fc>;_v}cL+DB;ken^9E%_Bou0pzOm2H2#rRIU z4I=-Xy7>lmM_s{{ytcFqt2LUUS(Ou?1LcwF;Bb;4f3L0DW{?AV(LZ^Rlp#gKV-_w% z8D&56kkdNO(cCpbIX&#^gZn}f%r$5J`6j%(3hf{z3TNM%0NJ=E-#@no>%%(xov>@*|V@A9j|FwjTLEB<6BHMz5>j z6h>_5=x^cwi0Q;qa=qelw_o(|+Qe~3=tT6Rhm+e%>Bsb$b&kb5gKOkB62r~st!K*T zHSdWe4L$qLBUs!kcVlZjLs%Y+Jws?$A_Co6$NS4Jc4O#dt{(3fjD;s+r{clo{f9AM z6(^_~qSUXMv929~ym^!7Q1u9%36_YR>Cj3Bo3}CwPG;8CH@Kaq46+!VIMYj3UwChV zRx=7(RJRm{IX$4-Q@#rXZqPt4rt5aV!_uCOnId-ns0+qs-x@&f zh!iyq#-ep?s`-JUDgNn)1J%b38JaJ=zI@Kbu3(&?1JpcTYY}}WgN=}2EU&%V&<(e& zU2u&6?ix)@5&#Qb3BZ0J)_5-LGOWQMf5YMr6m>AnB#tDYI`YS4%lcrTx-V$22sN+8 zM97_3sn~rRvBO120w6GT4z&@;GmJb!aV3*VeP#8A4^e3I{DP3-($y;WcZmvT2oJV~ zWl7g|Nu^En_7E5E{N3H&X{rf6UOT|4t!#x8M024&xlmC@1YBeQ4XV5RM1F1dDU9Y( zr@PT-wYu;q0#ecxx2*!pOP*JEC+7{3TxCDs;%Ci7=Z7)MZA;hd&hkKuFMZ0PKj)7c zLs3VVEx!@|3bH{OIVi)C$E$OgDqq%u@|S7BK9hh{rc2vL7d9w2YLsu5tj|U|+`G<@ zD=_jZcuR9=I00XMbcJ*M{wC@xX!*^^QCXNGo+<#Gj{C-6rt^>V(!bK@{+<5gcX|kk zL}$4_&z0jh=nEg)=UM5w%m&+Lcj;VJR@e@e9<0M6ekruHa=h!r<9Pd$U?1QU7!UpBHd81D2H7ZVKy24BY%o~ z(r$OzL%ZDSLrQ|GnE&kqCJfV1Y0Nm3O*zl)=5yq`f_U}4);aZhhfKLSZM={lw*rps zSdI^RoWxV3lnQx{D-Y??zy(E7$*OtHEB%;_FB^cAPo8rC6b^>c2wI_Pi)gg~9R}0S zMC)s2IV{^%TH~b+*EA_trORw#k{-aXO?)zg!bn{-Awhb!c9w#X6w%hcL8r#=rbtlY zyUK0a;`|CU%S-B}=d~Xwb7uz*4(XsSR;Ej$0?%$PHDH*QvR0;%qLCP&km4BM7R|Bb zej=fH$J>HXD(_XHDSY@#N=aHwz&EImTu}6fo>Tz^8LV+quNZCg2QXD|G^tnf@JUX3 zXSoeV{J(i%sQ$&Hv@3@Pxm|Luf>CSYdN{<&#!!kt2ey>_?WefL6&rtho3xl=pMKS$ z>On7)28;$1)FD0^HmU~9+}X<``&%1azZG1_QIEvtB>IuouG5%mN^7)O1>^Zf1lg_` zhWXj0gF{BB#A%xyS9fek?{KVQu&aK=G6bDkeqtr6|FD^U`Y$$q_y12ex)HA+-gDZ; zgoc9;B{jBsFjSi#QVwl?xnAQyjvjEGw+Va->}bfCl@`0xodg%r5wfI#pyFNFH4HYf zw#TeUHnXBMT1Y|WCYDOlnU;O9)^1%VnD7{})Ko}?PX$Az|M7I#qEPqDMjwW1Rc=M8 zn9TgXfowJMn8)d%yjWW7B1Wq$XGlcbTv_abU)ZlYmLiW)1*U@ts30vCNZuN|~V^ zQsD&)GfXp3MeU8|({~0Uo313fXR|!Am(hwB=eCE7``Q3x(>ec6WNJDR!kBkP&XjGa zL)syCwBa>Vx75gm8T1d_jRy(Bo#Z=75^pT<=d!(`^KAnG&&3DH#SN9En zJ7la9lguV`65)H34C3Vq>L~ggqH%NfvrF^HLG1eNH6tdPETtfx6>O*ksB{T37YKC( zsW%aWBghoEvpBet3Cl_r3$Rcw@SK)$zYaO0$lvky%tQ|U@ZB+2XOgMmgm1E7A1pZa zVuAxgkkoya;K_nZTFz3Rb^cn69)bNeC<%f;9*YjrOpHm!2)*uebuIp<2@i?}7W8;Q zT?*fQ*}rL|tjN$)Endu*`|W#K__y!ga2*9_|6>dGGa?TjqCb60kAfk=2liTj_HV%v zgKlAiDi+OH=}pH`qs>E8Jc_4(Q@JnmTctW_BUoiW{BM;okaeHUhTDGnvF%$(;yEA% z$wIn6LXQMBzCuR?5u1}SN9ZVM>%5V+5=_v=Lm0WfnegyG{tx0RS4SC4vG%HMm5#z* zHSo>~Skhe>=BqcecM}v&T$Gd3Q?F{G+e7*7>sAJK@){Md_yGq>Q^O=kZirp&v>Z{? zW9h1`R3NhpU&CvpvaGa=q0*H`GIpWaey~wq8=KMHAPJapMl%DD(~|ARg#7A$_0|pb z%j)yV0)~N_ze^cxVVUh@ z>I~6#*<_7=-A%!_W-h0mlFMpXB@5vz0k&)JXU!Yim$xv|f(MiMtQXZ12P_;+#y{+2 zfs>~GOyc{WNhyA*awly3Sx??GsR zelVweJC@aOK?foKOb4-(^~X3fwVc8NT(ddtRHUWfPS#NR8)2hJ*M%>7zvn?H91*UE zCBBwZy53G9ML;KLXQe;JQxh$C*wYtS-Y7Xo3Kgz`wso%esjH>=@lf}ksGFpFJ};r zZsW1WG|T!h+Vtc4;781aa&>IU+}{1ZO+mDkT|FyXNy)Miw+|8Al-sYmlm0%rlXmGC ze)#%pBk;mL$qY9GK>e6=%I06y+_1mWs!FzBYMUG|L~>|&ff%|K9B)vv{ykr<%EPqR zke>+>qdzDjJ`98+y%L=*(vJas9SbKXw2JJPt2;l3lAO0uPQbK%qc+ut=|yQ7Ox;>b zwHVEg6@@D_z!*-gW5&mXQSa1ZDwkO|Ypr9Jw=rV^-ikK}`>NaA*gn?6Tx-pnAhxVq z;imTZI$$#OhEcZx4bycRx5$HmZE>fRhe|#kOOAB9D2=bnSpx=WZ|N?_GA$+ZNxsH-C}exQ~Fz)#3jjZ(--c ziemXc$Y)ICw(euoHrHJKBJVSiyI0e`L(*&AI^e||AB1=o(d6i}hOUh&0JGQy1o<$ThW*Z-Hq_|L|X2*Ojbq_o1BZ}Pv zixIg%3Av9ehk4LY!p|qvR_KaJ+}-D2%ak%`-rh>ha(%IZYUb3ujG5*7Syo=a0uWHN z>jY$ErSGi8A0~ftRb6)twa+%L{L7@g{$XcP>Gl)NSV{uvee$&|0<=zWu`&E@6O0rjX z27Ok4f?pp28Ue|7$pZZu$!Do`FvJrbfQb+LZq%dqxuuI@a_uGzi*Q;BSBoV&=HW^uwb-~-)LUqRq%S@=fBZd zoo?VJhd8yD##aWAOIyl6;Uj+&-fP8Y8hzP414KC4z`dkWQJtmZH5;li!3JV2=XDKk;)O$jA;kNC4L{W z0&6DxCAoDI)%btJ#fbkFhaY+-ac(yIQnPfel zgB$a@wqT2nM~R1!+2Y7MdW^8yE@VU=^;uKXn%aSoms;~@P@dsFxU4;%rC3IEC!U#8 z@a9TOAaL=H%fZDvMt~m)vTud?XYm|z4gM-#ZKr+L=gFlcw!ai2^&{^c5p9nX(oXh3 z+nT7;=9PKTA^4OLVM1v#z{74Oj~ow&_YExk7#JxEK)7ZIlzo0MH8F&Gi2`AdVDkCaoNDAw_f zA04>o_;VTFL&hO{#6L7S3S3s)Nho(ZBeHj+vULxda5?c|*ovp;_T=TsFwFN$JQQoh zA=xES2vpl^Czm_>_C4u+2>u3jiA>XV;M=DxH!%(2BtKCTB}29!ZjLve>FavlxIuAg z*DanXaH%d$zvaAL6twc2hY=udS=N$AvA+np&zn7cKsjaPK{)mV0|(pGT1tZZZRU%Q zh7L6HjI-sVrbf&v-u|MWUYEeUZbBa6|q?9 z0TS+;HV>7u@5{bmpS7Mz_cYn9yX|XlD121|(8x~IKu-WToU-Q}XB9#PRQAEe3%y5t zgKPqXDhU3Zd)AsbQRA|f!`6*UfYsdl#3YKagrl^ej(N!mv4(kh^aUg0ew(d30q@S< zWLn{fnWOtAGqs#kR5KZh1n(Ew^`BI@3u*vla1o#mr(6nL$p%wFG^FQUrN?R@m@an;3^+E zoLt&YA?csLGsr8YA@6KSb#Q*C6m7cDL-viDE8{Lo`TS9A&s7JnRau zh6HCp$-vEE`D9yj_a^kd=_^x5%<0op&vtT;?tiyxI@jly8Xjj=%gED;sI1su^>czR zGdwEh=)QRNKXdS(wTj45ZKStb8|ZXhfK{cf3lhJQv;Tk)hDrD~HP2!wRZ)$?{5Djn z$%(Iz2L2<@-kI#2-Y1xWf%q08Nwb`A0u0OGAZb)!2_;0f`q9saa!09I;x?c=^B2v{ znn`K-Ct2=F0<(>gdu3x%@LT9DJ>_8vYhQ-Q4zab4 zBS=sye;{Trm{;U3NK%WuN7vXn@`|iU;dFKrf7pi?#<@o?zFHf_TE@@g$nDwyj3qA; z9+XJrmW7F25tY{9sg$A3FKPVZbbnBFr<_#cq};U4p7g9)3qRboh3&qOT(Q5FTq)gp zM<0v?Bxb#9a>34E@!EXKD+wm;E6fpeq9cUXIGbI3R7}6{*?rPD<80ar&w;+ahGMwO zC&)ws7AuL45r4iC7)bQ1aOc_V3??m)tH60;xH&1$os@$WeUG7WcI4Ar6NAO(-uw7l z@Dn=C^%}n`Sa9%v1PAAq!HWJVxc9f_G?dQk(r7_6v& z=Vmf}4eu0qR2>=kgI~p%H4p5%u58Qt@Ty>~AMicK&tv`bAaUu|qWI>a57^J}JQA>4 zr+2z2m=r8c5nK}Ujt!Gu)-%8GOBA@HR#%3*pEy?_te`sM-LJGa0c<$x6hc;8)sKZRk?xc`E8vZEas)_IpTkz>%BIQBp%h)T%4kB2ieikeWRD&3lh;%lR~ zN0K5JU4AVQ3M{ z{sSlyPHSGiSMagCMH5Cn&IXnYJ?A??iLiXAA_|FHUb$PXXZIX1!-%n-7_ov~f{jax zHx61#w0uSl;=kYZOUF8s^KIb#H-NM9Z-B$dKLDI=J%e{)hCv9!$2}ymOPgK-m03zo z9abUHP}TxDk%XaJt>-sC(1-x<(>nuqTgNm4cL)3Nk(`M9(4l+JMS7jLH!A;9pdT_b zKIqaNL1~D8}m5A&_v__NuC;b7}U-TvB z)%Y_Kp@(P0;AsYRX}c{t?^@2a-M<%@mJJ{L`@s1gLYX5=%(Jgb~VDY_O|p4I)0x$Q8z{p*`%YlZ<$Z5Ya04XZdhGC5k2A+O4wB zzDD~TK^q(<_3oL;)G+f7LF1=6JBIvhcF2FBLMalbQtmLrdPPtQVL5vW$AqG;yWo4k z=};9jv}uWTf?aHbh3tqgtl^ebBQscwP4(U>+E_}&|BU#CX)%F=vlI#*3m>{`FJiYH= zX&szUs*Kjrh1Xg3vS((xA;7nKl`^x${K;LiW?*8-vN%3Qz{Xa`kzE-yH1;&($6*cN zvQUh0sOMn)9Ao`UdZ|*MT8n0S?9;P@cjcRn{ZyT|9E{`F)nf``sL3gN53^QqO}b@x z4muEwSokSA=~I>V*cTigoy@B$wXT&4WFC16ywrKyAAdsL_<%x3>HpwN^1Z<7HF@kGE@@Szc6D zE|Fyok8Sz)MW&E9a6l?iOpn2AQT)B5P@+zLH=*gza8=;SHoq6ItQ4%YKZ#v~B=li_ zM92CYqmQmGG#rgqaT51e9bLBDEPfCt9GEdF1@>|<+Eq#5NGmcWvbO$*6paW@lyTU% zn(-;eFUHv-d1dFtn@vhWMZ>(hRe3FCfNA?1x4yM+Af37B6j$D4aiK87gGG?4)Re)V z_Ha8*Xeexgt`tVZP@d%Vfqmv6*#pjm2G2_`4+rw+KGGS&rg2B?Pl)A&_$AXWp`NTX z@n6y6zxut?3r2*&LZCrch;J^n_Ju5=40IIh&3r5{p#xU9ON1p>XV{cN0LtW4^6^yi z!+0WLa1a>KHONZI0($JwgJEy9F)Iz`X*3X+04I}!fF`9DEIRFXoh{g9K~u;xi1XA?fa;Xv8hqb-#rvuTekqT;ylYIH@0 zp4sDD$Hjq_=!R#d&dG5;`ZBcw)eQyA=9nEaThU zqVOI$Yk6k8l;tTpLVU8K;|?R{E@>|a&R!xdb7v1qdYZPnn>_riV1I7ZcMgVQa*sA= z#aI2uW$A|)Qksw-+FxHGIlvqdAG054C| zj%u^Iek!k=cA@C@p4bY~L=DLJ`9a~*l86oGLR7nbMoTnG;Ad3nLX~@NeT*{S^BPngt0G&}dPf_HJy1(@V&e zx?mu+zkqOl1L^-8$l*88T);#pP&WU?dI5nxdcDjtO2{5B{tpD93h>(E%xaHC4}R}Q zp+>iim@b2KmK`68jX*#52|M`)sVN-$P*h1zwD1of*fK$!#0{PWY`zBgG1vrNIvteI zcA~_F(;;g(2@<0+BV1~MfKaMJG1+{j!n|h9Qeki&M#%&DpAJmWXs42&oA6yZKh4O3 zD>0~FqVgEo=|jR&8G-%&M!Yxy%8!(a999C!odUKgTjCg;7q>nOcJMkuKn}aGU%&1O0e9zDV z{)%5LHxP3qPIe^p82Fi9>}`A-r|U3k#NA84iT0Pb;(FQn*(snNa zy?vi~Y%bmFjQtISYiPCao42b+|bPMmb5*efYwgW)je02{>bdpB#fDKAPHIIUM)hXK!LoCZgr8{jrCyj=kVJq~=+*s6aHH}T1ghC&_CTwcuNi%&uIjGD zloXv<0L}ZmShX!3TZ85)d^rS&<)=l9@HhhQYgesN;VXvcpFvsI>&By+-K;sAn}So5 zW%t!r-!ILc@BLibUT!u?>u=Nfuh`k|Ux0PbH~qg>`fg7-)}0tmXo$p_BQjY>oQ{xtQUkOR~U&{u=Cs%y}{PN`Cg-=NeL`hO>etyX^s5dI?e{y}O zIJlw(Mb}9Z0xFJ}iP5kXNKs#28`ihm3dR(Knel#B`}0;d@lZGJvk~F}hN*3bDQ&H# z=3^?4|CuKR7-H{9LTH`C)Q*AB9ESvfc9AYz^!pu)M{G8TV&5 z&eNW=lEIlTwVRG=H~Qw|&ItC>tToC}>$ci}7&AVgqVC4}W=qAeo^L_obJb8E>vUB3 z-t0d3Q^C$h_xoX^@`PMoPtsVTQeY3F&tA#=LCLdWUpT2Z(*rehujTiWc}HVF{`dS= zCMT3?W2kikJ6hQ;lbVnzqGzsb-=KCT@otNbboYmjFV7gjTsfOUk>eCM#62c z#K?M#mW_xt1{{`Va2f zD>Sr7$uVfl`FWk5qs;5CdM{lo*@!K7t*0CvEjPI9 ziKrN69Iubf%Zo`C;S%k4&Yi~9p5uZdNi49wlgEWnALi>HXNpu@k289`787!ZB-QwiFO`DA%C) zDlr@(C+~Ej79yGhedGu9A;QJ`m;?I>wsCt*W1Nt;&c@1`AyCydz!UT<;0dy0@I*X# zqE@CA*6H66L<k@{vPmml>c1?K6eYO z)8{WMP<#qAj*vufHZ2gSA)#O}?tf_gOVSF|Au|R59EJ!Ev->No2jGaj#U|bK8)qGg z@6EU0IDZfLo99}YM%X!hiVbiWCOGW3HB>v73b_Z=o6C#X$FM!}J$;&|8o8tn2%z6w z0JA7_%lI|)@DVe%*7P)kN$L*Dl}W?B%kZsSpnfnByKhC@bj9R$QK=~4O|;#n$?L(> zN%-Dg_E_I7Ry3iUsMk1f!-LP`;Y6U#@Abg$+o9bJch&GNFLH_JI2zu|o!33Wv5W7| z=e6uE9HDH`#^X`)J+<=5Jy~wskfc*Wli~Eq(5C-w)s8tw{?4lnTu8} zj2qr;UH6a1jVot5eDmM<9ym4YnViOb;&i?5kPDQ$pFN#U6Kq?PIH4R{Tddkl^IvVh zQyy%o`Z@XypzjKPeqGHVnF?6Vh&4Zn^FBEz{r0@|#8fT%sRSN|bVcwN&gm&$xZ;iv z-#Y#*|J#FT3z6JxY$XekoNNocOP=m1J|1Cxv;kEt!r4;M{LXHNd*B6Z5q%KM?dy(Mzu#e)~QZgU# zze;%Pq3o5(&?!Hn?nU0KEVSd>Nk2X39k z(-NH#QS8+?=L*MGysj$-^}EksDtYW2i;5iNWj;Oc3S@g5EBAKoCJDXNji9)@Ec@L* zJ;h0jWbOek^`2*U$LgONMU8lf6v|niT9;3GS&5h((EvAdTTshQPqq&##no=o@?%2dpb9M+IG`>5eICoc$~F&lli(Nv|%%BUuLJ}@sz+HkI%On z8GsrHHk@iq?hDjp$gWf;5kjJR6ZRg)SdbmNXbjo-ICS}nl-{SKIW{ZFm^@B<{J2<4 z$%vZKzqK-CHv;{_Ll;nXkTSS<+g#(!yQUVH>QG`T9|YV7*0kmhC3JbjxEx!HE1BU$ zYesrxc;-O5>t#m2d`?1LnrZlQJC$EAvV6yu(F?~F=SPILz}`js$$MIJc1LWT*Uh0v z5NGiIyLm6OWs@-v?6Z4g!H`#6j>Xr>PnPbA3yex>1qat_cSvdhfC>EbRcb6xshmfD zf*%Fk;CWH_?k~QDqy?Ni$nH4`$n|)8@ZyH?LR@Y~0^Bnz(G|FtJqqba0P7 z9FI%eNrNYxakE_B{A6IfiBWr|Ty{iMlli@jh|@lF^`U%2C+^+H!@Q(WOc7gaIj1PK ztI1}PxX#LVl3#TvClx&>lju?RdcKm@?|go=tXn58R`+7wbK$|}O#=;**X`^Gt*Ntl z(%o#~G1OzRqpR}x?HTXDqF1SmtN5D*e~ZnzA>VTI1oKh_^yH3k-Mi^+{Z?|+HuKpT z8tnd^Dq*0qg5fnb@s|#F4qm5s=kEb$?7a@3Ct8KR*{P;zB89CxxjvR0*o}AIsf-bN zbf*Ct#SAAT2$sY<^@1{-xymMZ{LVtw6i&h? z`FM(xP-MDItu(_v4>4V^YHwWys31ZX17;Lt%S0e%3Qr zYe4S7)v9)3OV&&$8;Ogo+X1_5%WAByFB!B!|j6m0ju2>xg z^R_`>X}Fur?OsL;@wKh*9dyr1YQ9W$me~uP08CG5HuF3fsZo1Jv&l{^&Xg&klM^r1 zY2RtAV!A77Nj7F>zwR7{%(gS8vUT4hFYdF%+neuYX9>+#`Z8&yWylg&linOzR1K9o zl3*e>FR!j)p@)mKP+3<8F1jAr=kb7s(HUH`&1|3jEOHS+DqS_(;MJo_>*MTF<(iab zKHTp|$l_P8r3>F^znU3e_Wm&Uo!+SMD{u3r8`FNuwJcq#e*xQt|K*;E<^MW5`W86# zysH3~I~}Xh+D|}m>u28!1zc%{EgPnNBg9He9}0jYQFS%_43vs&Ovr3Zwnh!Gxi;}CCVZ7(|x|W-DUQ?%$d`G>_36LfqrcX z>l*?~7nu75$}p_7(>@;u3y$;Nx_SLWMoAC4Io01uk1dyp;bzaXV-2gr=kBCz`CepK z=0iW8kQnKBUEAxDhP2Dscr2xV!x+VP&F*86w-}PP{nB4j zQ=J_DlKQiBwVN+`NQT4s&W8C5#&t}|knrwyG{k0>9oHhDll$6fUjh8d!O30e_sO=$ zfSusa|9^G>j;Q;*FPko$?c7+%-~rwT@a^2|aLPGuj%2HO$g+jps|tmF*9ro;F9s7# z+6-j$P4KR*$UmX35qZs8l;s-u>!WoBdqAN!MoBia4DQc)qPy$U>#Kkxu?-vvmFpSB zs;%D1GTv;>pQer0E73B)9NN+b^5QxKnz{!%avjS!&}4otb9SZ>?GO2lD8ILR{JQh( z@|0`M@#YHK-3)9`y9fK;Xw8z+Hk-?j7?;%+w|aJ6RYU2uDzZgiu+oC!5K8JGX-Yd9 z@Ks@r`m+ZJj4lZ2mDjCVHK49YUK7!f!CU)aqIiTlm$ahNoSKNuc!=6|ftr4oF|P;R zKpWj4!za~>kT)Oy8=FGU=^%g80{;*JiyKn&RS75#Be>YIZk2q0&f^MAqhp%4?Y$9j zy^Dc*vvTTc8l@;C#^yK$_(bs(+O|^MrqQn}h)dhuLexcX(q>W8 z7RqaMN?^623(leg6^Lb?=l>L z6!&T-EVWh>gnIT6u9l*hx;g24IHy6yPJ}nM@%-o6Sk!u2CJ!IA9b?E`KXtcUn#Y`^ zVCVUUn$@J`cu7YhJJ!fJ*7&#ikQo9gdf48<9=I0=Ir8iYJQl(`&d534^sLP2{H-=9i$p+)EM?(&Iyad%mnj@sv zo5trVzNZE2u!Y)Dm{PO_Pf2RJ1)LA|`-PK`$2F2EBe7@VmA7lR<7+Qhx+15Kq!@8$ zL?qY2gVOgRFF#CZb%hzcr`HOz`}MojN=0%_Ks3h_HjuxO*53 zom`}a7z75T1S;9ML1DWf#6gU#phEM#&ZU%jfNCqt9Imath(ZYGV`VPVgf)O2+K0k` zxcnBW-qv6%Uzv4462(M+#eoVfffWcx_R&*h5%@bkhf5P_*M{zJ?lA&;uw0k(={Wl+3F$fbXHzr*jNXhpWMAE=mdE;J`fKRG8?Cl}A(I^2U zaR_`yKXeuH;OS727aW8nIw z^Yof5fF1(6F$DpIAphCdDE^&(-=^=CT-EojJr&Yq})9KG!vJ>Ali zVIgub<@dWch5>xUKMXU-@iEa@)RV`eFJGgVXvf>gA{Oye)EGO`I-W`1#`KOG$D%O@ z^*YtKTat|jACbCrDhysb@OJx7&umXCc)Znk zzbR*XR0Adg(>}q~?Q|OiujW0~(;q)te){b3HtO*fz@MimdoI_Wf}gxpT4x5Zn9^jU zY1pG*Pr7?CXB@l;Tipp?Wfr2uGc?oDvdA>FiY{(Q_|_s>>U?_*>ZO zPVedu;1x`#ebXql_n5T`WV%T7G~E4OEr(RMgHz{+r)VJ(!EmMSprn%3o5-8NXgHBS z99n0lIC+uQ0#iq9;74xI_nK_wlVEL}VeMPM8rq9Vhj$`pJ#^tX_@5}9tHh&w6q(5k z9_vLnFEbYs9&cl8qM`;LCFdyJzDeEhw`PJcpPryND>w6txxP}mst`X`;3Pj6D~{xD zetAp8+Is}z4PT_?p~Wz>F*2~vFmsH~wTUJS`nbz`ya8QH&+5s@x_R07`BGEoX+PL% z?5AuV)$^XX&|_{OBmrvZ@wPr?1@{XOG|+AqbVtukQ=wouk*)R>2{VZ8h)?Zu0uwZ~ z`TwHl9O($&VBnv69Q|=#@@qN*e9KdZ|4KF1Uwmm9G|ASyZWP7kph;_R-&l;IYSAmACHR!|r?l$p-GI+EHXScTe8Y~dCtGbEXht|8c_ z{+}v`Vdtj}(nUFftSnCMRzaoRMF;2k7f@!VQPW5=m%$Ot@CtF2jFPQJH4WDbs_PKu z8N6}D+5cd?bPPtZ_7h9)Z4_$YP_2 z?Hpz1GKBUItUa_frttf`)?f`{&Ov& zM&29jN}as^JbK$4@SYhRUEJ@yFaD-%v@J;bweo57Oj{csP1`>fcpJR6YJ3&C9^T%j z_Jy*pkeke$WgM+DSU%PrTE=su0b>jIif19yhJu$*8AAi-&dZT`<%kx;_>5x4DlQG7 z4cvrb)s{|p+d-J#>y^rC7>0KnVq(|4!omn(GQ>J0Rh}<(yKRKTwBDDi%U&Pv+c7g= z#9KbagXJC3LHZrGB)jj5IKg9QN;<*2^C*6GQVm!28rZiZrog6XL(LC3rehR26$G%cO26)OJHg$Z4ZW&DsPKo)@(NJqbM1CdlK;! z@x%wkqp2fX+`G1%l0-|!7Pbn$lXMDc4#Iwuq4uMxF z>JGuf=`bIm%$_g?GegR{xEWo(S~l$c{J}JNb`_J32PPzg2jG23r`|g%8Q7y}sYQ zDt%V@mk!nZ6QGWF*MIAHpV(|=;?o~cvAT{#8WxY z3iSVn6{E(7AtQ%SCt;0AcQ!s0o|99z>v$upHoe9OZJ&HWKG(#*F=W}yWlr1h%0@Ta z+jl^8^?lp=fnhkk{>Hh}0N|27R!_9z%f%CL1hugN7{7V$;?~Lr*(sa#52KjcB3%nt;SS65Wm9-cth@nF=13H{D8-@|nb{K6^SA@Qc zX(b#HcNj06Q^$WfPMKS`TA3C)u)=`v6vY;YE`SqLt&?$uL+C$Tl`Y2#s++(YpiB^D zVu+nYQ$!mAH9qTCqvEsuQPd1lMO@_2s#T;i4yW4VHb=U` z(%aWi`lMMll8F@xYJvzItb=CDLpRKujJZ#;B3w;c0ieE}Xv1y!VK%`jdm&Q2CvN5W z4X=RAKx1yQHj2|k3sI9w0b1lGEgfx+XtGAKP{~6u|^>7>}|4 ze5^c+aitssc~p&=&@G%Z+Mum;+vR_g#lx_D@74dLp&1}sM?(9~;h>*&mR-1qxZr1} ze&Tb(^CgG}nx(=hwwtvgP4#eQVi@bF22zp?V?Wc7}Dp<#B~n|pI3{}8t0-!L8PCDnFtGh*-5sWxovar;I#F^wVC-+ zT+-U;7|kr+xUh@_f0DgsH4I)>H8yH7L|_IMFGlID@(|x&NFtKl0ux!@my0fK0wrWd zp==x*K!qoRZh1h0^h}+OD6V`!UZFa29%<%TDXpA@um9M6c zfa$7|(yN9rnQWunKrMj@%K)b$p&gYU`BEk0PiJu>CW(o8j8k5ipvD?)d5|&tX}~T& z^3VK5r?DzFp(+vSMUx-7J|$glvit2MDRElP;gO6+3^QeVLP>%$2u)3SA{RrQqMk+? z)0{Do?tIo9u`+!C8CP8`-84T^Qf0&wC$x$8Cqz>K9dIUauhhzk`J{+R+t?69XTe-V z%Y*$VQ|r4_XAV?>)Ki<5NhwxkrBPLt9{DF~G3-B4NsvM*iI?iB(h=4EWr1Ej(1HYb ztUngabVVjTlRT_N?Us9?CVOcrk7O@(Mbbf;Z>y^{Q2(qg?39@Qf=T%o-vh`$$Xi{J zcdiI(^U{?(_#s8%Z=uk(f$PGUoPvpb>eb)G)5;<-GERjto6_bF9kZZyQ)tWs;&?c7!a4ex+uA~`lT%wf^A?FW?Egccd&JRUm zK5?&w>=$n+>k2zyIZ!BT^k)=C8Dq`iNpEf%7T>goV54AgkJ{G0@6-C1eZ84R{GKE>g3LP(Zw+bPM}^Eou{M-_Nei1KAj@X&oEqWP$nG*7(K zfvNK$?2-$Lt@P$f-J>>T^88iC1ZoO?CWAH+2n`Z>!!836U9dycU53~^F z@h!u6Cz3tA&~2wN0yLy}FxavmyUv3o2)~~FA<<$#c@D@>5;(9iG4I{ne+9E|c>XJ9 z!o*g=^dS-~G#bEjVH~*7prn1+1T&2vr>C3iRKrvLqcju_sFXqts1%?i2p;dmm%z9! z4Qq*^D7&p=@`z1AAkC9jz`e;D77Shtq{Qp7zz|2uFFtSxjwQ|Wv~)p|;?zFT-W@zN z`xCbJ!qykVn|#knP0N{vzFK%NAXxSMKoP1pO$IVWSFIb&6eZ0`TqiBTN&I_Sypwol zTB6f1B8)6gHWbO8TVZ5W0$MEk2rEC%@Hz7zrPAC|ven znwe7IrSiXK=<$HfOdSoPa*<@hhs}aeWCPSR*_8()2G`=sHs2tDW_>e1Mf@^Nx(7lV z@8pG)>x2b-82KzTL%h>vg`-Rsd{|oalpN2iPaX+2;QsHhWEEoC2^fEc<;ysz_>sau z=NrH(oveasrC;e%Dg2u)Lr^2Di>`XQD>AXFj%)lWgaAC z%=gsFcwzHtXt|SVIUzK$uRv7PxU#3BoY*UB^UBLhE#w*N?Ean>I%XyHa#G0qh7v|lh+i^M{+)= zp9bfO{yR{QAP5WWiu@x=^3?%e-Ac2U~Z@189 zdZNJhhVc&*cjEco6wyp;>hmx!Jui@k3;E}fz8gVwWI~Csm{^8TN`plG0^dhYZ~8o= z{fApUXj!-r$-5DsB&r`s$sDmL{E*WqlisjP7x3>|R6iC|--JWcBh9gqj zZN!z=B*a8`dtXi$1LKNy3q7svea!HO*qXoUA4x2PML^jqr*$7Ja8juJ!K44w;uG*I zDDFQ>=6{I+i(WGMJhL}I!9rrM128U_aetO@eP4Zv)Jsr}|BME&?d%^px6t@bz|q)8 zE;R+pQG$CzK{{?qRP@kt;NC~>=iEoOm}Uk7wy*g#*|E{sfDWW_4&4f+lWl zBZE`*Rv6)I%-1LHG^bSDgEec*^+&1OYAO#Gg%=@4}F}1{;wbU9<~XoK{uB{uiC~h^;lk*tH)%p4B-x0N1dbW93VQ zF?L^;e(USn#Z4%zU5+o-Bzqhi?D3HRSDAu){IZPvao#^t5d9XXl_8P-1C%phwI3&^ z0l_o#=90O!H=G6aY6KLiU)F)h07P359<*+?B*Dx%PCU=%2C$2m19)bfGPB$>J!RAS zfy5BXI+*!y-7aIG&FR6ik9~P(5-w(;FSVf15u7r+E;!l(AbDo=@uYcXo)C)57k#v# zg?b3(DdA~1ECmhSzVym&nSLwX;reFEbaS$3;H(-yu4b443AjyM3Tf6Z1JE4Kn8W{PB&5e+7;JK)N)? zEcsOLKZqd^SmFb!L5oylEM^I{qq(y; z3yoWp!EP;oMF`i;+DzC#vlKIuDQf-t{b^4KU~u$X9GQa28^(tw^Zmew1g^xlN1m4X z=j)M+^Boh*M~#pDs|JQd!uh0$gmZ9XKaN`BV8|y`8Mwz@mm1Ym3bHFX8cMPmG5WI% z4YX0fG=LhaCD>6zj4?pRBu{65y5~7PXCB)t!WxNT2T2=eVNlRdaI?^40qQtEV_c** zNAa5uNVvl?Mf&s!>MZ+uQPwnYl9t?zgE$&SI4Umg*2{1aRW?VOl-V21rKKjTnWCZo z6OtMjlJ_jl1x>M#g|5odqYGA)H^2q#NF2e@f{yy2f&I(c4@7obQW4&cY%XaS}I76s;kPF&q({1#dC(T7des+36cJdMq zgDQYV7EzR!R?jNiMTLevo*dD@!81)60GIONQqvW(VxEki@I(nb92aCi$n)ZkB!v?S zj<1dcxR6z6J2A^XDe2Ns>nj5!=RFRwcG_xb!Xb|iUB0Uw6|)qFe0}$6mpCd$oEG6t z2-4$+g#Kg25yb;J_ilxNRh$bOGH{OnkS3dijgeGRQE8AT&o8friOF{=aK;M=$7iTT z4W~h2!wUf3gaIDz=U}`_QF)XJnnLbgyOQT%f;qviB_@c_pkwms@dCKNfcI5<)KT#v z#q7S$>2L%N#$!D_-|t~@26C}L#|R_2)YviGgNV0DvgFM|8?$Cf@eVbLki+a7;WU;I ztdQ?r!Le`G(o|Gwmu4#^uLirQw9oMz6)WkGOX0n4-Z7=jlN(;Kt-h24(?v;SV7kcW z1;c@SRBSjYgE8tmy}f$hlAoUqLr=XKmH251Yf?rt8Qt=7cJvYkw+V(IIcdsTH6`g^ zoVeJ%n*Dics9oZ1sf(oGLFRMkhmeQDbJ$}>>g|*O7DY}N4UkML^K+yzrsTo3!H3612REU;3NfX*C=|Hl~@H0T2Cde?$RoK(a~8G>m`_EwicFA5rJds=Ft zn$N%SIu4y8I>i$evf(0vHOK;{Y-B1_P1nRzy7=4>ZiPz|_+8htKCypY^>N7kqU{k% zaMUYPsObZ8)oXF4bib0&D#EhsOy?;%L3Rkjq8x1%PGBk)69nUxsX8x;>fbMYNfCKYls~sH6O$8KRTf#oC2!+D z5;7^v+*=A850eX(FvhL-MB^6)v93XRA^&1rXN3knaB?;JMp$m`nyM@Gk;XM^L<&xD(DCIo@Crit-d? zA(rC_i&+a|BxNLJvXUYI_u$6^CzV8*u$BTX5rCAjUZS}Fv-C{jVy9Y{wu@|nCH7&n z6Y01$@qKP!c4P;x=@%B$Sc>~8%fCof-Xr^G2WHdZLh>$)0CLo<4!4!;NXqsYB2Ci% zHe?;)51$ku!e54zrh)_c$gE}svws$d$(UOcchLck6K{_UJ(3HYOQjjmC8@g!mOEM5 zoCYoo{Bi3$>BYoAw`nOG|Lpg#U0&6sC1G+)9p&&$nSJr`QH@lY*PGv{5y-Aw-n!GK z=jTD#Qw#WCiJ1w3bFE#ZeE1TBia}y+PW)Rj;H)HBCZ``C9y^fxDTG^=dagc)7b@vlz{GMM>I+9Z zdX0J9pKl5aup_=Ur1UP#ko;94X<}aQC*>4G1C6Sl>P&JWRrO%QvTARk_;x_%?Oz1BL2FMW4#BH??*Yfz76b%C;S{F1s zwGRalhHyXh8UiGMWe_kd?X+2%DKgqS+yDvS*&KC=7?nIjXv`m#J$n+AsM)8DjD%$^ zO|3IUCIu{mH>o19BsD!{NVLuak<3t_hZ1KkwOmJ_uqtj7V6@Ei_X`-Jilqf0u(aDz z7#f)wRQM)>t{B*EhUzJ@2>wH;m_OS?^{I<|S`Xx_MS}f9%F|CWsXZE#G!LWyp$<3j zk2*1w|EY5W`{4X32tS7136&fLf@}PD|Gyu6dS|conKPU>&Jg} zyekrtH0%TRhdP1%AN`?R&E4Fr9W4LaXVs#y* zdBFI<>#Unp!eEOu$c0LchjUC4vaVv@&HZlJL)!ib`1}L2;b8jWYG^mw<)?~f9o9+l z2|{uzB~B3baE4-hq@dGlP|@ldHcl6PgLBBS@m%)HG$KEB0+v^P2-S;IHYD?6S4?~+ z2Ewt}w1r1Z^a~Xw@#P|+$O$A)mNI`f4@gwP#U>g&3_fHuuNRUW6hzL|Vhj~Q#t~(V z0;H`9`)~2cP1&QZZ-x0GQ;hS)&H1hpvJb8CgEkZ029zJEp92_{*M?UH;|T?9)|A(T z78X|Ubfgedwko*d-)@DG8e65Lw_{=Xu!2n+9LxI>G26jx6lVM43KY>co&Y2fsx{V- zinS9RpIFB0N3(r{@Rhe#M^zry5c-+TZVbRk^bTjGqsoE;5yCGrp7R1Zu~S(qHPmb? zeu#%8Jy#7-jjcw}H?qCoNXTBO2kmm@&Xf{15PT;e-~bFBQY1o5xH-eYG6!k|?#ux%je zo=Zm1aNq}IOBUogR@``iwlnYIOk4~G9XP||0C1+9^gf|9-$mlJ1iQOh&=+#|>;S~_ zlJ{-e{T|iH6oo%3%xiSq>LP5;4%7#Et{E!ok(0eUDxx-ZVK<$mlo%^#`L`Z`yM6^* zr28xoh^2?NB(aBo*}JXLr8)#txzgOH0ro^pl3N#_k3Gr| zv$twSsv&}p!KS`^BokSs(?q$8|DkbwD)yn&fa}Voe_Ze}a|1R*EC?WT-o1l|iK+)?(X670Y&e8n z$s(=DP6U*!Ex^rCGcP~cwYhM*9;isqNGrDe@Mf5HWeWc6w`YUW*w4RQG9&&Gwq-g> z1H%s!gOzy+mwdHRY)}dLf+QLqGfZYu!PY2qf&zS0@&s;lJ^|sH7Qs9|s>wOEL$FZJ z7NF3XtlYpFv-Y)?hG-$?wvC1-R(6nmvI!J_#q(N33YBqYaz3tgvykx=`a~H_xqIx? zaTdnhFXQf=*ev-$nkQ6%sL8%r#kredW&AW5SGxy*)pN?pVI91{Wz68KWEC^DaU0_J z>@S6o)83En?u>{CT|$aw`+l-ve+T(b$A0tXyP5)V-~>Pu4=|6c7Jue z+)5pA_|8Hw`r~UPOq;}*~QNjCoSG#Yz>0?I24pmZ_494KVP1JLxxg4@F z2vOadlW0YA63&I6XGDRtH@f0`hDX7O;l*o`N#pGC_3Wfju*C*evBoS<+Ixj>sEr#l zNC+ph=~^fskFgxt;-6mOu;NJg1{85^Bh4!Tx7@QrS+ZSOPW)pUiUX5dm;gML5=?^%$p!)PgjY93o* zb(@(@4?4pATX+1kK>(izsKC9L#i9BQSlRC5_e&UeuO7s@+6p~xf%c(`(nw7&SoS4ISw*&NLJ&0aNkYdU0FX`+WQQr`|<=GVE+4*bh9$IH)sCq$of}@GaUuT4KAGCpPDG0hf6OT?vb4mmupumrHE*4VsXvl zx^^_mBxe-8h*!@2{>EGNLvWX^L-jSn@Rtj3nGS@lNT-H4wCj;H$}Yzv3g0QA$H<-q zeEJMkZk8{?h(LdbJIlX4=^UweB9iQsB0Y^=wRi`;kF4PBg1sP7EJZUWH4n1^gMd-uegy{N`c9NU+`DVTK+poa(K3{iBu$@*tjXh@@~rx6x~y9cXDzJQ ze&UVLi$yqW5DdbFl=`~{?`xARtCS3R0){w4q5RzAkWdbj2#T!M^4XdP&b|7}8KmN`9?)yUf>*D!~W3EpN$aqr!j^E2=n_-`xKZ?xoMP1(8?f&|Oqu|GV7_~$@ zB2<{nCWv=<5dSI2rII3@VKXIOBV_?N_CAH%5V7m27$j5RV{p~LwLEEngg?>(p;O+3 ziEem1t7kcF%SB^^^jKC)TQZK!hQjMDSjQR#>{@_RpHj60U9eY@ z@G&0KX7L4?LW(_E5nOCS9E6gq8*%~JD|j^Lhn;bjGC&GUpg$knxq%eggJ$|PYb_}@ z7i*G9Ot$HCIIhELkSDLw|(7L4(E|xy-md&8Dct=d$S)g0T>U zQdTmI2ZCWw(qBwjHgsEwEzTll_6ZebV(I`6 z|6y%eUdC80TlK@tYc=xP@4jnm-hEcrZ3Ev}^z%q^{)V2Tzh36(+0=T`yp_OV6mww! zeV@(uekCTOFAh( z)uT=)Q1+}iL|a)TJx%CZ+&N6?y4=W6Hr#W-St!t3!AsoFmHGJ6r@*z{-}}u1DrVW# znQxB4Qhk3omb>nWN`qm4g9Fg_ZHv3DM~5FNdJp8^%{xs>RyFEh5q@VXYs}ubez51R zA{>|Eq&9`oH2~m1RPr=4P6o@Fcfsq~{mkfIOjk?R0BKC81qTs*yAcxmT`|g=M!i34 zCwHhWf4R$Qq{U^t#}?c=GQIubuqwOkkq-mEW|t%%GW}gtn}#LbGW-b@x7=h~&7sks z-x09hS+(a1#>H8^y0X{)(bt2vvU60Sq*~yc7`E#*uTJNTqASE`ued**r&R1E-=>Za zDRJFLbPP_TmoIqe3CEsALSNL&SBHEWJI#+`sP11)g{|APK!l7`5~HJCv$Sm!_45ar zjne38VbgOe8LBPs&mFt!oM1Bg@Rm^0C4}d%-O{S2rM{>JfS%zgY0mg(^K?E?L}FQ3 z?s*u1^!|y7K)hH)?r@O3hO7W`1^coTOq`dtOSC1D_3(}exqptB7+G=}oW?9a7qj_2tOTYu*mM&U7zcW+SW6HZ!C;n76^N%b;jnMxPB_hh=#?XZQFfZC-c&6d zcv8&A)|7qgej0>0N~kYPwNO09S2c{eTa+Pn?QmIUF2T#||D{WC@@TmSsD~P;i|8M^ z{_YO@A9a7VhK-qR0Osc?P`f>fq|H{9=9V-CT2E+T>!MDiRq?Z};U(yua?;zqg{t7V zY}MWncCeH=)=V&>FsP@Kq)r9%YB8DSx;I{%Sk7g2zArrYk#p(-od;53D$fFD~xby5L(-1S$#qee@Z*@4e^-D zcW(tgPSde3wQkqT`~*Tr!45{%b9B`6R1`33Rs02^+1-7d9OUDCwS0oskh~p1lw)K( zZl8CY$7&X#n2;#$h>kL5ZcjJ6EvH+_r5(7vppJ$N@F#MFX8PTBqOj<;n9!0=PbK^HU#qnExv&UZU`-|hnBDzn&Eeo~ zZ({BOtjhe|w0p~8p9iOBr%X6OQm-Wx3K zDzNKlXy4}A{e-PQ_TJ-Wf1_?JK%&vrmC4U9ZsSnWnM!FNl1ht+LsMz~a&$$bUU|S-b-93*T)p2)N+x6a!sT8xsz5wk zE^?Zboyd{agpGa{E4)0ASB{&9_k1N;0g{_i<|)RrQf;4WnSAT}$SMIp@93&&odE7s2!+BBwlj zJAxJ_rId5x5?WjKB)S*xj-DbJxwjkZck3R7C(I*IR1KCfBe}l;JZ^d)Vo_JWTTCvT zewuVqHJrqZ#1aMIBlO5fnNZK(30J1{?W(2K_R4syJ`BRz_RQ^F_uR-Eh{yEYi0(iS z=xgea9)@^JFhe=yVDf$MLGK-iK;ifdhR|(+9&C&Z`Ez@C)z?%;J`*HKrW zZ)#~&i;K0?FTj3T3-xq8_Jn%8+J8M=FM`OxGSrQ?){o$7YgB*>Wn(19KFu4lPW@4^ z{Q>{akD$Ww70Vt-5RhOJ5D;wOj0J4m{ns=FTzLVnPX}XbJ0=?^bIU6YTPJjN48bmM zZd&^p6dFbh=)o?w{$fT^dN3~Q@1@CH#f){%p)yGd=$TZ;UlvmVISDTyk6{8n9}O64 zZrRRC^MQOS62el@DDW6KqhvO>oB|kz;J2Gw#jr}j35MS;x7Oc!v+uWDXL-F(916z@ z4Tt9L(7a(;5WvknL>`)ZryN>pop`EbFEP2?Ku+5_2KPX0!K@G_3!9cqbUN)iWOm>g zq60a`LpjoP;jnoLF#UsU_Bx%d0q+vmgi+q~|z!2Yx~u$PMThtz=L) z%Q=HNhOmT-AL6;BCV}HK$*Wb}>34i7%<3GR0D70qsDUe2&-gadJdHH7I>mh(q{(p_ z%)r3YFIiU11SaDb$S^Wz+rwX@ida!1>bRkPxK$K*ftn!IY*DB3nsyIeHL8>6h5Ptv zwJQBKI~0<@vx$mVgft5C97)tspWWU#uhI?_K<^l1-mo=!S~1c$PvJ|uvV&oC8s+%C zm5AvLb&!yE2m1uaNsJ^Q+7R;u|BPc;%z%|gpO#r^f6G%NXj_68hOXH;NjTn=P=_w| zjgHf@Ruv|hZ~52ecKv1eQU4<}cnYSCya@_LiR1{=Z=1=b4ztu~X5}2YRPQ&+r}SP% z0;MOiW69P?R7-n#*E!1XvdcV&fhg56BZpF6dLzwk?D4ZfBhl~>Fd~G4TPVR(Mqt#* zfsm{SWM197VIVpX4{%nu>|cbzzeBC^VgOsAMtYfl7RrgKLa0^N+li^C{tiJ!(zzmV3+t9AcO@{KOsNUc&AA@y-RA$!>CY9FrecYo4J zZ6;wSlO<`cq6@U}AkuKkV$#LV>eKtUcr?+1`^VnHS9>M*ruRF`U%tK2c|ETa!GS^p zdBauMkt}WgiOS^LzLdzcv_Xe>owun2A+v%@A&G99HK&NRvj7h(>fn}?G`fPXI)gTX zHt*}3rrUPgHt)BYOvv9U9njl?e*14sT(o5Eq#B_P0QM`71Bdr#|L;*EcDsXu<|#O-N^pH1PM z_V%vwoc43RXVwefZeNm?)+;mBHuKYzIlGsg+f#k*P1B+3HAlBix@1&cS?c@tk?N1C zyK)Dk-+x{|<%vgd@#$CB+U4q=T-^FvuDa&&vgPyYp51&tuYO_i>1)&D>QZm7UcdL} zwcFPBDz|4pU)OJU@AJufwZHBEzBzq3{;P~-)tc`W_h06ptNDHR```3>i~5I;*6)w~ z^|#;t|DsaE1H4o0GGcGAw5hfzS4D{*HVbZ?_~CI;>ESN1m$9qc`p-vCo|JfVLuK{% z37kLA6)V3w;=FREaQZi2D}V1`t=(G>-TEJ#%G|2@%8Ku$OrC{uddts(r(S#|8~B$s zu}NhtXv9kVH}3d$$UeZEkx7IZG(671aCWA7#M+>x6Q=@OsHcEqZlG=l3^V}67#O0R zfrG)Rc_r~7l?AEAv7pu&x&f7H-VQ&2O78*3k-1^Ifpi1oF`yBUHa@s%kFK$!jXO9K zsN^D0qacdL=Rgs7-IJVO1RjY-*Z$@9ZSmJY?KvzA3<4wzM0?TG~i*j)YA@XeJN zU@P414CRWD+51@N&Udk1e;V`Qkjzqo~}d>1M~wWVfq^w-K|kHqa81aZVvi9DZ-o` z1u%1vCQ;C}qffjbv@a`xYDb%fK{o+?A_8H;jZ&xyDAN+?`q4*?5&E+$p!(6rkkO4m z?|&nVNU6u#8%H+)y`zgTz@`D&0Bqe}bhFU=jtH|%8z4^H!uRhT1v|@MZ<(AW*InWJm;NkDJ{f9sut#7EAyD literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/tensorflow_engine/TensorflowModelsManager.docx b/src/java/com/twitter/search/common/util/ml/tensorflow_engine/TensorflowModelsManager.docx new file mode 100644 index 0000000000000000000000000000000000000000..4953465d7e8ce2a13d293e6c681e2e298cb0105b GIT binary patch literal 38770 zcmagFV|ZQN*DoB~Zfx6j(xi=T+je%`*tX5aww=aSgC>pbvwPovKF>Mt`(@?IoNN3r z#@cIQ&#mwk90CIb1Ox_TDxFKCTB$fb859I$90~*k9oVWZW^d0y#LTy;(%6pArE zEB(QjaJ^oj+ozdQTTJ{+S2s(&kQBVsr*N}?@!X8-Kq8(*dRc0pU||TVt~JZ&(+npl z^M2g`uRdDHg=n5uV6w&&NDNhVtQs28a0rZ&z&K=BZQ&eOekYlOiqgp_)jplY!MK9k z+oYd6>64hhM9$j^Bc)olbtYVU0C!rr!KJF?H-pB6LFeyoQ*;eZ=BkeM>wU#Y9>ehV zC_jGM_AE+N6at-GZA)w|#>b0xn zz;!*az*vSpg+}`=nV<-@C*JVI`x(Bp@{_n=-|KSe=7G@o18KnvhO8cl!hcoKlk%(Z zBd~f~U?3pyz`y!VrZ&z@jDN1x2~%IdSy22h1SLi(O6{6e#fw(;#E)f*1bfpa&r9q8 zQYCBMU5etm8d!aVM;H6XW=olccq?=zHbLq}nu~$?%Y7Q#G*^us`WrAQu$=)U9x8jm znl>4ccVtMyrj!qyW@^NObX({{+B6O4b0RgO;`+3QY4E%*p;v7(w)8$N9u(^wnq#e<3#iWmBVk+X=vas5pI}|Lm zE3X)jgT&;O^*qRLp{6>~2D!}}`Ag?o_dg#pkdsZRdrh0UZUrg&Im{6LX8xXfq16<- z;tMl2r_Fis-w6u)2Cr-he9Y&72|@)X$i&`Q!O7minaSAR$@I@do}DluH^7V{@!%t| zAgdOBg90NVO$&Mw@kI(FV5RMzokP}UB8PKod%wt5E04~NaGP)B#zAnCtEmOtI3yv2 zC^Y^ez$5}*6Z3uD2y5ddM}n58Iyt!iqW5|Jn$n!tc)T}K5f=fjE(csXlSNl%DU6qF zu%3f`;oCGxcB@iJ{;{Yss_g1FHQ@y6b}~fb0}Ps90Re>JiDU^4sO2psgdka{W%;1t zDT9VG(|Qo|E0wT8PP;Y`Zn!mC@_WZy+AO&1&4}wRb?wi_*DQVj0xiVg-=BvJln%2@ zsq3Iv@z30zAQ6y3*@P9-mE2p^Sa%}MoShuEXWYPbD-l{k5s*?o<zQ@ca1u{%HlD?vd*X0_VgWNsngUUF`j}{~GVV>vFrkj(rNOiwy(_ z2+Duf#n8dwud=92*sU|8biU9*=(8TTe_Fq*s~gm!S2r<-wELlWL<^e*X;bMTpcH5Hcl?e_g~@G@DU zX=N)-ky$>X68x>!qSCW$Mu6k<{@saYN-`pnB$(kF8^nZXr6u)hm?X9=F&>LS*X5)I zgcZEE%U!+6FVsA9TWxIqc{1TsLVAbmd4$J7xS!a@MLWWP**i&x%ItIMbr9@`#?uC3 z<@$29Wkvtv_@Ha8)sIebp$ySE;eYdE&8UY)Qajo|a<$Q5SU+FZU~?a^uV49GRay1 zN8z)Z)*jJ=1@0RPED-+=*Z06Gq-pAtIZ=(NxFqC6{wgKQkK-M+?{=mB1 zJDD&6Keev5z`^OylX0e_ufEQW<+m;G$W_W0%;+k*ZrW}+fDqDuNS~A?`d~VZFZumI zTq312AuB08`=VPtK`iS>QDZn5h6i!8&98SC*NtrZ>>83hNv5;$9}NZ4WxZhWm)n7IE<@T%?Nf$Zw>+OpvZ z>>|C@W}lWcT{!?*xt!JLQtj^hH(sV|sueRigj1I3$q-xX)B1G74mIjI+I0`7@PQ>u z68|OU{r%K~PIrOXYjYhjUFf3PdiDB^K5Oc6)H)2W-fP(H?j{Z&ZX7PwmVxBynCq#d zNW|wHQnJ@{b`OHb@Y*EDSRX)S=9G0*nC)Kuuq(05JU&@D-1hOhhO()hAIlaYwdT*n zr4^%U*TE-KZ3~$0l4_@@3f=k00G>~A_?Xm@+S%Q45x3l=qA@|qqidX6r8zQ;zwOW8 zU6bFQPzK64$UAjUr7`Y@?<rY6eBr`KSjo%~RO3s;hrr?K5=m(h_7#W8 z#6nVN51d>iC30b(e>9uvWRADIs@~#lD~uSMX)-1UAe%^$QWj2MWyZ2hRhw#{{8&8H zJ#wcwVs}fSLJ06f72qcIOdAg3$inJpq2Q&t&SI;u(;}`ycqsnu%$u@FILCfMi~BXc z&J*Wxs#{x=2MjC4v z?4`@%(Ulds0!4D3$a@-=kb(?ldJKyj(H6B*Bkwm5H7b z6f9({j?hE$&8J1O&iN`X;7HV@8X8dv`ec|h$V}>KgAG4LbDv6-YB*3!qt#`qCIEcM zMmEJhp|f9dNjxZ0_sgZYOPcH|zPed&d%SwUW;e|FeKih??(>SlN~j>IwjD6$?z**B z9*5PlJX8p#-a4i;YdW}t)nC(nu=i@Sb48D_8MPlrwr5icYwT#WSkqBey{^Ie+)#Mj76lg& zjMb71**{eXud=gT6Y47uT+SL?Ph0FzCi=7$LJt!_(meXY_GkKa(!QS0Xb+z5-*U}eyBy4)_{2?LwaH7upvfI%eV1nghC{_% zC7Bv=Hnj?+a)hGRlkMB<%}Fn?+jwx*ckwYOj>8d`L zxhNYpHWmI^f>AWFqILkiG)xlnwu6)sZaOHTH8$p{uX2N?7A?!j zR7daSo$tLPRc+zdClvY@^&kUU30Ud7b0lw9-JiR6&wbUQq)oh#S=4Krcg-O5Az_(T{3&pi$_?tj!1Ja|XQTV@6MG3a$?9if zHRkRY^maL(+G`;kGIVj7To+d!p>-pf=pPALmvs=x1aU4FuKONXoZhyk!%E&rla-3l zyt+37qOZyL1V1ZO%;&e;o$;v!62Y}YmvvR^v7VmYqO!qNoX}H2KRkDh&cgRc>?mfg zLJ%WO>(Ni{_Bc%vY8GD2G8@uQ_GQQ9FG^h!#+vSz^syge9wMiw_w`jfIiYSv%<^%C zoy_RLA0^m#chU0C?j3KhKYUqy3_&fis4fhx%t{Wjq#iLj7sXD?3Z&F0@dsbnW%>rj z<+PyG0iFnj*d&Mu)76$L?W{SCWvBx#+}^w_OrJrE8#l;g(-B zj%Yt)GQ4qIRB1QoN7MUUSnyLy?7*hCdR-zI)Wei3dql7swu8kW+fxkBvLZpdm^%7RW#p^8fATCnaicKI*>ZH+}T9D7HhWt{=iHx)dI(eVwSXe z_fBg%Sml-)Y7ZooIDSc_yKsWM-6N0C5olD^FBM+4%apk~5Cc_04mtTyejin6#ErA) zJm%QChxtahJ#YtInUl#K<07d&wvV?fk=r+%6z3bTye!~+RR?locV#wv_qJ%A2*}kY zGCX%);ZNS{+zt<5vffnzsMCPbWCBE-uSSpiMzWp#I5LN7BP=LE_@y`jRA0*QFaYbx zq^55*36hdM-25NT8h|EkBSo!w4A~8iFW9nl)}1j1 zSBm<=9Fce;XU@bC(~C`N(l+699%~@X(&oQ)KxiDQ@WAplg!-8nPN#8CnDt_!jkoas zCTt4hc|pR;8)w+GBZ$a9ksaJXHdxMBsY9ns%3cK{a$8eLc<(&^hE(87ti&^?o;ww? zO3jt`)CI}Ng%|w0oedHfrs54fiX*L#XhI|voFGVcrjyb8 zv>BRQrepBv!HC=}`>`ymzqNhYQ9@e3REEv1Pp#W-&T5XH3;Q$qwttd?ESFk1=FZVR z$#jM$nu{`|j6IV=NL~4ZcIg;bZ|q{Nw2JzARcFXFfFI$y{(b>sQzsPMH8$)1#HYE{ zWm(Xv#gb0Tk96*<2ffnkt!j_`9pf9+U-drDm)}r%baQc(&&-uWf zUu%+0M!C4TQ^=jKj?w-C%suqKEcf+uFG(In&jv(N4-&MpT{Ra!)vx=0TWsp;>V#3= zU+Ap7)GgM$uF>6?Yv+(tYqO_|@k0JY6#*@h6)~P1aH80o~_|Y);Bt z)2(-*|DLSc`QxFn0#`8;z*P)Ba24~{WcBYg_|k4a(}Z4ZFJS+H(>IsOc7Ez!d1;FehpzEUAa@iPGRAy} zf+-rmIdbZ0Z-bPoh;=nFEN@*OXV(h9sO;R?_hgHzqc2IauW;YnCE@g`p;ijn1P!6^Z`7~wCZFM`BH0UJ<>*5U!CbTaYRf@mIL!e=;IHCUe zRG|Md4K09}$`;FctxWCEVB;(I+U;B|1kY2@52pXlb#x^bUnCO<66*Q-bFdU>4%D*~RZQRBa{W4OE&%#OF_~}Yn_L4uh}~`47iur1Q|C7w z_JB7WAHJuatpU3RS4i2snX%YcZN<<8y_x64?VCDz&cDwoJlA-fj2UzXg<`<}Tzc>#~c=H}P=fO8f*T}T^#v3m5!z@bM4Vb%?`Y7qSD?7<_2-zCwqd}d2(q!q+$m^EEQ zU4;apNKA0r;Fh4|m2=u9?ql(G669q5KDpf}}#9viNV!uc!N|m80C9zco(;r~a zk$h!X{sNOA*WOd*w~f#As5ag?g0WQ9$&y(Js%UeS+wxY9o2C^(|NgRR*~M3LF<7)3 zQOClzExn>)yO)Sk#0mZdMky1H0;2Co+>zuYu`rmvNmEHQZq0>;1jc*|qgNm1roV}4G*YC2?gjCqwyyLF+9WnkjOv`L*)q%^Ox#{ME53?&OdkktEtFYtZ~|{ zqZ?f>hgV!{k+_>s&DHnf3Di&1Pm5@&Bf0kroJ2q>RZ?78YqLl9wqF~%_KK}DzPQH1 zp<~DD$b`*1eUt#BcFOC;(B{jXYn!g!khjR|!1AP9zQu~ijrQa4d~WToNA0ggLHVPD z!?A+h$LMV#-IhCXq8Ph9##P~DotO)bc-)T{2Lv$&&lv+0`i*jetnHx<;`?)e+e(%@ z;?R0Gqu)rbly?~lnlyVziYX1J4Cnx$7$4_gQ+k8v&wp<-dsi#Nr zSThqpjk(};wpe7{2u-?z@^QBbdB_s-upJ=hZXN>RR)}rH?~gBJl1*!V^SXSl73uM za`(8nD_cw>jbVkIRy2BmLyXX>V(pgeFJ%V4y$@cN$RACxZn+SKcS?_EDt(#A+<8r? z;DV$PTe^^y<|SfnnD?|6N&b4a$+;P;gi>ob!R7nZr8=eh>IZnrHx zfd9kY5m2BSOvU7G*->bK+hO)PhhzQioiJ!}{QySpGaEo5ZH_XPt~`1ieNmHfp=Icf z9DY8L9#r1Qr209FZq;1(Ku3%$YXX*Xpl!strjxD>LEQ;eXY8;&A^O*s=KLBH*MVe= z?7>~$@StDhG5(1gQkl(y#-}H2nKypxmwBkmL6T{N>?hx#d7eEKhQHE}AWd&e!tCTb z`tNWtF5BzK^f-3xa*_GImXI&AUq~3&U`MlbS!^IOIYnQRnxniOb{%7!>>Y{`aVdT- zCc?~bN=G(ubV^m2zGco3gTDC7pKi)GI zI%eFTZ%3}*uZM@cI^G;T0T1uVA4_M?^S@qC9GDF|-&=*U@0ng_Mj*Z3L6BE7JzE7K z^tU@&Qb+Dco|NKWI1Dy|3(L-(oslGDCnzU!?^BVaqVU=~RnBvi+P((a&(KJGb11@@Z8O}WXG1>+Ns zAw1KBVUterRl32Z+bQcNhl@~&<{MVrNK}D=j0Joxt%<#=6fJ04gStrS*ln^%%UmqH z3bFJXuTIYFC2WCA~r2#f7{=t=(Jc^qI=JZKYl&F zYI7{xd7aQZJ5H~o9Q%6`-66REcTK%X{Wz=?r7S)2bipoGrAsOL4&vbJk2+ajiQ%z| zVct`rRVw;9ycD*}uMixbVvgmjXXO>xncoTXeN;801N^d2?brt66rFKMm+|XobPHtZ ziFTI>Xni0wMP6x=c$~owzhc@;%V*wunhxAJJ@D|BoCs=a$MQu>&S*?lOT*ve=597` z81PbuAVl+fvm_4A=w*wac;D|D{Foh>*=}CvSiiVPSk6!#NQV3N@%a9{gpXbI6*-HU zyJy9Ny-wATqYzF`g}lOomwTn6?o@3^{^}viMwYzxS6-+ho7ax`$kUKl;Xp?F{Q|l| z$a)kl_gs8g!O}5`+EA;VDt-SIXGe?C9Lv(s-J+RmANab2f$D^hm#39nm5!brzt-S_ z(${p#YAm@8oy8w6Kf}r?z8N2TJvp}V{!YKEOg&B}jco^jgp{#1_N{>6(-60xde~oB zWYsZl;e8vJP{-SFk7Cjfz1%Wf1uxwrKp$rOImu^ZuHslK$K65sboIJ`sm~y;aE`AF)TZgri?C?-U_w$VkfLXlcexpcpl5=0pxj2T@c{9i8S)5&~R!kIM zJGK`;ZnTiF#+^-F_meLiICkhUMx3~{P#IgvFRm+5?$AxaNSNLeAG*3~&g>IcA33)6 zrHjkCF%;+Mw+ZBYtdAawO4G%Bspb}~-z$SxtMao>DLUIwT5pqTcJ46fDB)U_)^gIZ z8e>VI7$ImOf0yKvW|R9e#Vx|RUj%PvW8RQnBv4v>pGCUryawrQ)w&xg8;3RK`QTYu zlW?k#FsPxyZnP%vdbCqrMb^51c!Hye0~gy%VvIbBQV;#J+2+D!g{_&1BK3eYs;`C~ zghG}M{#j!=rsxT}qdV`_Ldp906FC~Lr1V!Mw>A>*X?n?35{8rqQD+SS2HYD`{fOYgp2Q08K1w6 zs&SM%}3^!*M zj{G`s-3j+&YEqMT)b4XCG09yc6AdR(dWmDWFjr)zQUTpuI)p^Fcb& z6|$Mp_WbUdPVFc~&g`jq{-n3h2KWrzw<5qn72M^v9%^ab!`r5S;$UI6D|vo$c$+Pq z+Vy~o_MUMWg8wyr{{!riqLMvnV`UXmZ7f-}Iwvj%%q`Q__B{UUle%J?PENb?Qu#YuNRQ~_Zi`+{-WeP~ZL@=&?6w9(vdDgVh~zcUm?@q4m*PB!P~pbotTS`=$EDB6x_|_H=@i9F2Gf z{_L>erMPny)G>=0r55_*8bU(5#JGR(N@M0aWGASt8+M#TSv39E(J35@y;Z%P7aog* zT(*~}O$E%Nuq_Sk9h~FnE_6BPTTWM-WjBv)OjnpLSRWcF>7C>OG_QHb80<@^Mjkz3 ztbDF|`g|_q-f*Je%b%QlC4JKOR{C>z6@eIYc-EzY;9cLjep|N2F2LhZtw zSurc%x(`^-C~Q&Okr`og18YzI$?LyG3BH`J*$E9vbvbSb+x3fk1l|LD4WEfPau!b$ zh|RJy2;UhlWEhA}<=j+zjHoISacoQeZA+4}fXkcPvBVjO6L5r-$7L?4O|P>R6o~F| zP#3)AlC=-ak-e)*6TPUtiKeLip+EXWF61ht&Ja(-@-d<^5M~Nf%)Tc4c&cS{$Y0sJ z4hl|ZhcTlor9I$e%|+#h&`Iw~)N9Ujf{Uy~ zx~9OI(yF)VT^QSXBg-ahWgLR3-@)>cM&B`%^7^bq*tBRK01} zt0#y#Q&C{5O;y9a><1JyAUiEp%sNh+9^UtYIwJ%2I7$Fnf;jqS*-n%TZvOBJpZf z=_*UL2{qxfTzIJ+I1CSR+fU6SeyHzH7iQ$3M*YOLe1q(|u&wZ!f|wDS8o3YP&MO&& zubw$IB2|2GuAlO;NwhU1dLv#~B^JfPXP5E|`|YRJ?X&Z(>J{ zpyLN#yLNQDXDv2@=`k{yJiE2$bP2$ctdLmsqUx=7^j5)^eR72Rf;}QDZCMxW+&kbx z|MN5in0Jw1x68h zG>@F;q<2+VqQ?D;2ZH>cJaYTe*r2-K9`pC}&n(W^kH(1V@eAY&k@KrCFozp#9=#PV6g0v&TpXilUVZSB5@t|2o=j*-z{ zY=n{Oo}*oyUpYFV1522(+;eut0QC$-F9Et5fGvm7sN*4!BmXy>VZ{Gn<8l4}WTPJS z2;jP+T8?ixvM8;!(t;r0wn#p){Ox>)2|9Mfe$~bs;osSiF)tzfs5u2pq8(^y18(K# zkUIzr0(G}}!E6Ru3FM%{%x!dq#7i}sK(+nvT|mM!*fK+Y1#SgYg@Kog5tAa#OG|AC z@^$Goxe{XIrv~En@H0+_=ZX>u;p=F%@|f$x8IbU<*t}+u5Niq+Y63dclNHVS=vH{6DivJqnR?;SqE?`YSLhv+e&< zJmv_0p_*JydnTfsRQX*3tXL?)9-q|C8VANp(+iH|4?Bu&k=x7`w|k3AXSg)zowfEx z1ch>4Ex4jg!Khe9P`c>Nlf2;`g!2cgMEp>!&(Dc*6zXE_e!RLcHkD zdX8jmNW(DH0##_%d;U@ZG6X0*{$t>zP=jhe zAyM^z!RhCZ+EB5c27)fyP-!;$3=BaRR@Gzw3OHIIoU7QZTIvIGg{1kGj|`}>3~lH@a2?_BuMvG<;_GQDIi8+4Ni z%TVEk2R#%3gz$TsC}$Q_;%b)iyyI*MN*Km$Kq3fF96B|qkubfa9?JK$nmU|_NjK64 zMwB={O;YbessGSOR+*utShAci{m1vJz#rdzp&BxdzGo&Zm-ud+_<#GB7z08AFD!Mw zEI$InhFn616ik}Y)0@sB$C`(yIb|>YL*=35AC<~PjX;$H(0^1yfPPOi8fp9G!+dBW zhHVQMAO-6B0zMkh_yHakKwwPF5T+rcu7Mz7#uu-N4KsRoKk4Rs_HV>>_ReyM67_Yf zY7Lo#8o;9&ptPqb#9M3b;65Ofpg1R|w_edevzP40>`n$o(grz~$Pp`IQ^Qn;^e~Ik zMFp&o+sbWQ8E;Y)F5Bqs6qC!{%U8Skd|43YBr{t4mb7L%NkBc5YP*EUMkS~)8B!} z8s>ab>TNo$>FE$u3~&H4haCBcM~C4HGcmzyf(D%=^@ob}d&Vp=oO>Mtdnqr}tY zx#!6|<_9czDbFl;|5lh!a7f@PoP|F1w?eo7t?)YQCUh!(yNc6GF<<1Y?32@&Q<)C* z^vb=%o7@!JG{M(E?G?adzgj}D>E+z>?^ zX`N6MOScXBd8X&FrsKP#m6DQr8B?Jn`;>5ZOs_~r{WC)-pZEuRxfoBcWR3U zuq~TrSSh{UwrKQyArx%@-E@t{T@pPW`aZM)!|*@UU;m;;15!hO{WJTXY};BwOfmS2 z+RbDFNX^IjH}ww+^hl)t2lZ9=AZ%xNuKt!!+vhF=*puptJ~X@e9D4cy_unKMft}6d z9j8L*kz^iW>PTPf1|2j=O?K@D5;%=ZXX*xpyY~Cg{>-wAKec!-ApC>;-gOj6t_=Mb zc?%0WdL-ljgM7|Fdgm!7b$i3%UuDY$!F-b?E$fha9{q1Ql)_!VvcJ!#l?B~OHQjYn<1&`-82yZYqH zz4F{J6KN=1Et5 zSc$8D2`qa@eD2HINgg68H#KoN6*!4xm*V2rw8$Q_5w?=W;WHE=y~>EsW%3t$^|G5)c+*W8(6~WEz@MI^qL& zldN=?+`GhH%F3O>U~bZ0j33J$V4EW)*qB z#QHSnQ0BEKd9-1`Vc@)1OiAoG6Zu;0=(wU`=LVoiDt}$AX`Gn zv3P;AjveqYd=OFpFi=B?R$}QSVx}@GZjtIclhAmuNn;o~<}Mq~9O#_Z)TVGO1$$LQ zCWnq#vn#O97wX**Bc=ueej;biG407ZXjd8VKf@%%XaM^>co^s|BoM9h51NNaHMCaf z)gLq_hkK~0VK()ZiM2uavX+W(*sZpg^&X&GP_dVyB)^aDjaYVnFEyqcBKN_g(4cgJ z#Dn+3qp%Qnf?$(}WB-J_gJh!S*#E_>=kJNI3wht7n{zaU)vvcisVCf}%F)?-Hj*?1 ze+iHY#*UDE3>>qW&WA-}`z=!a4x%J%YX#~=tV;}>W_W-yN}(~0!k@tEDV)O18Fqr) z;Pk`GFl9pDkeD}-PyAb4w8$TEIKh{qSJtCrMms#e>xfte2pa*Q#E^e3(DlFzR5JjS zUdrt)uraTD2eSBVj9?g^IhLfeR}X{vT2k;un<*u=sT}}%qqcYn<{s*W#nkIwhOS3_ z?w&afZ7jFa0ZiUm1u%JMFwmm`Hmwl)hol@YM3n~y+T^uEKfhrnX)wt9Uxir&Di|4LFkB2+-LnZl`T z&S_%4pdBFt{Bju9L8Z=kq59$;?;PY;)~uWRSKki4s}7_~KB_c?qYd9?;cryT)MWzl zcXe?9{>8$6+{>^Sx^>4=tBo9oF0AJ1mcIMWUbq$b>#z&dZL;ptXwAPqVipiuq-`D%soQ}><-+hRwC)Sy?J?(w2K3x z&m}6caMp>WyfrrJNfnOX{jXXUfj_`*;3>P0y!+*)Cucw$zE0LgN)jK28e>mndOKe= zZjs(t_lP9$-Y84Z>^SZg2dw?!p|ck;EpN#qJzNGoSP5l$_8;|!oalL%hrU+TBnU1<{m6u^ya=-dLftP^%4YZrn0@SdlUFM#6 z>_;1e8JSZC)}H&!lnOQ>)g&-N?BB$9e^X&CDcQpVlK?(BlRkq5pGuHVMty^hgV8us z>!mR&*mI(2`0^?~lDv7O&S9sYrhmg=w!V6F1f{%NN`7b#(n@i-EJ22HBlbO#>*lQ& zOa9dM{KmTLjlEw`Na7Ds_e`x@b>{TzIG&I831T-e2mVix`{kz&qzfUeLIENoh$EGu zA-CAIgqTZmIxae^=ew%=_rXt1v-F+O7q73qyGgy8|Fcvxxn94Ou-U3xMqk&2q=f&G zKL_Y?-P01*p6fT?OIzQ0v#=b+MjGpl!7k?|NJXme0V223HWn};Xn3De@=S(PWR*yb zAA;qY9Ju=_p}%n+TuLoyML-M=##H~qVk)~^;yxCY)X!eY}+b(%Dr|Y^km-(vgcZC&E`&Q zt!(ErO&}bAfa$Tx2_u8iWBWC)G?1vjD2LC18V_9Ma(?+mHvQUb|5fFZt!XDT2mJ01 zjP@}fHxmv}A}2IXkao*EnBY_C%DLSYNK_G9iTO%z?2wwZW;73UHXLHAVQtCI@3P>!n{?v6iZtOx>|5uc^xSZ%pLw` zG5@c*aVvZ>8rGy9-$MfCH_zU+YX?|SR!AXx&&O-vQ5ag4rvmKrJ$3((uB*KCemzz^ zx|yGdOHh0oJD&!Hc%TJ|SgUo$M1pjdBTZ=>!_v_+zv%>;#Z@y4mx`YjeiV0qK`?LUHZ3A~8`dFq%DNy8yJ0poVoPPJ3GO-flY(XKkY$`IF+TV~8Z;AS| z8^pc~UzH@S!ZXKI%0P1K@z=M5jP#ADqT^qn<6{f<#q4nRT`~4MF4yBv972HfU13ct zI{~q}Rs``fl z?V!0q0%tJ)9S?Zxkx+DVUTiLyKF9sDIU??@Bvx5tg| zL0@WY&c6c*G=I3;YTpqF+Hp9<{y)QMz(@8U-)^yx@hSbmaCtQ;OZU@-QoCKUeRFd@b?1Oe>yJP{j3f&d8^Yep9%N zlyl zXgABgoQ?821=l%A>^m@$tYzRD2FFQtvSkglBGi#+L1+-F-6(V?n|pqO=>iUfx(_JuO@hO z{1jDW2$NIonRETB2cbvzWi=XIqPgkNa0$N})P?<*s!0enO5k{zJXWC4s2HAXIXNB} ze(}`F*g7;RR~4n939Yf}VZ%UwkBejWA#P-f_KTx*L&rduad~1KmznuHYj#z@@c8ST z539L7yNPU=Z9OYfTD19ZiIpmC3N^}^@rXBD&nkqi!xW8AtaKB1HRCeENJ+^D&+}$b zO`7G{wi+OG=s3w5>C;s<7}u2gcL#-=%^>(22=9cK;oAxEBUSK18brY8s`D`;sW20PgS;eEtx zIH0eLGX@ZOn8AIcq?|yPeaDjqe`Wzq<-Zd`r&(|`CFK!H_z;FQSDaIqIS8PY?o#`H z{*#IsNQD#ihl)9J$Y|&L43{y`CTp4}Gm)2#(P+Esvz~NLGA5tcjmD==5%%w_CTc0C z&nfBtI@EL%u5Qx^yhg=(jfN!Nbrqi})Jj`lfBUQ_Da99#Naggy~uxM{!WC|>#J#xyar=YhotF@?&EArAP-jhxJM7yey z>2+1r3USuR_>OOXcrr-?E2tdl%s9jj>3>!fOvu6KJ~;gisv4Nt<}V^uReV)8=P?_g zcwQ_oDCqye=%uL%4n?U}lE^Wup~?J^#nZtC1!PQ2hP)Yya+c#gRSQoJud6>6rxe7D z)DQVlJ27onpr0+6SAJEp-6Y3fJi?_}o!3%sKVx(6(!cSeLt`N-*_kUzgg-?0Xt_gC zd|Kx~eWaZ-I2bZsQyevHI8W^E$R=}$_!)Cjh4a0SlNCO#pJ)!RX~GU80=5DVr*y_C z*qwGz8Ux3aj7d;}G08(GRSVFeNFvYqE{F0^S?TTw_qECc~gaN{kj zY=!)yQYBp4UOZY}O9edg-zq|SZwTZn71e62T&n|*C zXZ%=L7C0bbs>qBJH@!fCiA$2T+oMCmOZ$@ly9Rw(6wYgCCMg?en(Xp9|i z5?C4(r80DyvNJ3zWSYmqClf)e?h85Mkmp=YvLa^ScjIOQq=!qYh4G@`$dT?gF3fl{ zEAUmCKp>@m0Ac`MOj!Q@54Qu%U4dCjV20>C)b(r1#t9T*@}O((rI;W)EJ z%t-+=F{E9p@DkqTMaWnchVkWIq$D29hlrd6QWVaW6tXE>^b8mmyEzYZ@G*%?0=eym z%}T%+B?*VfPrnzC>Y7VheiV?(Rpjurd`0wu{NLyH4Lk$qc{o5ooNJ*#aR2+$Pk}!s%bl6n)V+SWJMXBi zMZUPmy$2rc-|AWy;Ahas>gegJB5cmwJe+^GN6t)j&y>$qL!NNg=UN|epEls;e(hO4 zJ2Y%trx-qryt|0pd@FBDMbx)uiVVH^aD@tzzJ9RswcNjt;jEo-b-JE6d#PWc^0O17 z>RADJdcSd6-nf3(_tg=oz4t4zeM&V0`1yS_>-xD{?XOSx7WF(awgp@O{5%EqJImYe zJqk-dcs`6KoD)ZKgEK>0QV+cRTD#oW51gF_GVjhU@4U{qR+kbI<&Pw3iMVg-^z}n? z*78Evhn9c()gWGPyzgIqW||q{tF?3F-oc4)44+`~up_a*@uAYZ^i4j^usH&#ov!!T zbJ^D}FR58ozqP(QS<-1jiLdcSE8fq!S#jO$T3%(yThku?)=8hSvB5ntUi?&XyL+Se`s8lc{C2;AU-OX6dCSQ7^yX3hdf$8ctLNc@ zY0c)Dcu_vsTSa-J9qrlbp~YDh*UI3^v{P!K!QfG`bg~qMWnzi%{i?FjVGPasxAYsG zR_%{y_GCOt*yF9{hhd`ottNC*bQ-?bI+w>9_m?VJnYKrQ>XBs~a1# zg@wNO3G}7-%8`+ycfWscJ@wqp9@{>>XC$0>UL-^=?!05;@4pxK2ad0}db(#xLVmfx z%jLsMs65I^)2z|T>wU3*E?Q@SZFRnc5Wi6C>>g!Te08iJ~fb7q1LiVF(Y%0KjOle9ct(I zGF;Z9hm$XUN9J0WKj5XqO~6YSfR~u>@A%wQao#$fw!~mrJ1g!dM}OT}idCm&+$Xnc zqpkEGoNeD7(d~h=7aXTNUEbSH{+Jc?Nqwu@uu{0!&>yvhvJj@Plnq@oQ?U-$H5=)1X#KbSC=`{0N*Pk1lA}y~6o}!q@LT zf%q;o&!nK;hP#FHR@&CtyV*@NHgFZ%AZu8k-c@-k*0mXG2OXOLr3V{bXf1lJ%nt_Q7Bq0%*IKkjdAH3X@Hj@S=4|mp#0GAkQ7>}@DlKORq4X&7NOAzw-Mdn{Hesv6i8Wuo7{_X z7BQw9OSEAp!{cp|3vwpSzxd>g4-nJ`~u;SnzjPQfiP_Zg7@_UfU*9A>)(`qfgIB! zSp%9u1Dcut-K@*n>eD8JaQz3)8VCpM%m>bYHuw+CRU&oZa~eeJfM&>mW*^ev&FxCX zpW*Lst|NZ??-A~4kiArj$F>1^xX*dg^3gVq-hmFD(4r_$PEzS4Y{T8^)IQk_K8Sm1 z_~0rAKYR8RQO{Q0sZaK`3dUG&h6-RHN69sC%tw3_YqwMWJ9Y#NJa%7>~=Gs($~mPgR-|~y7sNR>&Tx+!w2)vqffibw=bsEao z6*yU0VxBLA&RXK8#snw7;FiCgBQS6Blmy&}5vPg%46HTgO|!3Z;9=(tnZ-GE#+e0~ zuY@S6L@M&w@aAH|FIqJ>FD1ZJ@pUdk>f7n?UAjOFY8QB}gxdZ&6RraF-Xd`$1l|Xg zp+xMQgVY_{LF{b7>oe~kAh0DQVuCUC)kPg{uULda_BZ@q@RQs^3x>Jys~|{4zaSGl zs&}$tMDb|heITsj*ppmLcnM6KpzWnH-!!jux6&0$Ad2)|bwO*d+H@*%}X7h78{OK3EfN6@&!9R z4y_e}_5B=6a>Tc*4%tEH&1Mg`r>4~mz36<~UO}sbm}(v}t86@x_>G)$%qLY{+t-&3k~WS(Na&&r=+_2L69@-EC*O71X-*r) z@=NU8aP6$iS<}rYtPC8X6cL$az8K-yjd6S#kot`zAmG<@2W2~qv<*Ty4<+v~8d0gp z2zlo$;mhY_(zJkyZM1QtxRRyqJIFKJDp%WkF^h9k_+#WvqCKy5Cn2LF&K_ezzw>5d z@rR2WjmIXuGiDDo%E?@{iv~}obNH2&Cj3CJZOxZ;2hC?8nY9Jyqoy_@54-3_bei?k zw8Tt~{7?Hs(+xUWz*@Z3hsq<{Jmtv}3uUpm;7D$`9lPO1MEiEiy=LxKtsVjeH%Z9W zb#mf*cVo^MCrk0kq2u4LOthJGfPZjMc^B@)_sm|^mD_SIDfuK=nB->CL5bkLoSrKl!8c@$46Ob3AXg^<#W>pEyUo$0lz_3Mn;vvs4w^Dv_ z8&jFw5M1VTuxjVU=(+i2*gl&GE^mF8kv7_t^tz2UE&iT?cypp%f zF!u2xIhu=T`kfcfMK(KVW+=AfvquhLHtPn0W4bg#71ov%Uyp^3Oo0}Rv zyY+NBhSCQs$B5mb$i$7rPq^a_#`CLRv~*WdDvsm}_wdS7eih=eS_UlM7Okj9zPURa z=I02?qN~oQ=O(n)nvLLBns|(GD{iDGd`?fnyVE$IE}`^1o*pP{Q;&?$IGJ{txix!L zMh53}INC$5ZK)e^G?=*yaGq^$E!ls4!rC$FkSk=%n=s<8H#^qmny(wCpDTtO+2F5y z)4!@(iwj++KRQB&-o94E^^up>K1av@(d@{=Y4c|L%lnAA!^&y6fp5Y>FXrSV|z)$Ph|22ZbdDBtdqev^g>_SS!j%8fCl z;zL}$+V0-syANb)>GC`azn0JHb+?r>e{SbqOBgmz5TGCQU?m1x~3(SE`H$dJknkkiK0n#wEL0|OQ40Orhag`!{z zQryZV>_ix#vA3o)(o>{(deY`w_a|+oY---#GtobtRHqd%1Jt-VC?UvQx~=ND74bHsq(^J zG=t}19Xr?7nuz1#5isF8m4|C-HS8Ws$vroPQtzMTsfzxmC*K@?p3mGp(JfnKem>S- z&%Wt4*^GBEd5b-6?C}tTxlCE_pfwU&TKm;Z^(3d{L04&LSKum5KgxG-;Ho(0F@}~$btWdlL@)2zmQIt>ctlsY?6K#{eiUe-H+hBNwcluY%&IHtjBn)`Mtu>dcbhLXA8 z;$DgAep-QidHg&V=C3^jp|h8QnF-3D2D+ym7ls~VE5)8gjc!zfYWEq&1#?x;Ae)~a z9aGS}UIqqUeMX-)r9m>rB9t4taB!|XEju6pBhA2h?ZgROw8W%d|KR0cpB!n_Vq>8D zuYMs666MXgb{g5j!*yEFm%FQ5{`d_B_%R{;kW@?$3umbA)9JFieF1}c$V~x1w6*wF z>oyBFj|O}ig8%+K0=v#U%wlT!k9OA%&Puo`@V2;heqD0f&fUfsN%$@*r?aa~dY9Am zDP{1k1Mo}8m-@iYUXUc7sV~4ZeR3O3(~;1i7;g=$=NIB~nvit~UN)Lc8FVz4TQ1E@ zXwB}|2Zi%D0-NIR-=lEx;rEx-Tu&(oTWxg*#Lj%)PoB7@-ym7R$IC zdO1R1%36lzH&<18V8PC%O+7vbxG6^O=V70Z&)NT6q;^}$?L3D&&|sKpWw_8_v$5V> zmlIURu19GF9W5eV#n!2^gzafRVy%n-+@4TdO)Wv?AhM^u+5rP#hYn`FpBpG_L%2W_`|JL^ z2Z}#2S*4S`=+?R_7l2zh`R2L-bEMNuJ7)j71CRa%#A24r`)cZN*MpIaT4zx!d)irV zySJMlyqe|QAE^m8)_2?K?%Zv``|$tIPKG7)CiBOt9cvRi8Um=d+s>yZ_GK9PbO&pq#Y_Z=9QH-& z9M5xUo{VR$VLCM$BI?>t_6-OR5a)252KDli)!bEK>OJki5Gw-&tEpNy#~fj8RY_H) zfSycXNhyAq%qj!#rzCJl=M% zXTSVglk?-XORI}yL%JJV;O44NQ{oNCuNqT^_{PZ$Zn((Q#>mB^^U`us*F}Lf>gvEOXN<@Ku{V$glDc-24ympxl$@{+B9xzJHvVX8fo3xqjpS9FJYbCoUnBa0|VNWngw;%R!*UoVF;xIVC*PZ19W6**M&TEuPb*0}e zP}Eo_x|!eT0LHs0NS6zT_WGf+e1c5YqcUGe?gJVZ@*0)9G^MSfBD1xfImd z(^yhnr~Mm^@*4v&8kLh}c}~jZNj?WQCbXAbDQ#@ePDTlB*C-;m zjBJ&&9+jhBCQO#YSeHXvOY;UcM!>GY9RL+-Ic$}y9hK|CV{k$Kx?cbaOYqJ}}q8d!ob;ClunxS3| z^V`;Xp7rZwYXHTq@?m4u#c00vE!eZUP`Wl&>UP#KV8H|am31tyX(k4x_WF_CJ2mTY zBKt3G^{0m62l42c9svgBiRrFlAqdvx;@0I}jqXI+0E*7$*U&qTdA`;hTRe9;pRC6v ztl{jtrZ}e>8X)eOwGPnW2FR2 znr28ghqIr&(pkDaRH?tFz_0)Qo!IZmwt{a2jW{!q2>m_nOgZ#)_|Spo%X^&G(92%0 zRVF7+8Jt#k2>5=vNPK_9kxNe}|5MYV$bA=3_wtGU+uB>7?i!* z#=C&{t@wr<1EHuSLyQE$P)LQ5h=#NRVsZlFPz;}rT415*@F+r3G#(L&s=j}&DlGYK z8q}3m^Y1q;h~#}XpQZh-DEjDIE* z^q(OSf&UfqWXTv1((&|9NUr;UxoYFTL#9C>67dIh!Ao~#D2(J2g4ml;nxkT@P~L?j z3WO>q(F^HJq71-V=|T_->0A-}!Y{QZI8X@z>6kzSWVs%T%5wnJmK0i@oBa3+#-D|j zGD{Iy4YF$)00m_CTcCnlX!9xns^kwiqMh4+R7}-i4?r+slzA6dPJz=6bvr;Y2P31ZI}a8E%I`&A)CG1Vqq?zuO`R zM!b&L4Mhm@SrAN%A$3yHOgR$9!$*jU(R(2uIT*T*K2}63%cWTztOr7H{hDJsU(BAXu+7n47yIg%=~KclZkQa2Qm>dR0T=zRrg zIt&sJMv6CKQ3lsE%>=nYXUYiRX!y^rnO6q`YQ7^_#3j0P5d`D?3Pu(HwS6`BAThOv z{sMM|NjK9n_JU@rt>+ZVLXS#>$WGAYY=iaRd?WF{5NX&--G?ViIXei8a;tG2`g^3vUXf7 zZFMXiO)TwgVk3e6l2AoAo0r<&T=*B-$;8;G$PC}&2E$HY!saN48i|5uvE!9!n-iO# z2wn#@_iF~jP`jm;sML=HzlP_h50~%vWoq5;IP6bWzI2ze&y?ar)^@k$+2uoYY7M82 zDOVcE>6NO~kngRHs{45&ymuhIYk5epbPUy1jj?o2VF<3bIWxglL`K0ych6c6%nq)e zj<5O+ZnO;Ix9H*slYY{=r*QYUaYfSd{M8$gw3zuShM?8SsP)c+2e}iYrzEonL0W%A zogBM-9S37WH!M^|K*u&q?6oM$jTXA1Ri$fx440VBY|L=vu{>% z3aK42oXND>!&!X+l?JjSCyDh?mH1ko#9Ey%aVGB3rn_|(tJZt|F=CrXY}?zF0WZ{-dkEH&)vP?WpQQE* z_;$ZaG+((1@~TNv0QY=@sYOx~Gyx zEGCJbhPI0O8C`rq3|J+c&I1=n30KdRZz5*hv+y@}THZU=!pUj!+$YU~PE+XyhPUR0 z(Yfv{U<{Kwtu6c4dJg4ysk)yTKqwSh{L;9eOKgthl$-oC6WU?zFn5`T3|}?3`Z07O zC7{1D)S?$4ju9j+H@`RnDWpf)+(xhnG28c%1{vJ}fhGr-K%iidrr36MKx<*3~= z1sNfZ6QtbP`=jf7eJSaKo*vUm`pV*KVsvo52rTCKwP%`p26220DUl#$9u(F9D+g0f zC(dL*MSD5BtP*yb#tl=5`2*v*xhIsd3lFu%-^7SsiZDfhrPluG1SpS-aO)7)G{|T_ zND^`U7#M;HZW@+?L4sw6TJ~HnfjrOzAR^}v#@`~2`2|@%L;zU*?;^tcglZ+*wf+*o zm<2rzOWlTNw35qoj5vPkPx(R1iOv((ONpEWr=1vXdJM-FkYjx5;x8af0R|TdHtI++ zaiaVI;PVk5f`u?e*MBijB&@Jw@SgMqWQ;H+cpD`L6Z0=IcK=T?CMqnyP3uc3lasXs z6v&u=tE+P#tK!vgUZR(%XLe;$o2P@ekE?57{^ET0(r2QqhyPw7l}Jsuw&Gm7elf#Y z?WS7pA>DfW`Z~JJmwJX!YhWvGZJNyRzHC)Llo2K~ICCR=K6@ zcDgw4`u?^aKK?_f{!0`{<{lNe=WczRvdC)l|0JE;=8uKZY}ikl)s}YVd+l@02ErnzC0x+EHklAkLP75}1-o~bOM%1q zlx_2fVjufggt+_o3pNiV62G6)wPj zMp_m@z2ZtQZ`Ut!P6~hPP|P|2=y$|J}1(f`Zo1KUREB z`mo|&;a?EavMhA>nHw zZ_w3;sBejNQWCH0`-^(y%K;A}_`WmA`yM z`3?T;vkSTH?`@zMg;5j-jJL65c*A`uC}u<>u^Ok4S{y+;pOF}|JRE=i-ry+(ZxNd2 zY}B}#6XfuvD1kh0v0QM~R}9BmL#+6@x}@WLU-;~RtClj>Wp{4c`8ozzL~{;;xfs>n zn`>CZ3F9DEM02rg=}>!I!5X#E7;}=*0M!rFY7rXRO4PcV6TJ`AGH=ztQTwst^N#V^DdsqAIn}F0k zV0Kw8Xf=c$oOn3CZH2xVIH8(dIEXMn43aw4LQwqIY9D2%?`25XOdpEsfJ*Umtr}Ew z6^39G+a0C|7Z^G^s|)T`3j0&g0)X}4ApO*l%{i$0IO9;a2^RRv2#aONuZ9~j>n{w3 zStU*c%C>||TqdxxiL{ibMk+#C^#maR!NbvX?)2xz(ae=381zaK;ko*-0wi>#=SQqU zS;rAT`>^1l>PZ%C=GYu5%u~MtOcPX4`IdHqp-}%VK{Jg4XcgKhO(Duqvm9GO%Ul;t^c}u<^Jk^WZ zfA8-pp(|(mNprjEKBycY=K!si+aeTB_;ebx>@4j5ViZtrn;XLm|FD|^JL8!aYrdM% zIQ0ffS;b$Gk|oL}ruG@7j=>ERnil6H*{f4R;bc@|A{T@MWMEN(q;3kgQC&F%0&(?F zAw``TpT+bb_zXzobtAmVu*5$b?-0O0kte|k$?p&sEA}6U7`T*($w$K~F}h(&<5oK3 zgh|@rbIpflDSd}UwO5GmP=XzaGn20-7e5=6)V!)oH&S$8I!cSBcc#QjUOA96DIXV zR+1miK>0>eMInZ2Nb5s&JZT75lGKfW`AsQFKPyB;q2C1~pqBFitk#q( z;FSKhK(h*9LG&lI4-3XyLt>u@0QU~wEOJGPb5)V=Pn&BEp@J}6|E5$;{!o$AB0T*A zmGlqa9qTaBA#hcvNQC)H>{!j#6q9QtG482(qX_0ifG9d{W>AGOcs`&^jZz! zhYiL4%tHmm{+0iv`T}kXVl%oD1y?9HhJDO3-s*IiPl9UQCf3&FDIoKr6tvb~{xsaL z_a+3+a6nazBg$svCJ9~yw9-J{7A8!9Xuh2PL?PJ{{8ys50rgay=DNBrXpX7b6D)tv zk&v?bXVNrhWPkagHSH)Hf-TK}b(=vPWcVl$=)#Ll+a3bg$0sjv7fdtgGwYp_AZ#AlP!q2?>oxj`-Zq$c@o=O#k5&ouGA-K7hWMx8JP& zrBE(I#8L)REP^V*){>%Vs8Y`s+0HdGJl}>2q|v9`C2Z)x-0NgPwI^6)c#^bh1Imwy z+~v@bqAm;)yDg|Xy7*6`SwE9CIY7oo_j-`n2vR-;P6Cmn$tbBX%l8ELEJYTszJdeH znlLfdpJlEx$T4oGn#a5zwktqYQ8&nVc| zW;w49Imda(+zsmC1wJXb24=xwjtfrtttwC(3OQ8ov4gzkQnNOx7;3uoi|2yN=dSIM zCl^Z7nAV4;>_jI|w^xX}qH`&$Iufbcz}7M^fEAb9GbbP(Sjwt#Q72UgjH$v*&n!@` z^f{COac%YJ_+00^X&+IFfg60YygUwKEB%}uLu3*8s4pe6?daIRa|f_Q-z zgLsn|JLh%~BKTjn6#6i)Ap7tUJ+oMR9({qY0x96vqFxDcON)565jKs3`0Au8_I;S@7s5UKlj51@Qp_ z@%4*I#L8NwhwuS~)>9kAvU2muB?V}DXH zpwLIqZG@y+r*X9pZdJgAL3{*nI$R=1oTX_Sv-p{;xptWYG609>nMI zeiUTm@cMY?N9(ElM?s9hSd$*jqAvqq!yiE(F}D$DV@m;-K_o&vU0!%fB#3*`0QBt_ zGC2RlW7|ae@Iq>kVjCd~C&269NgV>Un;)f&#++2Wcg~Q5s1{hH! zZoh$lYH{~|^o{(tlIcf5z@(RW7RTfzKro-+OE;7qYUIZduJfk{-nV=t-H+bjG@tyC za|MZQ1L%!ygaUnl966X*MEL#M7+GgkEB0-KF4k=XqcM5_VAGPvlWF}*tuOr1a%->Y z9!IZp6z7^u8lh~$u8B&7114IlmvdUGp>MCJzgmO#TlFMdfl+)DY0Lzdc6~A|>ls-= z%&n_MQFAnSmk9xrA2AsOjyY~^2;(H)@5?%8&6z0mgiFJr+e%zvOOsjz7+_!&j9&_$ z%;2^d?(O8W_h^Tcw-YTqD4e;@HM*VQ4-K6N1Z|IZ1-yUYr zQ7H>3g;l|^%$kNU;^V@M6I6G|ZkF1b&ubPBY>d|G5BAMevh+c!l7%cZnmZ(iQ=13+WS*yB6t(O(C` zxAs(z{tDh=`LSe*_gir={pNoL`yx}wc{1H&8Zc|&KRc!0j?+=!(McbBqs z3>o{t^nLkL=|N@>hAz|dirG~Nv`v;DrUY9oE6h!{1}tU`&9Tz8`a(#xBDwU?{^e zZj+MgnBpRl*aaX4Ti8s`edTZ(4rxdYlD6-`IUap733;jt@fp@8rS*iR(Hop&{5zHy z$M`*LUeT<(DkNV!t`zAf$`xZ?ZHFHn5^MSs1siM=`gE5Evs$)_QA0}F$>1_qF?0TP zYK1ZsyW@INtL`_3<@OGY_A`o&THVm|*p+2@q6!grPR&H@cIx^tSw2*~>PxS;__G%i zc-#vxI5LEDQ}iPDRbD+PJU;pE5Hn(|Ip1pb{0uCeM|1nh)dcECEMeK$(@P?0B%LYY z%XI~fAvRPtwk9DlbCa1(rOt3++8FC_yT<3j`%}J}zWlo1;*-(Z`z?e(LgxnMPLcAq z<4ypR@6j$rN&oP&XJ>m&$M9b6Zuz2&A{>1@q9<(YSJQ=|6w~AXMNu5)uEVZe@sNb* zOp=0>Xk3u`C|MbKKxRya9HQROT3L|RTU{?xeS56^DJgv#-8I-0o@N7H4P&N<*OPZO zM{fpVKP!1ipdwv%LLDf`YMvx%>;P$!c{w+A3~-VbS&anS>x13P%WKn2w)-k?2tOje z)ssOZ=95{rn>E%_*U|qrl9t6GP?weBlj~9{0`LQ(-cWyr(i-f0fxSI$OE-kVXrO} zC(&7HN!e*}a~L#=G87VUUpXl?P15WXD43&&;k2w=66IxJ;@|DcTm2Ud<32~ujpj-=(IOK6^{jXnIyky$*B{IV!f8OGl%zAS;)y4<=UWBgVQY# z3veQAI|`0TXjiDDNjUVBs}erZU_a3^+-D`44I8yWuIMxkpMR$jx%P= z++f$^N37Zu8qWNpeqcNGCdA#k$a*Ax8DSA7HT0Zd{t1fD!=_u9 zcDuJ^_Si#|L&Y)jQHr>`bCEeVeeKyx{4%*}Jh00k@Hc-5xNO$$#t}jD{7ryt4}udF zbJ&(8-3>%oR*Iz1-*_l`Hg!gjppc+YLPS8u(eG}@Mj=K#us&N=Kt@zoGe*ekNo+i3 zwneE`%}yfP7=5?ShH%If|0csHEuW+$HTRLvaA1FE3T=a=9r86ojw1zC@ ze072xmgvmxwJmXMdK!p1A)EUJpB@)*uC)k}3Yw!);7QKB`);B>qjjD^74}U{Hl4zg zzY7g^l-1lu_DH6M3p4MX!x&oFLt#xweg(96N@yZa<|sc-JiQD16S@!ky+6AI`BYUp zCq(QMkDl=~#1EFH&*g@ZAHNjlVTOCDj_;TmC-^f%QcJ(wMaasF3>;cE+7V|Mjk28B zMFhYQzV{cFFm9v7}xx93erY0PKL)7ccmQme_ zXE=_Et(rF=N~9C*Xc|*P6GJ48tZK0JwQ8uNO6({OrJ;6cDst89Rge0lyPF8^NXT4m zcPW#LPFCAnxM4=6MQxV{wiokVv)Wr2Fbx8Nrj|HKF-k;vjp;26IGRIG;X>oaado*v z(Xed>K z@7vilp?P9FU}$Phh%`0yGzwh9zGpN{m%UXasW|^8l*gUsta#r_Jf;cs(m~`{M zNHNh|Uwg);zr6ofP1syM5$#S;AfN;2|EQp7Z|LA)YGwRqomIW^n%yrBl#Y!;ou(}# z=muM<9m*q;sH3&2eRfNFjMS>Ce8z-G&C5U+#`Cm1E2ouXbpO>}nH_YKO@r@=X8 z!Nu$G!qEFn0|`-5Q?cDlFBV$7=&~>*1cfkA>hN-TVg77+JKN!9)uA;@26jax+uL(* zs#ngB4W?}D3T}>q0rN30=B$1!X8$a6YhON)zZ;^eE+=xPiwrKnbhjr~o#ov`Un#_0mJdS~q9 ztamfa?m1$JL>%*Z)B?3s)d|8y2t-~b#WRh~PI11L25WEJ@n6gGGmrz^Z9 z1X%jnY&aQC@*ZipG`P6}^KYS$Rf)Z|iJUC|QQGOex-5HPiQ9 <$*#Ez!QvW)Fu!!>B-K> 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/tensorflow_engine/TensorflowModelsManager.java b/src/java/com/twitter/search/common/util/ml/tensorflow_engine/TensorflowModelsManager.java deleted file mode 100644 index 3028a3395..000000000 --- a/src/java/com/twitter/search/common/util/ml/tensorflow_engine/TensorflowModelsManager.java +++ /dev/null @@ -1,189 +0,0 @@ -package com.twitter.search.common.util.ml.tensorflow_engine; - -import java.io.IOException; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.function.Supplier; - -import com.google.common.base.Preconditions; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.tensorflow.SavedModelBundle; -import org.tensorflow.Session; - -import com.twitter.ml.api.FeatureUtil; -import com.twitter.search.common.features.thrift.ThriftSearchFeatureSchema; -import com.twitter.search.common.features.thrift.ThriftSearchFeatureSchemaEntry; -import com.twitter.search.common.file.AbstractFile; -import com.twitter.search.common.schema.DynamicSchema; -import com.twitter.search.common.util.ml.models_manager.BaseModelsManager; -import com.twitter.tfcompute_java.TFModelRunner; -import com.twitter.tfcompute_java.TFSessionInit; -import com.twitter.twml.runtime.lib.TwmlLoader; -import com.twitter.twml.runtime.models.ModelLocator; -import com.twitter.twml.runtime.models.ModelLocator$; -import com.twitter.util.Await; - -/** - * TensorflowModelsManager manages the lifecyle of TF models. - */ -public class TensorflowModelsManager extends BaseModelsManager { - - private static final Logger LOG = LoggerFactory.getLogger(TensorflowModelsManager.class); - - private static final String[] TF_TAGS = new String[] {"serve"}; - - private volatile Map featureSchemaIdToMlApiId = new HashMap(); - - static { - TwmlLoader.load(); - } - - public static final TensorflowModelsManager NO_OP_MANAGER = - createNoOp("no_op_manager"); - - public TensorflowModelsManager( - Supplier> activeModelsSupplier, - boolean shouldUnloadInactiveModels, - String statsPrefix - ) { - this( - activeModelsSupplier, - shouldUnloadInactiveModels, - statsPrefix, - () -> true, - () -> true, - null - ); - } - - public TensorflowModelsManager( - Supplier> activeModelsSupplier, - boolean shouldUnloadInactiveModels, - String statsPrefix, - Supplier serveModels, - Supplier loadModels, - DynamicSchema dynamicSchema - ) { - super( - activeModelsSupplier, - shouldUnloadInactiveModels, - statsPrefix, - serveModels, - loadModels - ); - if (dynamicSchema != null) { - updateFeatureSchemaIdToMlIdMap(dynamicSchema.getSearchFeatureSchema()); - } - } - - /** - * The ML API feature ids for tensorflow scoring are hashes of their feature names. This hashing - * could be expensive to do for every search request. Instead, allow the map from schema feature - * id to ML API id to be updated whenever the schema is reloaded. - */ - public void updateFeatureSchemaIdToMlIdMap(ThriftSearchFeatureSchema schema) { - HashMap newFeatureSchemaIdToMlApiId = new HashMap(); - Map featureEntries = schema.getEntries(); - for (Map.Entry entry : featureEntries.entrySet()) { - long mlApiFeatureId = FeatureUtil.featureIdForName(entry.getValue().getFeatureName()); - newFeatureSchemaIdToMlApiId.put(entry.getKey(), mlApiFeatureId); - } - - featureSchemaIdToMlApiId = newFeatureSchemaIdToMlApiId; - } - - public Map getFeatureSchemaIdToMlApiId() { - return featureSchemaIdToMlApiId; - } - - /** - * If the manager is not enabled, it won't fetch TF models. - */ - public boolean isEnabled() { - return true; - } - - /** - * Load an individual model and make it available for inference. - */ - public TFModelRunner readModelFromDirectory( - AbstractFile modelDir) throws IOException { - - ModelLocator modelLocator = - ModelLocator$.MODULE$.apply( - modelDir.toString(), - modelDir.toURI() - ); - - try { - Await.result(modelLocator.ensureLocalPresent(true)); - } catch (Exception e) { - LOG.error("Couldn't find model " + modelDir.toString(), e); - throw new IOException("Couldn't find model " + modelDir.toString()); - } - - Session session = SavedModelBundle.load(modelLocator.localPath(), TF_TAGS).session(); - - return new TFModelRunner(session); - } - - - /** - * Initialize Tensorflow intra and inter op thread pools. - * See `ConfigProto.[intra|inter]_op_parallelism_threads` documentation for more information: - * https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/protobuf/config.proto - * Initialization should happen only once. - * Default values for Tensorflow are: - * intraOpParallelismThreads = 0 which means that TF will pick an appropriate default. - * interOpParallelismThreads = 0 which means that TF will pick an appropriate default. - * operation_timeout_in_ms = 0 which means that no timeout will be applied. - */ - public static void initTensorflowThreadPools( - int intraOpParallelismThreads, - int interOpParallelismThreads) { - new TFSessionInit(intraOpParallelismThreads, interOpParallelismThreads, 0); - } - - /** - * Creates a no-op instance. It can be used for tests or when the models are disabled. - */ - public static TensorflowModelsManager createNoOp(String statsPrefix) { - return new TensorflowModelsManager(Collections::emptyMap, false, statsPrefix) { - @Override - public void run() { } - - @Override - public boolean isEnabled() { - return false; - } - - @Override - public void updateFeatureSchemaIdToMlIdMap(ThriftSearchFeatureSchema schema) { } - }; - } - - /** - * Creates an instance that loads the models based on a ConfigSupplier. - */ - public static TensorflowModelsManager createUsingConfigFile( - AbstractFile configFile, - boolean shouldUnloadInactiveModels, - String statsPrefix, - Supplier serveModels, - Supplier loadModels, - DynamicSchema dynamicSchema) { - Preconditions.checkArgument( - configFile.canRead(), "Config file is not readable: %s", configFile.getPath()); - return new TensorflowModelsManager( - new ConfigSupplier(configFile), - shouldUnloadInactiveModels, - statsPrefix, - serveModels, - loadModels, - dynamicSchema - ); - } -} diff --git a/src/java/com/twitter/search/core/earlybird/BUILD b/src/java/com/twitter/search/core/earlybird/BUILD deleted file mode 100644 index a8432dfe0..000000000 --- a/src/java/com/twitter/search/core/earlybird/BUILD +++ /dev/null @@ -1,38 +0,0 @@ -java_library( - sources = ["**/*.java"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/com/google/inject:guice", - "3rdparty/jvm/it/unimi/dsi:fastutil", - "3rdparty/jvm/org/apache/hadoop:hadoop-client-default", - "3rdparty/jvm/org/apache/lucene:lucene-analyzers-common", - "3rdparty/jvm/org/apache/lucene:lucene-analyzers-smartcn", - "3rdparty/jvm/org/apache/lucene:lucene-core", - "3rdparty/jvm/org/apache/lucene:lucene-facet", - "3rdparty/jvm/org/apache/lucene:lucene-queries", - "3rdparty/jvm/org/apache/thrift:libthrift", - "3rdparty/jvm/org/apache/zookeeper:zookeeper-client", - "3rdparty/jvm/org/slf4j:slf4j-api", - "src/java/com/twitter/common/base", - "src/java/com/twitter/common/collections", - "src/java/com/twitter/search/common/encoding/docvalues", - "src/java/com/twitter/search/common/encoding/features", - "src/java/com/twitter/search/common/facets", - "src/java/com/twitter/search/common/hashtable", - "src/java/com/twitter/search/common/metrics", - "src/java/com/twitter/search/common/relevance/features", - "src/java/com/twitter/search/common/schema", - "src/java/com/twitter/search/common/schema/base", - "src/java/com/twitter/search/common/schema/earlybird", - "src/java/com/twitter/search/common/search", - "src/java/com/twitter/search/common/util:log_format_util", - "src/java/com/twitter/search/common/util/analysis", - "src/java/com/twitter/search/common/util/hash", - "src/java/com/twitter/search/common/util/io:flushable", - "src/thrift/com/twitter/search/common:constants-java", - "src/thrift/com/twitter/search/common:facets-java", - "src/thrift/com/twitter/search/common:schema-java", - ], -) diff --git a/src/java/com/twitter/search/core/earlybird/BUILD.docx b/src/java/com/twitter/search/core/earlybird/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..c3065e4d260c99b0f4eec57b98aa776c6b54e693 GIT binary patch literal 37079 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/README.md b/src/java/com/twitter/search/core/earlybird/README.md deleted file mode 100644 index 337d327fb..000000000 --- a/src/java/com/twitter/search/core/earlybird/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# Search Index (Earlybird) core classes - -> **TL;DR** Earlybird (Search Index) find tweets from people you follow, rank them, and serve tweets to Home. - -## What is Earlybird (Search Index) - -[Earlybird](http://notes.stephenholiday.com/Earlybird.pdf) is a **real-time search system** based on [Apache Lucene](https://lucene.apache.org/) to support the high volume of queries and content updates. The major use cases are Relevance Search (specifically, Text search) and Timeline In-network Tweet retrieval (or UserID based search). It is designed to enable the efficient indexing and querying of billions of tweets, and to provide low-latency search results, even with heavy query loads. - -## Directory Structure -The project consists of several packages and files, which can be summarized as follows: - - -* `facets/`: This subdirectory contains classes responsible for facet counting and processing. Some key classes include EarlybirdFacets, EarlybirdFacetsFactory, FacetAccumulator, and FacetCountAggregator. The classes handle facet counting, facet iterators, facet label providers, and facet response rewriting. -* `index/`: This directory contains the indexing and search infra files, with several subdirectories for specific components. - * `column/`: This subdirectory contains classes related to column-stride field indexes, including ColumnStrideByteIndex, ColumnStrideIntIndex, ColumnStrideLongIndex, and various optimized versions of these indexes. These classes deal with managing and updating doc values. - * `extensions/`: This subdirectory contains classes for index extensions, including EarlybirdIndexExtensionsData, EarlybirdIndexExtensionsFactory, and EarlybirdRealtimeIndexExtensionsData. - * `inverted/`: This subdirectory focuses on the inverted index and its components, such as InMemoryFields, IndexOptimizer, InvertedIndex, and InvertedRealtimeIndex. It also contains classes for managing and processing posting lists and term dictionaries, like EarlybirdPostingsEnum, FSTTermDictionary, and MPHTermDictionary. - * `util/`: This subdirectory contains utility classes for managing search iterators and filters, such as AllDocsIterator, RangeDISI, RangeFilterDISI, and SearchSortUtils. The system appears to be designed to handle search indexing and facet counting efficiently. Key components include an inverted index, various types of posting lists, and term dictionaries. Facet counting and processing is handled by specialized classes within the facets subdirectory. The overall structure indicates a well-organized and modular search indexing system that can be maintained and extended as needed. - -## Related Services -* The Earlybirds main classes. See `src/java/com/twitter/search/earlybird/` diff --git a/src/java/com/twitter/search/core/earlybird/facets/AbstractFacetCountingArray.docx b/src/java/com/twitter/search/core/earlybird/facets/AbstractFacetCountingArray.docx new file mode 100644 index 0000000000000000000000000000000000000000..62e1bbc96ca43840586a4cef6e5c057619c627d0 GIT binary patch literal 39557 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

    TTi!SotJH6yRhAr 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/facets/AbstractFacetCountingArray.java b/src/java/com/twitter/search/core/earlybird/facets/AbstractFacetCountingArray.java deleted file mode 100644 index c587c5470..000000000 --- a/src/java/com/twitter/search/core/earlybird/facets/AbstractFacetCountingArray.java +++ /dev/null @@ -1,231 +0,0 @@ -package com.twitter.search.core.earlybird.facets; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import com.google.common.base.Preconditions; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.index.DocIDToTweetIDMapper; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; -import com.twitter.search.core.earlybird.index.inverted.IntBlockPool; - -/** - * AbstractFacetCountingArray implements a lookup from a doc ID to an unordered list of facets. - * A facet is a pair of (term ID, field ID), which could represent, - * for example ("http://twitter.com", "links"). - * - * Internally, we have two data structures: A map from doc ID to an int and a pool of ints. We refer - * to the values contained in these structures as packed values. A packed value can either be a - * pointer to a location in the pool, an encoded facet or a sentinel value. Pointers always have - * their high bit set to 1. - * - * If a document has just one facet, we will store the encoded facet in the map, and nothing in the - * pool. Otherwise, the map will contain a pointer into the int pool. - * - * The int pool is encoded in a block-allocated linked list. - * See {@link AbstractFacetCountingArray#collectForDocId} for details on how to traverse the list. - */ -public abstract class AbstractFacetCountingArray implements Flushable { - private static final Logger LOG = LoggerFactory.getLogger(AbstractFacetCountingArray.class); - - private static final FacetCountIterator EMPTY_ITERATOR = new FacetCountIterator() { - @Override - public void collect(int docID) { - // noop - } - }; - - public static final AbstractFacetCountingArray EMPTY_ARRAY = new AbstractFacetCountingArray() { - @Override - public final FacetCountIterator getIterator(EarlybirdIndexSegmentAtomicReader reader, - FacetCountState countState, - FacetCountIteratorFactory iteratorFactory) { - return EMPTY_ITERATOR; - } - - @Override - public final int getFacet(int docID) { - return UNASSIGNED; - } - - @Override - public final void setFacet(int docID, int facetID) { - } - - @Override - public final AbstractFacetCountingArray rewriteAndMapIDs( - Map termIDMapper, - DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) { - return this; - } - - @Override - public Handler getFlushHandler() { - return null; - } - }; - - protected class ArrayFacetCountIterator extends FacetCountIterator { - @Override - public void collect(int docID) { - collectForDocId(docID, this); - } - } - - private static final int NUM_BITS_TERM_ID = 27; - private static final int TERM_ID_MASK = (1 << NUM_BITS_TERM_ID) - 1; - - private static final int NUM_BITS_FIELD_ID = 4; - private static final int FIELD_ID_MASK = (1 << NUM_BITS_FIELD_ID) - 1; - - private static final int HIGHEST_ORDER_BIT = Integer.MIN_VALUE; // 1L << 31 - private static final int HIGHEST_ORDER_BIT_INVERSE_MASK = HIGHEST_ORDER_BIT - 1; - - protected static final int UNASSIGNED = Integer.MAX_VALUE; - - protected static final int decodeTermID(int facetID) { - if (facetID != UNASSIGNED) { - int termID = facetID & TERM_ID_MASK; - return termID; - } - - return EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND; - } - - protected static final int decodeFieldID(int facetID) { - return (facetID >>> NUM_BITS_TERM_ID) & FIELD_ID_MASK; - } - - protected static final int encodeFacetID(int fieldID, int termID) { - return ((fieldID & FIELD_ID_MASK) << NUM_BITS_TERM_ID) | (termID & TERM_ID_MASK); - } - - protected static final int decodePointer(int value) { - return value & HIGHEST_ORDER_BIT_INVERSE_MASK; - } - - protected static final int encodePointer(int value) { - return value | HIGHEST_ORDER_BIT; - } - - protected static final boolean isPointer(int value) { - return (value & HIGHEST_ORDER_BIT) != 0; - } - - private final IntBlockPool facetsPool; - - protected AbstractFacetCountingArray() { - facetsPool = new IntBlockPool("facets"); - } - - protected AbstractFacetCountingArray(IntBlockPool facetsPool) { - this.facetsPool = facetsPool; - } - - /** - * Returns an iterator to iterate all docs/facets stored in this FacetCountingArray. - */ - public FacetCountIterator getIterator( - EarlybirdIndexSegmentAtomicReader reader, - FacetCountState countState, - FacetCountIteratorFactory iteratorFactory) { - Preconditions.checkNotNull(countState); - Preconditions.checkNotNull(reader); - - List iterators = new ArrayList<>(); - for (Schema.FieldInfo fieldInfo : countState.getSchema().getCsfFacetFields()) { - if (countState.isCountField(fieldInfo)) { - // Rather than rely on the normal facet counting array, we read from a column stride - // field using a custom implementation of FacetCountIterator. - // This optimization is due to two factors: - // 1) for the from_user_id_csf facet, every document has a from user id, - // but many documents contain no other facets. - // 2) we require from_user_id and shared_status_id to be in a column stride field - // for other uses. - try { - iterators.add(iteratorFactory.getFacetCountIterator(reader, fieldInfo)); - } catch (IOException e) { - String facetName = fieldInfo.getFieldType().getFacetName(); - LOG.error("Failed to construct iterator for " + facetName + " facet", e); - } - } - } - if (iterators.size() == 0) { - return new ArrayFacetCountIterator(); - } - if (iterators.size() < countState.getNumFieldsToCount()) { - iterators.add(new ArrayFacetCountIterator()); - } - return new CompositeFacetCountIterator(iterators); - } - - /** - * Collects facets of the document with the provided docID. - * See {@link FacetCountingArrayWriter#addFacet} for details on the format of the int pool. - */ - public void collectForDocId(int docID, FacetTermCollector collector) { - int firstValue = getFacet(docID); - if (firstValue == UNASSIGNED) { - return; // no facet - } - if (!isPointer(firstValue)) { - // highest order bit not set, only one facet for this document. - collector.collect(docID, decodeTermID(firstValue), decodeFieldID(firstValue)); - return; - } - - // multiple facets, traverse the linked list to find all of the facets for this document. - int pointer = decodePointer(firstValue); - while (true) { - int packedValue = facetsPool.get(pointer); - // UNASSIGNED is a sentinel value indicating that we have reached the end of the linked list. - if (packedValue == UNASSIGNED) { - return; - } - - if (isPointer(packedValue)) { - // If the packedValue is a pointer, we need to skip over some ints to reach the facets for - // this document. - pointer = decodePointer(packedValue); - } else { - // If the packedValue is not a pointer, it is an encoded facet, and we can simply decrement - // the pointer to collect the next value. - collector.collect(docID, decodeTermID(packedValue), decodeFieldID(packedValue)); - pointer--; - } - } - } - - /** - * This method can return one of three values for each given doc ID: - * - UNASSIGNED, if the document has no facets - * - If the highest-order bit is not set, then the (negated) returned value is the single facet - * for this document. - * - If the highest-order bit is set, then the document has multiple facets, and the returned - * values is a pointer into facetsPool. - */ - protected abstract int getFacet(int docID); - - protected abstract void setFacet(int docID, int facetID); - - /** - * Called during segment optimization to map term ids that have changed as a - * result of the optimization. - */ - public abstract AbstractFacetCountingArray rewriteAndMapIDs( - Map termIDMapper, - DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) throws IOException; - - IntBlockPool getFacetsPool() { - return facetsPool; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/CSFFacetCountIterator.docx b/src/java/com/twitter/search/core/earlybird/facets/CSFFacetCountIterator.docx new file mode 100644 index 0000000000000000000000000000000000000000..d9c1adc3b1708a8e9dcd2f83119f8eae9a2907cf GIT binary patch literal 37513 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 z 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 R2$ZV?84`inL#PkL0{|twDRTe- literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/facets/CSFFacetCountIterator.java b/src/java/com/twitter/search/core/earlybird/facets/CSFFacetCountIterator.java deleted file mode 100644 index efe8cb7be..000000000 --- a/src/java/com/twitter/search/core/earlybird/facets/CSFFacetCountIterator.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.twitter.search.core.earlybird.facets; - -import java.io.IOException; - -import com.google.common.base.Preconditions; - -import org.apache.lucene.index.NumericDocValues; - -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; - -/** - * An iterator that looks up the termID from the appropriate CSF - */ -public class CSFFacetCountIterator extends FacetCountIterator { - private final int fieldID; - private final NumericDocValues numericDocValues; - - /** - * Creates a new iterator for the given facet csf field. - */ - public CSFFacetCountIterator( - EarlybirdIndexSegmentAtomicReader reader, - Schema.FieldInfo facetFieldInfo) throws IOException { - FacetIDMap.FacetField facetField = reader.getFacetIDMap().getFacetField(facetFieldInfo); - Preconditions.checkNotNull(facetField); - this.fieldID = facetField.getFacetId(); - numericDocValues = reader.getNumericDocValues(facetFieldInfo.getName()); - Preconditions.checkNotNull(numericDocValues); - } - - @Override - public void collect(int internalDocID) throws IOException { - if (numericDocValues.advanceExact(internalDocID)) { - long termID = numericDocValues.longValue(); - if (shouldCollect(internalDocID, termID)) { - collect(internalDocID, termID, fieldID); - } - } - } - - /** - * Subclasses should override if they need to restrict the docs or termIDs - * that they collect on. For example, these may need to override if - * 1) Not all docs set this field, so we should not collect on - * the default value of 0 - * 2) The same CSF field means different things (in particular, shared_status_id means - * retweet OR reply parent id) so we need to do some other check to determine if we should - * collect - * - * @return whether we should collect on this doc/termID - */ - protected boolean shouldCollect(int internalDocID, long termID) throws IOException { - return true; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/CompositeFacetCountIterator.docx b/src/java/com/twitter/search/core/earlybird/facets/CompositeFacetCountIterator.docx new file mode 100644 index 0000000000000000000000000000000000000000..8eeee95d5269fb5393cf1141d992b06f1f50f1bc GIT binary patch literal 37171 zcmagEWmsIvwm*z(a1HM6?hb+A?ruRF2@Z`1cMI0=A1Kg?!E8( zW%E$A)=$>jT~)n%E6GAaVS<5y!GTSta%)wp6vicigMp2~fPrCvMs>vj_Mgq|KO3rf zIG8)@Gr8N@HYUj{u8N?3IeWoMW)>px5=X%*+i{?AV2Hz$s7}A((OzOck%M@+o8Svm zpHT{dVT#L0z4IYjtrP6>Zlcl^mpIYa&(O>#gDm#WU(aJYwcy^9j3bp~Y~Thq^Hh#q_t%_FN+Z)I9ih#i=WCeJxw_OBqlWka=UUfE`g$izb;r8Z z-a=&eAw&S`_aAmWOm5?v>_;$lrIFXFIveQL!9Pv_HbGQ1vxksbns4^}ImfFS^q)F( zw4>F0td0Vu@jUOuku#2a0%)o0N%a$9(%3p;D!qg5`tR;&3u7pR9+pB4?&fCY?IzUy zMo_+Rstebuw2Q_hkFxV}zd0U>llk1_1nDmGN+|erNEiyz_=^m9-CrO-?Hfa{;NHLU zuey_d?kw7KSq;cDm19Vz)qP1KEI{jyGk)@VL@X|UFComXmiL4yZvdwB zk1l#p$%@>Ay0-xV28IawYv^Qd>&(pb`&t=4`4N&8)$dG5a)h$jzDZr8VA(+8P`*H@ z=j+62kv&klXr-%DSwde6yO-$TY}eFcAw3^|iN44-P}4+vJ|K6oS8J2@qM_Yz4K5kJ z!=Kb$Z6`?EHZ9_Y99hJi>W<4ogG7ja17lE^w*GWRv`S3Ekj_pTxg@AG0qq*`GmWN; z592HV1|TKZ#2H>(+4{rQE&N`%>9e$vpU6?H1Da~8f*C6gPXV%wBgVD3%)xYYS!`W3#P+BaYa=FcZzG6$qw`Z9?J%S;+dA+5BrQ1n#VTyzO`v*W~7Ift^kcy(`fs|L~QA&^mWx zGo)#7d@ylH+?l^wIHESz>#7O%+EbP!9dBh)P~Tb42+KDn+@6VybBJ%U?7^;%VB*kx2G1X@C0r6NM#^$Je8kHWv|r zWuTShf`=s!7|Tr=K+P_d!v{KT+d{eGRp}`19B$~c;;l9zt$wa)do;ad^#u~@AO-#U zFleN*pJ7f@1H(pe;`#vn4h5WDL^)N(twn=vEBwUS$#HYq6;i+aU317gn+b6-H=9$6wA(9XJvzdrX};{UTR*Q={I z$DqF0LV`- zs8-e;pwB}n7Vj74n=t-*{-=hqr$tc<*an49>R96sc_T`W>j;h2;lul@lLutZP-W1i zSQ>+9`i_RvW0mtTjPRdRHI=HyyvXWJCN79z9h?>Er$4VCi)=J_6}2lkcz=5~7m@ts zT6;fmo}|>cwDDD$MKQb_@}>Gyxkt&gAm@kOnSE1Km{DI9qc zd{(2*^NCMT)`(u8Z|cl`qUBiH>EZ~?l8YP@F*sb#zPlel_<>_uuq6Wgb|d9bo_R{M z3WgKja9mHKT34zWdKq;R+pQ%!oWsir`65meIr^PE$=VpudyST@<-g__+j3i9${&j? zdy5S9$S=0^j4eU8A`YuV7@N?Pis4&32Dtjg&GRmy@)A-DJpA&<(|%?RMxuxn!EzfK zh0oNCkYw$6P5H+irV3KQsv&BMWWpyCVtjg2+EdMg1Mx*2eFfbptZYs^G*`;)U|=iw z9)KD;(MAwg>4U4z4)NV5ycbla3p>_>tp^uD#3MHt9$-s7JW;29COytzultz^aUJq2hP8eo(luQ@e8WI2-4PN0~o? zrRCXjVan*KXml9AZOD$s3lvPoFX?C$_!-AxdbodfKgF^#>}r>%)OM^9D>rV&ki?2i=xl-dC7IFV zqg^Zl%*xRKv|Mqn0(!6eSDVoOgc2MqO2{-v8^<ztDH2ev&Tjr(SoMR1W^qcQ6A9+D#BYvy-A&2*R$1k+lclh`PI7|_Su}U^>0N-MMHfO z=eQMroRo@p$iY5|N4!3;m}k*~A9J+{`S4maVFG8@tnXY+zn5!{WSa@|>1Z zZ8*Gm+TI;|4W{6~AG1FU!1#gMqQ^5#T9W~xOUAebj=kr}M1qVy)>4l{)Q2Ua)F){D z{T$x(V;&hN9>IfzCI>3tSK#wrvg7V-Z*<~mpQXZxQAOd83c+WTzP1BwXRn#s4C~;O zqgp$be2A>oj^$cu!$mV; z@M9fe{HhUKsqASPdKE1^bEd^Lj@OYLYN4OOZr#*J>jMyK*1q(a#C5NDNt=jNl1fU0dgA-aT69 z=@lmV=H3T5c+gQAg$T?GH_*4Ad~;1%@u$I_0gFkP%iA6{l1 z=iQ?M!xv`jfz^i36_(hGzB}vQOFuI+G9+#Moa8X=5m z((zef16qk%K237B>X*q)+WhH%t~U05_~>k)ZD<^{;t+tgp+8oeKMzrVUvvIEP$h~g z2D0FOIeSIu3r@f+vX6NGE03z3PO7@lJ6LKZ{#JZ%Q+M5rL43!5_m0aao7!%6@>X?W zgCCc^;bQ<#Bm@fPY_O6!x_~80%5hJw1r;3A*iSo|~ zwXKu`bqExVx%MKhSXEI4hf=EXU+TDZAhacB;=dY)WM_T$Y$v;ztZKRJtgzV;(uT+SdM0teQvv?77c7ME zu25t#!45B>mW}eb=7(d!zVol>{v_0P*v=~@8v90TvOFu-Gu2SM4}ssA|5@v(a%}zx zW-u@Vb!ae@f7ROgvxlv@^B?QFzJ9`vRGm+EcV52X^AEe&Ah6*nd$4#{0%NbvtlBen zdG^^~-@f5|ia9a#r6d(0R##Ei_*fQS$KRKQtwg)0nVFzw{_>LT+hKbKG$f8re>q*} z?(atGYSlf{cq*Pey=n&lUvRzoANEh(bxyOAS6}R3PSb@KhXJn-F>en~i)Ycr!p+CK z`u7j(7wswY?N0}@KX2MYLUxZlUg`v1?cUlpf|-FU#0JU5=hOWMAt`&?s0R3op?Ymd|H}3CG%11sK z-h~t|_5&M*i25yo%UQ!-+V-xC#$ObSb5bUcYJ^XPGheZV_0OMmLV###lz5-p;XBVa@Y+*^fgTZR?cV$+7^Kxo1?v^qy;g%N?5nf|YJ(ry(iar&-*J z$8SCcXF$QKZ2QGGjDfD?$d;Av6NQ7-7{Jc`kGEQ#ZmBH%t~OmMt_Rx39xl&2R!ZvE z`_+9{?gK>L(u={j_D}+mv*ue%?SjLT8BOHf!iwAp-&K1}NC66&^=dDkR##d^z)&r@Q_knL6`c(_lPbagF4tI_( z!!oy5!Y5}!8OlX5cLwyUip%1SqljIRWivyP+GA>~2>UnAJxgf`nSbNhl_x69vE{Oza#xQ4E zb;LG@2QO;zx#B#Xyq^EGqt753`i|y}MS2VOUDTVWZK$Twt0*d;(Fjst#9u-uOSImYVj3kJR|0R);1diGR5$+Gwa|v#Z zs2#tf{ykLSEZ#8X+TMj>ki{pVGf&b*q~YRo_5kjy?W;q)(4N%u5kb;Fg*q{|q@~Hd zYty$CLwCu}nLt8oZr`zed3fCRl_64)NjLfVY;gVQ#-&x?e$Y$wxqorOHTTn!`<3qf z&}??~wtMx@c_GDvz5UU=?fa-rVg2SC3F2t`9j0ZGB)#Y}&N#fcCx>_9j2_cQs0?eR zgc+NIYb3X)K-Z-VH>APUE+*gMY-zh=r}%@`UjyNQ>K*^87}Qc*9~yzas|P2BBggkE z=bQWsvv%C=%qhnQaoE%2KTNq1^)^`LU5U&(19R~<2^IFktm8XPi}!X}AKvzSl*bUx zSf8(4e7)VyS`sKw3OAfXYZh)8RaXfq#@Zq^mlCkst?S4qTVH$ED2n2lGZkk zPTW_z2cnbjauUB^Qt@30Jd>J=1t@y&3ybK>PTm7tujcAhW$%1c&1iB_g(cH3GoyU%u;llA^ zw%7v-X#Iqf_w^om9Nm4KeMPnINgdd5bVFW$t z3VmtR7{pM*+G`-RN zw)m)@ADeQk%v}1DFf#|X`N9H!QbhYDtVyRg37H-rv8P}8uAb+hEe1+`CE_^x0?Yg8 zt~4aeFpNC4DFwHc>*%+|&9n&6lk0YD-{vOwc`l+@yU$eTe2RZ$?Vbu0Zpy9?0!quaHTds; zI;LaJ5;t$2k-fd9&9zUvJzfuAzFrOudbYnfdI0ZUlin6i9%p|(A33lXcf7U;XWlYD zPY*+TzJj4Fr+c&rK^bngH>V8WkUpryJ#iYX1?88VIy)mv%8yfxXWynEOGo0jb*P2Km;nm!`glD=O$O7q7rPnJ!a zW#TN3GE-=G+Yb`^b#;{0AvmSUTH_+1^1g-$8O(Y5`1xmSFZ6|Oe$n)(N?|t{fwx;$ zK^{Qcv@tu0DsOE3KA3lkD0IRpu0lV^d^35~Y=0gm!E()-2bnq`fGLl^xh0`Tow6BS zXFwlW6Q@-kd6AoyPbr3B?b*qhqlmqnDp^h9+(&D=!6a>PIqYbqnG>*ajEMX5h)v6C zC?IDqRx#tPb{V_dUD05UT(rddSluCcyTp%^0A>MIZ;U1lkxk>rLxi=|$RpvV{Iwhc zo^C4P8(LwP%g#7H=VD1U9TsM#Ilo`d#=u@oi8~tOAhDX_OC5^frtr)AX7MRuz;$1% zveSHik^U_k!Pw>4vhAUK$7Ouaw=o7i)tFxs7!FB!cq^KXnunpqs3oZp$8+{EYMm-k zH&A=B-)rQ3B!@=JhWL(!m#GAaz|MW1OCd7UBlWw8JM?%`VG5k?d z(^?aiGKjZ$+3QVfMtn5E@1g{}SQ7@O4KgK;yl%IRzJKeV-fUXsTs=FBUrbZ)PeSOk7uc@=2&A;@!~GSR-U5zXHJMRyXTg~ z@WY^Iet%lq?HqznC6+J~+1W{Yt$lPdQ8?i)jOb1(&cj z^e%xB(2}$ry93TXWz;Zj;D6~K*Ti3Qi)1zoIo~i|hAiG8#28}wF~M(ZspeR$z|&6k zaPd5cWymbiDY}82&R(j3hoVFYo{>KY75UX&(?Mj*UDC@S8Ykm~D z<7$S`c#p57&?JaBC3O_fk^Wh~4xY!%FUTOHXKlcA6PSji(+w^M?sQQ>QoTyV0cvf3)$ z;ggl1G$nw*b+?*0MgeK(M&*HiK;0c?H_b zx@9{;J{Eh_I#_O6`gPbxNt?VG&Q|(z3}@Q|l;#tV zW@cF@URF_aSUKu(BVmv~u&3OlwoX)@YIyr#@jKDe%V8Cil*M!|!z!05D>~j5^{X{I znscs#iAZ>@7?S1sJwSahs%icgU@sV^iAhx`&s|<+WUM6J7kqlS51=~KhwbCbZ3CGuYg+gTF}$ z!^z5GU-bCk@bayAa@!pt%4_=bAmY!d+wTzfl;s?WYfH<}8ly?-m07V_5U%NVcBgT& z51PuYdRgtSx~GrgQp6}YjDiJ7qpZiSG8!jY>bpirXGdLqFnL4)9CM~$Z$r8(Q4W$K zu=XwS5DlwyeX^@DPOaMwh%V2mp08#t@G&|M@2qb~y1r&o=Gz>sL=ftk%ak6xyq;^G z%|ixTY)-{HDbPx^6MP#II+t*+fH`Efpwhv(UwIebCOPI8wA7Hk3f%#2=ZX_6SrWw{ zJ2Hv;X=mAB>xuVMd^Y=2He=Oarfh2zD-a9YZd+X-^n&(D@H8{-R!)TWiA^{IUSd8GM^!A;`{J?q4?1 z8$+jabvVDE%-rBRrnqIQVa zXBg2Pa)p4IB;p&sHVB(_YXGq$OxQR8gW9>V`VdK7H2lzx;>(5{b zIfvU)NS8rxBQOBNeXk~H<8#I?s73%6wMGUpfSI-!VBZg8JR5o$T5piIe(?}V6$CSh zB@U|j(@wnFeCIgp>7 zC@4dHFVlc}RbAdfzc%~iMsp}rKhtKkIC04Xl2YWiE&R%gUsiV~=k*bsrN7?cX3Rw9 z2Gh%IOV(-6azTnNg=f)T@J5Uwslv^c-3oqdw?Y^>D8-V+skNIbTh@T^k!r>~7Xw$M zN!dpg)GIS+kZlsL%S1TZyGfJDH*n8?Pj#d}0b6x^jdkUS;@Kddg~?^$!uk2=nkbGjH5zc z36zvFoSXQQSli+NPmj*1?G=K~SvpiMXgB*6X?71YmUFV;%$Vmv zo>s^+{e?%8oo4(LtED*x28tydN5R}dWOL;!i;`zWN;NKmbJk^nCES+tw&jUJ`34B? zxqj4hvd*DIOzKx{26cqdCu&N})hQZyH+}e4Xh-TNA^C3XjIoQV5miii8yV{Lj24fP zp0r!R5Lrshlcb(4YMmu1wjpNxR&!6){rh2ouDdBYBzJXvsUl3AG-&VH7q3uU<~Ef+ zP?9jg(xCJL-T0&e2{h9uhouY8P7Raa)`>T!#jYgsE5svN`R$W`;=KIOxqfuMmfEM* z99BKL^uB74!7L3mnT$Nlog$sI*Tjww5wi0T7(GhB(Rd%3#c(Ju)FNfACT|2|TF;X@sXd@>Sf z!-QTD>c~$Zs(?sh_om^~tkljjE40{u^FUGji$`Hs1_yk*_(BP-#>n|-h?#}11daw| zDe?PHQMGFp-nLdr5&b^h$|L22UIsNNH3oczPFgHOfP);drWo1c=7tbRG)V1bVwa9p(Vh5L2Xr_D-= z+-pyQif9jBT#r}&A@~LglTg!jRw$EEUJ@lRKYbHJDdAkhHb7&ywi85n0$*Y*pv0qu zrqus*Hf&a)eQu=-MX@TgqEJL)`cO}@8g|0v@K{zPDRLR5QJOU*q-m-sa>*;`T@_81 zL$3tYK>(DK6bT|DA=GF5w>bpDMtRAeXdJNo(_8xClxVpM% z5TrY6C@>W~qif+EC4k0?^J1beu?AW3OG3PvhZrYsD}xG2a=?hn(ABb0uV4kb&5ob6 zzZ@Yduiq#n8O(sj4`?*Qp9qGzBev9R#{poirvCM?Qg^AXvHAF0hXY1k$Jm%LCdj#nR?w*;j z!9%YdQ&k43YIfL0GuFZUGj|3UAQ(~YS23;(n1tmF)mg`HMW~^e-~1E6cw;eWz)eIL zqzq7NzgE@YhEKSX)ia^S@@tcM?MwenBYAn6j&jjruFP-W%Ywgs_l9W6Ir^NKv7QsS zauNLLTXGZx3A(V>_^^Ht2p#+!Jg8*Wgpt~K5;58|G{q%<_BWOLQomKI5;uTU_QU>G z2?bvJ)nvH!r#H*KnK+Ieg1~K( zQr`(0ggGzd>HMB=M`8JYtD3HxVoqQ4IjAzMq z?M^wR9bx^460Q-FsnYDzBwousR{Z2gR{Z}c%q83>bP>tGnEX?r>;F`EnQ;{|8Mj%% z<*A%2dQ$SmH!rwde z;lt*7H^W=Ia7T8qGOmnX2&$Fq8pAB}<7ngI&B0;Rgkn{6@!a0SzEystg-snZOL6hC z0jDPc%+%*!wWs}kGN)~lQM|BqHwK`EeUcGo27vq}>x{*xvZ;Q5rA3)!zr;GxcZldn z{}MiED{c>PDNN~NoDuRbpWI9k7dXl!shlH^Kcrcgf`rZg4aH(4D@FvizyN&+rIrZ~16rL!v$0Hi?X0DiNzTTM5$Gsh zFX*Leb!+`p19hV@Zv@}GZh@WL<7J1=&>KwI3e->4YS<<<;AQAV?>7$nO)dKeH9CkI zR`&Pld!lt?0V&z&4{BGlaS$~>*PqniDKR3D{}1Ymt^xRtux!H(@752UM({_KWxeS3 zvsnxb{%*fWwE{YtDB6#OF(Sy_Lp70QYX%&&$jr9w`{TJxi>GS_L^^kS(SM(^3*R?; z&At1J{MKazM6L?^2YE9q2Sx;^m^%#(Haq=W1@9Z!+YmAd-`WnxKIYxrFYbKpEP^U7cw*2(4*wYis7)O5S;`Tm zTjAB1&G(h>%&a`RaBJF+Ww0#Um<7{OK53LwBy@4>U)5~vL@}&O`^I@w&?Z>wKyF(s zl)SDHJUZac80!yzBUUr#MT$y!3`U8uG{GQz+}J3N2j%*>PTxmjO=SbzHCE01A;)$a zmSrU|4P|RtwvSK!>AR}>2mK9)@CBeD`lO7`3j$dhOr8~%;n&i;FQjP;;AvFf)CPcX=ZB}^0T2u@Jmx_liUik1;u62Z5`Vjl`lf_X|oNF zSP~pa60>7o=GsS{b)iKrens#c?Qz*pD@Qqy5P~nKloqJ+37p**-%1tIsNUa6%yQ&e zK{Thkfh%xc@Te_?6mv;Gsz=w(>>k3&rt~knZzivdgHUrY9S=b z$HBtmk4`r>r*b3!JyEU;Tix4PJ~;qyS)*ozyp~LAz?8<)(vfBgnWx`x_8i0=yEVJ2 z__%3k?DXIcwEm{d3nAXCJ%c){JHe|92MLGZwPc3+g5bH-G8pKF3c!SeE=v>2CiVB6 zwd{il_9LFQ41{hDroiR{ojSH4LkYmd{6fKvp;|~}5=od#sCh&yZ_GmCASO)V=vg{# zxw2rhT2dOru$2JnNX!oHF%}mP9Zxjd!6wZ0MgqjnT%)=ZHLxynkiWM{s1bjTS;$cE zZDg{K}2OG=>Wr_2*ddSeFM!*!@2vD#lX+w-8S@XvwqgWBzB*{ z0+oSCr#fdx&&hD&AmTYtE(j-F{yt#Tb}APhnf;e&Sc7@xAD94-*dqry5NHP8&aZ#eb#o-2>i(S}^jGAom{;DBn?I&sg zf|Ef1zQERjE-+0%a0Y4Dmw<+xt}W=olTpGUM3xxRjvfO{mP;w2Ctc>`l*Tq7_?5=| zIfPq?CpL4BTM32%&8b`Z6s)PjQah-4CuN}Goxs74_}jKX{j+#>*?NB!ucp(s>+9rF z0?S_t5&9ALjtREM@u??!Agzs5sdGx*Y2Z9d3D60qI^;>TD;NhBQ9WCoN^ynXy| zq5$n`AHi$h_q*jA_F57s6c#rjybHP;2nZeR8<7*VubB-;n)kZF1wdi5bXh;YnnbN( z)ya|;4h!eet|xP;T5_3L&gq8Bfqoo@cTlS_ovS>%#Xkl6neollP1dKK|DqlFoS*vZ zyMr~KCXp}HEHov8iZ?Z}K!N%EKD_hLX!=#hV(YamhfeIKspj6>jvj<1#LLh#v`zA^ z;wZGxv)rY@^e6JEaI$q=!zVk=Io@o#kKi$guCb4e_Iy|6_hO2jj_|DA$SmE1MjQ@2 zXx5^s**!TqQgrkEVvj{?F$gvZWPDY&nu%qOUVYCxp8~!^Tp?0*9eDLA%1lgyImk{_ zM@W(EhnV7wr+YbHG;EMv*>sD>^IfS*(r!6!7y7UK=Aj3OnwK``knJym?{jBPACONO zxZ;mJL%~2dwv-TIf1kD z!Q~s=z_ZdX^c&Rkr9vhP9YEYeF?+}fE5cvULv(H=NC#s#+vRJyY@i3ZtpBaSVmar5SRMD^4 z!Pd~Pj`Pq$AGTS#<8bb6ji%*}8QHpT)04~Ch1C-wh;V+9-26#}y`Ta>1Qh{tVmfsi z8!?42mz?Gb0~fPly4q7~M5y~n+4$*MVmN92K$Fwn@T=h!qs8j-!2yiwb}_}iC0GmP z{-Pu~>XmqH1ozcT54Pg5-RYH0=L<)lkg()$qOR#`*UI#%=P`V5-6NzfP!0SZpm$4; z9mwW_*@XQ?MUjTfLxQhys)?``6!bppEuU_y@7@MIG=5{~h&p?I?%7W4(f;pNO=o-l zQo&)bY#w=D5tbJDt9}l!rTWK3Y~7bHKIe8mvlgLQ$_=zOYXhCm3((5cwf>^lGPa-K zg3I2q5I4yR!9z0-@Rvje7L$Wz zsviG*EVGxGC2R${Fy^UmR!>UGK1*{};F)ZUJSZ9xgPuZf=_n49A?B5qm(i|6>lY~s zlqnR<$8r78u4H#ltZfXC3?)LYIE2q!FfGqs5T_LSh^n@8>>gH~#P0Z6^l=|n5bFW8 z=z47wV;MJxExT(2FqXK8e^4xzT^cNOO;A#eqg0AAzohny-Q`i)g?v(hoqW?ebJDGP zE#zp|8oK*Ze8u)ge5GXT18o2TkdXPl(Frq+$$j%Vr#OJPuON%xfd(H^?R<9eNj~+` zbN5;8oV{@?Bn$H927>NB7cU(FSfn64M)>ubZy?^g+=XkiGk~}(rX1^;?)J1Sdr}5k z_#>Ly`LSnjbrc4ROYhTf!Oy5vH*37kAi)9u5gd?R3N8Gn;NIVY&wmT9!asI#Wqr^% zw(atQ7FHwHq`yxh9YD>_>D&T!lnq)K;BkKmdKHFF?I926 zbVt)Kxbq?>wa*4Fz0VP04vVzx@XQPDuX#Rzj+$Iw)a^e=h=7O|Bq zBE=Hw`Utp+C?&dich`+5)8oaQaCv4l072uP1&S)sMvh^<4Fap9urWw=EL)%hSOxgr zm!p{(d3A^qrEYb2(Y4XLV{xI&F7IX_yj{Q+R4?n)2qmflNk;_9n$xcyb7nRY+zps_ z&Fji6=71|Qk_|CG4x^Y?k&B|lWki(_ZUMVc z!|iaxCp|>bOPlU|6&VT+9TtI+5SDydVfaB?Ef=?kC2o40^ zsF1xELcNaL8x?;k&<&g!AasWC+j2*=84kg)vh~cnIY!cNM!Q@A9hSC1sjg2 zj7M}JSffh)lm39?FZyCrOMxwDkoo=X7C?Ihc>De!$A72OLJsfVzg%OZ5K#F+;B|KZ z-8>*MBMf6@5VZtgrQ;Kmq$n739STp+T07%MRSUUflMCH8adQm!$P;lbhi~^=&lKPyiwYczbMs<}A*tV|^*9&w61Ra91_LAojt3z2t->Ny<0eZ0&8oVR6pqf)!g+y;HI@x2VaAPSR_bdE6 zhQ&BG_7VtK3|#Dpd6NDH8BoiE zkAos6qWHO>`sB(7meE{RD|&le*W z*(f8n`7#x9WS#qo>FMZ9DaYpKNVs3MQWX|NOwF^7SDoXK+fVB2f)6~{FLW6#&5zy{ zEunuMHrmSc59=ji#|3|8nl^&U!3ydfA>#tM>^+9NEO2Xn7 zztVc&A<9w9W~PyR{Ft2Tr$<9S?&3Q2j?bjfpuw2btETJ&rA84e{Z(fV(o%v_6PD$H zR;tJ^boyf&`ud?$+li_XHvDg(_DEOr?(G)^jqj!18O;NXOw2)z1fV1zdkA@{ve}5) zx}YqK;6K>bjkl?rm|s>@ERkdkk8Sz%g(Z>JvwhUT2Ji|<(oYIS;%|-=*!eMUh%ADp>z_jh{=f1V??OJn@ zNzUAfq5{GC2aD~>5>tA6n!{~WK|#=Q+7f7?LpkC%2e#>hB#&4VYFw|qTx^J6`-o@o z8^`T2!{N*Daf_#&g4~#?V!xrpe)ImI695l|0Y`-@7u!@~=>=X)?q@I3oBotDyi26Kf$VZqU%s*#kC`1aVK20-6xqF3n6Q>no*08S?d0gVbJ zO5cwdk+8OWHsI*4A?Y|a+sgq;q>;G3WVL7Yt|hVUx$o3yY~`s+M3h8vO12)mxY4K7 z?ZlvcvEK=DL7Hw@XDa0u6szFT_2AQ?sU5}?*v#o$%4Q-6qjGB$4_-qu&k@T- zAs2-XKu8mTWYdLt=1J5m;)gSt)CNs73Z?8H-DrPoO%Y^bYHmukM+?tyEqrZ`fW zByd40_DqNQekthPSlaiwMZrB%=Cbry3G*{lxY$H_`yG1pUE2YOn;=wMH%vK6f_g;UT>lVBarpWR0gBx|gC!~j z(05eH0;M_}wkXUkFH(3~RFx78+L9A&YZTi1{0B23?5;BflHkW|ZSn#Z&~M`w{bc(K z>iKbEkSGyuwx3z>r>mgM<)F32k=Yi57WCYYOoe6{K2-|gJTo>36OMK+95eA2p)myWNLWEfxZn>Tm{R`i zg!OLuEM9uJQJ8q{S{>w&Ho}DZ(}8PPablxVBOEGzfFOzj5$Rlof}AGx5;Z00I3N41uqIe44EBZb~{#bG04ij+b?5@6WzPjSg6D?RW};Vy7^SiB&9L;2@>`$irCv%H*O zV9wPrV0iz0Z(q~u^Cw9Q3v<)Yf4;)+qo0y5Rd@3AfYo?3sF;-uMmjp~GldQ@WH7#a zk$QVCR9-%(pH>xr^pUO^^cKHJwjcUPjPyv*3Ggee$otq<^xkRu+r!!0o^o>ni2Ye#FgL#QIBVYYLK~4Rb`u)td`Upv>i+wU5>AZ8TT) zxQo-}ti@B^61A_rFm?A5(8KG6%j(Ld*3d^!u=>`w$nGJ<0_f}e)}-(2X1%*Q?o-hH zz|`u02K4n1GVCaAyLHbme&c;J8Fx+?&JIcsX-?Vm^lj;MTitVZ>QBEpwYu><;a*;d zPf$FNq9f+HsxdSS$y&(?Ssh&b;ai1tx%Rqy@qu}In7`WIk!K4xt|4rk+1;KLaOF*{ zeeRQVoMw9f)Hq)425e(ovi4!VI)@gqLgoET&=mUwyiGGRhq`8O)= z+S{u)8C_Az=c`9wC@Z@w(8Yx(7TV{1oGe`0Zq^M))w`LqHaGdFCQBcxu76yaygYb2wZ7hN64%|O@?NvDKD+{JUvB$1@%eHu1wDxc)iUfbMM zEG`ZtPG&AA)`*E2zj=Dve(1ZIJ#u__%St}>Jxh*R+g%vy_ z$`>X|uKt;qp;u>6(EsfGSblI#-5yyhjt?k5W+X(xlp{udeXC#JZp|N)6J*5sS>?lB z(a1&Fu+M^z0~n^X9wxW8l$eWFoSXVuk_oTOuR7>@n;t^0Qg7Fynw7mS5`AXL4Y&KW zjFfW^bPXi#%3kjY1`QozmEx!#ZC1@h_D_eazDlA$zm?pjQPupIjb>4a(xOx!s7P2}*!H@Sc0c^9RK*`h6k9 z9t@9^kiF(Vis$VO0l7bNTNoUWsth64@etp%gsL_SrUVCjQ77>vR#e6U%h>y;33DYR;#D@GaD z-*jHPRx;t6?_18;I+|~>*W;1VOxWI@nwA$6%tFN4?j1V~tK7!;n zHi03ls(~hGS3naaC!mQ~&_s4xNr*fG`grpEL%ol)`*(zQ|jgVXSxjGt}*0jpPe z%yjwWc43Jy;9aE6rqSEM^J&Q5UglWe9Y!R+jIjGSaKn|y_3@Oi)%)$h=KGP&EobHM zE;nMa+c*l&>%IE}+=-Ld&zH5#E-Zn}_Kl~XOjWQ=?PlRwRYdQ0T7_M9kCBKX=Qfx3 z3={-e%r+-)@SDnCVj|2cUR#+uw{I?Ee147|%s-Al{8+wzwyK@fb0Q4A3RZ1B<;j@x zMoWFZF>m#L;ce}93pN$5To~8C-MZ-?jTu)=xBKq1@xyOw)-5rG^VH#H-!2;{@i2Qf zoxE>tk!C{KnV1S@LRpz+UdMCd2u7}Dy}v#|)ssW* zKR;T6jVNZrItO?!k;ZymnBfMQlQ8=?7$RF`V}G~jEYOdNb$x=eDh9+B`4?*%;FmkWEW~^@Oj$Kr z32@V&kBzuw&Bmsjgh(^cy#j4uw<~bz3^lY<^syRl$LD*LCfr-w$14fw0k|wRa`!y6 z-h?i4cUz%=`QR_2+Y(ZraKDLp=pgNtO3^4jA@7AfC@r+%+DN{LLsSilvms;or>aJm zju+pCyi=WcP>PQ#L+B89Jl7DO5t8p!yWj}Hl)tGhYVUWMzfy4BIT02*$Vq>G+2zah zFjVaA+D#C6tsOyfaa#6%cz%wN6iVL%Ug^Bd?vB+xHwYVW5y+J>J+~~MaWfMz+M@t& z=Q#c!VQ&Ex*S2*FV6?j9t#HSX^2kYK^x-QC^Y-Q5Z9PVfYRyv{lI-gnRUzxV#? zVpCK#V~#P_-mB-DyVsuSF>1Fx3Zw43?LJ=5ZJRm9@x@MqqV_2X^#WA(`9u=w)rTk3 zyeI1G)j6~GGuX|LuT=2oMokL5irtgMt-Olt7j=F6cQ-Avj&5P7*pe*Rccx!vkWa!c z^o+O}E?cIGE1bOuogJzwt|aqzH_g#k!KJ%DzMn8*f{uOk>I}c>%_ZEcTwj-N={Fb z3(ky5@BPf`R}U`+pIsz(+yPjOi=}!G9f4f;=v#YTq>(|VhELnBx-VjYtrhpPwk|Rs z=lE7^hV9F&)Lfoo_~Wtp7DIhdeZl%u^@)9f>U5cvszgFaR4>Aw!)SA|V`ue2Yj68b zACZ##G&F}MMQP*5Dfb^2Ysu-6(|Wg-2JD8QUwP>KOAnF<7H^xXop{$&15)gZP2>WB z`@kC4+@ORmj~JI@YH%ge9cfKTj||T2Nq0R>>6gz*s7o>oUT!Dz>O_|B*wTC8xMF>Y z&=%M`X+L>QY0U13uJgLucMIYS+j3Yseq;jLkOxHu1^AO<{piF*X0- zdhHHL)gLg9f4)kM;@SFmY} z{-BEb(4DcX8ZttJu%`2@PPYL6Jn{6dTb-NZ!M!T}?AOhjVQ)%flCyJxnDl9Xh8flM z?NLYR@QaJ~*yGJta5>7W*DRk5NyCKp1X9Hh1m+smdEGfJD2{7JEt>5@)cp0uVF zi~f!K`vzm@?QABN%AfXbF^6NZsXM9ggww7T%bTC{jW#iA&Xh`zh^jNbmlAQ>g{(f5 zZD_~7d%K$z7l}02)XJ-&S>RiuP(E6UwkCb+4$HwSf z%zG?6Sih;GLGrqu9icULG)=gfE~FSd799KSu|9hmnhmU0!%nDaMVpBwNkH;pqd zl|xVL2-m)w+}3R+MQ$^nouR?*->DD=D9IaKV-tUEcjMr7e0Tcpf5zTp|7E;IXvS70 zSpz9_-O=T-_`r6o<4$>$(7h`a&>*VsQGOBaPCO~=uHvK9{**1H$~{f_)S^cSSufgj zirl+D}y{ym|mP_~Xf->c|5rMy9JCqn%ht?>+FOMaQw`V< z_S|UYvTzzo!rC?bR5*~S_qHs`OVng$%Jv7OVaR<|U>zWhUjt)~YR=3dU%k{t=jCB( z@z)tGzgZkRZS0%emS}K{=$C{8gNe%Yy@YW@sq=c7QGe&eApC5Mi)>cW#NTa~9$MXT zSe0FK)un@2rZ3}$&YqnOG3VtI5aLZ5KkwwV@CWQPdslO@R5SM$=L2;G#6Xj`rc0Wtf=b4RBMs7&;h{okYY2- zg^?Vwb1>6goNaRGIRb!YZP>l9FI!R`Tu2X2@tgV=7(uIr8K_OSrxHUV0Ya zWT_{eT2hKEel_96kx5lwu_FN{V*T>!5*l*2NDGyDb>OVyj(r{ns2`ceHQmhe-p?c# z5v0;lwFz21s<1lFDp9IVUgpF7euOM`^;)tpL;KCt=(6XBna|Wlxo=sk7u~4VQ;tQ+ zQr!#KF8nXI3@pFbk&(B6$>&{pu$-wF^_D&Yf?Hp^9w^{SGj!P?b%qctHEl3BeEmDT z8-rG20_^bZcjQsBq9xB>b0;LkUR&mBZ*9A;zafBMCPW&OOBmqbjWl|`T=#YUNje<1%|r9kTBP@&@{~Ika~WEKOkU6DY%w;!fLqEG#(Ad&}na4{1eR=%y4uM_slY zCWf0mkM=dJcJI5B(&c-RUFi?KI6`8i<8>|1OB&KnC!^8iz6~Q3pEcW$0g_W<2+W4T+ffjknYLVu zfDZ0!$9;M5CwoUX#os5}?)|ocKmY&P0XQP>bH8pnbGC6~A%pvS9l*D7ufr*2yE>4q z<|4}!aIeZ2_+HBk^Y4x<=$RZB~-4=dX*>9_R*z+880(%+$X> z=ZWg7ORK8{j>I-_B$ThG6)LxSCQ5m;G=7>iSgk}!|FUmQ?az&E7ijG2Z_jZkqtipSCEJTDbaykLE%hGkdxI5Aa_ejkKVocVYwYUTb!9cB z=c>pSef~-_ihT&Fy@Uzvi2pbFHR>KxMY z3NvaVHlsmmn+0n6UB=vQbbT#!{dDgXOG4f}{24a+?$ZJO#s&UC0v1=KrmJF597b@_ zWt~d7zU;>png)kdFPnQq;CdGW^=9SN#UxTeNR-WC67Y%QDWr9!s8zjBM-Z2`tC^~c z^SNl1Pg$EgizCx>KDgDqxHW{=@RY!ELkFBi8!DutRXtrn;G$ZI0zI@frMv1@b!UHZ zHco86K?T`kVy~L>tQzwsWwsj5p&HgfUNE#Z24M^F1f*2ob+20Mtl9_(hY$Mu(+Wsb zihurjwOWbftfvh|`}|(D8MBRmOZ%?}b_(W>%O%n8Ztgbno;JX}Q!2v)IyM73i3-v+ z+Hp%PTjoWzQ6<^(L)+g~4hL~>28gQ+) z%}R+H#s+n49y*%^w(rs%fE4$t$1OBh9%dXpIdDZ1O-!5+931v>ET z2|O0SJ50+sAiDI;@y@lhLK!w8AkaEo{n%JGNlyL3Q+u6dhMw5RE6VqtvUp33$EPWvqbY5Vu@)L~z)4PtXxl!cL0SiP((^~lTdQ&)yh zA4&RSuSbLSxx55bL>j}SR+~oW%08$0>#zk{k(iRS`A>$$-^;c zVimV*w_|HBS2`l6kE9r}XGA2|K?73vA}>FTX?27dyr$L)vikHoRZB#2j6v%NLGb&i zb_R-*y>re1XKqQ$*(6sM%%X18q80r0T@HFs5UEH@r4x+aanE)?AFpUxl<6KbRgA`{nR4|c=&Fy1IEbC7h2Em|^fe_X?F`lW0f%MHGAh14iM2K>m zV!MtLUjf4YJ0uF|ze8TESpY-2UH%o4?&v!GDOgv0ufBK+`Eulj4JkKSScz|jvO6{*L zzkY@g&cn)BqzSDDJG2Xd0df8C?S{U(XI_K043I# zbc-t-20{wP&jEUkTj(`hq1QNJg9?*A*KTWtiSxY56$Hb_7R+mds>vSA8mN=j4}+@t zI+h3iR705!hYEs|;ZItY!#B?`Lv7ldF#$Xq{(ESawIM*-A4ygT$!nLEOMg}B9KTIiU1#j-Lm{u0T-j7f&VP15G>i1$DF$cRE1Q@JwfXhTZ8HzSe; z#K;--p!k1M!C`L;#*ISpAC5)fGyI{wP>urXmye5Md~QV`q0iIyXTW^^&jSV^B>Odb z=k)k=2dw+1ZN37t0v>&ruN|k?Wd8IJ&<)85C#-f%q8g=;^wM0ACN*2C| zpRCH*p4$FQ@;0h_+%Ou2*)O+7r+p^+Il4G|y!v=3SO4k2^?0`SwZD>kp^_N7vA?Ux zxfrTfe>`hSz1CFGxKg8m`ehF*csb>4rB8p1W=B zj*^A-%?odr&(!qxl)U>}wbz?cmU|UoJRtQGT5K;Bc|#$!rV0}msm(C8#QMJE`n|77mfrDJM(I{Q`K%#5m~?n2 zvQ~o^4g>#*(y>ZBvPY4T#NfVOc=IxSA@2S*%J%uQ{zvgSN|#S!*ZZxhAk3#HD9(z_ zydth|lrGA|kL5T?&qWHuIh$YK60r6jfp|j~skvy;%xsJd?90Z2WwwuJy1RXfg6tGK=hfPgv+S(-#s4HE@4hpR|Pg1qkeKGY!0>=cXx_ zHyF=S{f2}Y$aci1dO3~>n$q-t(Q}S;1h3!!PdyI4xU%Feh!++o_NH zdx!A6&w~w!vA?c@4PR5CTz6LNP0DLsq{=+ z8}5zUKNfiFy)>(R90+9Z`8 zFSWa^gv7L7m#fR3AMe}I(_h7!KgEIN9??Pi9yTYr?TR?UV`oS>!n^S(d~;L@Q}OKI zw zmd?IYPc@oU(T~8h&Fcz=moMxJ#=~hh8>YXw%L??gKUO>`{~O||3}^-V|HFzAqr>3gL#UI`hQvE-Zwilz$=h|j;Z^G%BZSsZ zJ|JJJ-ePta)Xkn(XY_Av$|!wtiq3Os&6h?$iUgq>j}REctTq1ROxEtpP@F z9=o_TGJ&>ArhP*wCU$sdUz9)a*=B7dqlwhta9lzp*T>>606#*l^!X0Q=6yFVS`Ni1 zl%!Z;ir3F*)sU{xJ*b_2?}H>LPhz;@yicVgnH|f)u%nnuHGGL^BoK8Dm`JcLA_x{9 z44+f>mtbhm$4qLtK#N|B6DjhSDumR0!*Odg!%JRjN;@wOM9L4j?Wp2h_vU9@Zel?| zvEd4MdyE^)`!IRFJuTjWMkQA<3NRR5};U1SM8Ol?<%U(`)PvLhZHFX@T{^HAq6tD zOQb`Gac03VV%iL$P3VZwcQUPnA>t0h>8EypTx>r^SxLI;%V^PQsD;L!PVVybp9 zu5bwbhpUpsXns{Acs-OcqI5K|Q;mrfB&n8jG?+M045~KWN?7ve`T+GWdR3_SY=0Cr zfm9L~+P7#HDv!abbi2-xuCVm<)|WhKln!TLg@76(LI-K1+3?T}@g`yJldK3=k(L9f zZ^v74n}3*&bIM$ZRPBjbdd%SElj*C^P1Hnk8jC^!gGXZ-KAJ2|W7(+6uozdQBJmC3 zg~%AnFHhJ^mPV%VbMHY~FkHKB;T? z%hZz4zH`{?Wu9df>>)1r+Nzy+-|&15H;n0GEl*WBoE{&-I;zH0zYDp1TM6nG ztoVfd+$`y$H#|_mRL%8`;bGHzR6RM#6;`XTLoAx~`7&YMUEKTCJfzyGFhLOM=V1oI zf^Sx$&1O#P+&egJop4P?o+Ou)7CJ@~ix(~|Bf+0!uSpeymsORGS`-nOfyIeZdMQ7| z^%anaBsIfCl=bGIOBq86nNlbj#rRXLFmdC@1%*B1|M%E7enrW5P1PDT`}G=0&_zO8e27--t?J zVjkm^6~wEuMp+!B&wlE+&5QUmf6=M0ijJ#@M|jfYMXXOsl^O5OoFpbp$=W}X(THLu zPmL>zQwE}`Dvjr0s8Q6>NMV{W2GE_)nju!C^&{h|siv9aMMx+Qd*FmL^8SQq^rr*P z1a1|Y+0maAFlig=1L@3}3u$?<|72>tmuk!b%8c1?|tpi#R50CZ7g6YnP#AlL+waDEvPt+t&4W;3%rOpUCD6?%f)q3im zH3c2w^ItJ3|KfW9`3HHcGvdw#L3LiLf(JjiFzhV^+9qIK7?V>lflsY!Ml7{70weuY z7_%{T{?H*4D$r@1>{J6t8CVORk~VV(Qcf(8{2!Fb!2U^@CvDc;R)09dkV{cKI+j8K zlUL9p|5t?B0w23rjIjwXlO%Cg1{QVGtKDRs#`_9o8J+Kea+hk8hX~rlvH*?+wDXk| zqqTFC(jnyhA+d!6V(IyzNc1P}wc!1t4J936dn|hjCH21af=DB*IXtP&O@pGFwqR@& z4DJz|n)iKLztV3vQ^+5;&Y&8EvSV)Qh?6p4*XWnI$r!rxAfP1p#6q&lbo8feujyw5 z6H~4z)+9?w)JxISgLxcYNfoN(3mvM?X8uoR4Ycqa%&CG}YkrnJrh?!oc6{+~Gg9kR zQQ2v4^-w|hFx)Q!bTHhXg)i!VAnrl!#@AvHiWMesPuV5gUycjO&}};=I(a;Y7x zZwywtj1C&Sk3cjV(UjtebDX$OLy`cmHC1wgixMGQt`@#fPPc>no+@ohKi8$Zt!)He zU}gP`AUtp;rml@nndOcatTeV|5a&p;ryH{EI7)zq6bA-d`eWB=fCS;!vmYc{%qNe2 zX-WcnHYVo1oBMBIcJf$3h>S;zK_6!2#~C_j{^Jyrs6(3x zkiL|E(4xzYSRqTyS`J$xvL?yinu=tk>cAe=!5tcs(2fSQIeg(7K5S^=UAm~&GXfeC zMb@1u?Vm#KdgMe|9}b1{9!wKcGQ4Eow{%?|u<6O80aPxM4EWGl5Q;2-ss_8#K={B~ zZ0Y73B+#rGvs1*cQ>1$!v~iA}NI8yJz~`;cLNmlUUY0vZXTpc3Mor4{yn5%7U<2;| z4og-psuhp%S6IIEgYqBA40JyJtWrtJn3j4K&K1JH*@BfJGg2!f>1>6Y5a@D2rFgQ- zJgp0Y&?W0N(27m}zdrN34_M+gh+@bI8u|yBC~R3N!-i)5D=tXdbgc0SB|!`U4@S8| zN&4ay4cFEp@7*cyv;dX2X)}@tys~F#9wP3v=v>gIGQF9YYyA;7*jphzXPbtZuE(%+ zA*52_))94jsXT*Kb7aOreENKMjkG5=pSq?SnWiH`Bl`+Od9@3B3d)I{f)*crT7Afr zCfxkO3hl;_YXu13-hg4iU9p$J8LbqgshZu*c^FqEdVT_#ZS1q}$vDI(KkC2-;?hRD zJS1dQ{21$QbA;0M@8+qW{q`PWPUFbu9DO7oUK+^AkivLK_Wi;{Tgi~}@kc1j*HB$R z_(iAsg{{@fHnMXY!}v(f=k!wHT(F!%v8Ysi_mN(HrsND@#6!!nM67|+1b=~<9T6e8 z>)Z+x1X&FeOk?d`IzWyQe%(_Z!o7taB1ZAe;|TZ_2znbzgR~X*MoL&&Ca{mZYY`^Y zBv*4BINxXTdk0APno%eHr4$Md~YcK5OD{d?@b}il!hJ;^V0JIX_$~-F6p}=M0*C5 z2#c{rFr^eo`Ji zkRcz)0@8O`$>IGg9@j3$A1~xaY4(xxFus!#4E3`RI08NUFDc~yzXoCcc1-v+zw#EE zI%D`b$^9gl??VmZZ^v*%YPt-$avO!12ygGp=%QghhaXZUK zWH?Yz44m)E@YaZXEKkl#dBOpLkfr`=po3)wb$u+>I1*aDzaEsg>qdkGd*i;kG49d~ zDzywLJ?)RP7;037R3d2L)-*6UR&9k6&PIQG@=A3~!97^BvRHqVyiLl6fVg&^-8|x| z0|{-H1&2*t&+%7v%^(DnuKOpg!77G&0?Bj&< zEN%e1h#7!q+A$;3EyF`5wGT)Pp|qWu|JL;~8rqB=EbG{ZcRK!J7Wz^X3LU{Qqw|8J z)gO{)S`SZ(XZi`DsBF<&6I!U7P>vFwcEdu@!1Zg7%$CVa$qv_y3DeEVqP~+#+?c9C zIwasWVJWyts}w+UIBhJq>3wfj?c&PnvY^tc-w(TtUt3iqsT}k8rJao1S=$6IFMw`P zd+qIkc=5*!5&sGt0f2OAj#=WV&TjxiAfVVAYC(##K&{~@$kfh#vT&GMOQd?urnui?xZcZ+a-VQUA%OnTZ!u&F zCNCIonvC}YZxXm-pKdu?=AW-e&Q5nsEFab0cCYFf;_>Gb#^O#v4ShJO2?N2ORHWe^ zdz`CPPASN)WN9eLrbX$`($&#M08;>JsOBICbx}rtZR1?+{i*KfwCs6o&u}Xwh8-j= zoP_~FU%|}+;{~YWy!0`Vnrwv`ZICegWs0<^6VzGu^}@_4;3O@v84GbVgm6?;)TNv5 z{8`BiX+nB$AcvNkta_4$`cFt|U`XDxRA)4W0v5VT3-?ag&%FN5U`JvI4(4>!2leb< z*M1vd1-Ymvz(P_*yG3%_3b@Ul>l(bAI{aC!7FA- z=rlq2So+u)i}|RhA>O%#)%H4Yi&UKw{qg5NoHkh9(U1=+ODQ z>QNC(QSi5S?>6zHBE%^X-uOUWen{v)Rvb}0kaO>r3s}ZFvmpcL_zx+v3D{@}MP=oB zIr6-+Dwyaz$9yL||1f-p8q_cv6gE76;7u6d;eHOrvjmk#iJ&p~?zJ;%4km~b>{@)B z2n{+qj~>sT`zv^Fm3u7}A5!%0>zp=6z(5?<)ARiv7H0q#3v{$Fl5@2!vmJ<7s{~8# zEVL18rX=rRg9tgyz9CLSF~JJ?-W44Cb`4E=rB+FnV$y1mvvS)U&ry-0Hn}9;>*gI( z@;tf072E1d88BUxKnA9ZY@RS2$VWv66VezXK2zJP_sw~ESupg}n~@2hmarzIHImRR zE@wwBVQ?E^2$B*ftyGc||HX-m-LuJ$mxkIo&W5^B5*}neXMPZQFf5xrdbrM35nx{E zh*1y8v_dYz%PPuCOIxE2q_m_N{5K^rF#;3~fS4;T?vYs0H(21ogNFJ|8L&_DM8>5t z-Wv`)OEh`+^ph_0TND8u1z8a9W5ji^pBm9f{>cI>IT7g0k=TEnaYlpA$F6h9Z@@`G zoRB7%vS4p<9`K}~p|+!?7OMX88?XJ)F}y=8K|TvEJV>3)f6`jIT*YKfEV+}<72#I6 zB%a@8J@XU$w^eWZoUdB$Ap}P~(ghmcAXh!+XNvbL@hu`OyH0c-;#A750o!F1YQeKg z&wyXRTO{q-ZK{;?Za$nozhZy->%K!P8|7yOBP`0&R^kMtU@<{3UYV%zqNx1+(vuL8 z<3#y$3o{`pzD0SFB~0Qr?jt^fved1)py4p7KoMiiYVUL0q9E2aC@4Fa1_Mw-I~uOI#WmPKmR;W>^KmOZ-WUen;<8~-XYDqW!=~6~RAGR)1e+FiLAdY? z4f?p%9N9c;o(wjf#Xnj{+ckLP)h(|9SrIIF9IIBjfY8Oumb-g zKy?Jgi-|k##F6a0Jg5&rN=1|s}rNJ$DfkdO3gW)S-qf#~$PH8E#x;5hMi zOVcAc!#P)&0$q~48)vzbk;$&-!oVN1x|3Q=2ymT}wD!w-|JLbQMOqvxyVPC=&y>*{ z7Z=$;m2tf}LybUo<^0x_IyFBJ!k&`P|4PhE2%KweBjm!C7?cIlb076AwHNfSbLgVf zv=p*we1-e45GFZo92L$09elV&A3PSY;y%h-VoDp}<#S>)MS!#7B>V5eIx){kk5NnO8HQzvzngwfJCHW$0;_hw9g(ce#o zcqV3}b-0$x$E0B3FW$1C(V=xHfG~*rph}qp4q^kc2@mI0(oI?0>buaxrstwX(PPYoArK`j+!|9*mxy zQp2`AbJ!LqxdYlWin?uiDqG+~0zewRf!IB8Cm`f2?2vCnjHj5VU0q_{JNePQ!p*0lb^TYkt@qTq6$Z5!Eoet`W zLUnZH-PWvLoET2q+85p)2L};gQ_fretDGAh@ZeHCQhXSpsjVn+WrPMP!gjei_FT6@ zcBLD|%h=4}Y?m!fw`!yP`R4)S1Fw@#Vljga(f}7KH6G3}N$|R|Sr_-aK{sjJBjC#q z%=&|=i>txiDCeKb8nsv_MJEVJDU>*Y*hA?GaS?)!uYrZDYuGrQ^z}}`$3}BmFH?y8 z)bUuJdBIdKj#-e*i=EMN85ju1qEqJX(NQl{l*E^dgd!)9IGIZPSv(+-@fVwD@G$t0 zQM{f=vQQA&SBue91nEbV(ejWs%Iv?zA~t1?wq^?Qf+rd0i<;0N^Qr$@?iy;)H{^*CSbOK zSZP5PJFKHry5<2q;Ft*zY&+YPz&7U%9$=9tS9(R-p>IT zIHX8`7I_iEx zX}XKRYYuXAF{dx!?%n~2<|gf1xA{J*ktqm&l$%v+yVizVpB<cDO~N-8o|%<^wN0C)WgHcR!IBM?gsZb@Jd{j#|ZgC1JL7ajNhg^ar+^u^VJ?`u^s zrc#BOcRlQhs06nTJ|BCe0cKC-v}AoaAA@yW*>DE3a)+@}C;vmk*ksH@i9XkrS$*no z_vOMQlb6=MS$LwI(<^7qrA3yguj^g2soZt`OXa99ireI-{7-qiVuSH5D6T8>Z8XTq zFFWMKX7r~-Ana?!H^%kTn1a;cg_gtP@cPy$(^>a`Oir)g(KUlv4W1YIWGTPiZbsVD z!+nqTw}EvE-+OT8my@Fc#z>{WNVz>()8Z#!YKb+X>FN<$7+NYpG%SJ!Dg6tsRpgpy zy-#^w-w6+5%kQPva&-svpW7=>wU1OlfGwz6fIolQv;NhB>Z_Tt%70z((R2OQgDeOj zb6!0IhY2bNrctb)6WDMFJCj6OkR1sqS(|~Ip{8GcvTJeSbUsj#o{^Ss`{GSA?MmnW z*>BGVrM{ncxnxTGBXrATga(EmCK@Z_5-#a#qe#C3@&)O0So9E?aXDLq^a%>^QOV=D zQF#P}YnlY}_^8I`)b>F_*;{}DC$chqE6keL8XBU7=-XBro*0<{_K8MN{1uOD5lK|W z>52K+mdygjQ|J>VFr}{1Q-@g?GvD;PcVg3|2PvKq0is5`CS|8ChLy3?BwVd-09N-Y zCx=zg0+$hkkD_Jt5V!?T|xLUvmpx|`4-;S9B+t;cZ8QcEV)N?DP-~Kxb!N`wq5j3e;GPa4$7^rk3Ax)D=_+B9B1a(*& z@mIp_3%_UhZDU!k>ZCg#?BYDH=%*+^17L7nMWw(=c|T^KjXxgV2(??kGBi+$(b2X2 z=)-el7yxH2@;>Aze(9bJF`^p0M)_+fW@dVh|TjV$(5KIv!;?vcW&S!ePae$`>oMF=u~{P^Nd`hd2up zZy63a&P2sVLnhnb7#XuS&{Ut9$>8EOFM0PFfg+PBR*hoCju0+Xa6H_|J2dIMSntP? z6@T#LqO&A5=g6q0$g)&IF{uc=mB}=ePOW4(jfjcLC<9%q>Yt&TYu)<-c{Nq;pb@ZC zTCe9H%zGB7V?R=Yppwg0P}OQ`-HncL|JD`vtnbg~4k~ajYJRA816I2G`27;b&9fV^ zwx(Q{TcB<5q9j7Y6P7*K#KVmhKTTZSN&9Y`htVVd-Vv;9Y+OgZ%k8L7*DT9EXZY-F zZ)0%~`QrAzbd=fPLkXMfX)(ddotqB3gBg7xci0qpFm5~E$jxK`QFsny)hrtJ0|Mn! zD{CiD0hN`S$VG8<*uq#gwPhWHWwyQa9FpZ&FWh(IcNf-==C)pgsoq>cdpU&g*V#KN zH0kiF349h0{G~f>-@<3yUQ>IhE=oP+ zYa}YZ-Tseurb!}XZ6m-=%AIr|AejF?C0#Ae?97<|I5yQ=uxs~0qOCrZ(0 zAZze=B|oeDnkwy*#aRn2vKxOR^kfkZ9RP!HCZ+za&imRZ!zw9F9*-f$P#`z=I4G3O zB!VKNxqPPTrz$!!E-T4>!YHQ2yi2 zv(diDipo+q;H}#m4YT=7c##B+rQpzDY7=D*JS-8LH-$(WT>ntQQr7hSNs^}D1_E?}-8TYZE#sJ#o^Q_w8>zGX zm6FW*pI(lZ4@PT=-gF^)Vc(q4-j9DXzx%w<{X75z3^JD3x8wVA*=o?M>xUve zbWxl8cDuiR;UM^NA4)CWh6oiZy$RwK7RY}Ja;d05XV656*Fc#Mj=fLeI!NqtDhkOI z@EBCte=SGqFYbr5K<&uuXmgw8XFO2)_04ZG|)$88wvt-uNusQRznO zauYhg#I-lHBf;iB>-F73f&YhSYj zMJ%b{I-j7dY*w>c)?U(1{;3vuI*zhu$?>^`MZ&|FuGx*lgs#(-3}wSD8=Qp#y#>73 z?OchEFKrTB%k90-)W3X|O^x~H7%au-heMgm-e)N=>=`%!eebrI>v~k!k%Cu$-rc<8 zghXY7-WB0@rqYJ2jq3+H?n=TjNlt1L7#)284nze{6XQgXtXU_#uIWcvGqOXKiH<)#NUBSq(M0jP}@qT85{#KkQd!mfiDU;MZ&u<$|Za zf7YU5NwWxhLd7jJ-d445@Z)y?tanuIxqxwTR;{k=wSDw5l`E>``y_m1ATR;%|5`k%R2jvwD@Dewai3Yfj31Am*ixwtymY1-K`Te+Iq{q?a|9aRrEz=8qt z(?@(fVZ4Md3}aClg&H*|hGFk%iqK&!a4izA%Z zl>~tJ=l!wpJxcIJun2Tk4T`0Tg`}2Sn>!?_0ys9^_&COaE-Tg&gnAH|g=0D5X>}Ov z+n6IxQviC!a6qK3Mv50zGY6g|^RX3W@4Bx#A&w&I3sVggkI_{%W6l<3aBUl0rm1t# z^7{YKB{*@k+zr%24b(;S4_$wEhy9Pbzgoja&(;I;a}=oEZUxdN%L+3KntaVCG_dv0 zj--`wvn^r8=pC|B+dTy;;J9qtgdaa$?0k_c+eD~h=gUeelKoB{ADp<(E!KSPlSx{f zn&>51&OwV_t_wf)Teq89-iC{bkm0tolsZ(8Gomo4rIDme2Jvb#ndG=NTpL@=Wp=zT zJol1zQmYV1kl!2G7U2-VZr3|ybOjQ2*!Ybx(=~OXnec=@rqy#q^dIA{NzJ0XtIMm& zm3OKOy{*21{c}K@JLTl}fP#&I!g2l~{EuWsX9q`@zeY7XuHHV71w;I6&%oXOIBOn+ zB}SMO2(8Vsj2@x8AEhn%hFEmPyO%s4r^)Eo8rSP(egdJRAbZ2AIXdcjDhe3YO8)$i ztgc>84)QU+8a_cQNZ$59%26^N*DpIxqt%O0Oh^=WL`Uh+cQuf@QP)CFM z_~Y3^(|xWxkyvzFOlV0aPB>ImdR?+UW3c2uuz4K9IU1E+`%he+g`}dT}(APC);6hP~p^_=Z>+mY+lP=nM~7HWeb%>u*;!+nT$sF-Qj)r2E0Q4dc6ru*hUJ+ zaN)WR)G6H&WjL0dS~+SOOccJ?>w#sVZ7U2Q3iCf|4J z+qLgf=~1@)(cEDJ4=MYaH%YaJc2nik8uSF@UbDjsUkG)tk+Ksx&>FMR&tip@1@Ovp^YEUpB*{Z^Q%YZj zC~$Qu`0dO*r2Bbs62LOk`lbicjMLXzK+HhKSVq7(Ny9pO#Mnx=pIs zul}{8xSRW{!esrCDJ{dWEarv?TT8(udzyAj%p7C4n%-G?_Dt6!KEI zS)P6A3g5V6~;oA{3H!h)^6BF0mvLn&Ccz5s+Nzb|6Sif6$FF0Wy zhN7ysh#t=Q4d8Lr{Sb}3`rT}N;rP?IldAqCdN_v2A0MGxTGE($_D;AWxp!AJwWdef zef41g)~0)I@4EX&PG2m#`{wfwbiba4-pFCFmpC(&eKscF_ipr_{%{nIFJK6Lrswk7 zO?ks9C=|1FZ}&fZ-#?I=h{KJ;coNIiIiu@eux`Ec-~nu>VpcEaVC?0&^_Z#=z-%|z z=_}R2=JC~3rb5BG_xEV09}06OSf6&L`RBMoC;@nf7-$A zylqyqc!jA!lB)@c*30Hi?E5zLdkxdTUBi2a@EhMrMa-9v9(Z{P1bqBGBxq1Yechk# zdbh64cY8v7dJOD|+3)tA2e$3Cb$KQhhBdfYOML?Dmo-pN*P~CU$E$tUQ*|PU3@n3P zcx!zKE;fewxKP%HqU=+=!Ryo?`P(1x|D3T3##Su4AwfWbNI*cafio7cara--6maDQ zygu!XtZbRA9nCDR)NLHm)i4A*y|`)Zrcr1ZF`x%J+4_nYKhuM8S$!`_;woaSbqbMA zlt<5?GWxoh0?3Yk0eK7+@cyXBP<736Qk)OqQx+GNghqkKz!@R4zU36aFaW>Z+$w@q z42n0Hx!hWR>&d#`a+&4zIGWWkCQpa~FAN>Y21}u5sk4l)1#@as@eU zZ6DYJu>rG0m?&smGS=>}ZI|AGXNU^m7z^P@)q%t2CBXCxwBGA*I)h=sKvp2${HP_L z2F`*YRFEEH8|E z3cFjLYC)S~yijzFjtRoC#`s!v(HS~Uiy9S}B);Weo7;7lVMl$B(BR3K)^f%u6vYz5 zOuwxsmfB5IqL`JkWmCM~D4)`L7zq@g$c`miB2X>tJF8FcV`5Q63vM5K z58vz*-5THTEPna)K<9S9jt2z@_2&*%Vn?vF`XwllZ~IUp)6xbW;&t4n^asxhE(IsJ zYE+*h*31IjEvbW=lT+#PziAIx3tGRgZ<=h|ZdALs2qx`2oNWOpdAbaI5;Kf%9BUd^ES;@3qz5eF^jU1!4CqlnXcW-NW z_jHF-`eo7AT?dxTUZs8I>8n$k{m+-rZrbNmb8FqL(s$A!3Mwlny`Hn~jn%I3mv7XL zsy71fDK@grSiA5;*2VbulYJ}GKIa4r)~#ZhZ2MxK;n^o#EIwV{Mx9M69llNJY!}`y zsB(!f(YkN0_SxZ(nm)^n-`w*e*@d?~6>PY!+OTFOXEfiuPUSe37qg!Bb@*;Ho}ajn zVZxrDm9N&9aL@ByzUX3iMchksrkHyIz5nh?_Qu_7`smN}hR@}+asw+!<-#$|PQFT}DVD$UX>!&>N2rfST>RP*8 z-II%3U&~e3JYKeZUfr{s&*#-IEIxg0dR$%V?bYk|{=9bE`d;Ps?C0zH?e2X(d9U`j z{ogmI566F%v8-D2z2g4M{Bt$G?|%QAUT;zV@X`AHvA_QI+y7rwYIuNmid{zR4VE_5 z7Uila@xx}pjT1jSE-F3TCH69QbzA@W=*g23Z*Hip{yu^8=ec6#S4W&z&J<4n=4<8e z9jvu`>!Dl!gHxGXRbN^0y_CtbP)=|8S@6`0uVe%NvL-gEj0KHYiT}nO-wxRacr!AI zFoTB2IT+5)G>=#tv~=QBU<>sWaLf(V?SO#>pcn%~v@>upI5n>%KBTfBwKx{kIzu<0 zQq9}p2TK^X9AU61ZosS(fAxF0%IY^Tz=-SaIUJ%+lOQG7)reV-c zK%a;}n6SGHY68l%1iF6oQDcODze=cn^f6>~BhdTb2qWAZu=d8$4M6YcA`FmkL^c3h zw-? iterators; - - /** - * Creates a new composite iterator on the provided collection of iterators. - */ - public CompositeFacetCountIterator(Collection iterators) { - this.iterators = iterators; - for (FacetCountIterator iterator : iterators) { - iterator.setIncrementData(this.incrementData); - } - } - - @Override - public void collect(int docID) throws IOException { - for (FacetCountIterator iterator : iterators) { - iterator.collect(docID); - } - } - - @Override - protected void addProof(int docID, long termID, int fieldID) { - for (FacetCountIterator iterator : iterators) { - iterator.addProof(docID, termID, fieldID); - } - } - - @Override - public void setProofs(List> proof) { - for (FacetCountIterator iterator : iterators) { - iterator.setProofs(proof); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/DummyFacetAccumulator.docx b/src/java/com/twitter/search/core/earlybird/facets/DummyFacetAccumulator.docx new file mode 100644 index 0000000000000000000000000000000000000000..d49188eabb5672b1130b493a745b28d62e2a8c7a GIT binary patch literal 36956 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 extends FacetAccumulator { - - @Override - public int add(long termID, int scoreIncrement, int penaltyCount, int tweepCred) { - return 0; - } - - @Override - public R getAllFacets() { - return null; - } - - @Override - public R getTopFacets(int n) { - return null; - } - - @Override - public void reset(FacetLabelProvider facetLabelProvider) { - } - -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacetDocValueSet.docx b/src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacetDocValueSet.docx new file mode 100644 index 0000000000000000000000000000000000000000..996d25c7f5e08083a137ce289b8d1873f380e42b GIT binary patch literal 38296 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacetDocValueSet.java b/src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacetDocValueSet.java deleted file mode 100644 index ae7be787a..000000000 --- a/src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacetDocValueSet.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.twitter.search.core.earlybird.facets; - -import java.util.Map; -import java.util.Map.Entry; - -import com.google.common.base.Preconditions; - -import org.apache.lucene.facet.FacetsConfig; -import org.apache.lucene.index.ReaderUtil; -import org.apache.lucene.index.SortedSetDocValues; -import org.apache.lucene.util.BytesRef; -import org.apache.lucene.util.BytesRefBuilder; - -import com.twitter.search.core.earlybird.index.inverted.InvertedIndex; - -public class EarlybirdFacetDocValueSet extends SortedSetDocValues { - private final AbstractFacetCountingArray countingArray; - private final InvertedIndex[] labelProviders; - private final String[] fieldNames; - private final int[] starts; - private final BytesRefBuilder ordCache; - private int totalTerms; - private int docID = -1; - private int currentFacet = FacetCountingArray.UNASSIGNED; - private int pointer = -1; - private boolean hasMoreOrds = false; - - public static final String FIELD_NAME = FacetsConfig.DEFAULT_INDEX_FIELD_NAME; - - /** - * Creates a new EarlybirdFacetDocValueSet from the provided FacetCountingArray. - */ - public EarlybirdFacetDocValueSet(AbstractFacetCountingArray countingArray, - Map labelProviderMap, - FacetIDMap facetIdMap) { - this.countingArray = countingArray; - labelProviders = new InvertedIndex[facetIdMap.getNumberOfFacetFields()]; - fieldNames = new String[facetIdMap.getNumberOfFacetFields()]; - for (Entry entry : labelProviderMap.entrySet()) { - FacetLabelProvider labelProvider = entry.getValue(); - if (labelProvider instanceof InvertedIndex) { - FacetIDMap.FacetField facetField = facetIdMap.getFacetFieldByFacetName(entry.getKey()); - if (facetField != null) { - labelProviders[facetField.getFacetId()] = (InvertedIndex) labelProvider; - fieldNames[facetField.getFacetId()] = entry.getKey(); - } - } - } - - starts = new int[labelProviders.length + 1]; // build starts array - ordCache = new BytesRefBuilder(); - totalTerms = 0; - - for (int i = 0; i < labelProviders.length; ++i) { - if (labelProviders[i] != null) { - starts[i] = totalTerms; - int termCount = labelProviders[i].getNumTerms(); - totalTerms += termCount; - } - } - - // added to so that mapping from ord to index works via ReaderUtil.subIndex - starts[labelProviders.length] = totalTerms; - } - - private long encodeOrd(int fieldId, int termId) { - assert starts[fieldId] + termId < starts[fieldId + 1]; - return starts[fieldId] + termId; - } - - @Override - public long nextOrd() { - if (!hasMoreOrds || currentFacet == FacetCountingArray.UNASSIGNED) { - return SortedSetDocValues.NO_MORE_ORDS; - } - - // only 1 facet val - if (!FacetCountingArray.isPointer(currentFacet)) { - int termId = FacetCountingArray.decodeTermID(currentFacet); - int fieldId = FacetCountingArray.decodeFieldID(currentFacet); - hasMoreOrds = false; - return encodeOrd(fieldId, termId); - } - - // multiple facets, follow the pointer to find all facets in the facetsPool. - if (pointer == -1) { - pointer = FacetCountingArray.decodePointer(currentFacet); - } - int facetID = countingArray.getFacetsPool().get(pointer); - int termId = FacetCountingArray.decodeTermID(facetID); - int fieldId = FacetCountingArray.decodeFieldID(facetID); - - hasMoreOrds = FacetCountingArray.isPointer(facetID); - pointer++; - return encodeOrd(fieldId, termId); - } - - @Override - public BytesRef lookupOrd(long ord) { - int idx = ReaderUtil.subIndex((int) ord, this.starts); - if (labelProviders[idx] != null) { - int termID = (int) ord - starts[idx]; - BytesRef term = new BytesRef(); - labelProviders[idx].getTerm(termID, term); - String name = fieldNames[idx]; - String val = FacetsConfig.pathToString(new String[] {name, term.utf8ToString()}); - ordCache.copyChars(val); - } else { - ordCache.copyChars(""); - } - return ordCache.get(); - } - - @Override - public long lookupTerm(BytesRef key) { - throw new UnsupportedOperationException(); - } - - @Override - public long getValueCount() { - return totalTerms; - } - - @Override - public int docID() { - return docID; - } - - @Override - public int nextDoc() { - return ++docID; - } - - @Override - public int advance(int target) { - Preconditions.checkState(target >= docID); - docID = target; - currentFacet = countingArray.getFacet(docID); - pointer = -1; - hasMoreOrds = true; - return docID; - } - - @Override - public boolean advanceExact(int target) { - return advance(target) != FacetCountingArray.UNASSIGNED; - } - - @Override - public long cost() { - return totalTerms; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacets.docx b/src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacets.docx new file mode 100644 index 0000000000000000000000000000000000000000..34ed2ab3be034abc4e6f7774b3c506df19fc05a1 GIT binary patch literal 37874 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacets.java b/src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacets.java deleted file mode 100644 index 8872d2049..000000000 --- a/src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacets.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.twitter.search.core.earlybird.facets; - -import java.io.IOException; -import java.util.List; -import java.util.Map; - -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; - -import org.apache.lucene.facet.FacetResult; -import org.apache.lucene.facet.Facets; -import org.apache.lucene.facet.FacetsCollector; -import org.apache.lucene.facet.FacetsCollector.MatchingDocs; -import org.apache.lucene.util.BitDocIdSet; -import org.apache.lucene.util.BitSet; - -import com.twitter.search.common.facets.FacetSearchParam; -import com.twitter.search.common.facets.thriftjava.FacetFieldRequest; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; - -/** - * Lucene accumulator implementation that counts on our facet counting array data structure. - * - */ -public class EarlybirdFacets extends Facets { - - private final AbstractFacetCountingArray countingArray; - private final FacetCountAggregator aggregator; - private final EarlybirdIndexSegmentAtomicReader reader; - private final MatchingDocs matchingDocs; - private final Map resultMapping; - - /** - * Constructs an EarlybirdFacets accumulator. - */ - public EarlybirdFacets( - List facetSearchParams, - FacetsCollector facetsCollector, - EarlybirdIndexSegmentAtomicReader reader) throws IOException { - - Preconditions.checkArgument(facetSearchParams != null && !facetSearchParams.isEmpty()); - Preconditions.checkArgument( - facetsCollector != null - && facetsCollector.getMatchingDocs() != null - && facetsCollector.getMatchingDocs().size() == 1); - Preconditions.checkNotNull(reader); - - this.countingArray = reader.getSegmentData().getFacetCountingArray(); - this.reader = reader; - this.aggregator = new FacetCountAggregator(facetSearchParams, - reader.getSegmentData().getSchema(), - reader.getFacetIDMap(), - reader.getSegmentData().getPerFieldMap()); - this.matchingDocs = facetsCollector.getMatchingDocs().get(0); - - this.resultMapping = count(); - } - - private Map count() throws IOException { - Preconditions.checkState(matchingDocs.bits instanceof BitDocIdSet, - "Assuming BitDocIdSet"); - final BitSet bits = ((BitDocIdSet) matchingDocs.bits).bits(); - final int length = bits.length(); - int doc = reader.getSmallestDocID(); - if (doc != -1) { - while (doc < length && (doc = bits.nextSetBit(doc)) != -1) { - countingArray.collectForDocId(doc, aggregator); - doc++; - } - } - return aggregator.getTop(); - } - - @Override - public FacetResult getTopChildren(int topN, String dim, String... path) throws IOException { - FacetFieldRequest facetFieldRequest = new FacetFieldRequest(dim, topN); - if (path.length > 0) { - facetFieldRequest.setPath(Lists.newArrayList(path)); - } - - FacetResult result = resultMapping.get(facetFieldRequest); - - Preconditions.checkNotNull( - result, - "Illegal facet field request: %s, supported requests are: %s", - facetFieldRequest, - resultMapping.keySet()); - - return result; - } - - @Override - public Number getSpecificValue(String dim, String... path) { - throw new UnsupportedOperationException("Not supported"); - } - - @Override - public List getAllDims(int topN) throws IOException { - throw new UnsupportedOperationException("Not supported"); - } - -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacetsFactory.docx b/src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacetsFactory.docx new file mode 100644 index 0000000000000000000000000000000000000000..7128b119fd22026ece06dc659ca9a4d523b4a1b8 GIT binary patch literal 37245 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacetsFactory.java b/src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacetsFactory.java deleted file mode 100644 index a790cd6f7..000000000 --- a/src/java/com/twitter/search/core/earlybird/facets/EarlybirdFacetsFactory.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.twitter.search.core.earlybird.facets; - -import java.io.IOException; -import java.util.List; - -import org.apache.lucene.facet.Facets; -import org.apache.lucene.facet.FacetsCollector; - -import com.twitter.search.common.facets.CountFacetSearchParam; -import com.twitter.search.common.facets.FacetSearchParam; -import com.twitter.search.common.facets.FacetsFactory; -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; - -/** - * Factory for EarlybirdFacets - */ -public class EarlybirdFacetsFactory implements FacetsFactory { - private final EarlybirdIndexSegmentAtomicReader reader; - - public EarlybirdFacetsFactory(EarlybirdIndexSegmentAtomicReader reader) { - this.reader = reader; - } - - @Override - public Facets create( - List facetSearchParams, - FacetsCollector facetsCollector) throws IOException { - - return new EarlybirdFacets(facetSearchParams, facetsCollector, reader); - } - - @Override - public boolean accept(FacetSearchParam facetSearchParam) { - if (!(facetSearchParam instanceof CountFacetSearchParam) - || (facetSearchParam.getFacetFieldRequest().getPath() != null - && !facetSearchParam.getFacetFieldRequest().getPath().isEmpty())) { - return false; - } - - String field = facetSearchParam.getFacetFieldRequest().getField(); - Schema.FieldInfo facetInfo = reader.getSegmentData().getSchema() - .getFacetFieldByFacetName(field); - - return facetInfo != null - && reader.getSegmentData().getPerFieldMap().containsKey(facetInfo.getName()); - } -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/FacetAccumulator.docx b/src/java/com/twitter/search/core/earlybird/facets/FacetAccumulator.docx new file mode 100644 index 0000000000000000000000000000000000000000..6f50a2d19fb3a13c99731e03b14a17ccdb53c2f9 GIT binary patch literal 37414 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 { - /** Called to notify the accumulator that the given termID has occurred in a document - * Returns the current count of the given termID. - */ - public abstract int add(long termID, int scoreIncrement, int penaltyIncrement, int tweepCred); - - /** After hit collection is done this can be called to - * retrieve the items that occurred most often */ - public abstract R getTopFacets(int n); - - /** After hit collection is done this can be called to retrieve all the items accumulated - * (which may not be all that occurred) */ - public abstract R getAllFacets(); - - /** Called to reset a facet accumulator for re-use. This is an optimization - * which takes advantage of the fact that these accumulators may allocate - * large hash-tables, and we use one per-segment, which may be as many as 10-20 **/ - public abstract void reset(FacetLabelProvider facetLabelProvider); - - /** Language histogram accumulation and retrieval. They both have no-op default implementations. - */ - public void recordLanguage(int languageId) { } - - public LanguageHistogram getLanguageHistogram() { - return LanguageHistogram.EMPTY_HISTOGRAM; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/FacetCountAggregator.docx b/src/java/com/twitter/search/core/earlybird/facets/FacetCountAggregator.docx new file mode 100644 index 0000000000000000000000000000000000000000..5209ebc46a24a2e9aaa1539bf56ac7729112ce3b GIT binary patch literal 37819 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 aggregators; - private final Map facetSearchParamMap; - - /** - * Creates a new facet aggregator. - */ - public FacetCountAggregator( - List facetSearchParams, - Schema schema, - FacetIDMap facetIDMap, - Map labelProviderMap) { - - aggregators = Maps.newHashMap(); - facetSearchParamMap = Maps.newHashMap(); - - // Check params: - for (FacetSearchParam facetSearchParam : facetSearchParams) { - if (!(facetSearchParam instanceof CountFacetSearchParam)) { - throw new IllegalArgumentException( - "this collector only supports CountFacetSearchParam; got " + facetSearchParam); - } - if (facetSearchParam.getFacetFieldRequest().getPath() != null - && !facetSearchParam.getFacetFieldRequest().getPath().isEmpty()) { - throw new IllegalArgumentException( - "this collector dosen't support hierarchical facets: " - + facetSearchParam.getFacetFieldRequest().getPath()); - } - - String field = facetSearchParam.getFacetFieldRequest().getField(); - Schema.FieldInfo facetField = - schema == null ? null : schema.getFacetFieldByFacetName(field); - - if (facetField == null || !labelProviderMap.containsKey(facetField.getName())) { - throw new IllegalStateException("facet field: " + field + " is not defined"); - } - - int fieldId = facetIDMap.getFacetField(facetField).getFacetId(); - Preconditions.checkState(!aggregators.containsKey(fieldId)); - Preconditions.checkState(!facetSearchParamMap.containsKey(fieldId)); - aggregators.put(fieldId, new PerfieldFacetCountAggregator(field, - labelProviderMap.get(facetField.getName()))); - facetSearchParamMap.put(fieldId, facetSearchParam); - } - } - - /** - * Returns the top facets. - */ - public Map getTop() { - Map map = Maps.newHashMap(); - for (Entry entry : aggregators.entrySet()) { - FacetSearchParam facetSearchParam = facetSearchParamMap.get(entry.getKey()); - map.put(facetSearchParam.getFacetFieldRequest(), entry.getValue().getTop(facetSearchParam)); - } - return map; - } - - @Override - public boolean collect(int docID, long termID, int fieldID) { - PerfieldFacetCountAggregator perfieldAggregator = aggregators.get(fieldID); - if (perfieldAggregator != null) { - perfieldAggregator.collect((int) termID); - return true; - } else { - return false; - } - } - -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/FacetCountIterator.docx b/src/java/com/twitter/search/core/earlybird/facets/FacetCountIterator.docx new file mode 100644 index 0000000000000000000000000000000000000000..b0eb4993e1e431ead2012b1ab0db22cc0324d9ce GIT binary patch literal 37377 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 proofs = null; - - void setIncrementData(IncrementData incrementData) { - this.incrementData = incrementData; - } - - public void setProofs(List> proofs) { - this.proofs = proofs; - } - - // interface method that collects a specific term in a specific field for this document. - @Override - public boolean collect(int docID, long termID, int fieldID) { - FacetAccumulator accumulator = incrementData.accumulators[fieldID]; - accumulator.add(termID, incrementData.weightedCountIncrement, incrementData.penaltyIncrement, - incrementData.tweepCred); - accumulator.recordLanguage(incrementData.languageId); - - if (proofs != null) { - addProof(docID, termID, fieldID); - } - return true; - } - - protected void addProof(int docID, long termID, int fieldID) { - proofs.add(new Pair<>(fieldID, termID)); - } - - /** - * Collected facets for the given document. - */ - public abstract void collect(int docID) throws IOException; -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/FacetCountIteratorFactory.docx b/src/java/com/twitter/search/core/earlybird/facets/FacetCountIteratorFactory.docx new file mode 100644 index 0000000000000000000000000000000000000000..92d3c4db58aadc261da8cdc9f7d9f2f251a94728 GIT binary patch literal 37048 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 { - private final Set fieldsToCount = new HashSet<>(); - private final Map> facetfieldResults = - new HashMap<>(); - private final int minNumFacetResults; - private final Schema schema; - - public FacetCountState(Schema schema, int minNumFacetResults) { - this.schema = schema; - this.minNumFacetResults = minNumFacetResults; - } - - /** - * Adds a facet to be counted in this request. - */ - public void addFacet(String facetName, int numResultsRequested) { - facetfieldResults.put(facetName, new FacetFieldResults(facetName, - Math.max(numResultsRequested, minNumFacetResults))); - Schema.FieldInfo field = schema.getFacetFieldByFacetName(facetName); - fieldsToCount.add(field); - } - - public Schema getSchema() { - return schema; - } - - public int getNumFieldsToCount() { - return fieldsToCount.size(); - } - - /** - * Returns whether or not there is a field to be counted for which no skip list is stored - */ - public boolean hasFieldToCountWithoutSkipList() { - for (Schema.FieldInfo facetField: fieldsToCount) { - if (!facetField.getFieldType().isStoreFacetSkiplist()) { - return true; - } - } - return false; - } - - public Set getFacetFieldsToCountWithSkipLists() { - return Sets.filter( - fieldsToCount, - facetField -> facetField.getFieldType().isStoreFacetSkiplist()); - } - - public boolean isCountField(Schema.FieldInfo field) { - return fieldsToCount.contains(field); - } - - public Iterator> getFacetFieldResultsIterator() { - return facetfieldResults.values().iterator(); - } - - public static final class FacetFieldResults { - public final String facetName; - public final int numResultsRequested; - public R results; - public int numResultsFound; - public boolean finished = false; - - private FacetFieldResults(String facetName, int numResultsRequested) { - this.facetName = facetName; - this.numResultsRequested = numResultsRequested; - } - - public boolean isFinished() { - return finished || results != null && numResultsFound >= numResultsRequested; - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/FacetCountingArray.docx b/src/java/com/twitter/search/core/earlybird/facets/FacetCountingArray.docx new file mode 100644 index 0000000000000000000000000000000000000000..6c3bc1f6cbe987788441c66fb7d1b5830b45705d GIT binary patch literal 38883 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 termIDMapper, - DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) throws IOException { - Preconditions.checkNotNull(originalTweetIdMapper); - Preconditions.checkNotNull(optimizedTweetIdMapper); - - // We need to rewrite the facet array, because the term ids have to be mapped to the - // key space of the minimum perfect hash function that replaces the hash table. - // We also need to remap tweet IDs to the optimized doc IDs. - int maxDocID = optimizedTweetIdMapper.getPreviousDocID(Integer.MAX_VALUE); - AbstractFacetCountingArray newArray = new OptimizedFacetCountingArray(maxDocID + 1); - final FacetCountingArrayWriter writer = new FacetCountingArrayWriter(newArray); - FacetCountIterator iterator = new ArrayFacetCountIterator() { - @Override - public boolean collect(int docID, long termID, int fieldID) { - int[] termIDMap = termIDMapper.get(fieldID); - int mappedTermID; - // If there isn't a map for this term, we are using the original term IDs and can continue - // with that term ID. If there is a term ID map, then we need to use the new term ID, - // because the new index will use an MPH term dictionary with new term IDs. - if (termIDMap == null) { - mappedTermID = (int) termID; - } else if (termID < termIDMap.length) { - mappedTermID = termIDMap[(int) termID]; - } else { - // During segment optimization we might index a new term after the termIDMap is created - // in IndexOptimizer.optimizeInvertedIndexes(). We can safely ignore these terms, as - // they will be re-indexed later. - return false; - } - - try { - long tweetId = originalTweetIdMapper.getTweetID(docID); - int newDocId = optimizedTweetIdMapper.getDocID(tweetId); - Preconditions.checkState(newDocId != DocIDToTweetIDMapper.ID_NOT_FOUND, - "Did not find a mapping in the new tweet ID mapper for doc ID " - + newDocId + ", tweet ID " + tweetId); - - writer.addFacet(newDocId, fieldID, mappedTermID); - } catch (IOException e) { - LOG.error("Caught an unexpected IOException while optimizing facet.", e); - } - - return true; - } - }; - - // We want to iterate the facets in increasing tweet ID order. This might not correspond to - // decreasing doc ID order in the original mapper (see OutOfOrderRealtimeTweetIDMapper). - // However, the optimized mapper should be sorted both by tweet IDs and by doc IDs (in reverse - // order). So we need to iterate here over the doc IDs in the optimized mapper, convert them - // to doc IDs in the original mapper, and pass those doc IDs to collect(). - int docId = optimizedTweetIdMapper.getPreviousDocID(Integer.MAX_VALUE); - while (docId != DocIDToTweetIDMapper.ID_NOT_FOUND) { - long tweetId = optimizedTweetIdMapper.getTweetID(docId); - int originalDocId = originalTweetIdMapper.getDocID(tweetId); - iterator.collect(originalDocId); - docId = optimizedTweetIdMapper.getPreviousDocID(docId); - } - return newArray; - } - - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - public static final class FlushHandler extends Flushable.Handler { - private static final String FACETS_POOL_PROP_NAME = "facetsPool"; - private final int maxSegmentSize; - - public FlushHandler(int maxSegmentSize) { - this.maxSegmentSize = maxSegmentSize; - } - - public FlushHandler(FacetCountingArray objectToFlush) { - super(objectToFlush); - maxSegmentSize = -1; - } - - @Override - public void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - FacetCountingArray array = getObjectToFlush(); - out.writeInt(array.facetsMap.size()); - for (Int2IntOpenHashMap.Entry entry : array.facetsMap.int2IntEntrySet()) { - out.writeInt(entry.getIntKey()); - out.writeInt(entry.getIntValue()); - } - array.getFacetsPool().getFlushHandler().flush( - flushInfo.newSubProperties(FACETS_POOL_PROP_NAME), out); - } - - @Override - public FacetCountingArray doLoad(FlushInfo flushInfo, DataDeserializer in) throws IOException { - int size = in.readInt(); - Int2IntOpenHashMap facetsMap = new Int2IntOpenHashMap(maxSegmentSize); - facetsMap.defaultReturnValue(UNASSIGNED); - for (int i = 0; i < size; i++) { - facetsMap.put(in.readInt(), in.readInt()); - } - IntBlockPool facetsPool = new IntBlockPool.FlushHandler().load( - flushInfo.getSubProperties(FACETS_POOL_PROP_NAME), in); - return new FacetCountingArray(facetsMap, facetsPool); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/FacetCountingArrayWriter.docx b/src/java/com/twitter/search/core/earlybird/facets/FacetCountingArrayWriter.docx new file mode 100644 index 0000000000000000000000000000000000000000..24cc1d03eec64c73fff6a100e8c85c8126dd251f GIT binary patch literal 37545 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/facets/FacetCountingArrayWriter.java b/src/java/com/twitter/search/core/earlybird/facets/FacetCountingArrayWriter.java deleted file mode 100644 index f02d52bfb..000000000 --- a/src/java/com/twitter/search/core/earlybird/facets/FacetCountingArrayWriter.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.twitter.search.core.earlybird.facets; - -import com.twitter.search.core.earlybird.index.inverted.IntBlockPool; - -public class FacetCountingArrayWriter { - private final AbstractFacetCountingArray facetCountingArray; - private int previousDocID = -1; - - public FacetCountingArrayWriter(AbstractFacetCountingArray array) { - facetCountingArray = array; - } - - /** - * Adds a facet for the given doc, field and term tuple. - * - * The layout of the packedValues in the term pool is: - * - * index |0 |1 |2 |3 |4 |5 |6 |7 |8 |9 | - * value |U |1a|1b|1c|U |2b|2c|P3|1d|1f| - * - * Where U is UNASSIGNED, P+X is a pointer to index X (e.g. P3 means pointer to index 3), - * or a doc ID and facet (e.g. doc ID 1 and facet a would be 1a). - */ - public void addFacet(int docID, int fieldID, int termID) { - IntBlockPool facetsPool = facetCountingArray.getFacetsPool(); - int packedValue = facetCountingArray.getFacet(docID); - - if (packedValue == AbstractFacetCountingArray.UNASSIGNED) { - // first facet for this doc. - // keep it in the array and don't add it to the map. - facetCountingArray.setFacet(docID, AbstractFacetCountingArray.encodeFacetID(fieldID, termID)); - return; - } - - if (!FacetCountingArray.isPointer(packedValue)) { - // If the packedValue is not a pointer, we know that we have exactly one facet in the index - // for this document, so copy the existing facet into the pool. - facetsPool.add(AbstractFacetCountingArray.UNASSIGNED); - facetsPool.add(packedValue); - } else if (previousDocID != docID) { - // We have seen this document ID in a different document. Store the pointer to the first facet - // for this doc ID in the pool so that we can traverse the linked list. - facetsPool.add(packedValue); - } - - previousDocID = docID; - - // Add the new facet to the end of the FacetCountingArray. - facetsPool.add(AbstractFacetCountingArray.encodeFacetID(fieldID, termID)); - - // Set the facetValue for this document to the pointer to the facet we just added to the array. - int poolPointer = AbstractFacetCountingArray.encodePointer(facetsPool.length() - 1); - facetCountingArray.setFacet(docID, poolPointer); - } -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/FacetIDMap.docx b/src/java/com/twitter/search/core/earlybird/facets/FacetIDMap.docx new file mode 100644 index 0000000000000000000000000000000000000000..bfc3a38290b7261ac07662e596df9b64e45f3343 GIT binary patch literal 38394 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 LSas$H? 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 jJUAcR!Q&Esn_|1OLnA#VU Facet id - * Facet id -> FieldInfo - */ -public final class FacetIDMap implements Flushable { - private final FacetField[] facetIDToFieldMap; - private final Map facetNameToIDMap; - - private FacetIDMap(FacetField[] facetIDToFieldMap) { - this.facetIDToFieldMap = facetIDToFieldMap; - - facetNameToIDMap = Maps.newHashMapWithExpectedSize(facetIDToFieldMap.length); - for (int i = 0; i < facetIDToFieldMap.length; i++) { - facetNameToIDMap.put(facetIDToFieldMap[i].getFacetName(), i); - } - } - - public FacetField getFacetField(Schema.FieldInfo fieldInfo) { - return fieldInfo != null && fieldInfo.getFieldType().isFacetField() - ? getFacetFieldByFacetName(fieldInfo.getFieldType().getFacetName()) : null; - } - - public FacetField getFacetFieldByFacetName(String facetName) { - Integer facetID = facetNameToIDMap.get(facetName); - return facetID != null ? facetIDToFieldMap[facetID] : null; - } - - public FacetField getFacetFieldByFacetID(int facetID) { - return facetIDToFieldMap[facetID]; - } - - public Collection getFacetFields() { - return Arrays.asList(facetIDToFieldMap); - } - - public int getNumberOfFacetFields() { - return facetIDToFieldMap.length; - } - - /** - * Builds a new FacetIDMap from the given schema. - */ - public static FacetIDMap build(Schema schema) { - FacetField[] facetIDToFieldMap = new FacetField[schema.getNumFacetFields()]; - - int facetId = 0; - - for (Schema.FieldInfo fieldInfo : schema.getFieldInfos()) { - if (fieldInfo.getFieldType().isFacetField()) { - facetIDToFieldMap[facetId] = new FacetField(facetId, fieldInfo); - facetId++; - } - } - - return new FacetIDMap(facetIDToFieldMap); - } - - public static final class FacetField { - private final int facetId; - private final Schema.FieldInfo fieldInfo; - - private FacetField(int facetId, Schema.FieldInfo fieldInfo) { - this.facetId = facetId; - this.fieldInfo = fieldInfo; - } - - public int getFacetId() { - return facetId; - } - - public Schema.FieldInfo getFieldInfo() { - return fieldInfo; - } - - public String getFacetName() { - return fieldInfo.getFieldType().getFacetName(); - } - - public String getDescription() { - return String.format( - "(FacetField [facetId: %d, fieldInfo: %s])", - getFacetId(), fieldInfo.getDescription()); - } - } - - @SuppressWarnings("unchecked") - @Override - public FacetIDMap.FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - public static final class FlushHandler extends Flushable.Handler { - private static final String NUM_FACET_FIELDS_PROP_NAME = "numFacetFields"; - - private final Schema schema; - - public FlushHandler(Schema schema) { - this.schema = schema; - } - - public FlushHandler(FacetIDMap objectToFlush) { - super(objectToFlush); - // schema only needed here for loading, not for flushing - this.schema = null; - } - - @Override - public void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - FacetIDMap toFlush = getObjectToFlush(); - int[] idMap = new int[toFlush.facetIDToFieldMap.length]; - for (int i = 0; i < toFlush.facetIDToFieldMap.length; i++) { - idMap[i] = toFlush.facetIDToFieldMap[i].getFieldInfo().getFieldId(); - } - out.writeIntArray(idMap); - - flushInfo.addIntProperty(NUM_FACET_FIELDS_PROP_NAME, idMap.length); - } - - - @Override - public FacetIDMap doLoad(FlushInfo flushInfo, DataDeserializer in) throws IOException { - int[] idMap = in.readIntArray(); - if (idMap.length != schema.getNumFacetFields()) { - throw new IOException("Wrong number of facet fields. Expected by schema: " - + schema.getNumFacetFields() - + ", but found in serialized segment: " + idMap.length); - } - - FacetField[] facetIDToFieldMap = new FacetField[schema.getNumFacetFields()]; - - for (int i = 0; i < idMap.length; i++) { - int fieldConfigId = idMap[i]; - facetIDToFieldMap[i] = new FacetField(i, schema.getFieldInfo(fieldConfigId)); - } - - return new FacetIDMap(facetIDToFieldMap); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/FacetLabelProvider.docx b/src/java/com/twitter/search/core/earlybird/facets/FacetLabelProvider.docx new file mode 100644 index 0000000000000000000000000000000000000000..45c11150605e750620eb7ea80c8938203e0f8e7f GIT binary patch literal 38143 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/facets/FacetLabelProvider.java b/src/java/com/twitter/search/core/earlybird/facets/FacetLabelProvider.java deleted file mode 100644 index 8f653e0eb..000000000 --- a/src/java/com/twitter/search/core/earlybird/facets/FacetLabelProvider.java +++ /dev/null @@ -1,206 +0,0 @@ -package com.twitter.search.core.earlybird.facets; - -import org.apache.lucene.util.BytesRef; - -import com.twitter.search.common.hashtable.HashTable; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.util.analysis.IntTermAttributeImpl; -import com.twitter.search.common.util.analysis.LongTermAttributeImpl; -import com.twitter.search.common.util.analysis.SortableLongTermAttributeImpl; -import com.twitter.search.core.earlybird.index.inverted.InvertedIndex; - -/** - * Given a termID this accessor can be used to retrieve the term bytesref and text - * that corresponds to the termID. - */ -public interface FacetLabelProvider { - /** - * Returns a {@link FacetLabelAccessor} for this provider. - */ - FacetLabelAccessor getLabelAccessor(); - - abstract class FacetLabelAccessor { - private int currentTermID = -1; - - protected final BytesRef termRef = new BytesRef(); - protected boolean hasTermPayload = false; - protected final BytesRef termPayload = new BytesRef(); - protected int offensiveCount = 0; - - protected final boolean maybeSeek(long termID) { - if (termID == currentTermID) { - return true; - } - - if (seek(termID)) { - currentTermID = (int) termID; - return true; - } else { - currentTermID = -1; - return false; - } - } - - // Seek to term id provided. Returns true if term found. Should update termRef, - // hasTermPayload, and termPayload as appropriate. - protected abstract boolean seek(long termID); - - public final BytesRef getTermRef(long termID) { - return maybeSeek(termID) ? termRef : null; - } - - public String getTermText(long termID) { - return maybeSeek(termID) ? termRef.utf8ToString() : null; - } - - public final BytesRef getTermPayload(long termID) { - return maybeSeek(termID) && hasTermPayload ? termPayload : null; - } - - public final int getOffensiveCount(long termID) { - return maybeSeek(termID) ? offensiveCount : 0; - } - } - - /** - * Assumes the term is stored as an IntTermAttribute, and uses this to convert - * the term bytesref to an integer string facet label. - */ - class IntTermFacetLabelProvider implements FacetLabelProvider { - private final InvertedIndex invertedIndex; - - public IntTermFacetLabelProvider(InvertedIndex invertedIndex) { - this.invertedIndex = invertedIndex; - } - - @Override - public FacetLabelAccessor getLabelAccessor() { - return new FacetLabelAccessor() { - @Override - protected boolean seek(long termID) { - if (termID != HashTable.EMPTY_SLOT) { - invertedIndex.getTerm((int) termID, termRef); - return true; - } - return false; - } - - @Override - public String getTermText(long termID) { - return maybeSeek(termID) - ? Integer.toString(IntTermAttributeImpl.copyBytesRefToInt(termRef)) - : null; - } - }; - } - } - - /** - * Assumes the term is stored as an LongTermAttribute, and uses this to convert - * the term bytesref to an long string facet label. - */ - class LongTermFacetLabelProvider implements FacetLabelProvider { - private final InvertedIndex invertedIndex; - - public LongTermFacetLabelProvider(InvertedIndex invertedIndex) { - this.invertedIndex = invertedIndex; - } - - @Override - public FacetLabelAccessor getLabelAccessor() { - return new FacetLabelAccessor() { - @Override - protected boolean seek(long termID) { - if (termID != HashTable.EMPTY_SLOT) { - invertedIndex.getTerm((int) termID, termRef); - return true; - } - return false; - } - - @Override - public String getTermText(long termID) { - return maybeSeek(termID) - ? Long.toString(LongTermAttributeImpl.copyBytesRefToLong(termRef)) - : null; - } - }; - } - } - - class SortedLongTermFacetLabelProvider implements FacetLabelProvider { - private final InvertedIndex invertedIndex; - - public SortedLongTermFacetLabelProvider(InvertedIndex invertedIndex) { - this.invertedIndex = invertedIndex; - } - - @Override - public FacetLabelAccessor getLabelAccessor() { - return new FacetLabelAccessor() { - @Override - protected boolean seek(long termID) { - if (termID != HashTable.EMPTY_SLOT) { - invertedIndex.getTerm((int) termID, termRef); - return true; - } - return false; - } - - @Override - public String getTermText(long termID) { - return maybeSeek(termID) - ? Long.toString(SortableLongTermAttributeImpl.copyBytesRefToLong(termRef)) - : null; - } - }; - } - } - - class IdentityFacetLabelProvider implements FacetLabelProvider { - @Override - public FacetLabelAccessor getLabelAccessor() { - return new FacetLabelAccessor() { - @Override - protected boolean seek(long termID) { - return true; - } - - @Override - public String getTermText(long termID) { - return Long.toString(termID); - } - }; - } - } - - /** - * The methods on this provider should NOT be called under normal circumstances! - * - * When a facet misses inverted index and does not use CSF, this InaccessibleFacetLabelProvider - * will be used as a dummy provider. Then, unexptectedFacetLabelAccess counter will be - * incremented when this provider is used later. - * - * Also see: - * {@link FacetUtil} - */ - class InaccessibleFacetLabelProvider implements FacetLabelProvider { - private final SearchCounter unexptectedFacetLabelAccess; - - public InaccessibleFacetLabelProvider(String fieldName) { - this.unexptectedFacetLabelAccess = - SearchCounter.export("unexpected_facet_label_access_for_field_" + fieldName); - } - - @Override - public FacetLabelAccessor getLabelAccessor() { - return new FacetLabelAccessor() { - @Override - protected boolean seek(long termID) { - unexptectedFacetLabelAccess.increment(); - return false; - } - }; - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/FacetResponseRewriter.docx b/src/java/com/twitter/search/core/earlybird/facets/FacetResponseRewriter.docx new file mode 100644 index 0000000000000000000000000000000000000000..c7e488b1f38d4f170c287954147d595aa7db412e GIT binary patch literal 36844 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/facets/FacetResponseRewriter.java b/src/java/com/twitter/search/core/earlybird/facets/FacetResponseRewriter.java deleted file mode 100644 index 349805d2d..000000000 --- a/src/java/com/twitter/search/core/earlybird/facets/FacetResponseRewriter.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.twitter.search.core.earlybird.facets; - -import com.twitter.search.common.facets.thriftjava.FacetResponse; - -/** - * Rewrite facet responses - */ -public interface FacetResponseRewriter { - /** - * Do the response rewrite - * - * @param facetResponse the response before the rewriting - * @return the rewrited response - */ - FacetResponse rewrite(FacetResponse facetResponse); -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/FacetTermCollector.docx b/src/java/com/twitter/search/core/earlybird/facets/FacetTermCollector.docx new file mode 100644 index 0000000000000000000000000000000000000000..e7731e498af89d6c8c6c7fad49c47184efb4ae39 GIT binary patch literal 36946 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

    >w(4KtmH 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/facets/FacetTermCollector.java b/src/java/com/twitter/search/core/earlybird/facets/FacetTermCollector.java deleted file mode 100644 index 668b079d3..000000000 --- a/src/java/com/twitter/search/core/earlybird/facets/FacetTermCollector.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.twitter.search.core.earlybird.facets; - -/** - * An interface for collecting all facets in an document. - */ -public interface FacetTermCollector { - /** - * Collect one facet term. - * @param docID The docID for which the facets are being collected. - * @param termID The termID for this facet item. - * @param fieldID The fieldID for this facet item. - * @return True if anything has actually been collected, false if this has been skipped. - * Currently, this return value is not used. - */ - boolean collect(int docID, long termID, int fieldID); -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/FacetUtil.docx b/src/java/com/twitter/search/core/earlybird/facets/FacetUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..6462b3ca7d4f222e8e8ef6912f77d889e5a25dc8 GIT binary patch literal 38102 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 getFacetLabelProviders( - Schema schema, - Map fieldToInvertedIndexMapping) { - - HashMap facetLabelProviderBuilder - = new HashMap<>(); - - for (Schema.FieldInfo fieldInfo : schema.getFacetFields()) { - EarlybirdFieldType fieldType = fieldInfo.getFieldType(); - Preconditions.checkNotNull(fieldType); - String fieldName = fieldInfo.getName(); - String facetName = fieldType.getFacetName(); - InvertedIndex invertedIndex = fieldToInvertedIndexMapping.get(fieldName); - if (invertedIndex == null && !fieldType.isUseCSFForFacetCounting()) { - LOG.warn("No docs in segment had field " + fieldName - + " indexed for facet " + facetName - + " so InaccessibleFacetLabelProvider will be provided." - ); - } - facetLabelProviderBuilder.put(facetName, Preconditions.checkNotNull( - chooseFacetLabelProvider(fieldType, invertedIndex))); - } - - return facetLabelProviderBuilder; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/LanguageHistogram.docx b/src/java/com/twitter/search/core/earlybird/facets/LanguageHistogram.docx new file mode 100644 index 0000000000000000000000000000000000000000..79219e184607af2f95f9c987e05161b29f3dee6f GIT binary patch literal 37709 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 E|4BTIN&o-= literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/facets/LanguageHistogram.java b/src/java/com/twitter/search/core/earlybird/facets/LanguageHistogram.java deleted file mode 100644 index 213519e4e..000000000 --- a/src/java/com/twitter/search/core/earlybird/facets/LanguageHistogram.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.twitter.search.core.earlybird.facets; - -import java.util.Arrays; -import java.util.Map; - -import com.google.common.collect.ImmutableMap; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.constants.thriftjava.ThriftLanguage; - -/** - * A util class to build a language histogram - */ -public class LanguageHistogram { - private static final Logger LOG = LoggerFactory.getLogger(LanguageHistogram.class); - - public static final LanguageHistogram EMPTY_HISTOGRAM = new LanguageHistogram() { - // Let's make this immutable for safety. - @Override public void clear() { - throw new UnsupportedOperationException(); - } - - @Override public void increment(int languageID) { - throw new UnsupportedOperationException(); - } - - @Override public void add(int languageID, int value) { - throw new UnsupportedOperationException(); - } - - @Override public void addAll(LanguageHistogram histogram) { - throw new UnsupportedOperationException(); - } - }; - - private final int[] languageHistogram = new int[ThriftLanguage.values().length]; - - public int[] getLanguageHistogram() { - return languageHistogram; - } - - /** - * Returns this histogram represented as a language->count map. - */ - public Map getLanguageHistogramAsMap() { - ImmutableMap.Builder builder = ImmutableMap.builder(); - for (int i = 0; i < languageHistogram.length; i++) { - // ThriftLanguage.findByValue() might return null, which should fall back to UNKNOWN. - ThriftLanguage lang = ThriftLanguage.findByValue(i); - lang = lang == null ? ThriftLanguage.UNKNOWN : lang; - builder.put(lang, languageHistogram[i]); - } - return builder.build(); - } - - public void clear() { - Arrays.fill(languageHistogram, 0); - } - - public void increment(int languageId) { - if (isValidLanguageId(languageId)) { - languageHistogram[languageId]++; - } - } - - public void increment(ThriftLanguage language) { - increment(language.getValue()); - } - - public void add(int languageId, int value) { - if (isValidLanguageId(languageId)) { - languageHistogram[languageId] += value; - } - } - - public void add(ThriftLanguage language, int value) { - add(language.getValue(), value); - } - - /** - * Adds all entries from the provided histogram to this histogram. - */ - public void addAll(LanguageHistogram histogram) { - if (histogram == EMPTY_HISTOGRAM) { - return; - } - for (int i = 0; i < languageHistogram.length; i++) { - languageHistogram[i] += histogram.languageHistogram[i]; - } - } - - // Check for out of bound languages. If a language is out of bounds, we don't want it - // to cause the entire search to fail. - private boolean isValidLanguageId(int languageId) { - if (languageId < languageHistogram.length) { - return true; - } else { - LOG.error("Language id " + languageId + " out of range"); - return false; - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/OptimizedFacetCountingArray.docx b/src/java/com/twitter/search/core/earlybird/facets/OptimizedFacetCountingArray.docx new file mode 100644 index 0000000000000000000000000000000000000000..d4f5336e5ff252757bd4187e8a0a37b15c40588b GIT binary patch literal 37597 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

    (t;rJz1@d~CY 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 termIDMapper, - DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) { - throw new UnsupportedOperationException( - "OptimizedFacetCountingArray instances should never be rewritten."); - } - - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - public static final class FlushHandler extends Flushable.Handler { - private static final String FACETS_POOL_PROP_NAME = "facetsPool"; - - public FlushHandler() { - } - - public FlushHandler(OptimizedFacetCountingArray objectToFlush) { - super(objectToFlush); - } - - @Override - public void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - OptimizedFacetCountingArray objectToFlush = getObjectToFlush(); - out.writeIntArray(objectToFlush.facetsMap); - objectToFlush.getFacetsPool().getFlushHandler().flush( - flushInfo.newSubProperties(FACETS_POOL_PROP_NAME), out); - } - - @Override - public OptimizedFacetCountingArray doLoad(FlushInfo flushInfo, DataDeserializer in) - throws IOException { - int[] facetsMap = in.readIntArray(); - IntBlockPool facetsPool = new IntBlockPool.FlushHandler().load( - flushInfo.getSubProperties(FACETS_POOL_PROP_NAME), in); - return new OptimizedFacetCountingArray(facetsMap, facetsPool); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/PerfieldFacetCountAggregator.docx b/src/java/com/twitter/search/core/earlybird/facets/PerfieldFacetCountAggregator.docx new file mode 100644 index 0000000000000000000000000000000000000000..961ccd34ea298d04d6258dbf2966a20b270e43ff GIT binary patch literal 37889 zcmagEb9`l8)-4>fVpeS1s2G)0Y}-7sjf!pCwry7`woysN_C57H-Tij=d++!Cv-8Vb zYmPDIocruG*WOEB3LF9*1Ox;IWIBygy-KktE(sI_WE=_v1Py4_5&_scnb-K7<&=L_n)6vOPDuA~O1VdC zelRZY@;2$~O7bM)Czk!T%s`=}_!pD1qbgAcB~A+8aPk*+8t52$jy#8B^sI^f2)7KwT6=#{aY&s{1fMCu1|I;x~%) zon1wsPO(EMCV7mNoAbl|M1;iqE;mSPgt+B#KwNyA(uq)G_-AjxP3$Ocyf>aF=O|tpn8zH5LN$mipAUsIMA3^wwdLVLSba z-IRBOG_2Dj?nn^@O(-5XOjU{aX*bb^w5S`-XN9VTMfGTGBoIr3$`Vj+;hm_|oW1Gi z08jvN>1OuulB%|SYuE5cfo3NOeLumISUVJ@G+AS2EUrRCNqe+g5y_*O=3}7G6opQI{@q)8I1rACVy`7toRAp0VZUz z2QRUC8P%{GWEe3?8qkyQZxZPK%Wd~;>@wC9*&I__dxbWdxwI|>Tf8GTcKjQhO)cO? z!STU_A#oS}#^LZ981HL_nCmauVl>=UNkRP=z0Y&k6lOd|)F}nzfTiqwJH|p9SbX=$gF%<6^y59Cq*DSK&SrY?@thxKpNkGQr1#T0FsGP zng<$|JZK<2tqU=?Tmc*CuwxD3f>W(2w|l&)#f-DojIicZ+x~2H&Ft%guZa-!`|FUt z;$fxIhRzZa{Mb}nUmhJE}M+f_@85eM!icc*epAeHj=gpp#Rtg5> z!K`b!Yyt+0>PF`0ch~71$^8VJj9Xc2(cYRTxF}N$d@?uk5Jz13%tBzZ5+81_ESNJA zCDBWSG9e_}C4SO%Pvsvs_h`s9`__^Fr2(1fVOj#qn&YDMHJj@^epa>we$M%Y9c81+okSt z@G?ohX?ZhMfk`gB0{pGUyu!V7hL8R0-rb2tauNcfIGDj3E5w9*g$310s5q7k5iYZS z*X5)+geAPE(_OvsFO*y}8!fCabEJZ&1ax-SbDtgu;r6kN3bzG)e%y)MRb-u0t$|>L zH=Z^SDb<&$gO|moq^xdN5sQa(m$F|-#l<~$QO5Gzu zJo5@Kzha8gtcpNu;>RX5r=j`QjRS6eb8>x3sJaGM2Mxd8e>u#mMN1U4z*}iYA@iP| zcadpHL+{7Uoa*zE-)4H9Q{0hdKc&O_bQyo2gJQ%* zrb$413h3n!e%S!G2@Qo!2|&CrR=)7Ie;#X)6i8M`Q!)UdhS|tLpUqABtaQtZk8i?8 z$up@@SeP6JOPc0t9A6viLZLX6HDFtFS`9}|TFze2OKK?XR6&w5u~2$IR?djju~D*Y zYA9~>IgYNhw@heIq}{UTGfb|) zv^$^1CdU$Z)%ywWJPpwsy`CD0>m^UP0|Z_0v^sOj+KA#nUnPaZX#f@`FSWF#ca~03VR<6of+{i|+prQANI#qcY&fFrkVBT^nHXJNk z&_KP!?Duai0~yQn3xaf71Y{W;!@Rw1EO3sWkjZ*D&7S21d65V?sG!_n%);}D*pQK( zz#vtiWgFgnK+?*bm#HFU6Fkr8A2>1)Fxm78lSPICTo!fCoX=ie!u-Zk5$OrAt%aG@ zc2r+LCs3RXR+J#l=<{KW(vhVx7|Z$`rpfJvTya5?`B31DH9-4s12v|;9nIi7N++pA zkw-B5*~yZk=}$sQ4_-&KTAZd*ODd%IHmv8k?oLCnM}PhCqIV{>2Rg7;Ag-0CZw#v9 z^QMP{1V2Qb`>s7f@>pwoC8cw0t~mivz9Yu;pFKUIaW-=kDu_Hg8W`#?!N&YHjcfMm zw?7p2qS3EUzjij>7PX&pD&fOJ%_XpU)gwxSt5Korvzdq--)UPctP1rBvCPsWoFeBXqB%1fuPc4{Du*S7`Pz@KCd^) z)@I1;RP=XNPiT67!4;;(jqk6Zi4%$PIEy!eEl-f=nhZQjq9leHjBphZ>xfzwPGMDHwnWT3E~;e02m>O3zt7)k@j+~BN82A-ym|wA0*<2I&an^RKa{$LO2rrlUCI$l(o*7f?&J^!!@WRKi?pszI zn{PZs%RK$kZ51pgc-{=_Lko!Iurn{l>v`K{IZ-W6-Q_LOB~skk*g3z`0~WivFXoi% zQ(R(!cRRPe6;4`Sf7`c)M~5FLE;BRH0={0G7q`IjDo$yc*x-~C!3mXik6BW-f)zR^_z=J zN~26AhUpl`zjgz*ez>SCz@};f*i_*Go2tLo&cC+=|Gt9$y*)@2k_%+Q{(kWe*B_jK zUThoj`FB1=2aR}5kyo(zYW%&(!IsvBF`dY+|K0 z^toVp6VxweNGYei4H7CsR#il>JhgosUCUpDWoFOnlFTcQz9q`M!qv5r57xtxHRag~ zwqaC96&{N##ec8o)CAKIosCa52+7HI^5`JBnyPNS?y9uf7T8F4?Aw-YPz~rufv8(v z(AOblC)eM-IQnt-XpHCk2CWNc+PHuxQheb5Dx)2Rst2L^kO@A(`lxR)zGu2<1S0C% zBa$M*QdFC%v;%%!!WtpOMP8q-6l4|rdCH2*@^&_H&_fp1$rBn(V2?kt1aFrcU)@S! zLhb7*U;kw)sy`8>4W{F2sp_Hrx)j&y?Q9JM_fz0c#{cY7qADinhy;PZy<#rt%4?xuO3oxJvD`*xlourvaAe~S5ddRe-NE)i%s-P3t|+PLaSS?G8< zn)`Lv5fZX@;{I0u<=y6^eKVNRXO&Plx#V(Y;3y>JU}s|Ow58&0;`F-FechU~M1Zie zueVF?J9lVg{l~3EgQn-p!rFv~Yq-FNojPCu<)LHm=J3w#^I65Hx!yxa$r?KvAw+zME%A6C-EO z8{S+$-UNiF_|DWefjcJ~Pabh!0v~=dUkcx$5BU3zxvTS2*NHvLh9~TA2+(dTK}KCU zXVDoimq~ZmZt3`(6SomQ4)h*x+#aMi2^D+P&hFjrtLp-y!ZE(VjPKp+-5o8J6G=nN zzBV1}-rd?-7u|1nBG0CZDFg%dTN{i>TRy2`gkBQaXT%?aHBUW;eKivc6v+**PMRS; zDCy)lP93mamzy{pDFQz35y~B2yk}^{HDR&0wMdXfA?K((Ga(H~AvM(kZ?$^f8Uo&2 z!Hk_9F($!SzHjeG1E#((Z?_w7PU+gOwLUAITVMF9TrbW;QaI1EIpt12ymc>p_^NYk zmp;%2yOSeZS9{K6kJe%UyN~-Hb(%fm*|^>9TH+i})X%*f9uLgql<$vghc28)@Z4or zLmwTXcog@BlJ2^U1=u~fs&MJMF!iZ>-w+HckakLum=y{8RR|3$`3FV4L#e$&=X{)9 zx^G9$EQToIbd{gN0_K!`^0!Hoa;REG4=CXXS^6& z{I;@d&L&_uG{x;?XIpQbU+4q~lWS&NXV*1j6X%p`OAhjlVJEKiWdg)JMOW$DPW!rlyeYfx!A63UYN6;55JDD>IKozX7a$4TXa8fnH>E2&9EV_8B zF9r)&!fTmXwu zk!7zjk%JOCAxG(juQ6i-Vml!VbN>vQ0|znxIS8>s1^^ZM$NcIh9C8K-MtAtpe#uR+ ze`24p#RFZ5fb*#Ta@7Q)1p{&a!}V_}h%(9xOJcYGBDhc>1zO<#Qjy#VX`J`JB>oRn ztjBdVWu1&a%y(mYJM&7 z%N-pYj^*z>Mr{e`wA_gjM%(T(tOzD)M_;hV;e5Q%h) z<@6{Hb7o@Sh!b9WlUc@vz_=?g4`&Ns_AtyczRRfOV2}CfC9PWbo^~TxP%k`o) zfefi=(=oJm@s3_;4WDehJyLBs0kgxho^-11y>BCKSmB;VdB7oQee>kZZMA1GI{6_t z@#i%KSC5mclKC{^7-r~cd7~RR#0ZTF=1!U3Vn)E*``~4<+|dNfrV~L}r{s8s;HFZ3l zZW}tEFCVVP09j33d*jC@)2?8hA4q#-zviiuU&Qhe%mPL)DEod;z zw+!8p!Otbofyx;gS3PIau9)c@Xp4|$PQX$Ow2e4ccha_fQgcAj9y@H0kNWkkIj`E- zc_0ZrYjB4rEbtduv|qxyL`E~e(dh|m#*OdVWiHB6pm-_)+sSum?q@goVJW&1#OW<@ znC(1!zim#2C4jbckA24uC#m;qG1(H^g_uz_RuprW`8oolL)0aS8S>j<*D?CZ?x6@F zr^43)?(gt2tqg2^PI;1?+UAup@YHtIpn;AE$X*uXcSY32j4~ZNQfS^@u*~=d+?vIO z<4+zT8fa4;L?vh_Bi`Q)&j)%gl;*ul_OtiSzZ7jrZ43d*%6C+GAAi|rpwAJuY+aCi zyr<81%(y<^j$FTA4-a{CyxF_^JiI4;ES^2j{dzsIV>0M`ZxzV8XMCL*f%JF>L0ZXh zZ{>&3+v;dZ8Mz~VQjB|H*Iy4RC_Q&{L==;mpqR+HPeGK3#BJ|XKF?NclL`dem4B)gMuT8+8Z`HSM`S^`86$C=aDU$K3VS6T(dGh>QHJtTNuuGxk801cz2oFt0; z@rlP^?rDP1Nr$*fogkB~JI)(VPbWzkD-^_fP)^r4lolhqb>z~(7D_OBBbb&KJE+=E!T%#XSi z%pNy6-FZ@>Qm<1LyX2ixKXyE*MP%)9s&sf3)%~XkOYzZX{4JSVX*e9MH2e>gqHgEi z30(H2(i$2J^ePixzue8igP2k`6#5}TWx2O{B)%+u!qW0}tD_}(AmblOTWzbDb`lJap@)tc0fLraiL(;`miZDW+X6r=7S4y1n8%6N+n zkChMeoC>T^(#_%~vtCL;u)B-cm#v(Ym1AYp5#)KPXhiw@W}Vuy4#p}tVv{W4)z9eU z%g_<-EaB65L1+lQQYUgdf*nd>03_uy?%hoWZX6!Cd5TZ?HMC-Qqr_*_C#xjk?{RWA zn%DJtsDeL5eeq;Y7@X0~5X6*kL#DM1S+KOW8_oUE433 zgY$|~X%tnMvg_IlKb`hN%gDbQ9eX_4xAFW=yQ@e!P9lkE_W=nmWohhN2En5yYCm-Y zT$pFpGHl|0ADB?XU3ZOS)C;-XG*|&I*~Ld2X4s$PwKh|>FOlWypm@4^oyX8)6zvk) zM9g3;PWnJitvh~{dvOm^F4}~RZqrX*g3D@tI!mC#LS|t~rtt+mzNi;il=yw!zu1IP+ zXj_gk$CHoXw~)Pyb4s$xew*SFV%aN%H?=lvNGs$kDZ0-jS#ey2^t5c^V&*zCui2UHPoP)KtRi>!8-v$@mR1_0u(Uj;YXw@NOhL~6zIZ^n#omN{b=18Tx8C8L?Q`)CjBh z3JX|GX?lM5Os8~|AZ7GaKY!NUWA*vU_2mN}8-;&|%W9~lbr*Mw9EzQp$+r0U$?ok( z$<&S;T$JaG(-8cx>HD8xkK`3>iR;TNkg8)zDplFB*a{ZRP?0c`U|srMm0RY*rk5g3PNIPiKkdEPlS zXy=w4x&+sk6t6dPrnqQb#}AfwMBS-bp@)F&d{v-9<$4UMgpY^ zV`kYjpYz^-Exn*cVOx5H)dj3QX`jb$lLCAxO`{VUlJaug0JiHF*9g2D_$nSFQN#~i z4Ino2_8@#`n1De58l_`X%`t+CQ24P8+4oIxihNE_F8g9fAddeLVlJl{zZRYLW?%rC z+d*y6rc>q~Fh>AqQhSKIVd)q_2?#TVAp)olJDzIU81hr{ z>^LYw%x%&C;*2j_?7Rcp>7XtQ;F-Px+w|iYfgdHg6;CF=HT}c|`(^9u8kgqA(KP2z ziVA0OkG4l72-o)r#q>1~V3!`fot?g_DDuAC*+40-ZinDRvLU`YkdcS_UZ?wLS9g2y z|K94C9?K<9bE3{{b>NTzB&EpgnEI8Myshm`E$F~GN~AtuXU<0E1=C9Ih}CP%aexag zhi6k?aYu|JD8bB?-}C+Guz(vqD#MV%shn6b6-}N;yR4(=OL-lxh~K z&w@KSxJ#ET&~+>LOmU(!30-}9i*fhuKH^8m%BRuOvS1l31pv?;^OLuD*I(|X|8SrG zm;3P__do*Su5xdVTic)D*B+K{b7J!u4VKN$VmS(oke%|qXeUM7qDU#_Sa&LgPJ%guNaib6m&7iL0_6aBB~kkH#1cl=uMv^J*c;X!LsEUr-(gT zmAgt)tV4`>E#_Zp1`fjlUG`FPi5}|v(*zmVsZc(%F5MtG&u__pB`0Elrb6oTape&Y z#8bAiCz|J zI2C!EH%&ZcwYTD;R&HvZ6sI8Q{qT$mK{s3)H34Q(&hfDI7WTCuR_UO1Ua8(DLvmgX zEAaS%$F?2K_F0n^e|n5mI@fmfIZe!GQAR+dYC+{zD{3=;6Oa_{IuAf#p(zce{8DWk zspzXtV~~osv2K{nuv4WvQQB}vk#t+S!W1mx;`5`4OMHkAuA3szU(?dcgg1;N(#+HU zLhtJ|0YYqdxkX!ySAj}-N!`qX+B0d++~Cm(71;IaOi6^_<^7E^1l@Ax>I_^Y91R#; z4DIKld4`;D0*bGkEik20ZWStgC%;8y#RPdg{rib|1&%dE3rL6{^%D97DI?8+Q~{BM zZp|a-*=b$n7AUd*;(;LhCy(r&Bo^pS$(1}xt-j;QFe4L9DGU`bq{N@Ugp_ZYxZB&r z1aQLp93mnHijHiPj0V&iuH|74>Y zb@S)EqFjn=I5ID(vDAbh+cHl&vH0zHhXFcv#CFxj6Ykg9kUl3S_^2@jOrkAlNdr#B z*Wfz{bbK|JIsPnq88M{5f{ZOR`GiYV>j2fgx-KB$8EmP+7kMsu6#0RdixJ~OjY|tH z2(mTFRoP-9qo)RFBS3$c(oC zOYxY({RFCWH~@@<*(q{6_?R(J{5@VNoz->>mnIkNNguZ4TSB)PEiU)wmyU3$(A%r+ zji2PpbTr`#uNmkentkLIKdHR#)8JWjCs4f^<`TV+RlM7`Jzqc7`obH`dw0Q;QxV`s zebu!mZ9^PZ3w)#ushNHthc8U0er9ikiCNdudr+`V85E|Ppn0h`<@VQ>@LjC-A1QKlpHXsIDE6B-^W*pYPIVp;V+Gk%_X|!hZ`7KSK%eEw%u6`*=_vN8m+=6R}_=>_M|Wb+_;I3nsXL zPnNngF)l;EmDi+2qg9>^F*0>-!Ze5j(bpW%!QN=Q6iiXNVp_WIBn?@kl{K+x+)GTJ zyCyjrpSasWqh;yDx4;u{zv-vruT+pnP-o*!7%^Yo7=;a?*YB+B(otl}`g5$JgT;ZR z2@^ShD8Yz+3LP4SC&8S)N#6DnaPQ)$lrM=^3J`VapE5bjtsDo{f~I&od(y431g?C?n! zk_HCkSY8bh&qIlS(@0v8uBlMGlqdNo?iId2arcF&OWS*&88ctvxp3h99kDmibQUqzJUq=IbMbE~55@neR3dBysvLm+qY?tNF4b_P?UxtR zp|J>-4V=FOsPhZ>sDI-Jc&IDhs8LD{oz_`9!6*HaViq8&D$#=q z`osD5vlC+e+S~aeinb!pRWa+Ou&ljaO}Nq2HpJN~MM^$GE&UzT@*qc;4eHu&&2RA< z)+V}WhPxT+!<5|?nPWfplCaI_%gLuDGaJ^30=Y_j+SLv-7xb*lTWBeP#sn_2CB^tb zV;lVm^W99K)AZj?T>slCY3hLf?(lk$JIoRF=nqwDC4%*(OeWgI;~;kw>t~Nn)T2tV zra$8@xW>pw^KuX4nGM%eAX0BsAiJ4=+3Cq8r5B-^jVPzXOuTk8htods>4rHj=4<{L z??7M)bv!BYG?~_Lw+k%tu>-f4{mY&lZ_L4*w)7>3i!%8t%n`?o<<^aSS|h^pFC`qK zMAKzC=SkdV2h6z1&&;_0qc9Ku5Z_ra6K(2mg)aYF;dSOs$W+``C5MMXp3qt8XNNI| zQf=t#!MvaJqjS}TpIHywm4`(75c|p(m7z7P4PQlSx3Z$+w($R~(8o_(8$EO%9Ri&> z!3x-t+9AjmF6(r2jL&0D$9G4^QIm4j(IxW-Plpx-k)~Glj7%jZE4u6+cu><$zw6Ei z`X$fX#iF>O>+f`d5B4c~s96Bw_v{NM@2cj8!_`&=qQg?lMBib86P;_=pzVNI?UIfC zJjE&(gFYQ@I#84W|Ipar4g|5)$SnQ=6!5!fD9JBt@Lo9@3-btxxtrxUbUXKo)BUJ! zq$UC6t+ixJk<4fjm|q5IL&(()x#&>p?OF^ZGwSBd)D3etXZ3-tcmtoOlEuB{OD)8m z>ViIO%Z4dta<8WiDqUYNd7F<;ntJ07u`V}VAL@WX*dJ=Czo=1x)X-9Yy6?%h%|(P{ z{lBPPj3UADUv&?{c82BXZF;qR?b3%msVeV7wVlhRqw{zDO{^Z! z*-X}PDu5P2>K3YoC{;UXr%qzLV>=MfVN^0xJ1E$-*N6J2%P#ud;yM56ALRGWqd;;c z=)cHYnAy-G82%sRv-*kj`Q@7I@nQdE0{Q)^K`|Jm>K6Z%-GEsn8EPj{=! zzm4y)k+mHz3;(12c>G)b-Q&`3YF9BtN#P5fI%4>*C_r7}u=jGV5X~yL>Rf@ZOjlOb z$(3vKVJw|l`Q{vmrovg1v>d*(>%f{?Qx}q6efkgfyTW$9GCNZ168_{3)!?x~H~LtA z*gN6cc~4?w@>39UwB<=UfzzfY5gZ7Y=MCC^B1;M@pFIPmtbJ*g^RR3S(HRJ9v+_e+ zO7oveDqnRr?ZOv*^iZcHHQ(S!(xLJ#F!WN(9=;Q&FM_61{8$(AIk&1Xf`GZb?Qo42 zVv|{X9Tq9!u}C*wN0XTgErwm5R-WRNohvLUk8bbWVXJ!Mmr0*%e8v!ELlB)C_cYNs z>8cMccJ?cVW$TE`d09Ql1qb7MJ0~|qmPugmx%yEin@;ihL3EBS-vX?eRplmXj_p@j zc>x1}N5-lPkaf;h+pCG$z{{MpHlCkQU={RJo@&N{kR&4RXW1ZcKPf&n`fx{b}VPHaG zj|Y6CTpzY}u)A`01lqbzNe_N2mehzYfuXJ`!4R@Qd)VSJggt(5d{g;tOV7aJ$<4>| zhXOa4NT0?m@|@Nrw-yXI44mh(G4dOn$8zgXper%}9R{*Ioj-@z-($|KA1c_7aKOzYPGqncLUvoin$af{(W?B$h`A=u`$g6sSh5R z8o3iB4!jp0nVF~)1dA*TYaj9sl97si?-!GixxXt~$mXLXXpwS1E2=dPbx*m9e zYW4x8lW=(pXw2>2hAcW8!ykrciXrao)kSBz7UzG_VoXkHYWD%XQC+wMa}DvpWbAb< zMbo7^cg>iFHj-WL04DFO9GJW_80b-d>sE;WOrA}S_CJzW+hyIII<=g@^bdt_1Mml@ zcsmoglvBOnmikJRxn*utFdk)is9-8I(2(2lL}-hNn7fDYwvptYX| zTnqI2%BawZf%=ABSP>lxvOVt1j+w&q01={%~=X^6uch>Oj2YrA+;FwC>$3_??o8 zs+3Ret~S=^%R)gv&Shvc?V5dw<$AVV7iRNxOW%EGFWfTxb?61k7HM}$6iVnt-tth! z3+Z$?$p*IGiw*lccMi=r&=`1^*yko&o|}qCVYx1QSmqu?rk){vHajj9OQE!!-rQVq znuP)3=VIj;II9E_o@#5g#BzJj{#Q-&fS+JD@D$xgp8ax?lQST8Qj;|i;zWlbMpzRW zo{m?In@CxZ|%7P>@Zn zr39EiXY)Oj)xqIs?M+@(l%v+L4wt-mD>zcOsP=t+!%?16hdrf%*oHkh|9}~MmH&-; zhkUtQ#9*okhMI#k<~{-FqZLv~RK^@bH>9rflkA0_l@ zhp8tH>(N?&M*5VVrRP2)xtvu%B@v7O>o?Ke-&B~3iU4?E62K>C(q=H>Q}FXhscz7) z(Hm!KJk&?|drlM#US35pp$PUdwTFDQW#7L2EMCu|q zZ{B(_+lB*!uYe#QqR<&(ye7WlX=0<9cbGAanzB;P(W%S9WSgG9Sz$;4dVE zFj5f`e2Y~>fUzj6?WDbOzN4~tAN17pgRV2`;`Oz6C$U%Kze_cf~dU$RG_T$7rK?SHirpD#r>R|YdoAR zqex=(5G31V$JI{({hj0BQes{+9Aa=VwgpebFgpYX#U#LA4AG~A6eLUO^w)E_t>_$n zn~yVnzRFh3l$g}31bZcp;pXU*oE{sK=*sMjPikw9ea{h0~%Dbm-VKqst_D(|2htPZ&Psqi$>tkpu*tsk@ z-J5{%#3kIL65*V(VE$XY(i$xJGNgrN<=?E%&kD|@Q?jh2Tb5Z*wqA2f0tovHvw7{PaKV)?=ayb%(yl%BUX?Fdo3=x; z!SC+CXdd%$GT?lQWd+9ZQ*U_&k9PmGa19HkB1^yP?_eb#MAHmhQr_L_SPpYTZ-JXyF%7kjP zk4c1M))j#Io$jQJ<9e7lozG}hEG2*&H}osUv+=O&i`#;Y{_W8RUVcb6ZW zPw8+mkZ3NZ9M{6dnD0M;qXyx8QW9p%w!cCOASgj#ykgh5zIA%)Ty{SR$w3N4a+t0t z6*VvmLJD|yZ6#9Ia83iQO7K3%-12&ixxlFF%C^l;ZVT220Q*s1E*q&s_@&!RLR%*u zz<5R$;C!mp`(}y)2!YaMfGIKR+|=)5yz~mWL4Z1Kb)kEVDUv!Lcs1|5{5nz; zkTd+xV*X!q<5KWsIIKZ6zKaOVZ!W;OYa3Wm7Dxer`{On6C=8AAQ$E)Du9{zP*Hvy> zzb*?d?aV&HA{4Ls_UAzXZfJf&mMZNrp+N1W2oq}i&@{A+@7e*Tu~kfhC88=iaM*H4 zrCRw9w@pYh6D900`NmWLK7-yxvTC6wwh`@3Jd2aCac~t3Yact1O3;JvC$qCMDqyAZ zJu0w5>the6BK+6gUM)VbHUZlZeazFNNLPv8JP3rdAYn#yYUhVqFLvkVVOUG}!3|tI>m`U@ z-g4uq%#^k3G!2XdGvmn)!wuSQy}Ca}!UKFu>+;)c9ar|-8ydidv%~X32JgG#@3Y_8 zto(-pt-#qqd`B?9Z8vzUkq|U99xP6nKKs41SwgPOL>5ob5&NVvkdcV0cz8R!b&9mV z>5tg{L0@8I_GKFq82sT*E1)9+wBvAy?Z4fr!AJHU-)=FH@F@JiaC$m@T;0LZBlKb= z;nlxDOT;H8iIdUi*%h5%v~|UgDHU-@B^SAF=3m#Y2f#0hOf|L4C-ZGo1(>%0g040M3`6JTf6kPixq3^&@yoR207#usr-Zt=8vrXPR8A6c|nOvtK+6RnmAj9Qr z2r3wP-8I)UMyG1HN zG;GY?eh6`Lf?`&r8!%e^3jjHVxO8QK^rR+N1apTHv^}#5L$Z>s?YCC#>XayUef?b{ z9u4rQxGBnrU`B_UGspTBHv+fr%PLgb1T&MN;o>i=3dwlY#(16qB>&6=L>9tYd>L)6d&^%r}|y0*R!!_ve!4ii%yOID@- z@c8Sj7mFEy%~&SXrk;f{HOlO_*m9*7xhloXc=(%*d*!Fi!({c(EVL7M)#K8Fh>1xD z&vT|wO&VobHtHa>XxK^WY15U~=+`VRUG!`6wT_k2L@r@T&WTA;uUDg{IY^_{1(KE0 zBwdGz85yVyDW@hT2-vCWX|jugMkd*(YmRY<9cK;o!AI__S6cLDCMTbYmr+wk^tZG8 z!}^F=u|Z!MX7nL)F@pL=NjQK}_8m{^|LFpn%6`X(OfzF^h|7H{=KVCRvFw<##EuWG zc$d<*|4%9=AQg7xA1bDZA;ayu8BQZ$m@KL8OoSfRhNJB&&$^P?Nf^8$H|n1|h1lv? zj8&6QpOe%4w5ez(oL#0r@fa5AHX0Cn)|P)IS1o3yz3J*jSWb{{#xOflPZRu&N_$F0 z+c11?Jy|`M|1Q~&zU4)yuSBuCCfp)bKY zM@t41k3|gP}l{j%_YA^8_s+^|KZ1%Xlf!r}C+A77mWDPPZrp z0hCF~=V8g`1#^T!V8GBID-)Fx`Sw~N2SDDdp;l@yP$xoY=j|wF+cHf zfE#UEX36IjmMG%T^y1Q>C?7*Bn|DjfZsqnb=P=-fQMfjV1g|5Q3^eym!A#rWouQ<4Yfb;>OitScCd*^Ksp zK(jnOm{E6HJc&v9FBR}ef2#=Yy}_5QP*AP5bgl|GlH*3uPHPEA#CUgJ{&Gbu{7QrV zc{%9Qc>2%zCB6e<#`26x!ILpRX7`0GQSft)25BJ^@Y}fQ0LkH^N|Y39DuB-x zdq!(CYT$c65=E*N*fept%dFTSbQtRSaP-7`xTX;F69HLGfx^GyKo|FC#cyyeVDi+) zjzY(AQ|}}Nw-UhDnF(CSh!Y+YA7xYY0|b#33QFY37Unjql=1=nP)eSO|BgT(iE=ve ztqI$aHGEbAn28~+68V>~E)N2R%24!g_d>;SU|xh|#E`;p&LogcS;A*PznG0VU<4nN zIK+@!E?6x143Xk+2w&)S{ZpKCNXm}USS6Gqd?kX&{$2=Um2_cSWluUuKGoMsy!OyX6td1jyp^xvr?{4nhFWzk%RUD@eTc18S z9uIBXe3rjdFXn9d-dyPI0VucD&+a4c_IBMHbh|$eXAaIYKAtWtS~EbX5{GXKWnKy#tUkQd~3Sa#WEfT=h8DMqH=$ zxwu|?md*|h+SbU24EWIuE?xQ(sCY&9v=S*Mf zmnnU11t@!#ecV0YI4o|Q>-4;}`D*Tci*24#OnrQPKbm!XT`l+4CcF!Ko*3HvFMNF6 z`Sm)>+V9;8NV;}hhL#Ayh* zZff=PLb6wLL)M0t_I;}nuGio9uD&wPjPTaj+H-AV$2EpcFuK_i18%%1H7>oAPSdTA zd{j@@dH|e&nx#cm%c{55cLxhv4Jgr7o+yR;Sr<#rn;na*bm`obkPDyJ&P{79!kh%& zZyv7tuy^&Y-RHBLqOfGgTcsrQ3EuWcnERcAz@Zd|$2ozzl_&(LHnIS?~j4Zr$WZrG) zjj8l7W^ZlrPEVCRRp0L47`{DuIkdgsZxPl%q;cOeGe5oi)Vppw1iZ++Gw3$B#&M<* zP=7kvX?qwWx!-BUBFCZ=cx!ZjtoM4Ym6Pr45m1*ye193yYp$5$&{*Hvk}D|*Bur+k zAXJTsnYep-*?H=}n>(?8`p8Z`^}R@rS=#%+B|Q8n8w#0P^YHb`m4fEGASe(ZNUr&n zpQ&B1TR8CQ_*`*xOW6@wCxQ#8IHku&LYF2)eE(?J*l8;mm*%6#`c>`CS=q!v-gwA_ ziv<`Vw;Un0G!vbVmYbhWEzN>e;8hxOxz7k8Rcx?nRm#rU5RASsXpo#VVPQX(g@4fqJN8%HEPxbxG#Oj@mL|ta~eOiYe=GxHF+3wvh zh66~>;*<2J%X|A7*Ex}ZjQ83tTg7`VqX~N$Yca+exrhx*H9(Xhmye9b=Ehb_#fYY7 zLHt|Qa6jWrM99J1A@HbR*NgMhh;DgY4yP+&G+wDsFRaHw$-+^|n@)cSp*!6(Ie4GR ze#wHZ9w2W&ua(XYp;`}Y0|)*?oxgfhcbadgFU~8aKUxVeqEwfF2sbkjnHXjFC9KAf z4Bso8@-r>&j$3?KJxa@F=sFDsL$luF;jX%E^9<)q##u>=*|~}d9p@3F%Oiof?W$g+ zT@}4i8+VRY(1j@yQkcj%xXHqTdT-)MJ)M5IsW&E*M1wp$Hko=IWaSwB#)sy6_i7ew z%VX;WOJ~bH=0-dsiXqF#OY_Q7f^mp&`=foAUbX84FMk39r03LGAy}YXZ4sP0>9Q7N zC5m-D*dn^CmXDO^TD6~0z?)hxPMQ&$X(HU?c7C2BV-U?~=F9^Ivm==(?ble{D-9MB5>HTMt+msC`UUBIkl*T{sf1&*Q zgnvi*zpKDzZ-KN+&0huMlAg5%#e=eF0YMB50)nysht_{cS_M0yM*#q*!2+jQ{U5^K z0yvH(>k<}|#mvmiY=OnpVrFIri!5elW@ct)W|qawve=d^*!Fufv-7@xcmL>6btoeH z+;dJ=W#7!|toyHKefD;rcA3SR|KMzaalDbyk2FMU zr%I_8#HahanBT!iBuCnmueDN%T_8T*OTG+(46T!o;G-7|=xVdGv<4~r2oDC0&rYL1 zrTnx5@L9YnV`nR;_lnB|?ct-WcMLvGUav!sj+Eeay9a|myL0>Z8DkA}OQ%UhP7NXae!HOS z!36?g)Y8uSksjbPv&qi%BVJ48TWq9B)q6W*_uk`O?6!j? zeM_|Pw);w7BN$N%4MFss?-Jw353EqReNXN!>_r}&lPD8`+-!7!i9k-aiPy!F2%Ldi zMgOG*L?ao*@#~8@$e4UCv~z&>8cCejtqFFJDKV3OlRlzlF6M$AN0DxHoZD{*%ToKe z68}W^O*mn6VLhdEWvLwERHku1$IoG-Ha|uK&;$OPs zFM=)CLRHkFl=unL9rOgQ{Xh=u7JjLP+5ff>tq$|iA$>0j zIRulVLgrq8(x2Ev=58YpupAsByeBGdfj#%dLkr=kT%20|H{wzFv%*RTwzb%s2w2Uq z2rD9nf4Xu^`DE!+D7^C2vqD021zeYi26kR4` zYL!`_AKj$`1>G##R&emlcJ7ro^7I2o`4>AC8V7$Y;@_8kop_h-F6ul;$>~XQ#-1_m zy`NeA>fuH2vy14CGXRTzu~hG&&7bQYeQT$KI5Ozi@Oj%s=S38-wc>u()$6yJ(P zzkQjNn#*1M>3D3u#Xt{KPoVx(ZDOClI$e6DDva#l{>pU)Y-2&JH_uox>n9LguxnZAO8}bJ|W3$b^O?)M zbZ6+QhKvvQ3q>f@v4?<;~A}hMVX$XNsjqgw+|}O9?q_LslQkHnd{j zz1>ZV3q<6xG?udqQ#u>1CWvY+d?xsmcd}E^vNH%DwXf$ZXnfD-M@qZ2Vq>%~<~eho5q=z%AqHA zglgZ7Z|k;_BDa~&&QM|Z@01Aw6y@}aPLY5G>GVVlwU-<6HUsvEBk1-KV?g*a7|M@wdfK+){8VFR)et9@37aq>`M75>&1#0}z@Es@~4iLfh22>+zzRCPakd3Qkb{+RZgB0^-a`BPkB zf+ejW^5*S+|DNDeC~HTb?^X1jV&0&)qk{EIH{Vv)q{6`E*}Ydg;j>q}-XmBd&*Tg8 zP{t~&!0|gXX=4~MulVCBc6_1n5|Rsh#(|K-=G%+o&+*Z%AERw}i9f#}qaAq4Mvb$u zKv8DMkdeTINqr`!JoHO@07ninHANO3X(Gf?b~2Iu?GNvjh+ju={k$LdoDrQ8x+q0j znt9vsqYMhmv%yWrRHYuN8%Lwci8V<*-tbvsSY$XhqIL)DvNf}z_E!GHL>)GSEjL=J zES#Expmq%}6%J(Ty)BF45+#|5qWuAJ7;;|)xDJrUr;a{HIcI90uU6`;{qnH1`0I>@ z&oqvWCiYEsOC&f(#4X`Kf1)ydFJT-(^1NPp)ZZyF2rnD`BAZ1d@ps#$hh}#iW@Xo0 zb?G3c$;-HblV@i`%z60)gjkdM&pSCyya8L8BQK>&|8Lcq%E6ZxsxIHI7apG(*KKmq z&h@wR@B1xwlU*#{6VF=*d?ev+GPZjd%tY6=zPHmpE2#J|)|zK6bO10sBw0;!VI)Ru z?M)^+G&qtc1y4>qm8X2BFpFrfB*j^o6n(q0=`&i-7)#fEjy$=}5^it4m!8EpS?Efo zmXsoiT}^ngXHwQz?1+O2TfMwGhlU(3(m-Wi9XM&bW1YtV>PMz=Og6K;_cO_a1t_&u ztbNB-b?pxOCMLVkblw)49RQCe5 z`{|c!2BzQZ$jDp3^WIzxb&nl>05zW)7_E4^l7 z0_^bZccf9$q9xB>Ge<;(UK^%rZ!O!ezafA>CPW;QO&DP3i8Oq^T=#Y^VYZIAFA;*Z zm)h&xXXoSBM$AGAK7K;tGFXON&8+^~?b*Xqi!cY-m9#BnNX5{5*qR`N*hlMjb-T;t zahW}*2HAH4c?1309NIewmc~E#8I*oVVW(|A78V@)y=C+Ihm?X2bW@6-gAQvBBmK>u zNBbIPyZ7Bm>GHksuGEKa903vH@w%qxB{fN>qv2?B--aQw&zjB00P!gi1jf$M#=2C0 z%}>MYm{hgogX<7Bvh>>S`)hdfJWbCJ3>cHaVt*MCI8ECkrAtKm!ej?)zy1~$nAMWi zDqfdC?g+T5j%P2PS4C-v*2fEKVYGZ&;OViiXOi@3H9q6ui!G_t)T#yZf|5-x1 zXTY_YSug0i$>YW4;B~nz8%T^TH~AvA)xBp!bd9iy=QL(jm}2zR0H-;~3mm>BTDXnt z?ReP-J(!HL*3DUBZ(D;G$Ss;`ciV(5)@`91XL#F%-}ndAY98QYGjqJ}rx`%Ax2%&Z z>uRvu-%A8h({|}EsVNTje@XpWvf9NPH7LbycxT1*75zH8cu;6}I|^bm(}r^q(7|=> zurCMxWar?j@cU%jz28RQ=l?%D0DI(p?$=Exjy5h#ByfMPgHLT->u`$MF7~9Wxk%Cl zT&r>gzSna6IWKzSjGFYMbd8^!TabQ2T_fOYMeELWnWe%ZCA_UFd7^EY<&x98ZGvZG4xpg*&4ae;3TpV8cnMn*m&8S-VoU zFZ*$Yy1_ox%lh5`INwD_xmh`NHjb1R6k)ZW1bilc3Ta&_YE|pg7QmtDYNqVscrIGy zRnp?hV$bxP4{kLpZVllvIK{Wv&<1DLf(of8`p}+1X#5jT7B( zP)72Y*sJC^tH!uVnXQJiuZFdk69{dMf!{(n0V&mU*{jw(t2RW$=7s+Lv;q>9;-7zB zty&^6>uHVNKEGFO%4E&&-2Ur{ib@KXl<2J5X#aDOh^+{a$A;w$M1{}+6(^A5Q zu|aL?ht6jH?Yne)AjQ4vadVB;c){*H_^YKz#x4%JZjLEXkrSbfZCt;3R%Vs%=83~c zP5Wq4=g(cum!{Dt$ym8QAtu$S*`AUSNcPoI_SJr^-lY0Kitg5Tum`S1f%e>c{Er2n z?5Cye5uE$xc;;GKp$wYf;c4uzerzloC#Sk`*Is9tq9yk6i15CrEZ!2~GO3)*Exy|0 zW`xRE=E$^1b6vbK+Is!0(|XH5-2VMLb=a44gUAdPd0`|KRyXTPE%I{w)P?@@N0Q#y z>(QWHE)RYcq53e1<)-1elFw=WI&6VvB!&b{{!^lgc0R|0?S8=o&s!+_UY^$156UCECYKWkb7F^ zKFm75RywZ=|_MnFItxgpGL!eQ^%qfVyLCVzqjj@Cv{T0<-kR8TW`; z&97^^4@AgLaLhFnhE^uROaua*LJWm;OfMv%AS4Oh^!cm<9)^*SIwC{+7cyy`E?Qk_ zg|1~-Usi*g7UYOq1tY2G+&;Savfh+I5DYRY2tl1A!8C*^0&*1ABw! zF&bGoQaO!D)L<5U1m4aNicHktmMjo)tuw`iRusg*0xBfW^ISra8>qIT)b85i>lX;2 zJj{$m>d<Co2tDS^Ss5#}SU8^mQCb%Nm15Lz*e0e#aoIeNb}fhjDAC5GTO6S< z5E3vxcF=2_La*Tp-Np%P6qxk6b{k6!?B`X^AQ)cOU><7}4YpvGK<%`C7!-}yu{`jn z8j5T<6cFqTf0D8s-g){NDwE!f3EOZ1}QQZahtmX?*HT?EdpUg>B6Y31u6dCj6f0)BWu`$ z?EhIAo2@MvCkokrI2NAQ;D^>iIWnkUJ`T3gxh1~19(UWH4)ggxcNl^F=HgPOog zghQCfObkbx&`$jQBs4)d0CF4*O3VLa(0|Y`w;zS*oeuH$=wa!GoL>Fg|S04}M>OCE}9M9Ii_E&N(R1!fq_IDLI6+`vv zjb}}%)tV?6RjM~o9c@i&1^FU<^q_p``AD<(j5XCwvG>kli)?qfv%=TJ#v#P_FWQeR zj&5E~Zw8I-bc_;p7~+djeA0WO_V&5=MA7s8J{Xg>n)@b+q}R)$_rXsHeUM4_y5Y@?>uyuKqiAk* z^TN~RGc~owH~$uErz~|rjgz62@Bn(dV*r0`tEP*lNNBl0D=8&CV_W!T-4=q`r}zD z-w-hZS&w*CF2^xIQ=0xSdd?A#KI!%UQ;)qbjtp4~!o>x-*6HKD>20CpcIxB)-r*;n z=fMU98hLfAuSzp+yTSv3W5P+x<7lTEl4M&8{P@$kaf)TO=oWy z+aOjN_6u_(RtfSHaoT$Ot1F07cAUdQ47(_s^AJUt*&_&edWZ!SIyOayV~>`&CNXA# z<`Zj}8S*r7#-npEma*UGiXqtfDZR8W?12_$CwHr$lCEC{=J^(or>9U-i8GeL;Z1N0 za1;!ZEJoDz*Ym4t;pgeSa75YuV7#;sM6&b|Vl)I>m@&zcWC*i2IzL~46!DVmof24v znH`78AWxrzLa`#u!&5U$vmemOUn`_gg<1eb6#RwpFA?WLBJ6)e09pONMMMvYHp+DC z{Vjkc4|X1&u8YuYqmcC+dHOP#<_|45MqdIy6)JN4ZZd@VDSSs@j`6uqsDvZ~6jD6g ztS8OFjpi$m&!6~E>?9e6!K+2$QKdbjPZY0UQzRMT`{)HYIDd^*$^Ish@p~GeMmhQL1>k^1MYSphSz$9q6)hH-G+$BHII-GJeU-b7ICG=OYLqe z0TGSYhs{Z@yTT5iurkCQKDlzse{)a{Q}*oNw;>|O zB5y^>^FO9##lQAxu^|_B1q~8EwL1-QL}vllYeChEjx7RsRDNndrePApP*>O<2rg0F z{(@1x*|3kSpf~d*>>=!d2Z~EwOS-ssZ9XZEnuH}}5p*Z+IDovqK6EE>mEVO+B$a)q zmTEYutQUc6lh+meNv^Of7#F+UbeJNqE9)xoF5r$6j9o!btYmO&HYJ*zn#pet{^+rg z8lUAk-v$jEY+xn*e~@r3(9H53etc0#QPTVN zmlbGff2?>?`ZvT=8PE!}|A!SLhKIq!hfpV>4T*PF-sBz=leg=*!>d+3hVZSQeL&o* z!YOtazlOnrv;`Av$|!wtk@NPp!Xk?9>A|C684TEO>Kp`RzfitN?~@9=kX- z(t$RLCVfN5#tk^jfFGfjdc22Y^S&DwEr+7yijpia z#p`D@s)$!;9#oFM_dybrCedB6->1?MO^;<^*pSU68{8rq@kN{hCK9ZQ@Pma0!{?Oz z#p&DgF_IcCP@~u4gp2$o3n4Y$uw5HXag&#t($0$m5%WWCJE}O=z4;iHo0#E|t+|Pp z5;O+y@8C^m%)>a4ttIc|BAp3D8Z;*ptjQ-sH2$F0i_M(9{ z(fMDf^&#>73mNy9#P_ej4EQAw^07+^Z}_h=KI&;_1*~ z99b|77}i6m6WYRbos27C2slHyVH{e1%dv`F+Et1)&;jLoyr;<4*tGr}7%CkME9`>* z;i_mpnqSojUJqr2AQesISYs>+Nuuc#4JHN@gQ7*d5|;d>K0wV)w+aQ1^^c+^kV>LL zyB3W?r7<|=ZkIWd73QAa`jRL0(%}ru5Ktoo=pZdrYi`;ho+ONY;uWDPl5zmm?RYCr z^AD484(SWwsy$H)j~U#2Qa!b~iJC|bBM~TI@MuhfN8_bwOluWsW}}K!MBX9X5NQLs zB~Djr>&!1e(?pciRkJRzm6}ykbPB2Ihj0NwDG?k-M^x2$ z$+}q9Lm}`+2t&9GednWPnG7ps=tv_fOav}r98r3$CEHH_n=CH6^?Q%*XEk+y=~`l% zcXm77%(JY5J%j~c8`Tr<8}6@x+|bPB1~FYM<*CYt)8j*!N7Wc=cOjQ=D?!}?6`zrw zn!2gr%HL0NUu&A(7i68(ous9J4FQtdLz5-(5 zq-L0ivfdmtNh2sh6LLkv7=KD!DKzr~V#H^vGz3w_1F~}E;qwR+j|xe}cz6{SFC007 zT6g>?87Cs%<;Xl0U3d&XyQk5w{2~tO8N-DWXnT1+eS#tQFs70{DJK?4{13{cVE?4doi=M`qc@ykz^Nb>9ZN2c!6RUv z|0}|DftO7*#>kk5QGzHd1Cy%h)poK@{e6X^jMn!+sY|8FLl|{pnIGF6+UZJ?!OAI0 z@ep$UkjUH~q4fMvIQlc!TJV0+hN8BR9i|<*qFP^iL8Kw(9IoW%rhd^)TQC+fI@gGG z&HFx$U+K4-DWs2ECs1_)nK4&2gh^?zYqZPUWOSW*5Kv+~B0(7?TDnu#*Yq>|i76Lk zE8?Xjs-gf8lTAnZZy#@C_~h!!SrP1z>fU5*P%({4K?I(j^Z7xZwywv zj1C&Sk3cXT(U9bhbC|eKLlg(EHBoegixMVXt`@pbO1Fjlo+@QRH`k@Jtz`&aU}^OX zFEnr_s-}fTk>!pWtT?u%ALl^4rxUX6Fp7_g7zYMh`eWB|fEfPQvmYdC%x8~&DGGc$ zRz{}1oBMBIw)M|{#f%@{%AYz!goQ>0cr1(oCmIwq51U}dabt9}a~&$Uihq=bzyXz# zs{oY(6a>KI9C+gywk2WB(dDJLwTvFI$nhn)Q}ektSwe%ri-44P+!yF$N%%zj55X}d zxu2FUh?5=K#@o7r24{c5_FP!|pnH++IjCqjQqxrl4fqEspC8CW^`uHcCTpv7ff*yG zI*4ke#yg09PmOaB%}7mf7(#%N=FWm5-g7C4h>S;#K^tb_!yYk_PeKnzBTs%D^7w!5u21;Ep=9*{8xaJlN2}yL1uFXLwXZ@~k@( znm-G<>yZ;>ec0qqdoWFm$)6J<{{uri_8UWD$$vWy3`+WfxQ*dakQzM>Ua!G6+$W& zZXHpjm&(ywHb-V0#HY`9*GPF{@v3RKl4>}>H?pljlvg{mr68Z!%4_n{rPYT_X~4}d ztk7%>xm1Ag?hP0O+!cH2pV3G{nyA{|oQH8%qU9%$+QdHlo{U3$_M-}XAS!LN%|k>| z!Hco#HiIu+|8AE0#c%H+<}{9M&cR3G;iZ9;6fumOc;7Efq?HsgA8&-Bd=14JgimCu zU&uqN&Kc7&6q8cLcOUWPXG+chdOWlYbHo}rb+8-E?1(V_UFTMq z0LW^XKpIQ$(g9M8(CePk5Y8?15D~I(9(%yAK+xMzYQ(L$Hxh!%GX8y}UGp%(CfSA)*dk-@QS1Of)vjYefc!#Fv6%aV2d<^zS72L;cM74nWWTOA49)uR)l<9TR%Zue^n(${2o5 zaz6>?{ZNJY+c9k6nl1y*+(to0g4_Et+GrSO%vbO#CMX2TRywWy zV1|=G;R_o1rxtJjUxBgzQ8NEa1i0uWmB&4M0~9PM^4bsMgc18^3fKG1hfuW`#qdvW z@L13Ok#h@;=K$=DeWVg&pd1CbH)O=)#sqnH4Lh!Vq&|*)B(o_dAYj{?&$DIoMq?o2 z*?Q-o3qZ0xdgH#jGVD?hDz*$M zKJAY)8>m->RKly{)HKjLRBeS4%tn8E@=A3`!8us7G+%#|xJ}B2fVg&=-8|x~0|{-H z0f$Xp&+%7r$shofuKO(~+*qL9XUyM28x2ndY>a3*py zV!8`O>>Q|{{2so?{&mfg@VD}4_Wl1E>@%R0=VE@qGGx&vcyUTu0qb9M*2A~f2x8WL zczaZ3V*{K+vyT-ocF4$d&G3*;?E?~nFKuVyyLGvYhBl=G%R2VqnU24hg}&5)LW6h6=)7QW^@rr1 z*2R_No_>NaDqHl{fEMf~kfr!Uvtcfv@A9=rddqmGWQTLcnDORhQO{91ZcIf#9TISx zuoT>+Sqh*&oHml(^u9N(c6MQLUQlk;>xW&&tF0=MP>OkUYbWJ$(lUn23!oj;T6=pS zTKq9X$hQKA4A7HWV?3+EL%xn}xa`u%B75TJMTTNH_$(F?|# zI^+Gon;5Rxr(2eW>F4W_lj9vD^GCI}?W-EPSp4~fk(gspLm#$E!a(q6WhuDF9;a&M zQ*zQP8EOjBX%V`!bT!lwz!ZQAsyWDBO@zT;%P3cCf2#XAEqflzGu#r9eg{z#dtpGp zS75WiXaVXtFMUk7CR=_+3na{LnLKUk1Z9?Oy)bhMI7o|c#zGto!57donW>NJQ;2vPbF(?BQGk;dDo zHxKHI_`IyN{H&xUY{5TAEH#N27Ep$>yQI&}K3a#X}z z6#VVoyG`t<2w_T?Cq7Vz4-)#16-VR`WL&%D{1&lJtVqBy{zH;<0ybJ)K}o4zmMpKV z3MM+wA>R?#KMaq)1|^IdnHAR`coPPAxSxaZEJ5K`#BU6~d+kh`g9+jQyA~TKM1_vd zqr>&*`U>7#__m=u~aPWD6qND$blc3vI}f zDZw+?AWR0cZ-CuUjK4y*cLm3`T|-@7sacYxkhB`)q|`RYeN?2NMJ9p!x_QT#JWr;7 z#k%@Z222;lk$~wUt0xRQ(ovEAgcSOS&(!wneRE!377QKLW@N(WCCmva^&~X&%h{1j z7@S5J{G`N5OXcLme{teu^KA0tp{8<*v!*JP_yjVaGe3wl7?#ZzJzQs_05B_bK(B{n zTp<(YVG-e>p{daVQd-go{+p7hC_b_}K-2{X=SZ~Z8!YhPK~43h1lXs3BIQ&c?+pi@ zB^o??dP$f0Eee2+f-H#lF`_!y&yA?W|73xgoCtL0Nc2C>IH5x4W7Rq5H(;kAOi1BR znX|Px4S14MQ`yo`30AxP#%(`z2=5S0kjsJ#4^kubpR|%HS2kV~P447%fxi_hiRW`( z&-~2xZPnW@=c}fB2>wxzRDrrT$W@QonZo@_e2Xyit|P677^PBcz;+qAYVfS$GvF8S z7D;<{n+gS;s}G0Iuh^gdI`7a*hWS~+@QX4umDm9(n2Zn%SH`M5$jX1ebj5{bIgtO{ z!c0htZ&6xg4imqP`-sn=D0OWvXgEwNP(UBE-1`!@D1dnl$^-e=YuOb2Pz9VPdOs+q zK_Aq>mYOqeaSb+*dDpkdY}`_pCx)J!35H2)BjW%w% zhvRhkK2SdF7i-5;&<6#mhEdRd?fXXDLO>V5d(Z){kk5NnO{$r*yHFc_5MrGW1}=tht8sFcfC_Z9I&I ziSB+rePod&KLn;`8!~+Z6TK4ec;FR1>&;*tc_#jU2o>>Vxhp?)l1=G=d^3x;eMo-# zNh+~NZItS6@L%e10{*BILH^(BY~X?FxM8~e-p(=p17>pg;vDZ%`ZtgrCJyxddX!xI zze%yu-`)8pX1{*?kD@e%g5vtU;2V!i&Dqq&#nR6FuYFd{YFkd@yM24efbl>nbFzeBbWF`iV>oDvqnOk*Ix>xc8L$u?VxcGX(z%g+Ob2OdZ5#A14D!~sqeDqQSi;^1{9(=M)e{ce)BM}XT8jQWGA zi>txiD5sxF>b00BMJMn{DHPa&SVQUZaS;LzuYrZDYgpKwboGwG$A)uRFH;D7RPmUe zdBKz~4q1>)i=EMN8R+oGB2#AW(NQmy6hxPc1i~kf*qMraS==Cz@fVw@pJ4DHqj)?K zWuPFkuNI>z@zakeqU9j1mDqlZMr=wSZOs(q1y3@}7d7QMi%CDU#0^-Dcj-}lq`3Lh zFRu-)48#%eTdgUs2`((G;A%-AByW{-#=YGNAvUx~NN&f#@?r)V*V~u%CSbIIS;@`z z#^%eTZae{q!DDuQiqXZC*MQE*ksH@i5};bX?^N&_vOMQ zqnGBsX?UWo<10tarFoW!ughJtiR^X$OXa99vg_og+)p{%V*T+gD9$UhZB)ofw;eJf zQ@T?^5Vp1A8>9MZ3;`a`Ob)N#(KUlv4W1YIq$$7NZbsVD!+nqT zw}I;vzW3lvFDFL@43Ua~k+OR-CdE&{)Dm+QtB66tME1VdY{s~ zo+B>AmfuUS#p({|Ketz&Y8@$q083D{0RR3J8~&>V)mKv^<^Q_iqv!gq2ASbO=Dd0a z4il6QOrlu6B(P!=bS4S6AUWVuurvcVLruT@WYgrt?tGvmIU_0G_QjoM+?C4zv)`T- zN^L*ya><0~N9dOE2sI2JOf+W3C0x?gMv-0x?v@lcG;sqBITv$p^Rj-+LJmKZg!HPnO)(YLMC+%eJvY!i*3cq<;)!V)M9(-ZTt zEt>@lr_d*gV2WL%r}ncjroQQS??fg^50cy={Dh6RO-hbk^ebbhNjRF_0L<=F4tC3+ z1x`bH9|eo($&K4!`)5B1`0TbmG*?Fi1n6QCOzZcP4cj}&e>(P?C(qd!Se^Da90&;N zza29J7GqX1G_v`tMD12ezuk9c{E;8uBB)cdq-_$L(NSneLYgKK@w`CL@ar%);;)3- z7kUVoVeLj4Tm=wv&!>wAsR>wP;4&rk2v4T}k=L+pEfT(?u5}3U;u9 z(r6$W8*aRgGu7#km0pnY)|6Nyii2P->^waZq^-dj&m$}nMg%ubom3KgkGFd#nVdBy zppqqedBWB+Y(r(tkX}qEiB;Q7@pzQ^$QtkT3Y!I2GGDaJ+KlZvLW$0q58^CLtYtXh zI1>d66^V3zV`R)uUqfwXCWDj5tmNHi1d3F;SS5-DD?+GH-r;Z~@6fpOV!a<*M(n|p zlh%U7j6I{8Jj+56*|;L`Ryxx_Dz%dSG$JM{qYQMds(*%du6551@@lHwUOix`v|iUg znCC1|+is);UOAVwpsLlxsv8ad{;ezSS9hCoG#OzS@2CQ`V@%tr=t7kVtZB4lj z7k}H}MM;FZCoEg8v4<-QUYeMiqt@LxH-kt1y#rX;*toV@m+MiVj%k)%&hXjU-p1k} z(#7q4=_r%_hawi|(_(_9I~Ofh2NT*t?yw2cVBB`Rp{wx#g3uhus%bRr2L$rxR+dig z0!m9&;fvzvu!XT~DvLULi)=foIYf)GUbyc@@6IeA&27EU|KrsG&O1fB>+L|)`b!7Rg!kLzw{RSs?&rfyaj>Dyw4cCYc zvCFlql@bKhR*~2yQEeM)MdCB^9)v5$K0m{)xz(MUUSMyU{$DohV6{fuzpu zmHe#yYpS$M274{E$aegVz>`@hbN~#(iG=FA8qaH^G>e23SvOv>g-dszu7~M1aqfh06lvEtpFgs*|%Vf0E zmSkdbNs4^q_L&Rr1!aa-NJ)!X?QpH%HQ#GA2xu0%#(omDG!-Em-t5 zXd~P_lqQOrPq2in-sHku|bdcHj$Y^2WiS4uGH zeSSGwJ{YYfeA9vGg?)2GeLw!q^zQRQ^XuaIt9_1lGsswC-;VFgWvhO#jvunr&_!+T z+wK1Pg}uPXeJGV!8v<0Q)Fy~mSRmgi$fbfjt$q^)ZUaR=IMzP7%OH{SsR$%vz++Hl z|FtZMznCB50)a#BxRG{P8;eI7P4h)Vxa4R`NZXMou2H1YLVnd6NNW+ zIqaIhL$5-W9c_?jqR=re<7UwXsa&!xX(3!pd@O{5vkOu_=__~?$A^t!rXoNBjK41r z+_9bn+MRmpG;=L6CI@qZQAE1&bmiMzev!kVTvM%xNyitZHdxXOEW5sNKfQXjIWnm+ zTk6d(Vs52VEBK?q@Fgsy=nwcq9wfgQGp%U15}F-_O>E=KOGVQ9yn^F4;ugqF60co# zPa%gr4R_=M1opjHm5J9%3N!>NPU<{UVuIiI!#ZN)H5$Hb4H~cFM_HK-z&T?mc8AE0 z!xRj;Rgjo@W}bgt6IAQHH|dnwut|Ocw8XFO2)y<2ZiO@%8a9;v-uNQaQRzzKd=omq z#JM-LBhKnS>-F73p6`dHd08n#m2~9~6VKI%Yv23Mt$Ej3ZI=x^!!K^bNqHMO_I^4U zBWIKAh4U8thmlML{&c-o-;<&=!tvR#5y8ZVsWjR;8R3g$G3c5H)2thY3W@V{wsRT2 z(dw5ybez7Sr=%caaXkE#;3Y!WUJ74Xo;VK9FS!4vyq}WP)lR##v_e%ZesyPAt{9Fj zFBvO+kmh;#>q`F&CAw%pHv8o;T|PyUMy?UplBy9E^{|Xt4)U2lYt|`B-6@L@rDINb zR5P{Cr`WBfu#CApb?#?VL3J1P_kjTWvaN^}E=-sGz`&N~?J`b!gTXx8=tBYtpGUBE zBK2yNg!-KpoBoA)t4qkypYe9TU7ZU`!K-bwQmmh{YS0#-q9WzSw!*k|l3N&W5lSjJ z&nGABMbJgHRsvoRIRS;wSDw@Xsag8k5taKECCbisp%ADj%YcwBTVL( zEh0i%RABhDSblkAaw6HVHpgOZ%d>(Lx+jFgrk-jXqv?`vlDlV zR;&99`k%R2jvw!8Dewyq3Yfj30pE>Xon7p0HEeB|EL}`(|N7dij;es8ihXr#9LM;f)+@T!dv^os-ZOj3? zDFCfvI3UtSJ;jT%nH^Vx>DZE@cimTw09yg&g|P;T+wiKIA!mysxV8;0)5IxgdHsLr z5|}tz?gr|i0_r0ChpxY?!~RFzU!`HAXX}CaIWp94w>(LcMTMz3b-u$?gqpim(Y`x9c4R#z_v zJJ}d-4X=PDBu{%F#V9Gai`$OlX!Rl#BO>`7;ZgeZ?dfKh`BV#;q#c(h)X|_G-gvg) zbf3#kBqr?^BWjYdBQ|A~ZkLSD7%bTjOyI6kr&m=j#|%@&FBi@WbFAyvr!r}3?6&*5 znz{0d%?!PcD8x;Gmn-k!?V7{z>h0mM55%sB3-SkpU;NuFUhEB}6VSizQ%HaPk6BvW zTxhs8a7`v0nBDzn&SB?jYh>yKT$TBg-A!w3+3j;*3Z(hq>8BfzyWeb)?u*ssjO-7^n?(n>O170D2z1{>SY$JxFJ9AzK zYM1Va&>zc8tsK1nOg*K%{HX-Hj*2=n*XAo^`LXvNJNp}DV*wJCwzia7gZDet?b>(A z^e7v?Xs)nj)V%Dlo?R!+Es zy9L)Qg)L(>$FABis<86ih);0E9T?WZ$h8}X;*OLG`;e3xgzV}H^OqwlYITbJj>^mV zEM%&E77|kFQx{J6Un28G!(<|+NZ1JNX^dFuW--Ic0(fM&xOvW3lH?${D5S1JrC{w>>FIdB{d$@%;=%a31=tXT+@X}< z+>E&j?^e^PKzl`0-Kz2M2?n_w;qAiK~{}d>MG5ZywGc=YLhJXtAFh% z?&kU`KUsfdLPI|+gRvpZ+EQ@ImZsGbGsh7B>(h6VJ10qn^g=93>dcu%aydzyEYH4l z`EOjYaoLCl97&Pol(Z)4@OSjfU&yrN7!{*v$T9jqy(kU~_-|Of*8+FoT2S1d9cGTf zDgCA&VU?&hEWZe%8x}t0=G_r6Gb*8&6BX0gvL)8Oc(?ZuPS3gBSif6$FF0WuhN7%D zj~>qX4d8as`4EY``rT}F;qcR_ld}FKdN_vA9}m7;O2UY0_D-lGxp!A3wWdePef41g z*1CIc@4EX&R!=m#`{v6Ibib~;?#N-VmlzY2T{Z^q_inVF{%~Y=H!%1lh-HD2J9o zY4~+91&|&80`eHj@BLAauHusAs4ySEt0X2Q0ge0#9eae->Xw5aT_5~*^MAE<=21;t zZ5R*xo`3-nLBvMz15s8LXbn`YwIT&Y3PK@lF&Gdjgh~>Y7$Q3*VHasA6!ilnv9*wb zNZHaND4PfZCJF`!B#})KzI;FjijA2={+OJ(XMWGUbI-Xm@AJOr%;l7;xKU`RE+J=V zrLlN{6V+``oD47fs|?lJGrx_fVyP~Nj`{rUZ;hSdHH-+ms?$Q9!#D_^Ro5~K36%{| z?IirW^K{4D)Wfq46dS-AQK3!=IqP2 z4{B%?{px`zNr_GHs&x|w^Blj}iA|@vD)=Yk+1cJ6-Q1Dsste@L;B|jljD!X*4*2_` z^Bf99Vaf+0{r%_&jf1jy>*g(P>k*9uM5u4 zusHjpb3Sp!c(JhYfPvfMCle=Y)3h*`&qVbY51)Q!$0KXr&1CbwBz(*Mjb%gaPGo1O z$t!=p3(3)>bo$Hg%OxvVseeLfc$EzCmVc`nGG}wuNp4ti&|VwZ3N?*@{@(G&%qn%p zSx-Ctr<7CMt#V=;CaJ2{1=`eOmb7Ia(mG4~=Njr`y+Xk$?-EAz_eNc2DgNgxebn>c z4bh6*2%<67Kg3NrlZ>KW^#?I~=&q4UPA$;3yr(&WmxGI|?I$t}`=ZxI-^N{bi@v`) zk6DUuR4RG+|3?(EV{=Jcm2R3Pi+;?AK@J6BGqC5Sc`_<*;S5TiA}!!r=d&YO@K}i_}0Tnez3H&T_K{of&Lc z=d9k$^sCT{dSK(L(hC(%=Nt?u&jy8S&%>;fc-zE>9@LWFjQ@TN^HfKW)>MA8a)1B$ zbcboyGxHPS1PW*N@`%ZTQ;Ug(e4$v4enAOd zJFZ0q2dFjry~61`9{MH`^bn$^+vmRf9LaL1>FH2RchE`L>^2i6SVYGKQcb*(6%idK z`t|u0ogwI9hCiMEYOL6!ych0&Yt1k`w8x00pP2eaF-SGtG%`cW3(=}~gKxMay>7nJ zXf*)s^~0<~TnDw^R$I73)x7mP^U)Z(|E0%re5F8Ma%Sg&J`EJFFAJ4NV_j^W$W_S~ zaS+AHT`rHA@R8*5ix)Eu@{V4b&ncuhXcy6#@e+Y!*z7a2 zz|7^Ha*yhq9!NHf=k?YI42iL?Z{MNEPYg}c6H22x2MYY+(IZvNhsy&apK|f6&`CxX zlDqJT8z**L5q7qs-Wk{v?!J$CId!EgR?K<7f=RGT7#(B&;rqXpEXTF7XsafTTx5vv zbNM7=3WDIR+j`jj8g2G*U#6k@vVc*PAkX3@pL z)!E(bK~2l>nmbzVy79CFbjl#y4uPR8M~t6_;_kt2lNEP{{B&*0!};`|b(461kCy2IFr> zMsx)L9wrZgXiDJ;K+C^)Kt#k=qjrA&8mgfLfzU0$ofiTVu~9hyB%&_^_r4V#PSW3I z4RqcKbY&pbdB4Uc{?DC%EVAV+WL9neG#wa(pN9ejCZ*&AoNf#x3WpCvZwxQ|5}ix94>}(eQNTF3@FKxIV>WS683wEXE<{KaQt_J#Qe_D+ z56&7(c!StY9-Ko4OMv~iL_#NVOE(S{02^J2fJjPUE87d!0((b^)&vDS7>SbvtAMSR sL}lgr=B!8=FE9^|2PJ%A>PJgVIy!W7RsdGe`l`}`1OUq;Eo=SkZ pq = new PriorityQueue( - facetSearchParam.getFacetFieldRequest().getNumResults()) { - - private BytesRef buffer = new BytesRef(); - - @Override - protected boolean lessThan(Entry a, Entry b) { - // first by count desc - int r = Integer.compare(a.getIntValue(), b.getIntValue()); - if (r != 0) { - return r < 0; - } - - // and then by label asc - BytesRef label1 = facetLabelAccessor.getTermRef(a.getIntKey()); - buffer.bytes = label1.bytes; - buffer.offset = label1.offset; - buffer.length = label1.length; - - return buffer.compareTo(facetLabelAccessor.getTermRef(b.getIntKey())) > 0; - } - - }; - - final FastEntrySet entrySet = countMap.int2IntEntrySet(); - - int numValid = 0; - for (Entry entry : entrySet) { - long val = entry.getIntValue(); - if (val > 0) { - numValid++; - pq.insertWithOverflow(entry); - } - } - - int numVals = pq.size(); - LabelAndValue[] labelValues = new LabelAndValue[numVals]; - - // Priority queue pops out "least" element first (that is the root). - // Least in our definition regardless of how we define what that is should be the last element. - for (int i = labelValues.length - 1; i >= 0; i--) { - Entry entry = pq.pop(); - labelValues[i] = new LabelAndValue( - facetLabelAccessor.getTermText(entry.getIntKey()), - entry.getValue()); - } - - return new FacetResult(name, null, 0, labelValues, numValid); - } -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/SortedSetDocValuesFacetsFactory.docx b/src/java/com/twitter/search/core/earlybird/facets/SortedSetDocValuesFacetsFactory.docx new file mode 100644 index 0000000000000000000000000000000000000000..c83a70b3061943fffdc6180176122653479d6117 GIT binary patch literal 37200 zcmagEWmp}_wm*z(a1HM6?hb+A?h@QL5*#)j+%34fySsY`?iM5v-2J~ZGv}O{bMJlM zFU><$t)HybT~*z?lw={HFu}mU;J~I*xwR@)3geQ%!NA5~z`!s-t-9g>`_E?fpAFSK z9L${cncVGc8iCY2>x4&IY=5@Q)LKO%PSh>>*^9=9@i#&he@Sy=8}v zcC?z0)lr}{p68u7a>j8_04;SrseU3%8e2z9rFYO>|J@yJVGM=P!&0ch-Q29a-GsW| z2+9{ub>Ui-cF~yRQFdPLH^(D!GM}5AAl+qN2?d`H2}3~|e~|&N`wQf!{ZG&USn2IYL=%-=r>4uxuc4C|@Ad z^L661$Q~$Nw9?h7ETON3-Ai(V2A2%q z;ZN$WwiBdnn-+0Hjx1tEb;o6{K_W!Ifib8{TYowuS|ui7NM|RFToP28fOd`enMTva zhjA7F1CWwy;tVgYZ2e*D7Je_>^jX@-Pvj`p0Zlbk!ITw;rvO>T5#w51=3qLyEVeZR zyX~=E$x^rcg6S|&Tv64)o#Gm1vIBj9$D%=?c&26d!#*Pg`J|@jl)1}Bpt7&SG|?}X z+LSY$#+W4^xX~G1uCsq8DD(@Wsuk!qp8+KZ4U`~LfQgb5z`>c>1mI-$`zFtfA6MvS zL6yAomYkE<2)jasla!$YKMMaSjp@JCddtBnZ#$mFHMzN4V5gHq?@F}EKYZmNw9ehw z3~3S^A50t)cjj*zj;M|Gx@wHQ_LL<_$6J{c)OXhNID1KD!Dlko6QPXv4xuIsQYM{M zUv43kk9?qxlVk476lrFQN>T2im@1n5@)r$}c$zkHB$7Q$+MoXZL}3Z!@%3n>%|%3D z8E7TB;9Xc8wjP+dPVK+gG5ctf*yXy-p z*7QUf%wo|DD490t?+jg&d587BZy#RYFA>n+b6-H=9$6q8(9XJvzdrX};{UTQ*Q={I z$Dq2{LVAVcF|vR96sc_T`W>j;h2;lul@lLutZP-W1i zSQ>+9`i_RvW0mtTjPRdRHI=HyyvXW}CoYI!9h?>Er$4VCi)=J_6}2lkcz=5~6OsJo zT6;fmo}|>cwDDD$MKQb_@}=6c+@oY#kn_Xt&5?F;5)!f$#HSZ_sBw>SE1Km{DI9qc zd{(2*^9f5RYecWlH+7~z(Q+*8ba4b`$wiKd7#uEV-`x)&{J=3O*b)JLyODAz&pf4B z1;Yt%IIbsAtt-_Gy^K1E?bZ?<&f(>Rd=aOK9Q{t7Wc>-ydyST@<-g__+j3i9${&j? zdy5S9$S=0^j4eU8A`YuV7@N?Pis4&32Dtjg&GRmy@)A-DJpA&<(|%?RMxuxn!EzfK zh0oNCkYw$6P5H+irV3KQsv&BMWWpz7VtjfN+EdMg1Mx*2eFfbptZYs^G*`;)U|=iw z9)KD;(MAwg>4U4z4)L8O-U}+zg&pg`)`N>6;*lE+53r>ko+#x6-u7iQa-7J&#db3# zNoZ1YlY&1a14rG_K}GtoJG`ok6e+x*Qh;(y*4Dy8WQdZ3$v z`~9B}tQ)||lo|BYy4Zmhr{8zRiMFou4i_fytoqwIDoK5WZp;P(w{+ zi5t2R26prDm6My)O0%Q{4BfzU-ngw3GYw@*#FG{Gk%^!dv1?FNnJttl;Nr#45Tuh> zNXU|haFMW~>^Y3UAq}fgZ#&L~d&^qMl(3SVqDP={HPY%aaf^?$rgFyQAHI8(n_xX< zj}J%qO7Jn$1W`Y;57|ezguF*>sSbR1LV-ZT3zpP60b=ef%on~s`+xuPuHfG60=-vOI!X18%O@(0Eu(V ziqe>5b@tV`pB7rZkckOXE_4M$kjRleJ0p^&m59q$Bne^d^u9l>+@8d~wXpXIR3TA7 zc`bFq9XP)lw<9FzW~e|BK=7L{s1V|YbB_8Y7lCs;nD%@|f5)1;kiidk?Ee}5jv{xP z{WeiTyQ-k+5RquxZ*=SNDx^AyE(N)%;4^VoO(bkLo5@{eh4V)`v$4{MIK6NqKO`j2 zG;~_@edp~iUNI*)771l3NCQ+l%l9sxhGGT&GHJM$H$LTxj08-+ z#s*5eKlR4MIwEh6OV*S!l-8SwEC=@h>_=D71iyy+sWl`=stYf`-)hFK}9CSjDAvw;TFZ z?6F_H@D{B5vOYQ1C{x$v-PH6o@z#8vND=1`s3otn{&c zP9E{NUDZ*-2{K<5wuKYO6ZeDshiS+p)CsGs-<}MA8eU1m7eMkRdjFsy(fZqeZLaM7 z@X^^oYt%SsIwAnAQGZNDf9|mUJ|X?N+e#Ew3}nIma`uYQ7o31uWFPVVR~}V6om6$9 zcd*n-{H^%jrtZ2agZPgB?j4s;HnrXC^${nUmTi%Zh`KiSo|~wXKu`bqExVx%MKhSXEI4hf=EXU+TDZ zAhacB;=g_h$_wWO-JuXR4ui9|FHK|8v@pD#zxJU+2`% zNY(jtcjx6BKL4)SUR%a{{GUrJIDVs#aDjgMvV zb^Lu<*h;i}nwbe|W-l+@CDbK|6%{s zUFS3_dG*EqEZls&tAGEne$k#X-~Mzk`}3wfBxLu<dhCeA(c!X3JeHOkC01)2aA{H#D;D?b@nd z$Lnc+b==b}T=>mF3(${t*S>qTf8+lCq0e zji{X$pOh~VP>8~p%6IS$@wR>T;`G>UeAl}E0rw*ktow41NoV#+bo$eI(#@rN8X@=i zbp+6f(es7Zll&^7e3#b6qswDuO;|!K#y6PxwQH@by}4pMX^_>|u6@m?OHcQ#>*YrL z(Oe~ksNZpOof%~l_*IhFTRQ86^lhN}q1(8(dVHQLx&HaHP6!Y!jS}y3JACK)23~uL zFwi4Ht=*gd1cS6XEcUtv1-dZg6rFE6q#h-tx=Q$^#?VJw*oP;WxuZSCEEvc4<@KQ7 z+!yZUdi~{dn%;8_aJgesK(Ny7>@*~W`!tJN@%YWh;0!2Om2JQHhB45U9NDtceWGx% z8Uxt5|M6C<(=C;S-_@oo#q~h@*u&*{$4W{4dcV5w%6)*yTY540)*ebgb!#l+VZfY^ z+l{Y*khTL?_jUIp(x-Bi?GhAL72-a1V&e*-0STW_TJO+Vpo?qQ_3(++AT@%4+Cx~t ztQs(Hi##ctrbS|p8i7a&)YMBatXu;C{kPBXGGP7wP5*vEdI?s@USZY63<8g?sEy)e z^QA+8L6|tXdfIJfO(#}`tuLf`IAN(0dEWk}|7XpnPZg$#wzctd%HqMEqjLpzLCIqb z+Ij2K;-@P$TI+#Si~GR04*jZy>8F#~M~6GdmtmRPE8&wfp$uiIM*aD@^Zxy-tDmR+ z&KVr^!L0;^no)24`|f2#8CNvwfr!iB_U*{%F@3|nyk63%tGV}I-$}WinXvQ#ST6M%WhX*fe@wwtWoxGm^w4=`;8v2gr zjYWD3_g&PR(2zzZvXGo7LFml9TzzCs;#rL}=A*Q-bP2jjB71od!yYC*sVw8-N4R)} zw(bhwO#8{O+^_bz=Xk6Kb0R051C1_^L)cN+u{~55$o^nGJ}4VV`isgF;C_<7oc~ z)d8UegK+;5`X?1sDfO8(sr!EsoGFuoS`hwFk=y}on)^Q_{s$`7^Rfy%AO$q)@4{U1 zL3&hBL0&N%elU_CGX9rDMiMw`4@9^>RL>>2HKKO>9`*000%!4tDcANc41+8_37vV8 zE+P#VpR)&WUu|C<;)V94o{tEU{wdUnu_Y}{?p>R{tr)sXcFqJ6T66o3?aRaCwyzA4 zf=s%}&u4?{Pd6^D`u2lfqR;({6Rx?IOYT>?_d~PU)!XjXKj(!M5BBy)^S1A!Hih+@ zZzPDL?RS`#MUwQQ&p6}o-ku!Zi8Fdk8=*3+l@exb4z7{ho&sH$GTe{`SG$;ehqI;a zj-BEUT7M0M1FCoYt71?~ZGC72`mP?F7>*p@ubgl4FU;C;w=<_4AH-o#kN+^?M%3G2 zm3JjF?F`Jt+ay%j53`Q%G%4QOWqo+t^HCl{IAeXja`E+cJ8MaxKq=gC4y{?ZVN_iu zq!??9)LcryZnv%@pKN{YU5^`5zNJ&^cS>5@I684(=^ltqzROAceo4jC{n<^`ate7A zJM_4$!5tE6m`)vgyVP(YJ>cba;JirjV4Q8^Gf`NF%vie0$MN*7=lC*iXj<`wGkF<4 zVz&BO4;#@W*^>p|3<-2iilVt?(>jkGQ^SSh#cZ($6wv$$C-3V$@;JKtIQxof-IF@7 z;pmcnZ}-%!`h!XMxvLZ5Bfs3>(9WK(EEo0%W+!fJ3n7nHEdu>6I|iV@o0}srPd$j5 z+0Cjw-w3bW{CNh~=F2Nl;Kb@4oWciopwibFsucRts4A!5a$1*#rh~MPt*- z#|-*q3;jJkaq^6Dc&h%^Vdtt2`qp=vPH1|g`)%=2KR-6*R++l=Ct+p|Z1aT${-lWZ zOIVXmZxS*&K4MS5@?Aa8L0b%z`bxxc^aYmp(OqdsmSGrqYEuesE7#F)i<@Z?peNVu z*uKq8?(zDJLfRr``SxvD3?FZJR>DubIz$dP&Js6oo{_!1rp>iayFFeHU%p-r z4SKe}IC=o@UX$JyP9A4}J|8)-eCl{@5zf42ex4qN_Iw3HSx)z85rQ(@Y;R5(z9D^3 ziF@KSS_{fAIdyhMmXsf-8qdB>L6(lhZ|hJy%~ENV4Fr6vntyu6=t3z-~leNZ0 zK;?Z65i*$b^zrl0*k0%h-Tb2IQI*1OG6HY6tb#m%wn<}l5>?*V_1g{OPToufwm6K6hx zf*M7cB_GdHSXkiQ$Jq&;0(hw%a)jrQp>_I-Z%hlDvgO zRE@zFdv%7s3$FHN;~Cb4!JBz=mtM$KNh9@fZ%+?vg$g|bdjXw+IThJds!D8yHNE-o zpMQjwQhqTx^n7q^<@=R-Q=W2|L>AKq1Pd-fz#f4$F{PqEmDOIi0;!0S`s5ibCQV z;ad&%R+7VA1^tf~Y9LnOg4>lc?NQckCD;5Ya>vySlSg4@wMHRvT=nQq+?erP{0dJd zP0bJfFwojzz!ZMu+DvU?tvJ7`LbXLd2`6cGOS13cqCLG!QhDIm(wi!w;L2E-W!Ng1 z^|m^)FD64D{jriqtZt_SQKQ1wCb{5bO=Y!Jy2-iSsJ)1LSw_c6&w7+Ko^qJ5nc`K7 zTZUcX<0OwL+in4(xvfQgYJp&J;cW)lvhxbGmvzf_gnTUasK=d0c~$(eQv86H7KibQ zqRYWnWd(W5?*0+3HZDR;52*>t2x=Ydk0#r*&r9r0%#j98nNLU-(4Zbr!VUv?mTpPbO< z8?pb8LPC1ez)Z_UoLb}elS~Z*kDV*SzJWf^xjDdu z)kI84S|KwU-rAsAOiGtLbdHR*kI#`93L)cZOug0I%sA|;n#5JR1^MjebltzYr&8LB zQPR7s9^V`6vI9Tx2)q&Eq6uyD*bFwe?BH)w!f>*(*cUxMIJ|r-p4@gvi1M2LJc#&n z>h?RtJ!LsZ;@Z+Ow8m(XdSzB@7KCfMo!x1i?1QFqt6o<7tM2KexD+u84x?ZJ(kSb( ztBl4;min#{(%Dg0A50!m0LPrk*V~ZpN|b}72&{bzJVe9lT%YV}j8p4&1ER}ws^_a& zb9{`>!#nF6lCH0rl=(IXD-ncxW-_G*FR$mCXY-K3=9^RTP71UV?F8S3gw7?LD_{;; z&8c)S?pNN$w@Hrq1uZqCuR?c#+qvSzN|r=1$c{|nTJ9_xY(4Q>#%HrXMXoDh6@+eR z>2Bd3Ms;E+IA3$Q*e<%dZ(_N?b;5ho!pLkT^`m>vI!5E1!!+<3h+yY(*D>UBoAiVc z2c7@m;xFozxwST&!7mHIoWZv#7J}@o<^E+8y)kq;SBLWp%G3?MQ~u!U!E($?$pNC8 zAo*K*v~!0ach2MmL>*jboEdy)Dx`wm=AD$BgRw=`Eq3Q8I%%{{tm!55Jnmcn)wKL( zF7fHEoXxX;r>I~C|6prans{xO zSkg#m4}S69$K~?}brt@n8#@@4m8}rGNDky@Cko0?-^(oO6J_HNQ-@(tYc z-%}mwPrz0kUt`^Typ8zQzWi?FxHMQEM;QPL$A0G{)%izw$zS1f{|-O=9Ue#|)>-Dm zb#4D0^3v1#Wma-7z23UXMKW8N8M;HM2ji%aR{|xa4Cf~PB-XY#z|*5M>U#;!#!{$K zwY4vLXF9%rN0tti3);2#WTz=V#cFAefq`NP$5AkM z5ZPS$%A(|1ky4F|;GA_?UHHTG?F1@cBWH3uZjVB`ybEilrZFZMk zHOtH`lj4*`eC{66p%{irqQ)Vt%DC<}U&21*$ExnN%&FGdrOV7|;shSv@!7Xw*gxv9 z6Hbki%jMXwJf=zl7vzP-E9cd(b)z=&HULTCZgT)6HoB5fYJn=#NEKf#x=&vT*4K=) zn6@i5#!KpNsFJQrmRW+uU4h>kd87sf5xS@X{dKHu%=p8|A}zf9&kR3I5h2BPm07jM zc;~B^71vJBYd(@^&kh_M(Lh|TOczJ^o!?%mK`|_4tV|t3!dc=Ss`K~jXz%fFA5U-(c*BA<)|+AyJ4ggVj^L=_N8?A|ndnw8pFW`!2} zZyqR$fAJ{n%HV)+7hfo$)fhP+4KcIOmB7(}EG2&bDXMnO!rRs=DWcz}TY02>(956( zrN#hpgo}cStOhlA{`$oF-U{1$1siMxX93IPxBt&!jyc;sh5WP0oWQaqM$KjEruE&wxe zR*K>_A$AOmP`7tVN0kH9x!D&mrRUM zO+Y1;ck0hS=m@O35@=qGb4XrC%U>N^A1@zjd=Wp*`E(*u(h%WCeK2q&Z$%!`47{ff zsh+x{L@Y?7edKI_i&@h(ywj-aBu(zk5m#3i4T5xM4F#rxXLK#RqXf`cab8UHCDtG- zeo2To^$_FaZDmj)Ne&oM8M<0F>J_X&x7qQN_Ln0><@FndB!d~y_yLV(_!Ge}cf^*O z?Kl9e)x^IZR_ZRbH8vlA>u|sbPxwin8##YD>`tfd>rU^n05+sBFjGs86rU;J!h6E1 z!6sLp6qPn7VG7KN$cYn7^pH7{JB;zA>trX#YmjMRN*Avg$|A& zl3~wcVT;EtE0``oLpZ^*o5lP(VvivGz}+(wHhAc@W1`9+Rm~3DXv#X6f9B2r0|X{`6+qHxT~iR#8r-tQm7)$RqIMExxFgjy*aSB zyCB$0XJ+r#KZLL_E32nY*+{#G{QI}9G|a>`3U1K@Hl)V-$#$6`R+Y0dcwyJ2>(&y! z^e$XA_mPUyk}kRmXDadNg(lm<23bu^dKbL}VA?s=3_wOhx*Hw*o6Gh4&&YYJFQ*G= zdMbPuMeOHd3XX==;U<$?P$w%?DS1dWj5jb#16*Nt=&QeUKE`X?ni*gi@1$!DQFmEo zjDFiq!nI&5qnwh-s9z-sQ6L>5ZRpJLs?Tp4PcQQahQ-22W z{Li4I$vwuK{mTK~FlY3G-&9{KkZjN8Gcd;Q2Y92{-+OkTA5=&-{_c0hH$^>|Q@k6? zsK2BElYOB9+sXK&osm*TZULsrgnBB>%zGzeDD|D7L74MGp3d+7b|kh?=c8gTvng#4 zhrmLh1EizEAMMHUrd+J4ivrm^)X5iN&UhAV*Y1>4+7Z@&DB&6*nJUdbP2#oKW5rK? zWX1oF!d$|ALKl$?jLAP0y8cgvml;cTXA3kiZcQd@T3wLA(E91)Og`irwt})Cq zKaMsY-W(i8O(<4H7tifI>|5nWn%mSdvlJIE8*q9Oz)XGqReRdsCv(~+8N~}*cVhsW z*e4lbW&p@vvd&n1Dx2!}S6Y-w_Dif2eTRsS^e^FqwgO`Hir0VSs#Lmu>ec6E07vWh z4~-3ON0MBL%oOTJgS?4`kr7x$^v>3vpF>K_*(k$f*uGVn>O*%YHw&O_si9bmWW|WU z78sxpq0}MX#OOVUOQ`{Wt_7yV+7iY*9&^7THRVd)j-{7%p1WsubX2h_juW% zGxP>iwgUB2wHmfb4R{%P(fdDz{ic@vgBl$~4J-S5_dU_Nv4E6p^ar)8={Sg*pX*QR z@01u3$o~iRMb`j)M_9JuhIi|SP9ylE%CcT```Ii827k9-q*?(TO%(0N!Wa?c?xC8< zvNZz^T4bi%_Wki(CdJb=10tQfz39Jp*@f?$z2@HiMSklt0wPz1{e!%jl>;M!>Hi>~ zF_PJOh)&sDbNY+C&q(G$Me`m(vsoGQd*A2pu!pLxam<~D2AiG!t%COr>}?2{gl}z! zV;}Qw?iY8yb{0Vu7d$a&A&38r0@NlB`7Gs#(yj1n%;x*bcV<=|UAQ&v$1+%yZOnq{ zD4#USDH6K4^{;9+cA^;8rG4YPDQFWcbs)Db7D`^%2p%19XN>iSzY(jM^CCs1JO-o0 zSejrEK5lFj$AfZxT&M3Nv8J*C?tW6u{2|A78kS`xF%4yFQMQjyZTVeQ{e%97L-+#F z5Pecc=LLZ*4JOYD%kXRI-51id1@JVgZ)>8!Q=4)VD7fqEcDHCz4*7-WA@O29t2EO! z4Efp6BKV~#wMlM;*@EJ-=(dh+j>;Dy`Lx-FM=S{rB#GHEFEj0<&brVd7r!ESj`q0h zrrP z)BH~4=Dl}0?O3OL^tX4MinpMK~%uQpyT9WRom)U@g-`*d=-b-jewk z`dmG)+ZHSSkx1{^;~iW>k&@pfAdGVXJ#P%O?lm zEo;<_kk^t)4VcncS~}89A@lV6&7Om}W4ESP6(2VZKRG?P1FgR)^FoOCYR{m~>Q33zcrBTtz94umwG0Njp#m`Bpv%&PvPu0tXD#|*g8hi6EdrsNgDJ52K)a4D$WQ_> zF~3moPf#r+GKnP2CDc5kl{cm#aS#(GaP%ylwp>}TSuH7zVc1FlbtGno_89XEh>jZVEyJ#h>PRPY?G-iien8_h_ z&86{`0mPE#vM)F-cIS2O;2SV8=VGM44sMNEw|^}(q<%u_MMR}V?Es5|>_J3jCFuae zp$NnI0eu6_OvAbRlf}T#d^_ z)OIQt9+~}@Xyq%Iiin*xxD$y!322+)4$dTv&OCy61aF{pj4<=51MCX74^fUe9rlXU zqLE_!KjNZ9e~ZHnIv2aJ85uR+;{8=a%-T=X00bw2{(XV116^R6fZz<$t}g)%IbB=O zg(stgLx?Ofq#Zp5m@Jo4LQlHP$tjI(K=3P#`Ev-j5KnC89=8$<1DaE}^eI>qg{5{- z@=nS?$vc6A9r3qqf%<3i?6UR#N?uK;ZP(Yyr39A06e9E^?i~|skKJLUW@dEgTlkqg_wtQnlbRwV2ZlmjnGc z4DX;;V=`BHc8h-s_A}#~tDCG(JO4#H@;N{C*LMeNK20KDs99)A1Ql;;Vu1ql`F(ij zq0#iKj>Xn%Sq`1pO;gRiw;eqQONf`DXK0(`UByvop=Y^EgXvG?Q{iOmxQ0)5oO8U{ zbRWTE5M5&*8}0e7%J0P#J00O!yOCMC2aPx!c+jjxQ?q+=a-`_y`^6rM)M5~963FoxUD7D;g+xz7F5x%*umD&ua5K3LLatSy5n%}ZH=bojv3jy zZ_|^@*oD;-A&78(k=*=Ag}tBxKm;WLa$-7l8XGZ%FqfR>3Ii9jVY=E=YecB~Ncq## zv&3-H`hg~=z2R5GD@OCx<%0tl)$L-6eG9M_%Kb%2a?~sF+6eBemmX}zW4qHUo6Z-G zJ|SVr-$Y&0)vlH4Q_o}g-nvIfU7#HJJwWf49y^fD1+xkJi;5x*mxlyj<5Ux2Ehy-H z)>}T^R^Po1dT9K{&=Ga^{M@sh*rWa5rJBz6{H21!UfDeIydo?u@>l*GU`zFni`cp^ zUwqE(d}hrZXZPo@lofn{$scZd3uVrj4;eyfe-zVpo4kgR0keS>CDKt9p^ijcn z;o3Wwp3@138W@OeCJ;By3c*7&3-Fgj1{RZpWvU+kd@Qq*@b*kft`HQI&;#kdM)H=*BZL}QhdesMtr4Y>jP~70+5jT zzR?LYjmdrUIj1;)xUV3K-+=}nQtf#~i%aj*Z^6%~R5xq9 z&LF`7{}CLJT?#Gyr{Lb-g3o^ouEIZdab&bU%*OjpG~82CWpYVp096!szn_eJi=Jda*X%62O>V5eh9#lp&}5`Y)l!xm8+@X zKY*hK5P&HOGo@P}poNiCp|GBDtKD8Yy!6kz9z+$Pg(JDlmsJbvSw*0QeL6Q2X{))X zK&`5Xz(ZaoL*^Wi>)O&Si=*rOwSK^lC~w#GuY-goTZ^KbN1h-*!}AEhDy`n>!T@5B zG%$(qxz9y4Y(65I`#cg^d{EM|Z!GLj83KMtdqSCNaN#AQU5 z=yEw|9s_~8Hn8E|VRa0GGYkS8q2A~%p56sDbNj^86b3q@Y`}n zv>6V;u;9bthU<0QJ((fq*+^vb0v~ovDg_&ksEkK+AXuYH{geKH<1hMR6AOVYXps5+ z?G`|L1bF-YAjf})(?SmK-oIR9qYzN}LEv?F0Np$wF(V9PWe~LlV5Q>|lcXpZa~%p# z&ssa8RIVv_ot zthKoCa7J~N4%oJ@57!HMHX)W9G6(gru1?b9$b&^HJ)GylcoxeSe{VC-JpUHyc?_v{ zl+e3pELF|OJp_rH;%FcEv&k;^l>(_yltQt?7~>62A&}|(IRqVovi6ea5vxO4MBl18 z+5vj86&k!FwxF6*T7^V!Ejrm_r*LB_9``H!JBGzLHue$-SPWe3o<1lkN}?imlq(2& zqcZ>{m6TjXzTAWkPXuebDy$=`I#aT$z5T})y{eQbP9vio6FzOosJKb$h+t-?>J#U> zWp^U?uJcNC`UDHJ!J#4n4VW{)$BGFk4Jy!jnKYWG)Sw)eWHm7s5O(&^!PGK1p->U2 zr46gK>~71*aEpg){w85;hW?YYcumhppJ{P?43CASmMycwe`xG^#+%Ioz+oyMYFEd` z{58trm*i4~E~N(5^jP?dokzvHjs0Y;_iXgzH&tVDBFKqJdyli`Fpb)!ICffK^cc8F zTB%bNwwRY}uAPjlN;S?EawM){NiK;=QO_46=GiDCw)rv@a%7$RiRtO+Oex1^W=ObS zwNe!pL`=-Gj#r)IklRn{>w*tF*e`S$EzFMI6)mBE9X8s^^bhMLVaEl3W|}sF%E1ci z9UBY#t| zL<|~l)lPGpfNZjT^ZeCTKkni> z^^VWD(4gTHsaH+e2TF}1R{E>X9;BrNr6w$k1Fck%U+DD5H1zdDr?wMSBW(EJK;@CH z=H1&b3L4)_yEB>x7#W*^3JE|-KK2muQf0FdvvomP7{PzAts8GsH#WPhs8}M&7#`d5 z=?hCDt!D#QAe$b8+9LaVMInS8yl;b2UtlUhnQi(gT2aAYVS5_A29EE^`h<${H%3ow zZAcg@jiLn3Z(7@Xn4ge2&z!ANHXzGIEBq_CR0LkTJ&tO@73c|_IZYx zLOG=uMVpNZ0)@le+LbxYrGRPM+s}P#-`ln3B9olC6Ga7r^$!-?l_jS1_B4mvsDgr^ ztn3ImP`RW7!v#KH@_nB31^q&NL3--rfS?jjZ(UzKK60tP6RQOdRn4>+jHNk(b&pUm53;b;*@MXc5$OmsoRM``(nQnoXDa%vWSf3#I4p97MKGe3ay_L zfEDMmtv7$96P$Vm+jL*K0FU+2HM=+$!uyz4G}u5S7`qAM4vB7QY9PJ#xM%{K`rj%L zQT|jB+;c^!P_C>|W$jWKaG=PGq?g(pj*Ru{vLtXpD)vl=`F<(r-B{Z9xkbS}Qs%Ps zSP8Q;RJhngdHWrD^j+fKb{Jc+l=PiF2+3*cs&3Md^Zfm}QLi~Dw#hx}tQ9ZS!>ba@ zC}OI>L(Ok*V4axXdcby~#BxP$%tsFOkJ3ru@lm--Fz`$4aI8@XCqUEFw7tr#wztw7 zyG;V74{&e6P zR-D+V)Ch-)A0UXLKtwuMp&+M8y+jZchgSSZ`lkaU6zZwOmquJ?_V5{LP$mX-iBep*%h(MP&w&?$bAY(Mmo z80nFq6W~``k@vB!?9Ri;q4%%8ukIdQPd=^dm0ZVnoA2JZ?)U9mflC5a3)!2#S7(O1 z0P4-PliP@!-5rm5gRZyz>AlnRw}-R0$Jb-G_LuDG@pb*nr<>FE>S~m;v+P^Y(f*Cj zRY3tpL+tkM&I+QY^!5GOR{%rG})>X=({fL{h zi1nA!))XW|8|H|Rt2Y;zK$*)sYagrK+i0%paTlk{S@Wm5C2C)LVe0NBpoiBBm(`U^ zt)Y*eVD+tUk=;XzIndYltx4b4&3bor+^3-XfvMI14Cw12WY|&KcI%#B{KorcJnoz@ zoE?-N(wwsA>D$ujwz}u+)SrHHYIWmz!o9o@pP+akMMunYRbyxvlC_c(vO2i~MJeCTxLR{xZChQW$>pSkoB^LZHf(W-vlI9~dOkBr{&?|yTU^(#6A-i~ z>f0+GT)hIO5b+YMzSap6@)Pk93%t2J^KVq#wYOJqGP-PoXlKKtPvA4e)IIS{m^$ad*t}= zmX&<$dzKutxci1ry#H1@7&5u)>Fb>%3oCd=lrKz_T>UdIL$A)Dp#RzVvHakgx;?U1 z93N1A%t(lWDMyU_`c}Wb-I_lpC&-BNv&x6NqLGWTVV?yb2QW-&Jxp$GAu$)NI5+jR zBokhlUv<#+Ha&z~rQWVZH7k2vB>K#P8*cY$87b!;=o(1emA&2*3~D;u0yW`+n%Hk| zguS!~Ub`N)rQdOOSKUsJuiV&4*JfnhrnVbmuMQrZ?A-ih+JojUI!b#uzjd5;n-vd8 zf34ZHSGm4a(xOx!s7P2}*!H@Sc0c^9RK*`h6k99t@9^kiBLQ77>vTreXv=i>y;33DYR;#D@GaD-*jHPRx;t6?_18;I+|~>*W;1VjM?6v znwA$6Ohd%l?j1V~tK7!*8FoPauFK^-+xEzl1C zh9FpgYX*Bs!|$ft`90`g(Z2_|PuhVK6qWo&Y4{EQ2g=_E{2k?gSAomf4DIkWZv}!! zZpI#*0LH2r3^_0e1jhLft$#^cfjDAB1AvCXgNE7sHLM3K~kj?_~UR0|;2X%44R>C$|ergaPj&Z8nYG4xUd#_VzNz z`tC3y@nwYF$AKHJJg$$Ye68MZ2R7f2Y;HL#hj+OVi`~Xia9;1-AK*@$yneo{Wp-f+ zWVUZS{bZ_wZE80S&#EGNx6>-@vU`j~6gjuKyl0>w$YQ!Vd4u0n{t^>mTJhS-)VY0g z8RPSF^kDvR{Ncy)^|Mv&q@ELD=vA<4>nTshls8)H^Nm@n_X}@pw_C7@aOJ|d{_WOH z|7gs(V!GXTpN$`WQ?qV~DV(PcH~V(kK#7Ohv*{H6)-|zH^0BqW%FPs?)wX-Z!RE@J zqu&9#&Y<_#)ik0h-_^8elhYWF(+lG7FI&$HRl?!Luu#M+{J*fy&TvBHcRYF4ac6no zA4Hl8WoKe4mX!pC{4JxwvSg5&;xK;YUJ*DXuSztF;Z-U2ADZR-}s-QC^YJxFkC+}+(JSa5fDcXxMpcY?bUJb?gtopbKJ@1E~} z@BP)qrl@Mh9Am7#SI;$fuRRYZ8{e9R^tlM+Dw*EeH@~;8hzqD`V8Yh%E4T;*PCN>CA*%uH=WYip;&hVb9Z`9<@Jftn1N)#@ZdNK|ja-lG_EvJ+?ZA!{G|E?<$-hjcWDW<_b^r)iJxm+L7RQ8RjX zmImyGpkH|C0?H0k2AA%dYn*u3RRdG)OHAZ~fcwCj*4?0lu8tX3Vry|FG8}15NskTA z?Me5%OzBrHNT^FQ4PNi2^6N!b?%6VW;ke@bh|m_t(iRGU9=Kace9X@`}qb|2p}}!cAe3Q8BIH@MirUNi_g4fq$_^jpZqs^W;zPy?`4$ zFACr7)whtefO8kwEk_=?9&cYxXi!EUr%$kXoc^$y`pAQ^y9P2+gs`^jyk55u|03z^ zzDJ##y*Tr6IHR| zeI^$|pacR40 z@Psq27Asqy^o_PKYR{F*j)`hAzm*Yj+J&w?mTzjuefW5ol@y99U~8`A6s2}GSx*wz zS^7@$tL)~aqUU51J?Y#mRMPrgER2?QYsbavTrPMnK3c!4qe1ezo*$z%bv94BnJzws zdMtHxRi3=R;2oOxDwc5-&zkeMSYH_Mtu#+CFIPZM?h4m^nB3KGCr9ltpP!?_9^9)C z1}e!L++Y)b>2TxVb^LJp7I4nqYwteMDl}`WlA?hWw&CdVRB~uL-g&P)M(EL<251!3 z_pG>#@gSa(^-%HE>3GhOQsthZd~VevglrIPzV@Q1L)Oy;`&##+0pskc$|mx)J(vf? zDMvEVYYTBto(SPt+qwE-?CSoI_Twr27iFaAPz!u~QKA){5X#ow!N9)Ia~NA^zu$Gt zy;A;=kCUR!YY+c+_LSn_)%k;W2hodnhyD{-67SS2%5dfyo8ZX@3t3Y*37^E%8BRix z$uhDlN9Lih6<7yI=hwiPrQ*zNTyl%k*`^(Alf2G4`Tj5<FXPc`%Zrb`GYKotm5}Q$nYwUMkbR(^$oH z*HRK}%u0UUISiR?=S*cAzQ-^$Jtnl1ID(@M*b#jhv5IkKo4Dt9HoM66%m zT*5++mS~}}t`D7cJg_g~0S%)wxTag#J_lLkB7#&psy4xE$CXwm*`-P~DJy)q-;R;R zuHQ-*XKBBh8eR2%H}jp|tne#u^QIfqdd{^dU9Nux+k^kN`xJ``-VJ5R=n)hXYPcA*k{XJ zk#K5yOVc>ji?#>j@lAsk^1S}ukZGlJ+E@+)gk*&A#b7ITEhBFvuchqIeWn#G9_v~25>hQTgEn9gI*^~aQ7f(ox zbh4r4bwxwkCNa%Hd5YJ9$Q3&%+IZ zMZT8TZ%i1|p^^YuQ8+ETV&y9&hN2Wl8~=e;R+zQYwQ4@sA)ZLM>dx_%y)8`v1c)1X zD_`_bZQN{Mp{oP4U<1j>mwl;E(@* zb^wm3hrBOa&YbPsSjgZ3-iPq*+#7I8Ij#<5Yk9~rh1_fMg?=~k0=cjH6HHnRWb{q& zF0IHvpl%R(O(lG2fFrR390}!{8HK9t-pMlF zY>gi#jaIAC(m(Cn(gyP4Is}@!2Rd>c$~e%Zf2?qJrVt$r`Hd)jw0r!#_w4eNZO!rK z3ftQXY)^Xt`_^d1lF~Mp%a0hB)fTsQep6LL>9r=ZO<%Cuf?^*^YA<0zI~wp+ex2Ig z0|Z6~g!J0$&a@g(S0tx_Xu#mDbvRKxLY+%mQE5g^#AY-^ZL>&CzsH!@gRZZIuAkwP zYDvhOk3Y*M-*Yy|-?Yd-M8M*T)O=k6io*ylx}sAh*PrvWO4I0&=56y}2wd-Cpx&;Y zxtK&L2#K;eOaVSoJcqWe7PqPQ>j>h~cDGP@hNL_XLDqEErhh0m$ZfQ8lDkY zZt8%uXhVfowy9?*2wc`EQJ{ylrS??csqP*u&BcoyG^!wbPVU!mp4VXBrq0#CIn=;9 z$P0$G#UgAYo`RI=yYAO$o!1y4;qXC!dtL>JP7Nrys8K7Gob$55=vdgVF=Mt7aOwE@ z$WFoBd9^J1&CSC`-pdBKcS>bsP{(FaCrLrNmVDo1h<2s|ThGHr-ODB&JajgowTBa= z$jq?Z%O+)Gr)dXIyz+~O&Bhd-!Z6bvStG91j#(K|Y#~NMwf^X@?sBHXkwrAVm+Gd)Py_;vff}eSxP!c!wDo2Sk_tdEWWfHYmep1O!@# z>+hQ@CMjv|JasqOX6Q-%yrO&`sY`dnc+9G&^Gk0Ic$s0cR=KhrG2EB$Om^Ns>b2i9 zk#>IlN*nRx+9WoIMOhq8gVoEvR*$-xICEwA^gCI9{Ox$iK9856nn+`W)N0Gd?1>a3?wp9^CU{Wl zLFDzjF|Cd;gZK1$VRpY>mujgNl7w8oXNNY#Ae2~B@*S>lI0z{iKL_XyZjtv$rC!sd4Ju5= ze21+SCeF(mS1=48TL`ZWswR5~YmiR*01T?;+ju_sb1h{K94ZJ-W&mk^F*gcAa z8Iuf!o21>t5$}KUkr9P3rgCM{(T0@xXh9?mjFmI$MG5$%g2Ub(f*XwzFcOErXZT%v zu>u9uzW^7<_`-@nLZ7Go&w%;-pEya-`i6mod%5J!=Wbeli(01vyvjvCv}p3Jqu3~4T7A6 zfYJ$k9|{=q&l^A`{-8(tH8wJoHn%yWGZ^-ey6N4d;LOL--OSP3&e78?H5nEn3se5E zcWV&9NBrF&gB%|djYTbaEc)s#dYN{-jVxjbKSh&aZ*+dvifVihrT(?EBza|u+R{zUe)dY!4Fag|0R_3`$UcCa7v z?_Sj3`o1z8z2nXG(;R*CIHEh<9&8A;aq)-=14|C0OJiGCGh4x9yPadiokj%Wl<@k` zG(Nr$Ua0zh--cq-*Ye(_koEgm^?wTxK_4a>s{)RpC|l0yGmj$spJ=fEpJXw5l_jn)mcn{#uQ;@lkZBM~ZUM{UO1(;81u+cQ^({Ci* zznU=)UWTphhOaRTQQ{exYHONj8dydbI4qICNNAkW$nNU8l|t3!4PE{%Y;Cu9?K|)a zrqjA@l-z&HS_3j&B6=R~{-~Bks@uh>^TSgx7l~lFREnp4p#iYYKm9-kWbQt_kl+HEc(S3@{WCo9oqTAP* zOL33)F}Ba2^?#RKpmh5tb${HM3c`GPhT^Q;$}i^nO6j6Z{8WLH{8FqilDqZgJrQgF z35Yj*nU;qZ!_3CWz&^vwF*@J&IbqPpP0r&T=vsPKPe#`5>*kNwnmSLr!B!(bC9|lW zkHp0uGkqa(Py>(mjVVjGpMao&cGIAHdTyEud4q{;)vrjHL2So-s#g=3psCIO7d;n9 z$ME_C|J38)hbv3oig{Y81!eNSXCh~kN) zY6FV56YA4q<`88&{0| z55{Z9U=(XV5oTkEr8%=4X{HEAlgrB`NHHJj{u!ZFxcN!AEXvFUC=?sw0s;+-496k8 z!i{1ob(kekMB!f;{}OQ_EXwgm1d!GLTSUyTSd(mz{@(&v^I;bd=(~x`H;dRVP-d<| zX#dc1XYwQTSEZ&P=pjd3m?m%n<`|#)g-b~@K_Mj~%zM)<-D$r7`TU6w#X*{B6tY$< z5na|h_DuN(Hcgrtaez^Xi~F}2=l`o1OAU@+RxMSu85#N_%2e#Xw6*y!G>IB{Z?P-2 z^ZN7XZF0bSX0&y1zwy5Mo3PQgAnDc0rO`8OZ+bNCd|%{k@YbyHmG63df1f%K%DP5w zGIf%6u*zWhyGD2{D2cWHi8@9R$B@YH_%{- zGyAhpCk$3_{Z=&nn7CqqXBB+M2`#fYriS9qU`VOb&S%V;t;PcsMg7@l5l<0Md{8`^ zIw<1PV(FZF^)#a?75zv&+x+ejc=@945Imd? zvk}Vt?(FNJ`@nlHFb+k1@zSB~xzrd68fO1_gyW|o8Uogr0vr0{l^;?U$!(qCGP(E4 zs*0e;jJlS1$Bd@+vyAjapvT9y#L3vne^lJlu@U~Q!V@&uT;Dc)NLuyna^2tC5ZD|3Sj7P%GPSfO@&$3PiGOFvvYyYJw&sa4fSKHQi59aSFH#&JRRpQ| zj^oy3hL^J3oPJRfgj5iE*ICWE;lt0k(#(Q@V#7nSoTxeUaF1X%YZ1^XhSg-s`&@CL4tv?4zs!O()bT*b%5r-P)G1miZA{`Z3s;mSj-f7%)zqJ#(@gw zBtWs2uHG+K-&0hl_tyk(2rX6) zPu50p8jC^!gU4VQKA9}fVA-h3uozdSA@L34g~}MpuT0uUan2xv591-hv{0-%E_1oj z*kpYMnkK5Op_YA#quipFs#`?EFpLKXPL1R=KBlh8Ptn7+84g7-MjXat?7tW*&thCH z$3PxcWhQhD=Zw~GE8TJa-(>MHY(9GRKB;R2$kdV0esI|9Wu0di?jtVx*{YrT-12-0 z;(=zVFpTYHtw>Wjnwc2JIM-2z9g5F7CJ^V zi#IMTBf+0!uUQp?msORGS`-nOfyIkbdMiK1_ZO0gB)7msmiOhNOBq86nNlbj#RgE} zNuygFk|4cMrz46f9gdgICy)_D*_%Q_SDtwiOk>LFmdD5vzQ zB1|S*D>YDyW5P1PDT`}Gl^gHPo+c$u%i2GY(THNEOiw6^QwE`_Dox~Ks8Q6@NMV{W2GU*3 znITrD4Cn^b2C?)Z7JyklQ>c1?|tp{3=0FU*@f|;(! zq!*IM^{BmaFVti&4W*In<*rCND6<_k)duPxwS}GH3tuoP|KfWH`3HHsEArk2L3Kf@ zk_SJeDEvJX+9q&A7?V>lkx#99RxGV75+mbG7_%vD;m9EiD#&Sq>`Vhl8CVORmNxSM zQcfzA{2!Fb!2U^@CwXmUIi263a<^);rwH2QiU5uUwDYwTqqTFi(h=ms5wV2>V%f!!NX#eh^^k+& zO(h*+dn|hjCH4M{!YCuGc|57DEra6Q_7H3o4DL~z+K&TT|FW;Q)5yQ?oIy1RWyjsr z5vOFpZqTptQZRHEKtM_GiG^g9>FCec-ZIV!CZ}CdtVx!Wsh4A@hw?eRlPgup7dus* z%>tgy8foDPC8jwAtI zXR71`7cD}zQX_n+oM8v~Elt{#e!g3GN81Rz(8~G+L3r?7OkEqDGTQ?!L}`56Al{K= zUpI8eaf|>BDIN^A?E9Y6APK_H7k@~!*iW7V(v$@DY)s7iw+~;z>>6JFikUF6T`+xw z1PhG@@LU`RE;J}YRf<~vpKl>R6Ug##+3Pz5RlC<=ndJMtwk?nuE}U?|A! zXd6FaQxHh;q!n;)v4#bM7XvBrdMq-;k@AZT9D!p=@jNeIlB77cPqcRj56%66?Y*?| z#qcKIcU0AMqM@%A9t;Rpxj0mS>P?e|Owm#81~WlPa}?7~OK=qXmKN_QmYJ65IE)A* z!;=j~vhP|L8I^z*i$222k28G1{KqLKQHORDAbqKT;3bz^u_Bh(^<1_jWKEL&brs1d z)xmwL!+SI&pW@m_Brb+ifXyYBdka8Wd zfDdDzgJy_#ysB`J&Vmn1i=L9@dGpC5!3I419hR&@R4W1FudsX>hZWyb80dThSf!Gc zF)j5fohyZZv4to@W~Nm|(b)<&Bhcl6O7Y~Bds!C-qf0hupp}^Ze|_fn7_`J|6vdDe zGz$C(fQylWqLC)*M?(mu=gT*&UOtmUC$BeB1om8?PKbUGI<88mZ;3bgp7rrT4^tA zK6OnuGEGN>CiYc`iW(R8RFqRY1uZ`M^oG!BO}K@{RocyA*Gdq+{XxUP`x0-1b6P1# zQ#HHWi*T+g^nye(+qf6M(+P-A{?tK_#AQu(`AEpB__5YK<_KjQ-^|lK`|m%-p2d^T zJNimKzBZDPA%*jh9QcQewvizf;Ez&PtfRVs@QY3l2wSU_Z|3ARh4YbI%4 zFmWfI-)#}iw1yrJ^YY6gX}FMo9_fc6L`No+2#c{r2&EKA)KBmOOsrG zg-AXO`6N*NKuYF`Kf@0>jxy;EJ9h#9u0{1@G4ZV!BNhnwDays;|K~sdynDXnrzlQX zlI5Uo`KQs(F+ah7;vOI~CRG7%gUCesdAAP<01QojLN7>~R{x_gf9(Z^v*%YP$`&@|uL0 z2=5-s>0)49uwR;9`U@}fNWBQ)FVrc zSXW%EE`N{gEVG~?zYwifgO7$e#8UH=cFM$AK7*DF1kP)!(!@tE+wzVC$bL%_wqSB9 zC;}V8rbyN~qF=Yo9=eP1+Nrl@ib!&aU`_*em*Mi)Q<`Y_Qij3W89+|QfeJmdOnz7G1RCItwPYit!-p*tlkbI zoQwJT?49PAihH=P>#h$32-osNzDU?4Ouz=hb|nE5^oscW!d>RZG<$Cq_0qF*Xw zIS>D5uup(8-phqStI#FekfmuAMeKjk*@)O)CyZVH?&DdVg9C60%Q;cHk{@IDW$CxN zsa@KF!rJ5bVnwpgvB@4E32>1vc)%~q$RFqZBL&fKX<7*q=|4a@1C|GIvg!~#Gw;rs z+xx>=P;Z7nk$PnvhzvlqMd3lKRtpl$oRh?hY;FL%h#7!q#xXO?Ez?sbtsh7Xp{#?M z|IYO)2HK1sEc?WlcP8O-4*E(H3LU{Qv+I(hEdY{dMh{PlXXY89xO~Y+6I!T;P>vFw zcGE)8!1YV7%(lsF=`Po-3DfQAlD?Bl{J5$?1|;AvaXF+}s|-MMG-E8c~qk z5Ln^^wJ60|sMdHKY-;B*RWw4aCDJl!hrq?1QyIq~>p_cDVzz4(4>!hYjps*1sdN+mMRzc4Tv@@zNq#8TIfI+bi)} zfx9RIj!4!fpBJHoUFoS8Xwo6BAjB9#&4QfKMw{-U-#uwA6Y{gu3$l}!aTrtpG%|>v zd1-Ymvz?V`*yG6&_3b^=lmKukznyEkLRQU^(G#92frpcV>_<6X+>xYkLc#I1kpO41 z>TE}5nP){E8frZyfW(5w5!P;7EloJ&@saa4)#GB8;*hT&KJDVi#fZ})ya_?N{E*Op ztT?84BbebYEi>!P}uMS zfHz@)hlhC>uToSVC4#1q`?s#-d6-~Mup99SA~fije0sb9?l0hd)gENqCTj+=U_Jq3|5`n2~y0MSyvcBSr%x(<-?LFRLgoEp4qfkkYbd$lsL2 z#0XF{0AjAVxW{6}Utxg z!p5WILPd;mtNqXMOM+N8puCWOy;jUHj#R;UV-A9I8x24W?P$2-m)2o}SoZvi%_pq% zcw-rOOUg$;oweIhj+*0IP=x{F5^P%7g%QHDH0Tpn`?$_Wk5n%BCjO*Q97)pKvM)DX{4Jd=Kmr!lepBW+NI?zlVE{;)a*z)Zbkf% z8<-v0fot-G#Uz&EVann!Qk4(L{@H=qbhwbbDtfE@z;WX3k)}s-hI6ho1-c}8Kf!V@Ba_p>g@HeA zbuYD)80b1JY3-l=@wLmVnzSTLcDbV*o+-00K0d0ED)VM*mKuTV+WEaZZF*q=ggv!@ z|BaZL5IEP`M#_aRGbjsWFWiz#h_SImpe76Z;plBIL{@!_!pxt~M0WvJ)tb9kYWUIdIS7NEXxw4>LU#r^rF zumC&aTSH3k;ta`O6_O_Ajeb&2K{U{)>Z#sjvjmKdw0<%mhWK-cxQs<-eU7+9ks(@i z2QdM|VmzQZRUGhX?aM}VRz^+L97AIa5Ql8YgDbb8kH~BW6JN7zh7Yf2h8;7)g{5T>~A1@EL`Y^jcECff0JTkxWD&H%6a>rO=*gRBna~jx1GQ7VD#>m8Mg16!?rrf9nzjt)bGes*#aLD0Mhss z#O{$h5urd~mwYpFBGo+o`U>;@Wwx)^Wq3@1IUCVEA2G#P5RN%;0Yr?Jo{sBbVXe&e z&4_~~H9V4q)=-eoANOnL$MvBgry-+t2B;Sb)$y@Udy9HWQUq;Ve?&(-97Lc^1#iR8 z3T|}3qf5ab3WPZ5$+DRF|Z zhcgu7BLyAbf{NDGv2nWS8=OK;jOMdnrxE$76R^DUL#SRIvmu$6x?fiLaIjMNT1cvXuCP&lcu~OffDLH|M*E%RIKm4_Z%j>r?(tbq`=zSsz{t(YHXF1+KGkb!wNQOa47Ff#B2w%mY?g3D^Nh&dN9boZz10UJ(LI`ziYf~VLbm#<+1HhSb)cu6gd>@I|671$;PG88~vkMT-OFpn}_j^(! zQxN`LVOFEA?m+BBqrAjlO2G~R4gso2L-eXeV>hP08MtHmiMZ>Lp*ZUSz zxtoI5sxdzlx2Y}pAM$o31{2#*T-WA1XpmFxyX3@X^k+mM?CT}B#tk!=g4EzemLn7J z`qn5j*$;p$PVZkawL{sBUY7-AsXyOuN82+Z{EiQHfOQJL2XN-s)8j(MD5an%xqVsF zl4oFQi8ZR}>KRrPRwh9-B7z1f{S&TDDKEl0{mP9SJB| zTY#IPW?p}=YjNRpJyMaLlUD5b;mt7ZNf-RtZ_fs$evp5)Y)bq+Y};g%28JId1}pOl zF8O-1SichT73p($%rKd81zV%^DGKmW$rHHI`2>XPngk2@sKyu6_Q66q+kiqRvT}VZ z%-XkF8luIRyEYo0SeZfg$tFLy z==ZOYG-=r~wn;4*sC1*D%~MGD-XQ1%^;nw;*TNl(zh?Pu<5;firMn*O;=Qivrzt=K zVQ^hVrNBvff6u)b|9*TY)NcF2&`2dlN7w$nAJ36t5S+Ex=ZK&9wPz~Sgf`{{MKTb5 zHv{!}tCd-M$(*KLJ+&jJiVEJxyV`BbRSz>7cBqodcrXSBZlazm&H0FpL5S+kj6^e< zlW;!#A|nckL0mYQO~+j6 zWQ^t52LJ3DhZRq%K&;%xoc$$IncjsT;yhfubtLd43l$p;ne1S5bll!RQ+;+elZ)59 z^uu=)icF?NHJTMWQn*OL@n|#u$fWCXV*p21{Lzbx&XUxeBeRAg+foU|q%!DECd*Jd zt%~6+GB!H19CW>UV3uyaZQmX8db+|vBXGH_K`$VL_dH0)ezX)pC6BGJy3N$O2OZ(z zy*vIzKY-5zRNz6>{7CHN^TX{3f1EPI}bryDDNy12TN z_WcA8qi4Z`BUt(PgpPW*+i}0HS+;%d$ocvH=F$-I<=sQs7_-4|C2X$er9>+aZaVBv zX7t6p5mV%$_?-kJHBJ+(ichg8A=L z($&(;&W!o5BkNxs&a~wnHo0(me`ug|9xcCaxDbaJk(^WX zB3?W7`x|Z755Zlv4%OEP!(T1FXWA3CBAprF&~8N1C^?^u$bX}R9wU1Z@aZ#9zFoNt zBLe*u?j-mAtbMHPiAb_riu62o-QpeeF|vxc2lk3Yu`GGrLVIAdR;SkvR|kXb2_w}$ zSJ&Tq42P;qo6^o0M%pI^el*pAYDR={pAaL96a<~PN?u~!vBltt@(b&>Ane=f_5#c% z3<5@p+cg-7%Lh>caqpfr13?SyX3J1ck`#R=vIdWL%8Sa+>9THFob|9`yNP!~FBajj zK`;nsQtEH&yl+i1tdi2?2^eAwg>v&xLqa)BA}BJNE9dJTI1g&CPft@>R#ugn9FVvA zb!*pZi(SUf?J_O#a5K#X<$vFMHQ5(iQCaE+zW4Z`VYZwLFOi_J6dswg z%E~r2D=*X)ElXv)JCVhfGh>++LK7>mrd>8~!(yyM8{_4pHdEHZ!xFLiP>8g{4GbqP zXU{wU+fn*&B0v|~eI*dqGLBvC{rYmanKn02CCRM+>GgQ!aIB8#T^FJc_T35XyMC`%Z3cb1{wUJJmvwpXcLy7n4uZcQ!l=dD5uw7Qw?MqZ zgZR%tt`rsM44NtN8Yv6Fu@5L*hlpLyL?M|1pMt9fZsbS<#Ql*L2_5q$jCI1>Sv|{X zTP_4LqIgir98wu&#w zmDFGzG1p4#Aof=4?J!q!SveuJgbFn6wL}i-J zR=>^{6gv*dH`j@pc79fFhb7Czw(pPd*KbgtCzl?#quKf_?p`*%N-!3JP|8Y%@klW2 zN&1s1%bIRGvBgQm)Gnc-OfBdd(406QFXjeW^@W7i*g=D?7P*bq- zwB9QPpI4kOyRJ5C8@br*2R}~A@#lo(=ORf z+mv@eYr@*D;Cnycc4)JaQDfP!&CkM}Rc^E{w_yv*T>Hbj5^Mo;-rqbG_`h3Ol$SA9 z%T#?g^;(O(@q6gnUT~Y!aoxl>`s_ZEoWH5-;IErGdOo#Lv|uT46vbQ^K;LKmEjd~< zf`A0U=auMN&oV~Pjma$b)z z6jG&V<(u%VsGHExj>=i&AzuWt=bWQ8oU@5gJLg5lw9@K*OWa$F%2_JX=6^I7)^yW+ z8w_+P-;P}6#&SIf3TkcHDd%D^9Ll$gIUEY}jqJ9avnjzJeV4kzoJJ z&84smyv9~L)#f?77JU&aI!bhg#Ix1j@c8 z$LCfS2~T6X7B>zPx-M5TlufrBa25*mR`3$H3nf0j^eJ#Hw~v0)fQmUbHRjtBuvFjg z4&^TUpQXUCXW;<_Q*M#4g${MpbZyxQqs|d#>IjK!x zbo2o@5S2X5jFZ8#W?k^Qwm&kum(o>})j=B5X~980zuyXp{;C+|O`|@Tvz0wkle^ku zHPqxX+Gh)H9hu(wZNDb7;*k#nziyi(7c%|rvlb0Yx<&XiDsH*)j;ej5KfeQDqqAz? z1&oWcdTn*T{dZpv+Uo9cg`!G|dmt30~KBV|fAJGXo zjc&f+ktZB`772Y(FJB$H~U)r=&RJU(C|^KoN;$V7V7y08$61 z#scx85xK)bcIq+$$QA4>k}z>zTF%iHNLItUBIN!#qM~HQg+|Xy6<5cmr&5jU^Q<;@ zysNlj`@*>F8fhl6TCN$#6?EoEyA;fZ)KD4Zv8FT>2t+yJ#>}Cu1|14%%?n_8sTwCs zlqR>qK6FTFw^mmpw{Lk9`Xz@2hV}fv_cIt^o#S}k>-2s?|1%fM_2*kF1AgE^0kcm=D_1kSzdrVAq8s1_Suj9;_=-;?PL%S6V=O77P@@*W)k?p9gG%g9 zEH?hV6W+Jy@x^iM#7_PLjF^KD&?YYJ;t1z`Ede0@@o*yifD&>UA_ARVi(;u_A*too z?g2@v0FF&JF@bTY%ZjxOp&kro;aGuqRuc~UKJJLq9Ee^y5*THxk?Kv=!ht8rd}2k} zx8bKwh@*)5%2W%*V{~1^n7d6GQr8ZbW$GNfvhhE32~Hlb^Z@lx19cJoL)YKkVgIA< zuhy_Ja}B`!90h8xM}f52veL|gra6*LHOnAbc(i=D;2TpL;rRGpR)aBLWD!SB#-q+s2{yCs6U2^jKK*7d9;W+;g z{ztN+vxB3{U!$56-(Vlaf+7B;ckupTf;At)5+hs+gw|$7Mvu_LpVF3mQ!J+P!&{z@ z(`4*Rt?SJSKY`G3u)SgRJRS7{6$OlH6@Ni!c6T2q2l+T(EuWwjByUF$)bWr${zQ(@Ouy@H6c*h!6I!x~6Ao3iUbn38 zI4t>hEa0wE=QlNOr%W@Y&zCNX^K2V8XR_()9CinKT6qdeEsT9ms3gsR*K41Uo!X;_ znw^pG-$>n&mlThNKLvJJy*V1oCZT^mq>}yoAFH(Z`LGBZU`-|hnBDzn&0+6mXKdyS ztjhe!?q)Q%?GJcxdUnf%6C`w7B9b^DIGPKE)%9W|$XgyjsBr2p^2S+Nwr*svO=jq; zbA-wx+2zpOr()3kc6mR10B?{#-)@5vcaS15T)1w6bjo%`8BS!UR}Vjaq@7V+{ZNM8 zKtr3IZ}$_n`n~@VH}?y5a}g4auC9zmlkXe#-TF7FjA&c_81C@F$J7JO+vK_hOxaNO-uC zPE4B+l)B9$2`4JW14t@OA`T73g{#q3^?IcNCzX`~R&up|OG)XB=}YH_&rt@S?JF1n8h zI2aZpp~Ofk*o;EzqNpV(cbDZ!UFx?`w@a1yH@tP0^l*Psm})pSrDYhA#oQEOYc0HD zPuFgZoo7t=3IC1s-dRd9qX?UdCTn(yLS70t+p9lA;VXAsd=8Q!XL3{p6`g4Y!ac*v zXL4&EBO+%!e7l0? z#-)_=V&aTF(bLZ06ea`zeS_2f3+B2I{q;3 zqG~ve8Hptdz(?qjmNcfGyBDrZ>DyCHtL>HcSbH3VwdtAPzv;P^(-({Bx&6EgJ)ozd zH+mG}EzS&OpM%Nwtp~k#AOeNM9Sou0^g>>{Ie#P-g<_8G{o%Xc$8V%&;t1n#o}>zO z&X|T*tUI54cmUg(nANK}7<)xt1Ey*uFxw4r`a*TMb#gtOrBJxx^DV~dyTZH))~DSW zzWWwE?q4vyP*eszCpAt`CrTWbXTq62pLTJ(?po9=-e78x^m2HU`oB*9TE{f- z(D2zM{K|J)8SDPL7hYZh0Uv)K2^v&UU-yTH-kod9{k{;N9s_$)&WF9%p>0Q9eZGl> zVJ$A!a=!rkRV~!>&Db;Q$y)!-biD{71Iti1-g-ZRi;ZCcE|j&QDEl;T$OiTAf}P*+ z|D3T3$5$9DtF`x&#*!qhZKhuM8S$!)_<|<~aa|)GCl1I;^GWxQV3dl)#1$hb+@cG?dB+abLR&k!BR zF&@g1rUQq~OMvMgWWC?%bPmIUfviBh^}CLI1~?0XP(gZ*lXu`Jw1M1$e$h+@b+wq+ zpJxb5xcn}bOKKcAK9jsw)t!FNm%^;Z!3m&u&WswkcJYjFBh6D!Gp$oNutu63r@;&i zJo}Pm$xL88eu)eteZDjNHL8deC8CZS>bq-2ffuMTQq4AXDz8cR&~>94d0x1WpJuD# zFViC-aXjm&cm+tqFwc=hZMC_b&5J6nKmqiQG3HGhKLkxlh}r+iNDWh791 zCOeU6jYPGulXID;{3f%)a}7_f;+{PY17c>$L4*?@WD7cLhJY@(*og4_s zia_Soy%z?e4e6lHnY&OQ2zF+-Gr?r`c zolF*_xeCtE!h=Y|DN9M0yKB!M<6_Z7i*CR7AHUiux;1^=Tm1Cxh0g1Fn+OgR8ps>2 z!j5EV^G{SF-|?kHrlk!!!t1XmeAOPb7PS7@ z*fQC%-Ld|-%Va|SMrn`U7WB)1bK?3y5E{KL>+(eK=o$Fw{hhL>3jcdtz?Zt^|266L z)2i5BZ)IR?K5B5w;9x+GMD~o76&^>7QzVOcQ`{+an*Gn0 z&u-f1RC8~_} z3)Zb-nQZ%Fp5fUiTr56a-bS5GDjmK}>1-F?FQ{^fFVVVhuJ+mCkeWWrjNjbzBH4wv zJr!)YuG+9>CTBF?yiVmfmKU?0_I3DfG@hThk72@|pOvrHmvGPXUB2jIcSYPwbEcSk z0=@t4O7_OxYx?NV^oGynx5KurKlUZ-c_E{e$MyIdg0scOVZMMWv1F@ews38_p)<)s;|9iI#j*p=(b6h zjH)Y3ecwJ({ZVyS?qKx$&+Df=@dz$H{pwn~T-}q4TVKmn*F0Xfd|utNo6qOfFDyQN zZF*c?>h0C*_x`+g+xlMR_Uz~D`t9z0K6$V9xBcHYrw_+}m9eZ^^S$E!%lvaSzwdtk zn_h2G|M1cJ{jtCP_S^qoRBCvDcZyv`>WPpH%vE>ZeTnHGy>Ab z2RH4}HFmUd2WJA6Tm)(qMA7&hC<3p0lJkqeBhl#Ezudkp{u-z~hlPPb07ZK}Pz0_$ zv7i8(tAkd~z7_*iXD*3u`3zt{fM*VXMwI3P{f facetSearchParams, - FacetsCollector facetsCollector) throws IOException { - - Preconditions.checkNotNull(facetsCollector); - - return new SortedSetDocValuesFacetCounts(state, facetsCollector); - } - - @Override - public boolean accept(FacetSearchParam facetSearchParam) { - return facetSearchParam instanceof CountFacetSearchParam - && (facetSearchParam.getFacetFieldRequest().getPath() == null - || facetSearchParam.getFacetFieldRequest().getPath().isEmpty()) - && SortedSetDocValuesReaderStateHelper.isDimSupported( - state, facetSearchParam.getFacetFieldRequest().getField()); - } -} diff --git a/src/java/com/twitter/search/core/earlybird/facets/SortedSetDocValuesReaderStateHelper.docx b/src/java/com/twitter/search/core/earlybird/facets/SortedSetDocValuesReaderStateHelper.docx new file mode 100644 index 0000000000000000000000000000000000000000..3ae51b7ab3e081087adfc918ded71f02492e8b7f GIT binary patch literal 36954 zcmagEWmp}_wm*!!dvFQv?k<7g?h-WUMuNk}0|fWr?(VX2cS3M?NFccTe`jXSIWy

    @hfEF3-= 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 z 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%0DwGwz8g+$WCL`}WyDsr#AJsT9H1Rf!X- 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/facets/SortedSetDocValuesReaderStateHelper.java b/src/java/com/twitter/search/core/earlybird/facets/SortedSetDocValuesReaderStateHelper.java deleted file mode 100644 index de9c58548..000000000 --- a/src/java/com/twitter/search/core/earlybird/facets/SortedSetDocValuesReaderStateHelper.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.twitter.search.core.earlybird.facets; - -import org.apache.lucene.facet.sortedset.SortedSetDocValuesReaderState; - -/** - * We have to check if the facet field (dim called by lucene) is supported or - * not by the SortedSetDocValuesReaderState. The method we have to call is - * private to the lucene package, so we have this helper to do the call for us. - */ -public abstract class SortedSetDocValuesReaderStateHelper { - public static boolean isDimSupported(SortedSetDocValuesReaderState state, String dim) { - return state.getOrdRange(dim) != null; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/DocIDToTweetIDMapper.docx b/src/java/com/twitter/search/core/earlybird/index/DocIDToTweetIDMapper.docx new file mode 100644 index 0000000000000000000000000000000000000000..56805ec0db3196f3298a302e927e1a4f377188c8 GIT binary patch literal 37602 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ֽ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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentAtomicReader.java b/src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentAtomicReader.java deleted file mode 100644 index 5d960f049..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentAtomicReader.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.twitter.search.core.earlybird.index; - -import java.io.IOException; -import java.util.Map; -import java.util.Set; - -import com.google.common.collect.Sets; - -import org.apache.lucene.index.FieldInfos; -import org.apache.lucene.index.Fields; -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.index.NumericDocValues; -import org.apache.lucene.index.PostingsEnum; -import org.apache.lucene.index.Term; -import org.apache.lucene.search.DocIdSetIterator; - -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.core.earlybird.facets.AbstractFacetCountingArray; -import com.twitter.search.core.earlybird.facets.FacetIDMap; -import com.twitter.search.core.earlybird.facets.FacetLabelProvider; -import com.twitter.search.core.earlybird.index.inverted.DeletedDocs; - -/** - * Base class for atomic Earlybird segment readers. - */ -public abstract class EarlybirdIndexSegmentAtomicReader extends LeafReader { - public static final int TERM_NOT_FOUND = -1; - - private final DeletedDocs.View deletesView; - private final EarlybirdIndexSegmentData segmentData; - protected final EarlybirdIndexSegmentData.SyncData syncData; - - private FieldInfos fieldInfos; - - /** - * Creates a new atomic reader for this Earlybird segment. - */ - public EarlybirdIndexSegmentAtomicReader(EarlybirdIndexSegmentData segmentData) { - super(); - this.segmentData = segmentData; - this.syncData = segmentData.getSyncData(); - this.deletesView = segmentData.getDeletedDocs().getView(); - // fieldInfos will be initialized lazily if required - this.fieldInfos = null; - } - - public int getSmallestDocID() { - return syncData.getSmallestDocID(); - } - - public final FacetIDMap getFacetIDMap() { - return segmentData.getFacetIDMap(); - } - - public final Map getFacetLabelProviders() { - return segmentData.getFacetLabelProviders(); - } - - public AbstractFacetCountingArray getFacetCountingArray() { - return segmentData.getFacetCountingArray(); - } - - public final FacetLabelProvider getFacetLabelProviders(Schema.FieldInfo field) { - String facetName = field.getFieldType().getFacetName(); - return facetName != null && segmentData.getFacetLabelProviders() != null - ? segmentData.getFacetLabelProviders().get(facetName) : null; - } - - @Override - public FieldInfos getFieldInfos() { - if (fieldInfos == null) { - // TwitterInMemoryIndexReader is constructed per query, and this call is only needed for - // optimize. We wouldn't want to create a new FieldInfos per search, so we deffer it. - Schema schema = segmentData.getSchema(); - final Set fieldSet = Sets.newHashSet(segmentData.getPerFieldMap().keySet()); - fieldSet.addAll(segmentData.getDocValuesManager().getDocValueNames()); - fieldInfos = schema.getLuceneFieldInfos(input -> input != null && fieldSet.contains(input)); - } - return fieldInfos; - } - - /** - * Returns the ID that was assigned to the given term in - * {@link com.twitter.search.core.earlybird.index.inverted.InvertedRealtimeIndex} - */ - public abstract int getTermID(Term t) throws IOException; - - /** - * Returns the oldest posting for the given term - * NOTE: This method may return a deleted doc id. - */ - public abstract int getOldestDocID(Term t) throws IOException; - - @Override - public abstract NumericDocValues getNumericDocValues(String field) throws IOException; - - /** - * Determines if this reader has any documents to traverse. Note that it is possible for the tweet - * ID mapper to have documents, but for this reader to not see them yet. In this case, this method - * will return false. - */ - public boolean hasDocs() { - return segmentData.numDocs() > 0; - } - - /** - * Returns the newest posting for the given term - */ - public final int getNewestDocID(Term term) throws IOException { - PostingsEnum td = postings(term); - if (td == null) { - return EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND; - } - - if (td.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) { - return td.docID(); - } else { - return EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND; - } - } - - public final DeletedDocs.View getDeletesView() { - return deletesView; - } - - @Override - public final Fields getTermVectors(int docID) { - // Earlybird does not use term vectors. - return null; - } - - public EarlybirdIndexSegmentData getSegmentData() { - return segmentData; - } - - public Schema getSchema() { - return segmentData.getSchema(); - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentData.docx b/src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentData.docx new file mode 100644 index 0000000000000000000000000000000000000000..f01ae4faaa402c2c365a8328c1e1819101b11e0b GIT binary patch literal 41496 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

  • 2|Lg!9k+(Un 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentData.java b/src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentData.java deleted file mode 100644 index fefb1b4d1..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentData.java +++ /dev/null @@ -1,474 +0,0 @@ -package com.twitter.search.core.earlybird.index; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import com.google.common.base.Preconditions; - -import org.apache.lucene.index.DirectoryReader; -import org.apache.lucene.index.IndexWriterConfig; -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.store.Directory; - -import com.twitter.common.collections.Pair; -import com.twitter.search.common.schema.base.EarlybirdFieldType; -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.facets.AbstractFacetCountingArray; -import com.twitter.search.core.earlybird.facets.FacetCountingArrayWriter; -import com.twitter.search.core.earlybird.facets.FacetIDMap; -import com.twitter.search.core.earlybird.facets.FacetLabelProvider; -import com.twitter.search.core.earlybird.index.column.ColumnStrideByteIndex; -import com.twitter.search.core.earlybird.index.column.DocValuesManager; -import com.twitter.search.core.earlybird.index.extensions.EarlybirdIndexExtensionsData; -import com.twitter.search.core.earlybird.index.extensions.EarlybirdIndexExtensionsFactory; -import com.twitter.search.core.earlybird.index.inverted.DeletedDocs; -import com.twitter.search.core.earlybird.index.inverted.InvertedIndex; -import com.twitter.search.core.earlybird.index.inverted.InvertedRealtimeIndex; -import com.twitter.search.core.earlybird.index.inverted.OptimizedMemoryIndex; -import com.twitter.search.core.earlybird.index.inverted.TermPointerEncoding; - -/** - * Base class that references data structures belonging to an Earlybird segment. - */ -public abstract class EarlybirdIndexSegmentData implements Flushable { - /** - * This class has a map which contains a snapshot of max published pointers, to distinguish the - * documents in the skip lists that are fully indexed, and safe to return to searchers and those - * that are in progress and should not be returned to searchers. See - * "Earlybird Indexing Latency Design Document" - * for rationale and design. - * - * It also has the smallestDocID, which determines the smallest assigned doc ID in the tweet ID - * mapper that is safe to traverse. - * - * The pointer map and smallestDocID need to be updated atomically. See SEARCH-27650. - */ - public static class SyncData { - private final Map indexPointers; - private final int smallestDocID; - - public SyncData(Map indexPointers, int smallestDocID) { - this.indexPointers = indexPointers; - this.smallestDocID = smallestDocID; - } - - public Map getIndexPointers() { - return indexPointers; - } - - public int getSmallestDocID() { - return smallestDocID; - } - } - - private volatile SyncData syncData; - - private final int maxSegmentSize; - private final long timeSliceID; - - private final ConcurrentHashMap queryCacheMap = - new ConcurrentHashMap<>(); - private final AbstractFacetCountingArray facetCountingArray; - private final boolean isOptimized; - private final ConcurrentHashMap perFieldMap; - private final ConcurrentHashMap normsMap; - - private final Map facetLabelProviders; - private final FacetIDMap facetIDMap; - - private final Schema schema; - private final DocValuesManager docValuesManager; - - private final DeletedDocs deletedDocs; - - private final DocIDToTweetIDMapper docIdToTweetIdMapper; - private final TimeMapper timeMapper; - - static LeafReader getLeafReaderFromOptimizedDirectory(Directory directory) throws IOException { - List leaves = DirectoryReader.open(directory).getContext().leaves(); - int leavesSize = leaves.size(); - Preconditions.checkState(1 == leavesSize, - "Expected one leaf reader in directory %s, but found %s", directory, leavesSize); - return leaves.get(0).reader(); - } - - /** - * Creates a new SegmentData instance using the provided data. - */ - public EarlybirdIndexSegmentData( - int maxSegmentSize, - long timeSliceID, - Schema schema, - boolean isOptimized, - int smallestDocID, - ConcurrentHashMap perFieldMap, - ConcurrentHashMap normsMap, - AbstractFacetCountingArray facetCountingArray, - DocValuesManager docValuesManager, - Map facetLabelProviders, - FacetIDMap facetIDMap, - DeletedDocs deletedDocs, - DocIDToTweetIDMapper docIdToTweetIdMapper, - TimeMapper timeMapper) { - this.maxSegmentSize = maxSegmentSize; - this.timeSliceID = timeSliceID; - this.schema = schema; - this.isOptimized = isOptimized; - this.facetCountingArray = facetCountingArray; - this.perFieldMap = perFieldMap; - this.syncData = new SyncData(buildIndexPointers(), smallestDocID); - this.normsMap = normsMap; - this.docValuesManager = docValuesManager; - this.facetLabelProviders = facetLabelProviders; - this.facetIDMap = facetIDMap; - this.deletedDocs = deletedDocs; - this.docIdToTweetIdMapper = docIdToTweetIdMapper; - this.timeMapper = timeMapper; - - Preconditions.checkNotNull(schema); - } - - public final Schema getSchema() { - return schema; - } - - /** - * Returns all {@link EarlybirdIndexExtensionsData} instances contained in this segment. - * Since index extensions are optional, the returned map might be null or empty. - */ - public abstract S getIndexExtensionsData(); - - public DocIDToTweetIDMapper getDocIDToTweetIDMapper() { - return docIdToTweetIdMapper; - } - - public TimeMapper getTimeMapper() { - return timeMapper; - } - - public final DocValuesManager getDocValuesManager() { - return docValuesManager; - } - - public Map getFacetLabelProviders() { - return facetLabelProviders; - } - - public FacetIDMap getFacetIDMap() { - return facetIDMap; - } - - /** - * Returns the QueryCacheResult for the given filter for this segment. - */ - public QueryCacheResultForSegment getQueryCacheResult(String queryCacheFilterName) { - return queryCacheMap.get(queryCacheFilterName); - } - - public long getQueryCachesCardinality() { - return queryCacheMap.values().stream().mapToLong(q -> q.getCardinality()).sum(); - } - - /** - * Get cache cardinality for each query cache. - * @return - */ - public List> getPerQueryCacheCardinality() { - ArrayList> result = new ArrayList<>(); - - queryCacheMap.forEach((cacheName, queryCacheResult) -> { - result.add(Pair.of(cacheName, queryCacheResult.getCardinality())); - }); - return result; - } - - /** - * Updates the QueryCacheResult stored for the given filter for this segment - */ - public QueryCacheResultForSegment updateQueryCacheResult( - String queryCacheFilterName, QueryCacheResultForSegment queryCacheResultForSegment) { - return queryCacheMap.put(queryCacheFilterName, queryCacheResultForSegment); - } - - /** - * Subclasses are allowed to return null here to disable writing to a FacetCountingArray. - */ - public FacetCountingArrayWriter createFacetCountingArrayWriter() { - return getFacetCountingArray() != null - ? new FacetCountingArrayWriter(getFacetCountingArray()) : null; - } - - public int getMaxSegmentSize() { - return maxSegmentSize; - } - - public long getTimeSliceID() { - return timeSliceID; - } - - public void updateSmallestDocID(int smallestDocID) { - // Atomic swap - syncData = new SyncData(Collections.unmodifiableMap(buildIndexPointers()), smallestDocID); - } - - private Map buildIndexPointers() { - Map newIndexPointers = new HashMap<>(); - for (InvertedIndex index : perFieldMap.values()) { - if (index.hasMaxPublishedPointer()) { - newIndexPointers.put(index, index.getMaxPublishedPointer()); - } - } - - return newIndexPointers; - } - - public SyncData getSyncData() { - return syncData; - } - - public AbstractFacetCountingArray getFacetCountingArray() { - return facetCountingArray; - } - - public void addField(String fieldName, InvertedIndex field) { - perFieldMap.put(fieldName, field); - } - - public Map getPerFieldMap() { - return Collections.unmodifiableMap(perFieldMap); - } - - public InvertedIndex getFieldIndex(String fieldName) { - return perFieldMap.get(fieldName); - } - - public Map getNormsMap() { - return Collections.unmodifiableMap(normsMap); - } - - public DeletedDocs getDeletedDocs() { - return deletedDocs; - } - - /** - * Returns the norms index for the given field name. - */ - public ColumnStrideByteIndex getNormIndex(String fieldName) { - return normsMap == null ? null : normsMap.get(fieldName); - } - - /** - * Returns the norms index for the given field name, add if not exist. - */ - public ColumnStrideByteIndex createNormIndex(String fieldName) { - if (normsMap == null) { - return null; - } - ColumnStrideByteIndex csf = normsMap.get(fieldName); - if (csf == null) { - csf = new ColumnStrideByteIndex(fieldName, maxSegmentSize); - normsMap.put(fieldName, csf); - } - return csf; - } - - /** - * Flushes this segment to disk. - */ - public void flushSegment(FlushInfo flushInfo, DataSerializer out) throws IOException { - getFlushHandler().flush(flushInfo, out); - } - - public final boolean isOptimized() { - return this.isOptimized; - } - - /** - * Returns a new atomic reader for this segment. - */ - public EarlybirdIndexSegmentAtomicReader createAtomicReader() throws IOException { - EarlybirdIndexSegmentAtomicReader reader = doCreateAtomicReader(); - EarlybirdIndexExtensionsData indexExtension = getIndexExtensionsData(); - if (indexExtension != null) { - indexExtension.setupExtensions(reader); - } - return reader; - } - - /** - * Creates a new atomic reader for this segment. - */ - protected abstract EarlybirdIndexSegmentAtomicReader doCreateAtomicReader() throws IOException; - - /** - * Creates a new segment writer for this segment. - */ - public abstract EarlybirdIndexSegmentWriter createEarlybirdIndexSegmentWriter( - IndexWriterConfig indexWriterConfig) throws IOException; - - public abstract static class AbstractSegmentDataFlushHandler - - extends Flushable.Handler { - protected static final String MAX_SEGMENT_SIZE_PROP_NAME = "maxSegmentSize"; - protected static final String TIME_SLICE_ID_PROP_NAME = "time_slice_id"; - protected static final String SMALLEST_DOCID_PROP_NAME = "smallestDocID"; - protected static final String DOC_ID_MAPPER_SUBPROPS_NAME = "doc_id_mapper"; - protected static final String TIME_MAPPER_SUBPROPS_NAME = "time_mapper"; - public static final String IS_OPTIMIZED_PROP_NAME = "isOptimized"; - - // Abstract methods child classes should implement: - // 1. How to additional data structures - protected abstract void flushAdditionalDataStructures( - FlushInfo flushInfo, DataSerializer out, EarlybirdIndexSegmentData toFlush) - throws IOException; - - // 2. Load additional data structures and construct SegmentData. - // Common data structures should be passed into this method to avoid code duplication. - // Subclasses should load additional data structures and construct a SegmentData. - protected abstract EarlybirdIndexSegmentData constructSegmentData( - FlushInfo flushInfo, - ConcurrentHashMap perFieldMap, - int maxSegmentSize, - S indexExtension, - DocIDToTweetIDMapper docIdToTweetIdMapper, - TimeMapper timeMapper, - DataDeserializer in) throws IOException; - - protected abstract S newIndexExtension(); - - protected final Schema schema; - protected final EarlybirdIndexExtensionsFactory indexExtensionsFactory; - private final Flushable.Handler docIdMapperFlushHandler; - private final Flushable.Handler timeMapperFlushHandler; - - public AbstractSegmentDataFlushHandler( - Schema schema, - EarlybirdIndexExtensionsFactory indexExtensionsFactory, - Flushable.Handler docIdMapperFlushHandler, - Flushable.Handler timeMapperFlushHandler) { - super(); - this.schema = schema; - this.indexExtensionsFactory = indexExtensionsFactory; - this.docIdMapperFlushHandler = docIdMapperFlushHandler; - this.timeMapperFlushHandler = timeMapperFlushHandler; - } - - public AbstractSegmentDataFlushHandler(EarlybirdIndexSegmentData objectToFlush) { - super(objectToFlush); - this.schema = objectToFlush.schema; - this.indexExtensionsFactory = null; // factory only needed for loading SegmentData from disk - this.docIdMapperFlushHandler = null; // docIdMapperFlushHandler needed only for loading data - this.timeMapperFlushHandler = null; // timeMapperFlushHandler needed only for loading data - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) - throws IOException { - EarlybirdIndexSegmentData segmentData = getObjectToFlush(); - - Preconditions.checkState(segmentData.docIdToTweetIdMapper instanceof Flushable); - ((Flushable) segmentData.docIdToTweetIdMapper).getFlushHandler().flush( - flushInfo.newSubProperties(DOC_ID_MAPPER_SUBPROPS_NAME), out); - - if (segmentData.timeMapper != null) { - segmentData.timeMapper.getFlushHandler() - .flush(flushInfo.newSubProperties(TIME_MAPPER_SUBPROPS_NAME), out); - } - - flushInfo.addBooleanProperty(IS_OPTIMIZED_PROP_NAME, segmentData.isOptimized()); - flushInfo.addIntProperty(MAX_SEGMENT_SIZE_PROP_NAME, segmentData.getMaxSegmentSize()); - flushInfo.addLongProperty(TIME_SLICE_ID_PROP_NAME, segmentData.getTimeSliceID()); - flushInfo.addIntProperty(SMALLEST_DOCID_PROP_NAME, - segmentData.getSyncData().getSmallestDocID()); - - flushIndexes(flushInfo, out, segmentData); - - // Flush cluster specific data structures: - // FacetCountingArray, TweetIDMapper, LatLonMapper, and TimeMapper - flushAdditionalDataStructures(flushInfo, out, segmentData); - } - - private void flushIndexes( - FlushInfo flushInfo, - DataSerializer out, - EarlybirdIndexSegmentData segmentData) throws IOException { - Map perFieldMap = segmentData.getPerFieldMap(); - FlushInfo fieldProps = flushInfo.newSubProperties("fields"); - long sizeBeforeFlush = out.length(); - for (Map.Entry entry : perFieldMap.entrySet()) { - String fieldName = entry.getKey(); - entry.getValue().getFlushHandler().flush(fieldProps.newSubProperties(fieldName), out); - } - fieldProps.setSizeInBytes(out.length() - sizeBeforeFlush); - } - - @Override - protected EarlybirdIndexSegmentData doLoad(FlushInfo flushInfo, DataDeserializer in) - throws IOException { - DocIDToTweetIDMapper docIdToTweetIdMapper = docIdMapperFlushHandler.load( - flushInfo.getSubProperties(DOC_ID_MAPPER_SUBPROPS_NAME), in); - - FlushInfo timeMapperFlushInfo = flushInfo.getSubProperties(TIME_MAPPER_SUBPROPS_NAME); - TimeMapper timeMapper = - timeMapperFlushInfo != null ? timeMapperFlushHandler.load(timeMapperFlushInfo, in) : null; - - final int maxSegmentSize = flushInfo.getIntProperty(MAX_SEGMENT_SIZE_PROP_NAME); - ConcurrentHashMap perFieldMap = loadIndexes(flushInfo, in); - return constructSegmentData( - flushInfo, - perFieldMap, - maxSegmentSize, - newIndexExtension(), - docIdToTweetIdMapper, - timeMapper, - in); - } - - // Move this method into EarlybirdRealtimeIndexSegmentData (careful, - // we may need to increment FlushVersion because EarlybirdLuceneIndexSegmentData - // currently has the 'fields' subproperty in its FlushInfo as well) - private ConcurrentHashMap loadIndexes( - FlushInfo flushInfo, DataDeserializer in) throws IOException { - ConcurrentHashMap perFieldMap = new ConcurrentHashMap<>(); - - FlushInfo fieldProps = flushInfo.getSubProperties("fields"); - Iterator fieldIterator = fieldProps.getKeyIterator(); - while (fieldIterator.hasNext()) { - String fieldName = fieldIterator.next(); - EarlybirdFieldType fieldType = schema.getFieldInfo(fieldName).getFieldType(); - FlushInfo subProp = fieldProps.getSubProperties(fieldName); - boolean isOptimized = subProp.getBooleanProperty( - OptimizedMemoryIndex.FlushHandler.IS_OPTIMIZED_PROP_NAME); - final InvertedIndex invertedIndex; - if (isOptimized) { - if (!fieldType.becomesImmutable()) { - throw new IOException("Tried to load an optimized field that is not immutable: " - + fieldName); - } - invertedIndex = (new OptimizedMemoryIndex.FlushHandler(fieldType)).load(subProp, in); - } else { - invertedIndex = (new InvertedRealtimeIndex.FlushHandler( - fieldType, TermPointerEncoding.DEFAULT_ENCODING)) - .load(subProp, in); - } - perFieldMap.put(fieldName, invertedIndex); - } - return perFieldMap; - } - } - - public int numDocs() { - return docIdToTweetIdMapper.getNumDocs(); - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentWriter.docx b/src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentWriter.docx new file mode 100644 index 0000000000000000000000000000000000000000..3665c35161904a08315168dd9f34ebda18199c68 GIT binary patch literal 38050 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentWriter.java b/src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentWriter.java deleted file mode 100644 index 697a95bb2..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexSegmentWriter.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.twitter.search.core.earlybird.index; - -import java.io.Closeable; -import java.io.IOException; - -import org.apache.lucene.document.Document; -import org.apache.lucene.index.IndexReader; -import org.apache.lucene.index.LeafReaderContext; -import org.apache.lucene.search.Collector; -import org.apache.lucene.search.IndexSearcher; -import org.apache.lucene.search.LeafCollector; -import org.apache.lucene.search.Query; -import org.apache.lucene.search.Scorable; -import org.apache.lucene.search.ScoreMode; -import org.apache.lucene.store.Directory; - -import com.twitter.search.core.earlybird.index.column.ColumnStrideFieldIndex; -import com.twitter.search.core.earlybird.index.column.DocValuesUpdate; - -/** - * IndexSegmentWriter combines some common functionality between the Lucene and Realtime index - * segment writers. - */ -public abstract class EarlybirdIndexSegmentWriter implements Closeable { - - public EarlybirdIndexSegmentWriter() { - } - - /** - * Gets the segment data this segment write is associated with. - * @return - */ - public abstract EarlybirdIndexSegmentData getSegmentData(); - - /** - * Appends terms from the document to the document matching the query. Does not replace a field or - * document, actually adds to the the field in the segment. - */ - public final void appendOutOfOrder(Query query, Document doc) throws IOException { - runQuery(query, docID -> appendOutOfOrder(doc, docID)); - } - - protected abstract void appendOutOfOrder(Document doc, int docId) throws IOException; - - /** - * Deletes a document in this segment that matches this query. - */ - public void deleteDocuments(Query query) throws IOException { - runQuery(query, docID -> getSegmentData().getDeletedDocs().deleteDoc(docID)); - } - - /** - * Updates the docvalues of a document in this segment that matches this query. - */ - public void updateDocValues(Query query, String field, DocValuesUpdate update) - throws IOException { - runQuery(query, docID -> { - ColumnStrideFieldIndex docValues = - getSegmentData().getDocValuesManager().getColumnStrideFieldIndex(field); - if (docValues == null) { - return; - } - - update.update(docValues, docID); - }); - } - - private void runQuery(final Query query, final OnHit onHit) throws IOException { - try (IndexReader reader = getSegmentData().createAtomicReader()) { - new IndexSearcher(reader).search(query, new Collector() { - @Override - public LeafCollector getLeafCollector(LeafReaderContext context) throws IOException { - return new LeafCollector() { - @Override - public void setScorer(Scorable scorer) { - } - - @Override - public void collect(int docID) throws IOException { - onHit.hit(docID); - } - }; - } - - @Override - public ScoreMode scoreMode() { - return ScoreMode.COMPLETE_NO_SCORES; - } - }); - } - } - - private interface OnHit { - void hit(int docID) throws IOException; - } - - /** - * Adds a new document to this segment. In production, this method should be called only by - * Expertsearch. - */ - public abstract void addDocument(Document doc) throws IOException; - - /** - * Adds a new tweet to this segment. This method should be called only by Earlybird. - */ - public abstract void addTweet(Document doc, long tweetId, boolean docIsOffensive) - throws IOException; - - /** - * Returns the total number of documents in the segment. - */ - public abstract int numDocs() throws IOException; - - /** - * Returns the number of documents in this segment without taking deleted docs into account. - * E.g. if 10 documents were added to this segments, and 5 were deleted, - * this method still returns 10. - */ - public abstract int numDocsNoDelete() throws IOException; - - /** - * Forces the underlying index to be merged down to a single segment. - */ - public abstract void forceMerge() throws IOException; - - /** - * Appends the provides Lucene indexes to this segment. - */ - public abstract void addIndexes(Directory... dirs) throws IOException; -} diff --git a/src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexableField.docx b/src/java/com/twitter/search/core/earlybird/index/EarlybirdIndexableField.docx new file mode 100644 index 0000000000000000000000000000000000000000..1d6d0b6dfe2f806971792977670510df8afdf5b2 GIT binary patch literal 37035 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 TE9lp%VggwM%LASI>)-zY^abz@ literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/EarlybirdLuceneIndexSegmentAtomicReader.java b/src/java/com/twitter/search/core/earlybird/index/EarlybirdLuceneIndexSegmentAtomicReader.java deleted file mode 100644 index 63c811449..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/EarlybirdLuceneIndexSegmentAtomicReader.java +++ /dev/null @@ -1,336 +0,0 @@ -package com.twitter.search.core.earlybird.index; - -import java.io.IOException; - -import com.google.common.base.Preconditions; - -import org.apache.lucene.index.BinaryDocValues; -import org.apache.lucene.index.FieldInfos; -import org.apache.lucene.index.FilterLeafReader; -import org.apache.lucene.index.LeafMetaData; -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.index.NumericDocValues; -import org.apache.lucene.index.PointValues; -import org.apache.lucene.index.PostingsEnum; -import org.apache.lucene.index.SortedDocValues; -import org.apache.lucene.index.SortedNumericDocValues; -import org.apache.lucene.index.SortedSetDocValues; -import org.apache.lucene.index.StoredFieldVisitor; -import org.apache.lucene.index.Term; -import org.apache.lucene.index.Terms; -import org.apache.lucene.index.TermsEnum; -import org.apache.lucene.search.DocIdSetIterator; -import org.apache.lucene.store.Directory; -import org.apache.lucene.util.Bits; -import org.apache.lucene.util.BytesRef; - -import com.twitter.search.common.encoding.docvalues.CSFTypeUtil; -import com.twitter.search.common.encoding.features.IntegerEncodedFeatures; -import com.twitter.search.common.schema.base.EarlybirdFieldType; -import com.twitter.search.common.schema.base.FeatureConfiguration; -import com.twitter.search.common.schema.base.Schema.FieldInfo; -import com.twitter.search.core.earlybird.index.column.ColumnStrideFieldDocValues; -import com.twitter.search.core.earlybird.index.column.ColumnStrideFieldIndex; - -public final class EarlybirdLuceneIndexSegmentAtomicReader - extends EarlybirdIndexSegmentAtomicReader { - private abstract static class DocIdSetIteratorWrapper extends NumericDocValues { - private final DocIdSetIterator delegate; - - public DocIdSetIteratorWrapper(DocIdSetIterator delegate) { - this.delegate = Preconditions.checkNotNull(delegate); - } - - @Override - public int docID() { - return delegate.docID(); - } - - @Override - public int nextDoc() throws IOException { - return delegate.nextDoc(); - } - - @Override - public int advance(int target) throws IOException { - return delegate.advance(target); - } - - @Override - public long cost() { - return delegate.cost(); - } - } - - private static class BytesRefBasedIntegerEncodedFeatures extends IntegerEncodedFeatures { - private final BytesRef bytesRef; - private final int numInts; - - public BytesRefBasedIntegerEncodedFeatures(BytesRef bytesRef, int numInts) { - this.bytesRef = bytesRef; - this.numInts = numInts; - } - - @Override - public int getInt(int pos) { - return CSFTypeUtil.convertFromBytes(bytesRef.bytes, bytesRef.offset, pos); - } - - @Override - public void setInt(int pos, int value) { - throw new UnsupportedOperationException(); - } - - @Override - public int getNumInts() { - return numInts; - } - } - - private static final int OLDEST_DOC_SKIP_INTERVAL = 256; - - private final LeafReader delegate; - - /** - * Do not add public constructors to this class. EarlybirdLuceneIndexSegmentAtomicReader instances - * should be created only by calling EarlybirdLuceneIndexSegmentData.createAtomicReader(), to make - * sure everything is set up properly (such as CSF readers). - */ - EarlybirdLuceneIndexSegmentAtomicReader( - EarlybirdIndexSegmentData segmentData, Directory directory) throws IOException { - super(segmentData); - this.delegate = getDelegateReader(directory); - } - - private LeafReader getDelegateReader(Directory directory) throws IOException { - LeafReader directoryReader = - EarlybirdIndexSegmentData.getLeafReaderFromOptimizedDirectory(directory); - return new FilterLeafReader(directoryReader) { - @Override - public NumericDocValues getNumericDocValues(String field) throws IOException { - EarlybirdFieldType type = getSchema().getFieldInfo(field).getFieldType(); - if ((type == null) || !type.isCsfViewField()) { - return in.getNumericDocValues(field); - } - - // Compute as many things as possible once, outside the NumericDocValues.get() call. - String baseFieldName = getSchema().getFieldInfo(type.getCsfViewBaseFieldId()).getName(); - FieldInfo baseFieldInfo = - Preconditions.checkNotNull(getSchema().getFieldInfo(baseFieldName)); - EarlybirdFieldType baseFieldType = baseFieldInfo.getFieldType(); - Preconditions.checkState(!baseFieldType.isCsfVariableLength()); - int numInts = baseFieldType.getCsfFixedLengthNumValuesPerDoc(); - FeatureConfiguration featureConfiguration = - Preconditions.checkNotNull(type.getCsfViewFeatureConfiguration()); - Preconditions.checkArgument(featureConfiguration.getValueIndex() < numInts); - - if (numInts == 1) { - // All encoded tweet features are encoded in a single integer. - NumericDocValues numericDocValues = in.getNumericDocValues(baseFieldName); - return new DocIdSetIteratorWrapper(numericDocValues) { - @Override - public long longValue() throws IOException { - return (numericDocValues.longValue() & featureConfiguration.getBitMask()) - >> featureConfiguration.getBitStartPosition(); - } - - @Override - public boolean advanceExact(int target) throws IOException { - return numericDocValues.advanceExact(target); - } - }; - } - - BinaryDocValues binaryDocValues = - Preconditions.checkNotNull(in.getBinaryDocValues(baseFieldName)); - return new DocIdSetIteratorWrapper(binaryDocValues) { - @Override - public long longValue() throws IOException { - BytesRef data = binaryDocValues.binaryValue(); - IntegerEncodedFeatures encodedFeatures = - new BytesRefBasedIntegerEncodedFeatures(data, numInts); - return encodedFeatures.getFeatureValue(featureConfiguration); - } - - @Override - public boolean advanceExact(int target) throws IOException { - return binaryDocValues.advanceExact(target); - } - }; - } - - @Override - public CacheHelper getCoreCacheHelper() { - return in.getCoreCacheHelper(); - } - - @Override - public CacheHelper getReaderCacheHelper() { - return in.getReaderCacheHelper(); - } - }; - } - - private TermsEnum getTermsEnumAtTerm(Term term) throws IOException { - Terms terms = terms(term.field()); - if (terms == null) { - return null; - } - - TermsEnum termsEnum = terms.iterator(); - return termsEnum.seekExact(term.bytes()) ? termsEnum : null; - } - - @Override - public int getOldestDocID(Term term) throws IOException { - TermsEnum termsEnum = getTermsEnumAtTerm(term); - if (termsEnum == null) { - return EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND; - } - - PostingsEnum td = termsEnum.postings(null); - int oldestDocID = td.nextDoc(); - if (oldestDocID == DocIdSetIterator.NO_MORE_DOCS) { - return EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND; - } - - final int docFreq = termsEnum.docFreq(); - if (docFreq > OLDEST_DOC_SKIP_INTERVAL * 16) { - final int skipSize = docFreq / OLDEST_DOC_SKIP_INTERVAL; - do { - oldestDocID = td.docID(); - } while (td.advance(oldestDocID + skipSize) != DocIdSetIterator.NO_MORE_DOCS); - - td = delegate.postings(term); - td.advance(oldestDocID); - } - - do { - oldestDocID = td.docID(); - } while (td.nextDoc() != DocIdSetIterator.NO_MORE_DOCS); - - return oldestDocID; - } - - @Override - public int getTermID(Term term) throws IOException { - TermsEnum termsEnum = getTermsEnumAtTerm(term); - return termsEnum != null - ? (int) termsEnum.ord() - : EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND; - } - - @Override - public Terms terms(String field) throws IOException { - return delegate.terms(field); - } - - @Override - public FieldInfos getFieldInfos() { - return delegate.getFieldInfos(); - } - - @Override - public Bits getLiveDocs() { - return getDeletesView().getLiveDocs(); - } - - @Override - public int numDocs() { - return delegate.numDocs(); - } - - @Override - public int maxDoc() { - return delegate.maxDoc(); - } - - @Override - public void document(int docID, StoredFieldVisitor visitor) throws IOException { - delegate.document(docID, visitor); - } - - @Override - public boolean hasDeletions() { - return getDeletesView().hasDeletions(); - } - - @Override - protected void doClose() throws IOException { - delegate.close(); - } - - @Override - public NumericDocValues getNumericDocValues(String field) throws IOException { - FieldInfo fieldInfo = getSegmentData().getSchema().getFieldInfo(field); - if (fieldInfo == null) { - return null; - } - - // If this field is a CSF view field or if it's not loaded in memory, get the NumericDocValues - // from the delegate. - EarlybirdFieldType fieldType = fieldInfo.getFieldType(); - if (fieldType.isCsfViewField() || !fieldInfo.getFieldType().isCsfLoadIntoRam()) { - NumericDocValues delegateVals = delegate.getNumericDocValues(field); - if (delegateVals != null) { - return delegateVals; - } - } - - // The field is either loaded in memory, or the delegate doesn't have NumericDocValues for it. - // Return the NumericDocValues for this field stored in the DocValuesManager. - ColumnStrideFieldIndex csf = - getSegmentData().getDocValuesManager().getColumnStrideFieldIndex(field); - return csf != null ? new ColumnStrideFieldDocValues(csf, this) : null; - } - - @Override - public BinaryDocValues getBinaryDocValues(String field) throws IOException { - return delegate.getBinaryDocValues(field); - } - - @Override - public SortedDocValues getSortedDocValues(String field) throws IOException { - return delegate.getSortedDocValues(field); - } - - @Override - public SortedSetDocValues getSortedSetDocValues(String field) throws IOException { - return delegate.getSortedSetDocValues(field); - } - - @Override - public NumericDocValues getNormValues(String field) throws IOException { - return delegate.getNormValues(field); - } - - @Override - public SortedNumericDocValues getSortedNumericDocValues(String field) throws IOException { - return delegate.getSortedNumericDocValues(field); - } - - @Override - public void checkIntegrity() throws IOException { - delegate.checkIntegrity(); - } - - @Override - public PointValues getPointValues(String field) throws IOException { - return delegate.getPointValues(field); - } - - @Override - public LeafMetaData getMetaData() { - return delegate.getMetaData(); - } - - @Override - public CacheHelper getCoreCacheHelper() { - return delegate.getCoreCacheHelper(); - } - - @Override - public CacheHelper getReaderCacheHelper() { - return delegate.getReaderCacheHelper(); - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/EarlybirdLuceneIndexSegmentData.docx b/src/java/com/twitter/search/core/earlybird/index/EarlybirdLuceneIndexSegmentData.docx new file mode 100644 index 0000000000000000000000000000000000000000..f956a2f5757fd5337439b1ee1865bdeb508445dc GIT binary patch literal 38731 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 BjXwYY literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/EarlybirdLuceneIndexSegmentData.java b/src/java/com/twitter/search/core/earlybird/index/EarlybirdLuceneIndexSegmentData.java deleted file mode 100644 index 82c858e69..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/EarlybirdLuceneIndexSegmentData.java +++ /dev/null @@ -1,197 +0,0 @@ -package com.twitter.search.core.earlybird.index; - -import java.io.IOException; -import java.util.concurrent.ConcurrentHashMap; - -import org.apache.lucene.index.IndexWriterConfig; -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.store.Directory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.facets.AbstractFacetCountingArray; -import com.twitter.search.core.earlybird.facets.FacetCountingArrayWriter; -import com.twitter.search.core.earlybird.index.column.ColumnStrideFieldIndex; -import com.twitter.search.core.earlybird.index.column.DocValuesManager; -import com.twitter.search.core.earlybird.index.column.OptimizedDocValuesManager; -import com.twitter.search.core.earlybird.index.extensions.EarlybirdIndexExtensionsData; -import com.twitter.search.core.earlybird.index.extensions.EarlybirdIndexExtensionsFactory; -import com.twitter.search.core.earlybird.index.inverted.DeletedDocs; -import com.twitter.search.core.earlybird.index.inverted.InvertedIndex; - -/** - * Implements {@link EarlybirdIndexSegmentData} for Lucene-based on-disk Earlybird segments. - */ -public final class EarlybirdLuceneIndexSegmentData extends EarlybirdIndexSegmentData { - private static final Logger LOG = LoggerFactory.getLogger(EarlybirdLuceneIndexSegmentData.class); - - private final Directory directory; - private final EarlybirdIndexExtensionsData indexExtension; - - /** - * Creates a new Lucene-based SegmentData instance from a lucene directory. - */ - public EarlybirdLuceneIndexSegmentData( - Directory directory, - int maxSegmentSize, - long timeSliceID, - Schema schema, - DocIDToTweetIDMapper docIdToTweetIdMapper, - TimeMapper timeMapper, - EarlybirdIndexExtensionsFactory indexExtensionsFactory) { - this( - directory, - maxSegmentSize, - timeSliceID, - schema, - false, // isOptimized - 0, // smallestDocId - new ConcurrentHashMap<>(), - AbstractFacetCountingArray.EMPTY_ARRAY, - new OptimizedDocValuesManager(schema, maxSegmentSize), - docIdToTweetIdMapper, - timeMapper, - indexExtensionsFactory == null - ? null : indexExtensionsFactory.newLuceneIndexExtensionsData()); - } - - public EarlybirdLuceneIndexSegmentData( - Directory directory, - int maxSegmentSize, - long timeSliceID, - Schema schema, - boolean isOptimized, - int smallestDocID, - ConcurrentHashMap perFieldMap, - AbstractFacetCountingArray facetCountingArray, - DocValuesManager docValuesManager, - DocIDToTweetIDMapper docIdToTweetIdMapper, - TimeMapper timeMapper, - EarlybirdIndexExtensionsData indexExtension) { - super(maxSegmentSize, - timeSliceID, - schema, - isOptimized, - smallestDocID, - perFieldMap, - new ConcurrentHashMap<>(), - facetCountingArray, - docValuesManager, - null, // facetLabelProviders - null, // facetIDMap - DeletedDocs.NO_DELETES, - docIdToTweetIdMapper, - timeMapper); - this.directory = directory; - this.indexExtension = indexExtension; - } - - public Directory getLuceneDirectory() { - return directory; - } - - @Override - public EarlybirdIndexExtensionsData getIndexExtensionsData() { - return indexExtension; - } - - @Override - public FacetCountingArrayWriter createFacetCountingArrayWriter() { - return null; - } - - @Override - protected EarlybirdIndexSegmentAtomicReader doCreateAtomicReader() throws IOException { - // EarlybirdSegment creates one single EarlybirdIndexSegmentAtomicReader instance per segment - // and caches it, and the cached instance is recreated only when the segment's data changes. - // This is why this is a good place to reload all CSFs that should be loaded in RAM. Also, it's - // easier and less error-prone to do it here, than trying to track down all places that mutate - // the segment data and do it there. - LeafReader reader = getLeafReaderFromOptimizedDirectory(directory); - for (Schema.FieldInfo fieldInfo : getSchema().getFieldInfos()) { - // Load CSF into RAM based on configurations in the schema. - if (fieldInfo.getFieldType().getCsfType() != null - && fieldInfo.getFieldType().isCsfLoadIntoRam()) { - if (reader.getNumericDocValues(fieldInfo.getName()) != null) { - ColumnStrideFieldIndex index = getDocValuesManager().addColumnStrideField( - fieldInfo.getName(), fieldInfo.getFieldType()); - index.load(reader, fieldInfo.getName()); - } else { - LOG.warn("Field {} does not have NumericDocValues.", fieldInfo.getName()); - } - } - } - - return new EarlybirdLuceneIndexSegmentAtomicReader(this, directory); - } - - @Override - public EarlybirdIndexSegmentWriter createEarlybirdIndexSegmentWriter( - IndexWriterConfig indexWriterConfig) throws IOException { - return new EarlybirdLuceneIndexSegmentWriter(this, indexWriterConfig); - } - - @Override - public EarlybirdIndexSegmentData.AbstractSegmentDataFlushHandler getFlushHandler() { - return new OnDiskSegmentDataFlushHandler(this); - } - - public static class OnDiskSegmentDataFlushHandler - extends AbstractSegmentDataFlushHandler { - private final Directory directory; - - public OnDiskSegmentDataFlushHandler(EarlybirdLuceneIndexSegmentData objectToFlush) { - super(objectToFlush); - this.directory = objectToFlush.directory; - } - - public OnDiskSegmentDataFlushHandler( - Schema schema, - Directory directory, - EarlybirdIndexExtensionsFactory indexExtensionsFactory, - Flushable.Handler docIdMapperFlushHandler, - Flushable.Handler timeMapperFlushHandler) { - super(schema, indexExtensionsFactory, docIdMapperFlushHandler, timeMapperFlushHandler); - this.directory = directory; - } - - @Override - protected EarlybirdIndexExtensionsData newIndexExtension() { - return indexExtensionsFactory.newLuceneIndexExtensionsData(); - } - - @Override - protected void flushAdditionalDataStructures( - FlushInfo flushInfo, DataSerializer out, EarlybirdIndexSegmentData toFlush) { - } - - @Override - protected EarlybirdIndexSegmentData constructSegmentData( - FlushInfo flushInfo, - ConcurrentHashMap perFieldMap, - int maxSegmentSize, - EarlybirdIndexExtensionsData indexExtension, - DocIDToTweetIDMapper docIdToTweetIdMapper, - TimeMapper timeMapper, - DataDeserializer in) { - return new EarlybirdLuceneIndexSegmentData( - directory, - maxSegmentSize, - flushInfo.getLongProperty(TIME_SLICE_ID_PROP_NAME), - schema, - flushInfo.getBooleanProperty(IS_OPTIMIZED_PROP_NAME), - flushInfo.getIntProperty(SMALLEST_DOCID_PROP_NAME), - perFieldMap, - AbstractFacetCountingArray.EMPTY_ARRAY, - new OptimizedDocValuesManager(schema, maxSegmentSize), - docIdToTweetIdMapper, - timeMapper, - indexExtension); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/EarlybirdLuceneIndexSegmentWriter.docx b/src/java/com/twitter/search/core/earlybird/index/EarlybirdLuceneIndexSegmentWriter.docx new file mode 100644 index 0000000000000000000000000000000000000000..902e2fe44faec5df365782faa2117e9118ad1bd1 GIT binary patch literal 38674 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


    H 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 HABYD4-{?rm literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideIntIndex.java b/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideIntIndex.java deleted file mode 100644 index 7bb0d1b02..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideIntIndex.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.twitter.search.core.earlybird.index.column; - -import java.io.IOException; - -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.index.DocIDToTweetIDMapper; - -import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; - -public class ColumnStrideIntIndex extends ColumnStrideFieldIndex implements Flushable { - private final Int2IntOpenHashMap values; - private final int maxSize; - - public ColumnStrideIntIndex(String name, int maxSize) { - super(name); - values = new Int2IntOpenHashMap(maxSize); // default unset value is 0 - this.maxSize = maxSize; - } - - public ColumnStrideIntIndex(String name, Int2IntOpenHashMap values, int maxSize) { - super(name); - this.values = values; - this.maxSize = maxSize; - } - - @Override - public void setValue(int docID, long value) { - values.put(docID, (int) value); - } - - @Override - public long get(int docID) { - return values.get(docID); - } - - @Override - public ColumnStrideFieldIndex optimize( - DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) throws IOException { - return new OptimizedColumnStrideIntIndex(this, originalTweetIdMapper, optimizedTweetIdMapper); - } - - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - public static final class FlushHandler extends Flushable.Handler { - private static final String NAME_PROP_NAME = "fieldName"; - private static final String MAX_SIZE_PROP = "maxSize"; - - public FlushHandler() { - super(); - } - - public FlushHandler(ColumnStrideIntIndex objectToFlush) { - super(objectToFlush); - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - ColumnStrideIntIndex index = getObjectToFlush(); - flushInfo.addStringProperty(NAME_PROP_NAME, index.getName()); - flushInfo.addIntProperty(MAX_SIZE_PROP, index.maxSize); - - out.writeInt(index.values.size()); - for (Int2IntOpenHashMap.Entry entry : index.values.int2IntEntrySet()) { - out.writeInt(entry.getIntKey()); - out.writeInt(entry.getIntValue()); - } - } - - @Override - protected ColumnStrideIntIndex doLoad(FlushInfo flushInfo, DataDeserializer in) - throws IOException { - int size = in.readInt(); - int maxSize = flushInfo.getIntProperty(MAX_SIZE_PROP); - Int2IntOpenHashMap map = new Int2IntOpenHashMap(maxSize); - for (int i = 0; i < size; i++) { - map.put(in.readInt(), in.readInt()); - } - return new ColumnStrideIntIndex(flushInfo.getStringProperty(NAME_PROP_NAME), map, maxSize); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideIntViewIndex.docx b/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideIntViewIndex.docx new file mode 100644 index 0000000000000000000000000000000000000000..e0514a2a190717c3efe8606c954f44a65f57a513 GIT binary patch literal 37459 zcmagEWmsIvwm*z(a1HM6F2N-b+}$l`<4)rNf_rdxcL?ro!QCYg-2LB~nRCv}x%a;B zm(4@fT0dE9cUAT7ttbNtg$V`*1_w5o!mU}MTo9WG4hA*?0|tfx8r2a4*g2coIUA^Y z*qb@&F}d5?G$hI?tO%oiIeWoMViqLv5<|f%-L|K(XNbiUuS&b&(OP6ak%f4;8{-R8 zn^p{gVTw&px$_}fsTJt(Zlux?6FsQCaEMO_iCj!rxf45utG0v%eFH_e^XMsBaFd^AM8 zL;rbiMA7wS%-4_;%QB@x#u+Uw|6!Mi5_>maJ?nM24-jW;{~?Bf-6`p<3J zT2ZP#mPdh7c%FA+$mz#j0kqV0q;!{Du3x?k|v^_Kl#Iaqr*x zSKdiIw-@fYtOVqm$TB3+>bxWp=A(7S8a;VEA{Lds7Z>b)UMO1I6B@ZA%YDL>(+5-h zM;AS)WQ6ZQ-CKtM149J;HE=YuabjlreXWQa{{+d3>USn6F+^Ep*Qh3*zoajID3>qT z^=<65&<-e7xZKgMB(A54-A#0Gwqs&GpO%NeNMC3Zs9~%%7m%~it+_#aQQvB?3YP@m z=1=Obx*eotlNx?Qjx20Ob;o6{P9jLZj?u3}TX#AwQYk8KKxZq3TpUyqk9LjdOrzoA z!#D$g0Z7U=a(*qUXxX)K`+6_b=qzRECwvrRkEW6$Z_0|plaDOzfN?D*eJ~kS8q<=F z{r$03@v~0Z1=C@mn1YJFJH<83cpG{jk4625qUq+HkNb=iT|BG*E#|0Vax$0DC896M&=H@0&a$ZdAUP z1y$nCTVhsDJ?shp^xX~ntv`=iMvt1pmH8!715 z$9_ZQ{d6;$Y8WM6ZDy~=cxfEvp-wgermy8754s6hgurJc++AN- zvZf_SV-|^|LrH&^`oYjKo_kp5`}Xnm{UQPVJ@*9^?vVwuKJAQ~*z0r8CH_DAa=o&G za}4T>4HOs{>fiffWN-gRTU1BwR#;Hmp6H?UoWEMaiYVd61~i>={R$E7#Tj*xwd zg=%5l2KqdNV)1@qz6s;6uK6W&D85391yj z1WUaiP0zt#a-?Doh7sO5MMJT2#EY!XcPFJOEaQ}B z1q|nF{c#9EdGw>&fdxVr6mSp}A6S1p`~a z_W;z;3DyF*iXUCIw~6mQ+b$0__5Q?)hS@1H7Z(g-IVsd{}0)7`G)r#rBLn^ z#sjb!M{|3_r$&jN#XMwHx^q<8q4i!CUrs)+MoA=CbRmhr>oyIt9jSg97;?ou`V9Ae zPGo?LvR+CSHH-mMx`zyIP_%zbKX1vNu|yn7d&fawtSvaZE0!jFuD!6SriiXvbApcllbEIhqRInoK_gUZ{sTG9wd_q(qmfaQm{ z%GB#ZE)uC9dYcv$!eZnV@UcapQ& zMSor{xrUAt_(c>v!+SUBOc`1E6AaE6ZtUB8NV+LuH4br21PGhLCZED>zYAPDdzNwb z*AOhzbe_Fn!K1@-c&`t-NzyrE#`RiM?kr(@A`r8?2+sB+NbiJwYA{fTYrU9vgZ2v&jJhwYY5`lwE!`X%wz0RnB)= z)8L~Ee{98cBGH(AG1~&!v7A6s zzb^A_dp~}WXrUBs0q*{^;HL>t^269Vi#YP&|&Mm zJkoc=VGh4$>%t{x>2O5T{V&M>s9M0WXV zwAVfSkIsF^jwsLif;kvWgtFBg*%}TtSjjN)7r%B#4*=^sOl`qAI_jEjK5~dr4or+z z@=$5th6smtZgodB8`zP>FeTCmU{x?MV&gVtU5Mi%8;dlvo+@t=pxzpu%E9yk+36ararznr}y^aRIa7TSfs|CLMCN+(%W z;2kWv9Cs_Wx1qCU${@DwzjMdslSOSiGk&Wwzs`?KU;in9CjtTmb0%2P4E=)zO7d}6 zos^o0bp;7LUv)QE`{D;tx#^Rd#LwjipAzJr5o%f}`)Uy=8glG}Td*o4^A9Ce;=a^! zYeQ&>Pse>T3dzcJ_G~4)7_V%;Y%jOo6k1Dl>fV&EQxE7tgQ{7aGt?vJq%_<QX=P3{G>;(%Uv?CZ%M6k_EsA;Vx<3iE zEwh^!??d1Z=6~*dk!9HY;mlxQ`fAW%DF3Rple347nbRNpo}OO( zwq&hOXJ>An!Sk+dOc2=MgdJF%D}j+$duGiUyBzz>uc;}V&(S9azLccG#A?cF>YqyE zYWaIIu@!0eG&15<&0b!zeA{f!fCj`-X)mX1+`XMh9W6R%>Q6=Er&p~2;0vxd|HJ;N zyY^{j(#nh7%W0a>!XV)FA^Pp%Y2hrYNT}&}NALb&?V>e#uJ!3)=I2doNXX8S$4l*p zSKGJm>%q*xWn%rLqVvh#gOKFCt#7xu6BhlyrB`bZ`YP} z+Fnm{E2ExnUxnW6H37Y7cda{D`#0|IPs)Zq8{CByE%X8#1c`brfJ>Q!URrjp3r1h$ zjk1%+kE(@Eg)&~T1!WySUMOx2h6LUlFt0p;M7eGFuAiWc4xT)&`S47=2#JmhoM^0r z&f>OSe3HIIKtT#$D&PJ$#M{=Hi_>Gb(H*P02i#9cusPx7nyvK?9%j}DLJRUvWFXy0Jw*N)YW)~52&#C}#^+tyW|4qctIj+Yy; zM|0(5qF#rMHD;6z;5P|kZ>h`^(zm{9z>@*~q`!thV;rPu*{|qQlnPs=|hSArN6w$ogc_M$X z5)IhC-+imm?v%{L@A$4G$@M_{*u~{}$4W{4dcU&o%6)*yTXNC=)*4Dcb!#l`q0gL$ z+ljA^kh%?5`)%hFl2IATRxt{zGI5U@v2nRzpSVvbt#{}Q(8aamdho=upBh15^&u=^ zMirR5NuHQR(=5J6jX9czOrguLkwFoO{C%@ui27yOc_?_Zp zs&aJ4g5g! z#v;9i`yt{@Xh0(!Q9#ZUFL-8NrZ%)H{;WzG{Ygqmsu*24fxRq@tA6D)hq)@=y^*SZ<>w zL9|^j&&ZR4QzoZJ53rAG@*_##)#HzjMa|D_D+}JF1b}Pt4C@G^%3orm2F15Q4>5{f zV#fr;v_a=*|DOB|n#BIsB-9oK09@p+_{s)6N+u{~55%D!>2-*IVV`isfl^68akPJ= zYJ<>%LAd`&{gVo+g!;^i)cwB*&XmYOBM5(}NNR&N&G{b^{{t1{d0B}akPM3YyD(RL zkRD}JkXOw5T}Bc_#{ZJYNCHRgfe819>e+a=2Gq9SQU4ywcM_|gaBc0t(9h%(*PbKk zAX0bnIeP&2)$-LQo^MU;`h+0ipG=()Q{3F>-m&4^f}yi$>qH=~IlJ%Bx->Xy^U4q* zz@(G(eAd7AbmP*ZXV>o~^4z;H=9=?)(fvy2eqbi6YRkRq=bWIz!QTFG?$&+ehLB#< zjW}_X-8R#baH4M18D}is+mrn}F-DI`LsW*<62kP2{#BCOQ=sc&x*JmeN(YngV3w5a zv18mp%dft#fU0f(%4pOQ8y}hvJy#Eo3`Y*{m(Mr&=VxrWTbYxO4`Q(=M|VxQ5p~yD zr=kO^Wt*SRdZ@e3V8I&RCzXTztLV&YI&XPzu(aLaXO*7*$pX zDMr3WXe`EKw_4SbkGH&buf+~1-O{P{Iwr2JADy@_clJdk-DM~IxTNCgbaqquJb^rn z9eP|^?+ytyNT-IqRbnuo7Vz@gcV4J)Fv_;>Ocd58J(8yUX*6x~Ij)o&npSN7Oir4Q zn5}Nc!&)R!=49SCT^wD5qHuP}wAN$W)L{O2AxrcD1+;#`$@zK@Jr3_Y&b*>pb*1#J zJGi9X+deg^>@o>GceEpX;+O3o*xvJ%;llpN?8uF6A?UH9NubwZ%K-fF=H>v*RSTkK zcC&2FGsJ5(f1bv*{_;u`IJU9}C;yQhsQ7J~Dw)0{as*>ei)ps0|Aqo_CY}LY!PvCo zF`a(NLT^u3j68i5o~pNH(5bSGzU7^UBbx5;{`a`ZpPw3YDotH_6EQRTw)nyVe^NyG z#ji@GH42&>AF-!h`L3L2qb&qVek0;I`U1=Q=&m>*!!U?Eu^|b!nd9KM$<4F?(3S0U zXx-u__jxX)Sl~F5Fsa0eWNrVvip1;~c}`}5`m*1Chz6Gyjm zjx@LK=kjPoTKh`yKqn+rZ_AOJ0@^}mxz;Ti3?FZJRzf3Q?ZW(#2hR{KjPX{IA`G-a zpD)Izy`5(&vpz+;nLDQ+3N~cc`T-@STk8DxKONFAXNa3N&dAQJzv34meM?$1)&T!TAPvwZ%7}M zW1lz;SA+73Po12QCFDk_Mzd~{k)Pa4u08d!e*z`AXFpZy(Y)IcP9;N!@mnF%h&MYSp%m<4tar_l}|C6VfES3iKCFc zj4DZ0{M<)#vfenge<|!}xrr07evF9w^N3B;av&gkFGeB#t!4?k(_KM-mRzLR`&i9B zX{*?elK^HORd<9Y6_HJS_aWR$a_Et8L+)A@0Z%7|@C~h?!)1FEpL3zOiVh32!i?W9 zd%bTjy4W3!v7cB~;iVQuU_0dfF5a?6gT`TK5o&Qt`0=b=v}(I@p(SdDY5XMi za~UX34>5<5rIV6UoU|IE9B(zPNPpjqV>|Y~7$qlMvITbn=g2xv*ZAG-t2KBreRt>b^`9o4{J zb&Fs&2svLjT7oRvCd3$E+8yJ!u~2m=lILlqdboI=#WG+PZx>ldPGc{T$3xMrq!7PG zn5xF!Otil%r{8^{24WS=yIm>K9%bHEaLo-Pw_Qy$c@$(+sTUB(Rt;~*ju_9zE%Rj1 zRPXYKf%Xo4rmsh?P1Gh<3Ue#URGakUa1v&>B>OHdT9Z2@6$cK@-6`Vou8akl1}y@a zZ!1IlqSEwHpDK7nYqyIL)ysXYlk!hil~-D%8l74VTMN0Dq_rJ&t%h0SCuP+@_N)IW0qbSv7Bk%f(<1d)#@HRmL4F#`S4xau_cw zxEyR&l#@5_>>uH3;UYwLk(!_kq1M9gHrkvyFS0i>Qzq|`MRZp(fKkfPBR*;_MCCug zwsvGce^$0Wd{2RnCn+tX?Ak)=HNhacM9NrM{%E++P}C)|rqZ>(Xf20(vs6NOcNlrc zoB39XY%73k-fdoBm&=!8PEgy!pC8bvIQ2>- zg6_;jR{+aXjGkJzgb^&YWv0THV=&7Opg0$gG(E#Q_OgPS&B{@S8v%p-kv;h)rDd$* zRNdPLi{Fu+UKT6AxHP(b30A2@Nx|W^uvfLo!Hjcx$jYaOBu#$jL4Ag-^O@k=$B@ zlGa)I_+Ed99r%&w!y6$kn&1|Xb$?UyHvR@B3@0m#UE$+{{mWF*_?A0Dq}QZ#KjP1c z+aD13lw}+VtBXs}>cfd@6`3)a5Uy#qwx_W&4;o4>x|yx7I;W3flEf%Di~{*c!>q@y z(&{IfYCDEVXGa}9Fu6nl9J40hZbLdNP!1BqvGy(S5Dltwe6p%APOVz?i7wBnp08%i z@iE#D@2qY}I=*F4=2;&shZE|WNtYbFyq;^E%|Qm6Z%o8F%F~Ls5=;#Uo{Kw`!yK}j zQ)y$|FTacXE-~U4v{;|E0^J5~>xvU2Q5?x2Gc=C-d3#BJ^NII!To(IN#F`>je(1WU z&L-|*WIKku(>0fi&4R1@29^t4JG?h7jPzz=FS_T9Lln+AOg*o@Fm?`iEkh2sNmm$g z(D^PGe_^-ut(CzverW*aG`@9_AY^+D_b=r&EVTpAmw#8?j&XHjV&r~vD=O4q|n;2CKt_fxo`bfQuCUW zHf0CdT_L_F?(+GqQ$a4IXtlvYQ=g9*!MFe98ANo4Tqa;937^8(0%5am_93=~2^j@o zP&+kL9U`fTd_AVK-O{3EgT}LfMCY4!~m6HhvQ9a{eCK5t$PK?*-eHYTnOb0 zUAExc95qD&d=nQC>wa8=h(l!8l1Y@;=I?mmKWtoF;?rF@nP>ejQT{ak!RDY8@#+q- zgrW8x{KCDDi}Ob{W&WodTNvf#%@Di@4&-M?3d&I5%T%ClWrw%muZuKj`tEt} zsgCrvN^t5`Jk(f=Zvubpa$Wmg4Zd2^SI4a;3M@cTlxrsZ8u_+4h^k|R#QH-;`7^+xh z<%`~)hVS2&sZHgAcC%leYWpy4F)IVkjCmg9X^A}DTW}=NZpu%wQj)E&uTac!6wDn& zHe0s5AaPcxSnVP(YgHOp%xy7eQfwY@mmCd8EAa`vgJ zcRwu9btgHSqn<+$$e^#L6xIR@2h%g%#u*!@rc8m3DR-voh4U| zQuEJ=u}Z=|caP{$3^~`0;d{yB>M#rI;aBuwXLkp_`}E|EWG^B3_eZ}A;ol*TDC-c z=c$zz)lAN5Jd$V4^c@`0KwK_Q7KQtr-(IOgF)XGpPa;Gh&_N(X)4wm6Wy<xo z39eYiy-ZEu=$E*>gfO3%e-A0Y(4n??9vKO=L43C`b;M^7RX_x>d*k3~W=eahC0fkC zd7vo%#UsBXjRU?_bfJh=ZRm6~z|2Bd3`Ya9l_%0pHO8M7l4^K zGg)Da5IY)1u+uxatw;&H_1m07J zR88DbBIc*kK62K>MX%}@+^JW#lO}a%i>axJ1VOs9h5}Q-(>vzhQ37ZzIWNX~5~`6E zzQo6wdWdrJwlFA@Bn1p94_qx7b_X6ME9)M$TIbyVI`yw%vXF0UJ^Xn4u|4iq8~q;XP(q zZ=EAYib|UuKLO@Q@-Yj%uPe$v8C#s8ke=ZSSzX3Zc~wjb?*fb0wpo_eJKpc$QSuCu z8<6q%pA1t8m&z!^X)_5%O<2#bOv3sxYqwVQ8K~0b{kfJgAz~p?L`fXMRN%zlh4v32 zl3~waVT;8s$(znYLpZ{+n??URVh<<%$lWy^)_>@=ZKA>;S;Y?9V9MH`cjnFj0|X zG?JI4YAY2kS4NtpA;YT>{Q-Q143`ked+afPF;1gcPD#i~M6cCQk6Zw@T# z%n$a`p5D9l4?@M$TP%Ih{w- zRpz@WWIq>`cQB~>YBIhFb+SyAoQqV=cmuQ8#}#IazVb`^Q=FEKnLdW`cADk@b%$m8 z@YGHst_5Q$<%D#4-3mz{PZ99D#(w&oflX->JvC@Bp2uQAIj+yt)^POmb~-3&;?E?W z|Cy9HzQ=g8f7!zXIA8#c4d(SrXgK~+6-}A2crl<$A3U?#v zb(b_?GA}e>+v$IdGg3;+&cigCP)~%Jd2go=q`VW*4|AH&)&4!-io_P`bX4SJHlgKV zA6NjihjfttV>~I&l#4ZG;X@V=b<#zc6P^XzwL9g6R=Cw4O1OqdCQ7nS6L~H6Sn-n{ zS@Hj)Fo$rT&_y^MWBgBruK!cvW%^afcWO1RRxA*hzFs|+*D zkHZazHwTB2V+xf~MYDSk`<8hT=GL{$EJa02`kbBwFcZ$dYEFB5q))#~MDoJc-spoC z_Hjm-X#nz<%rh3BipIMAB#GsS48dMB$eSn_=?^Q2-dS36vq%Zq>!o-MTer#+J?QS_W&xDV)f5X6tQg_g zANuG+C^e0F7|?3%n~bE>YGy1njkDLM4M9ioIsq>g%Ui3bYN#9aIYaoSHFNBwE-zbj zhVEd>7NA~=X8jhaJ}*NzdaqH~Z)%x8sL?^xurj|--(xN7^GHdCe^9%cj)JK9x&Ea7 zL5UHL{C`kibo9Zug=HD6d$)XSH-tZ`DD6hKo5^Hg@OS$~su|GMNYQ#Mgb_~e9;$&X zQ{88;NoKlb*Bi%WQZ!lJC)~c%jsE+TUGToiYxdn=>3JydClWo|dn-)Q%55xB2s|BjGB`1bv9 zoZ{5 zN+%7n3WP3hy(=0G?I;GdsZ*Rc`QHUf?8$A41e4a(gNOUv8Dsq6Z$ztSy+~0hkHIK0 z7RMNbjvE@p@St2D*XVmltf;JkJ4PxQyRvMjVVRcVlTbDmrTh5QpMR*RebigG|2hve zKp&UZenB8hg~_$VGWb?<_k}cd9z2z5YE=YyYF%am1$TYj>J}x!Avga#AXda@nQFR< zAvY6R2){U?I?gRWlV4OC^}TJ2qvAzSE_J5<5lfr{NqlC+%S`L2y*9Ma#jg;aqct|` zY56D{5<=kRl+qkkE}paVVyZ+wmFoSS_zXv`B}5~;+EwHX$Ip_|JSG62oOL@OjG)Ls; zRKFA1Iqw|~InUCg;!%A0ndP&c5?;A70}=5VVUCKnZ0Ngl-C zCfjZQ|4j18S$9sh?sHTCK_)Q@E#LTTGMfpB@^G;5_@mN{%%~g)Ku?rw!&dgTmrf4A zn^&nBA+IG8>oKLUG_|FeLgwiAn>_n*M{Z58%0F!w7&$(;1Ffc%cp=2PwWd*LbjEmf z;2_};ycSJSUl2SOoBIRZPyv{5(50z@S)~4+GZsBC!G6S(7J<-B!4%khpi{>tWGDfc zs9z|!5mYmYbOH%;F*T1!#f@o5EX0@z96d|B4Ob>?W^-~w7`7rn4T;&lHQM|FqV0)h zE7+L1&hP`V6W6fLST(GREadNP5^BhwV+Jx5dLp>X*hR&vgrGHyxW4lZPLp;7{~6>pQq9nZdc=M>pB@s=tn#U$_C+lmAelZ zwwcI*M`r&eQt=9=ENp89?nt6X0y<{6gEL8?GY=si!Rsp?BTO5$fnDMDAj&eQ!CsMC zG*FEGM_i=HZ*jOm=b{(ZL&L_KyuYf6S$m1}YljTxU@JWX`DY@Z05d2Dg?i|7`#1osj%dHqgpXSspZ35Orez6r) zypvK;@lN1ihx~1tq5fGs+brF`idWrk)A4P5F`nfwg$TWfd&dM@qxjV0U659WD%9B} z?lf?oB?RaYYILyBn{gwoA|&GWs?vQ*C*D4OIFW!>)lcBn?|a?y47x1{Ja1EYpIcIsZ z=stl*Bf7>sHrVl9mEDUfv^&7Fb|SNM_8W58^PpLYq-1qvXG_w}^@=_gszxJN$CL3@ z+Gr${I(YRwYkv;-0da*$)p6j}qaZyt31%-dRuwKuvL9lCGn(e*bWy)fc4gfu632I? zB0;<9uvOr{{F{d!AYxY1lufq30KU(iF?m2fq3?=6@(cw7-OyZ2g#BYW*Hcv!5^>tW z>`6^Eas_99!JEH~>)Qs+F7Ouu^)YSOLkgH(*n`UyT;H?eFZ3JK^Th%tb8SHEL&L_A ze8xjbF6MdjxkOik^_ug(#=7j3GJr~ItO{}rz-FH@Yd0es#HY9qDqhe7{5wQLAVglk zx2*H#xUnk7)l8O7Y&?v{?q>!exJ4}ac@^|4cCc0StK(d>(1$IS&RCp#8^cN2V@9^l z+q9%ob|JL{2qK(cBsYIjVb3cA5J5$N9Ggs;#70ae%ps?_!obC>pRDrK91`q2QZjma z79UJpJJ8^?Gx%n3#b~~=bZ`KpvQvEz1r9AG!LyrUE?ouEp77|E*KsEeNwjRK$4s?naN#{e1knt4;Abe zuDx@qS?#Y-eSI-a1Y*XSA$VwJ0sa!mz#?+643*=bkEM3vGlVTb7sgz*jjC}8nP(}^ zay;Ypp$7#6V$f6QO>KoiGQ`}HvQpYLXuU#(52f2{jD?5}`!M<%jSY z^Co3k^J0{OpHNk|kKMzn64@P`MIQHI1+X4a3$Is)F_v(%*|Iv;0V4?u_y5KRnKP@p5#(4J$If}&)FL`Loy+6ZXoFHbMVp-fQ9lx zBZS|s`TF9#%UrlN+5?D7qsy?K>26O;v&N;Ng+8IFo*#R5S4Cp5xO6}L7W|A#b+gLr z1QHzZAHe}xCD1~D3hw?b`24rvO8jFNSJnshW19{yXdzW%4f^{;;$fRI;$hjpfZe;R z5(A_E1+4hp*)$4gd;kpV`T7Q^QrNc6BZT!V%Xpu2AneobhX5=dC@Qx|$07 z130n|0hk;=U9$NRS_nx63hNoS%I&4iOYgknK|}#sD1ys;Nu{8URTx^xr+p)Vwu*ZK zG^&CKJmgh0V9o})t|{5HIJ(YT?FH;cdb_TD>nAMUToBnf@&x%AoI?OsYIaW+1Q3Iy z$$?5@(zb5c&3x`1a)ktQ-0Vbm{}bz4^<3=RY~aPL%i{B3K|t2Pznb~K*2XpO!FWK6 zW@H-~RNriXOZz6MqioPZ0FV1i(5ot1r`sBS!R;5>DLwjZ`1F&zNb@lKnw#(Y zgm_^EiP<|!&g8aM`Z*9k0-!bTv~uxx<#VCCR@Uyi1y<QBoJG`5K z@U{V)P~EH(LzJlUByHg&tB$|A%$V6oaMxkpHLWSJm;tWHNY+LDI1Hm-g)a&dmJnH@ z%4DH=^gq;o2OI1jRKp-R!yv#B?2g*x>Aqm%PFAP_YL+@$W+twO@7j zx`vJ7E*R7Aa?mxS>$=$XkAvnx7L<+KbkEvsK7U|?8ibE>LyO|?;IChlyR}u9r{>YG z6Z!qDUn0tZlxH35zX2Q+eghnZ{Q+Qq=N7O7HP{L_c+y1_wYcHVSDr3!-)0^d0b#+H z8HOLU*?e((h(ZAPl+y0E(>$W;x6|K?i(pUSjSAU)A=vG(wO;<00-eC=K0+r5zfE^U z>%kBV3qBlfxNe7?lWAg}^#nFA@Ii;f60pJWia11jf>o-NKj{xR{-Q53vG}kF4KlyK z)eLA22XEc)=lJh*TFAkj`YthwZQ#A;I#*0XGi zvWH%1fd+4j$*cpvb z$(_i(Y1=2s?XdV`}anlP{0Z z)PmJqa<^e*xW&UYe-k%0L;uNHw5n^U$Fwjyg2%#A!GO7rWAY-zLIQ!)B_Ubo`i<;-^bPKkDK- z@s7{9K)>FI)T_GmBc*yFEB#e_7t&(9Vk4Htfo6*EFLe528v43{Q=75MAvXLePgbk1;_VfeL}_f8>6R| z79?oI}C_1J`wt=Kf+0#?^r!7F|4}wP@GB-E8HOXN7d+rU9Lff zV0Otx;YNe}hk`+Ft%~fX62PR*t#i-nk58=EiiH(LaEdn{JGjv&)NDneeX-vOa6y`^TV*Kb&j)9h^Njv2kEpNp) zcIzNi8#hc@34%IA+#LT92{HJ(iw_h#J^G7O@}Tdi68Va?IBb!an_i^ww5ZC(7_`MF z*j6aC_jwPdg4i8r@+85JSz6@zETG@U&3noA=hgCJMIlkb-E5p$@Fy1$%e6p2%6|c2 z{RYzcH<0abpjqFscA!+wtHnGVZNyrMS@;JVoR~ilK9qsh76)b<3|i20KQd*SCHNFc zg!7D;AWS&g*{_%hw+Ia(m`6hL+Cuq%_`sC(XD6(4%VY7<#f`+obJuJmhqM+V)SC=k z#flXjmK@?x_5%b_^3aMNN&j?Uh(bM)@X~*puFg{8IXgwF+5V}4ObjCLZ%2w1f&lP z+y2QeS!5*#{>j|=_74je#BV77d~e^-BVdM?6Aa9$3I+`CpYQE!SUP`}FgG_dasKla zejmN$JjvRVrw6Qtqke_VBrww9QJ)EPhynf4or{#)d%?1@S-sTCxT8;WO`x~g-9M})P zISXHVDQQVYGO%V254n1CfeDnpytDGL+_{b7sv321yqqzAs$Hb^wG*Q5Tm*V}y>MAx zxzrf==n7Qb`WD(gB%1?$ecu}OeBG>eRz`jDJ0F-@{Lg^C9)bpKCEst|^NQYh-;76{ z;s>*W(n6Y&_dI=@+uc_7oE&@8ZcZ(4JWsfn=HucO4kYP_d9JDr3_>!OvqM(;7j}Is zkuFzXcP>6MPY&`|**WlR;>Om8jWWC2kpix~skP315|2}D4uI;%E1dvtK-I#$x>dzX z^Q)sJy%vo4GGC<9?X;^E_tlo=MXGFea>yC*xozDBhd3*q|C8r4lf>?e@7uzfUhM|~ zJEESwqW+aDU@{Re!OCl`03kmSAMuAbmuLR<^1Ig7strb0l(M<1;TOt^&T@1yp|Sba zIUh&!mcI@2};ayEC>m`$zHxr7(XD^^JDyN4vZ4?wW*l zrWcl-vh$6m_bO$RWtbcji$ZS~RZY%g*nlUwS0?>Bw^;5JBHDLHTP=6PWVc(*IFvXH zLNE0m_qE>7)e7=$okE%l$gfX>290IoTw1Fe8wy25fy7D7WyI>y(W5s{Pg@T?H#0{L z4{w=C$G&Gt(F;3o_{95fCH*1eE1tgI*)p&KXGD2IL`hXYbJKNe_49k5ogT{$uBlri zYQ*pXWyg$!D44Ru$ggj8Yg;XOBeDXFI6o_WxXT;3DC_rG@Nocxlvab}RuAXJ_T@J{}5JXOhM?KN&TK4f6F~CtQM_l zJ#>{0i>cAzet%oju5prkGVP?O$>LPajDh=r+4Y`C(r(!x!oGshq=h$2C+N%^1tm;u z1k!A7PO~fFsFuO-tGN$0i&UK=A})ny4RrZ13E!hlh z|8EF_dAKI9msI>t%I)7l|H}RyRj?{2wTP5BNLE|E>a;vkBV%TkbLh zkLUxmvOwdRB*Q9TbKR3j1vh+1jy8`Vsl|>N4snc#m{Xhw8aXI=&4I=soMpD8$$_ zdILFl%!sKzIZ0=jw2gFaSoh#Kcqi?r6F|V~RTe#2HojF*EChHLVZCAacJO=}vbUEp z(sPFqfiErOJ_=lS<#ByHfLVM z^bSXlDx}%|@LAvWo0xG+Naj4XzuC9V0*XJ(oJ}V4x2%eul8>w|RBR;stbD&$=x?g{ zIs5~l;{^Ktx{^vX;k%L=WpWzrae6`g<7M-ip;G8;5iAt(GXF2Evoo9!xouCLHQX8A z_XiQCf>{}u@}`2B8Kz#xvtkH_uBF|-K10=!L+w95T7V5HWWhQGcrTL1cwLy{2APpC z``772Bz}DyiV@I_KW|?)m=r-rsi1 zN=s`yee~YvT62#%)}Ct^AX(*ME!cAw>&3*o|Aw$CbBHeuDAPbxP#_ohMCze0ZDm1n z@f~qp?HZYVSD-TVUWzXKQ@$h4Y@7f1Kjtogal9WvtHj0_;NfA6b5<^k_6rx z#u43|*L|K}U*p6DvyOc4wci#GCL3Ryh4i@ys<{BrII1P!~rzSQCP}vs{No3RX_a+!3rEG4WWl~Ob^nHZ5`Lj)#LaNoI$cuf>`mzGP{WyH^UdDW z4Mqip9q`GVzCND~i{ybj2#ayC z)ZnQjkmnI|Yp;tmI^@*&Y1>uzMGUaD;&ImAP3G&I(1y*heVLt>$5R4-JU-uQs1K?y z*l?;oxi3(YA+u7QL%Fm~5KMv4&DcAeGh7UG{L zo!<4Rb8|d+R41JMx>+;qOKnPab}kf?J{`z3qq@F5>MR?1anT-sy!iqyM|qW!SaYl@ zR=mgLLMW7r)ZS@(*}P&#X>(FAC6+o<+GWd=-n?QluyKFiXzaY5!^Bec)7~xia6B$; zCk>u(#?@kZ^OL^OCPwX-kDrzw`OgvTp6TSe=V`&xHr;H+3{fUe~iDw5HDHNjKAl z$54;Oj;_k%w`aTq^IpX=uHtXz{4Lh!27JrS6U<8$(33mDb?+v(^;^kN+stQYXt4Wt zDujVb@&?z~#9unxICvf3oxTU0vG>}$PqYesvsFpaKnh!Tba^Z}upRHbQywGq=uQJP zit2k-T*P<~Psw_y`08{#JdUVh&Eq&QPd&p>4JT&d)9z)_EcpP`Pv@L z1LBk;ndr5NxGPVD@TBcreLr@2cR>68nEsnGQgo;VKE5c?icSb+^LBq=Pv|L(t+U_n zD&|fpf5^v4(dMOxe=B=Raq#l&-n)b7*}Fsk5iE&!>IG#ubCpf-_??BUDV&5);_(zG zp~z$j*_9*nK-h8f?ZxTm#Msu4v3C5VpPy0C54_}}Cs(}dr$7iN>+dTAhgYAO*0n6PKSIhUL^R_`> zDY%==?OsN6v9+!59dyr%s=iEh7TF7(08CFQHnTh!$x%B8)5%Uv&Xg&klM^qMY2RtA zV!A6S2{vXWzwR7{%(gS8vUT4hFYdF%+neuYX9>-gdeUj7Wys=JlinOzR1K9o5?~_M zFRw0Pp@)mKP+3<8&N?30=kb7s(HUIR&1|3jEOHS+Djiju;MJo_tK;larJ9swKHTp| z$YNKor3>F^znU6d_Wm&Qo!+SMD{u3r8`FBqwJ2Sxe*xQt|K*m6<^MW5`W86#yekiu zI~}Xu+D|}m>u1*s1zc%{EgPhLBg9He9}0! zmbu19+wRM62;i3qk;df`2RV47jGiyoeOyXeY$ESVg<&0}_qz5u_yu&3vXMiMpOCo? zm*G~kYQFS%_43vs&Ovr3ZwnhyGxi;}CCVc8)45;W?lOB`=FF)>_MbrBK)<$x^$mfg z3(S22Wf)f6X`hdS1;=@B-Ms!Gt*8s#oa*nW%a+T;aI@#xv4+**b9YjngqXMp552;)xE+LKn*q9WFmXhrma&Kle2)S+YdUHE^UvA3< zk>JQry@+r1?Aa1uBW~h5k6Ra|8h)8$`2n?>5BS*3n&|&&4$$f=@8ZtB8tMt~7DdvsTl!0Cs-weS zQh%1NcJoCKNpl$8Su=mZxQ;0q65id8hSPNsEOE&hNx{8sOfhZ^Lo(rwb1o5 zd{Qk5dGqnVvB~$G4)QlG@DCBNxFR)Qm4Mis%`xU}6ZRNb7<#jAYE+T7V3SzhxYZRRCyp}dBt z1eO~*;4Ioup_Ogw843ayHA)odVQr~B)wilU`-`*jV*8CM$expXHJoQPm^Z1jHE<3! zunzKqVQsMpTZkthW%{mrHCksiMo2h((BGd{K%!Fv3eIcPN+oB#Y%n_J_iD_TZ3J98 zem$^LFn3-qiGFwUu#xw&0q&hr85z{E8PrKqkgg@)^BAI?sle9ruu=E2Ne2)87SP(m z2~uQcSng$$vcBE4jVE6D#lvQO3Qu8}>6WY!*J|6WjHq#ZNXO=(t3_b@F2eyxaj#~= zLUT1isAmu1YAK4To0GnWa~f3iM0jHx&wrkcMYX48^6*j1A%@K5Q+LaySufXhq<&sezW3C{TVgzB)swl!R|mYzFj=cy*^U_Qi#H}a@1OPB zZ<$EjzkjEV_;GCzo5P|kjHbcrWnZaBT~3_3GJN_-)*pX88nVyhC8#FS7$LRVG&)!I zJuO&=E!2v_l%y?qN>bG+;C!&#FPwxtu8~L?i9Hjmyj{B;UwgUI5jlM%#fUp2BDoG8 zl)4vr`C&|}Bh27Ey;hjruh*qoDw1mqT2Baq-%qtOSd!wCdk#2rOJ2?)xw2pub)y!o zbMa!a0_n4((Bvxg+1^^|1d1nL|VJHqEggzjj5xe$} zwiK(7f`Ev!vkYS_&LJMqbgoUV*31xH0a!p_mOi`S9kHnUchB^L2-^#dyM@8f$wr!s zLSRseqmqs5hb9(=CS#aApLHU@FcHy2X6pPxA*|AvkLFeZgkg%9Cfc`A`_e2 z$BrMl9Iff!msh30#mODgdI)mE0-Ut50p3?ZD4mAOb0)&O>B7YYO7{9B}! zUu^d_6sGaz(`Sg$V3=P~JyX+;2`gsDZBoC{nskaiD^LR3K?g>H7C}Bkz@V-bz&g(2 zY|*P8s zqAN-=lRf~0s`)ye5B^k3nFEIkf|D6QTAs@{&+v`f zv@dfKcsBg^&@5|1fOI^PtP+ylc#1*@eukh5h1tJd`YAJag#8L}i_5goIsJ-dWnk6V%d3z3B> zzu&zv2;d|BVUR(NkBP>jmOK`H`5L`MJKjbXv523d%GiA>}Pw(fPHihH4o7`kboyV$t|s!x9+ds@BDRMEIfqmlY(Yf3xV z5BZ}P^+VrRhNE}9xqh0XZw^OvyW4{ep*AiaF=1fQVRUh9^Kxc0cxl{qdv4CwGsxQIEF({yYVlbJ_M3{N$z5I#Yo8lm;73!yf&5 z(%p+0Q4A7vk)bofvL8pd8UD7bb-Sn35|3v9rB_7?Q$V_JNSTDMH znYj@6cpGE;{8|5_vym)>IJY(-RbDxh zdyhc8;fu69v>0YKMh5m7W{%Ohw$BNJK5lXzZ$Q`5vwAYJZeBKizSPut+6}fE`6-!2 z^}Hu8^qA=jiGvz=ysb}J!u>MnANZ#p2R~d{@>ax)3kvPi$9uEeBB|}P$NjxSc;4rsMnqZ#4eKw;-`saa27@Rb zNjh%5MFq8FX+Q_zK`OOsl)!6H!%s+jejlv((E29_bscGBlS|2BXJc(*qGL<1NP%j^ zF!>UKs1h1`34Kf4_AC3%pI!Vxw{mfru>`MM+Gi!-%JSZ^GPN|24~k>itiR{-*21Hn zBG>#i7X*VQUs#?Hz0&baQN2A_H?;@B8TXKF-0V$vZv@9MP6qZfOA~e}$}~y(ddI69 zh;mN6<3lWm7`w|bWw`kx2zW-QB@_k@Wu{ZFwuBZ5R-x7tTevyO3`yprO9-}!|EJ1f z*!gMw^v@hYmgXmStDsVDp9kmp7f@!VQPW5=m%$NC@d|Mj4U;WLH4N4Zs_PKu8N6}D z*#BU>bPPtZ_7h9)Z4_$b6%S?Hpz1 zGKBUIEq5kALVs0i3W6ST#QA9gCt!~8sb9F1G!qn3BEq~k-O`=*3y{yB_)r|AnMNV2 z#S+nFy<<<5uVB-pnGyRKg}AtXi*f$Him}w-_-)lvMVpbKFQQDv{##p{|6G%(k@p6> zQai6dkKQH+yk|yR2lqSgi@ymQZ3~iKty~&C)7FMZ)Ao-A-Ue^Y8ejRYhqt$>eW9!? zDUOaeOqlQMBG4w zB~I;6L!B^K!S!3w^kd?R0iIRx9mllH;+PtW+k+vcO52|?Yc?DAQ55yRJ&AaVc;bWN z(bSPG?p<3NnRCn;}J{e+^MG-O{wTd;@ReRhrr7hb%)^L zbeN4$=67db1>FVSae;9t>Wh~SZOx{}P|z^@&mkN=7SRx}J{Q=~A1(isI!|uv4428h zQ&v?3Jz~_g#5-a%t^dYIPXu~&WJ{cko%~0|9UU9t-zq#ogU$7A!-u3*U*GRu72TEp zr9&nE1gPWP<=;BqCpH_|$o?NB+zPd_{YD;N6jPP;zy4(fdiozLo|OL$@l+190{#DC z#i-F?$jBkoNmygjowW~z=j7DwI^M{tb*~XZ+b3TT_nP=OhAiv3%xP<0ndoLayAFu1 zzHeJUFbt;G-#B*~09;bXYKfM7xp)E&pw`v^qc_i8+*+9+TP4%}VH6WPyfb&@4}7*+ z8_5_V^*0=sP|5Z2_zS>~Fe`n&!|{2)jf>VpF$yIqR+y6YGg>vID|An4r{DV^iON$L zt~l@08AxWwaxm;D=2DIBkxc}m&ViGO*2M%N!b1^r$^jA#9R--ljTdM!Yw;q*0a8Vf znr}F6O=fs0OU>!$B|%69p|_pYoa;XPjLXd|2q-o@Buj~!L-%(GX5TErIZh%7a;0>Y0%7Hwqti?z{3>^{~(BYifFpQWs!)TK_BJ^EME8&Q^ z!+7DG+WyONO58ftO0>{{75aRqC^k5B0i2ksos26SLjU2aWHDAy-2~nMWsE2tL+n&* zA_YmRoqGpgP;v)N2%_8M-IF%mPInouD-oA#? zCyla^Osr5)V?^j+Z8RGmx?$dA%zcs-;cC(f0QK!e8*a-F(+N(Q3z6zQF-y;Hcm-to z>T{E|QJlu2P{80ZScZ=#OEXwDsxmCbm1#(P!+4=GhVsjk_EDTO$l$|xNH8rFD~?NC zZZtMopMj={Dr=}^U*IUWsHN%_(J&0-0fJK_IgO8~Yw}a{ux*Az5sVRs@fiEh$I7!9 zSIRMvM^%{#UBfw}_1j9fo&PskJPe!nUcFE18UZqOB((1w_Ig=o*@b(E3x2k0Cq6ek zUxIj`St<-;yICvJR1Rk*hOv%nFxBruFW**zdju;#AwRcBy6BAzRx;IaePwvq^cho6 zNp^+RD(V!AA$`6~T=x+7c{LBMaVkm_MEZG{iLl_8on*6_+cx(OPFpWro0%`kC8dRq z(ahqF3(H9GC)sOO#o%RCWuq2F1ZH6IqLkjs5ApqlBqGTzFp=ebx#&{HP(r2@N=C5( zRCvq|IA-> z>Z_s?D&mn|H2IP1Q&Q!|yWdWd5~pSDAIWG$F;k`|6vZin&{UNsaxv5>>S?4f%@_me z&S%XKE7J#%an)4QP4Xiplt(;qLYsJhLNo=?0cQfYO3j>@PYRf{jSWF`=FCO3JlKCS zwZ2O==0IggUDavnlwuWD8Wk0(k$<8V!~PSM1Syn~c&VN$9Z~gP7UxGs#zDVWHoR{c#Ztt=8F<5U>4DQ*7HAqy(VX@cxj14tQI3!auX z^8iv#DwO;ml*z#UNtq{o*4$QqB-4;fQ9LG&LIIOk(4yd1q}c)=yI8ET2``f*adsva zb@Qv;RK3Rg3S~K+-+^+sYO|*Z+T^kTjs>*yl@z13bF|VS{*1yXBdj?*sm)D;;+ysmY!nRcQJdQLeOmvruQ$`kAGgk+8icar zZt93rGGN!}mw71|y7M5QB>2QavdVPyr);koX9Sbet|-M45R#$Wc1&{ed=Aa~Q3c)s7zZviC}|%y!A#=E>FMS=Rq>SmC=G=JDy2{bDg`JCg2y}ZB`|JF!CGJ_ z$ZTsHKVnl5Nb#fZ)pVkvuNEE*2v#{iP=M-9lZH&uQSAmZK}mBI(@slp6#JeQ?Mb~5x-26?t#$8J9;7I zI${BzM?VYA5bt)oq`7#bFexxwa`3A5` zB`afE>Qy>d3jbycQHIP+tBRtt6>dhL%LA3-$tm};E(}JOY|ua}G5!Dg%?FA6%M5ti&r#UTZ_DRr@S))R6eFHNFwmc zUSau&xHF=2!JEqTW@4@lN8Dgv8jtEWcD-abmF6^l&Cw2;2eDvuJq0^dh^9w7q8^f-ZAbfj+hJkk_-Ues1 zQjn%n(XqCkX7+xt$WN7%GSS|r+xO{dx$-a zC!cflm3(+dzT&P*D_Bd$1-{kiWl2BabLO6>Bs$YM0 zi^VsxcmH2Oh&_NOlMucSHHg0*!x5?NHss1{ z5@I5}y)UPWfpNjQg`U>(K4$nsY|UTgk0chtBA{&L)4C59I7w9g;L(3-@d@}96!#w` z^S?xaMK9@mp4l6qU?I`h0T^e@xIas{zOTMSY9**fe@27XX7-PqTWEYo;Are4mzn_O zD8jv=ARRX)DtKtxbMGVfbM7OXPcs7n+t+-bty(skf{@PEyN0Zec!oUUdA9)Bqzb8r zmKw3HxL95O9@$xDK|_8aTCE1}4YP=)<|*xziQo7PS~3tguc%5BAG~bKI}#xKElJpd z$*G_SYzUhoS!aoU-!yyZF2rl6-k6O))Deo?SvDcVfr4V-d{>6IM%-h0a#qS04itne z3s3_cDmSR_XR*eS(CYj3puAl_DkRt!|HX}Qmu5(*by(?Xe}ctOqdK$-K?Aq8k-@Qg zD~xb9=IfJpnqw;N!J3uD`lIA+at;KVs~TayD+4#!G@{t5qlh8)~twr ztBmE`|DVA=0m^tU<_E1p7i~ipr&ScO|3zm#Vrz{scI}6cXLSw^z$Gl_Sm{!JjNO-| z-|D({aT5w_m*a~S$sWfBdwe9oMY`Y~zbqqvocE6uM8CypB}kV_)8xgo|0|OHC+r1jo#-3y!t`NS+xzJSm=;CxqhiMITLQp&mjx zN_g503qb?dFTFBbCf`bTxW1V%-JC4yJE_Evs~TiL0&WwRLYlS805pd)#&VlJ_hvON zuB*$)y0y^v5)Q@WZcf$CUE(IbVJ%}Zx6(aKfV$1ufP!iNSEfAC7$a2 z2QdT!OMIXfq&N%J8jpfa?L4N6MyRz!S|;rfxVUpF;}~Q;Xpw4+L@l6pGc~c z*sbKQ2;sU}n+f}8mSRRSKU=+if7%lQ=pX$SL#ANzhVh}vd_V9Zfh+Otk)vh)`FiB+ zbjQTzxklxbg6v9`hLUVXl>RJ39c>ga z4WNc<33gByWem_Z&ePtX?s-nnnaB2uutH+kLDIrm7!>pq+$=O+fI8047#FF{QTV0} z5^ldtkv@HbI?KLZlr;^Uq$M`vAdZF+j*5%Bbu*klE14lpO79Kk(o&PvOwmyP2}unM z$$OUOjHXb?LRV$s(FOaNH^3R}NDRTjoR0dSf&I(c4@7nwQW4&cY%VokS_CVj9$sR5 zC0;9V7e&A!$?D|O0+g^TJ@q_II>aS}7(=L8kTcq7({1#dC(T7des+36cJdMqg9?B~ z2Jtg5t*&LZvoZ~PJUODiy=R&d050Xjxuz>*#Vi>;;fWG>I4;P3kmJQ2NeU+v9A6y? za3-tHc4U@$Qq-ZL)>8sV%zGSS?X=a>ghL)3I)7I^DrPAT`TFkDE`C&uI4#1P5Twfw z3H`^4BZ>!d?%fIj%Q$B?WZ)eCAw@O`8zZ5ptlS_+o?l)K6O->);Di?tj?Ykw8cu`4 zh8F<52?IRb&%t<=qVgyaG=gjuA$3uCZmd0}*SJV9A?>He$_^!lP!~zUgUsj74i#@v*99w)yV>;tfebdOxDCwy7*iXZiPz|_+8esKCypY^|8~56*2g05!Cu;fh~egAHQY^(!`? zu+rm=W#BC-9|3jNZbvz6j%z^`28c_rX<-*e2!EqNpRn4)bv}Hca={;`9j{1KidP{# zT#74n9PTMt69yD%2_US4A>IE)z;n0hFqsTi;9mr&j-YrkaVMNOa=gLB733(&LM+A; z7PA&aNy?JBVJ!ukA^=Gv-9$0}XQ`RQ#ZJ{OEoYeo3+%&YN78XC z;``jd?8pvWlP@eLu@v`H7JredyhrxW4$P**h2&ip0pzG!9&Rhzl9cT+L>j04ZOA&p zA3iBSgue_aO$7(?kzUOTW_K5e$(UOcbJhlq6K{_+J(4q=bEPTJCCR%9mOB}loCYoo z{Bf&0sl~)V*J(*>|Lpg#U0&6sC1J8l9p&&$nSJr`QH@lY*PGv{5y-Bb-@4PL=jTD# zQw#WCiJ1w3bFFQpT=)`$vOq@Oqn@Sqg8p?bU9_5(LJp0ea6cBp6sL`&!Wp2G54ZS( z#{yQ|S9wcJX#>1sPV8GT;H)HBI;S5W9y^fxDTG^wdagc)7b@vlz}R9Q>I+9ZdW~7! zpKl5aup_=Ur1UP#ko;94X<}aQC*>4G1C6Sl>Pl!uI2GDDHsHZw=QUOY8?t7 z4B>w0HUx+R%OGG_T4}R1Q)IMvxB=q8vpMP#F)De6(1<@Od-fzKQKL@_841fuiduV$ zOcGcIZ&E>ENosn^5O19aBAKE<4<*i8Xu6C*VO88Fz-XH4?H4da6-x;~U}?3ZFf=kV zDDzDOT`{oT4AoO)5&VZxF@Ls)%2OBlv@Xb3^8~wxl&7C$l6y49XEr4Bdnk2+D5 z|EY5riU*s39e;-1KDHYLf@}P%Xj>n6dS|conKPU>&O3SdRQbR zVbBK-0&)WTUoFC1%v@cq>@EJ;g|#GLBwe3>A3Fa zSIcZ)jW}3R!y{Q}4F&o9aldxHUmXZ?8ZugEfO?@&9Ub|!x2TsSMbNhOM|8x)K?K@V z@HYIa;6?{LxYUf697bwtD@t4$p+SnUU2cv)*RPOW=|=N1ws1Jx!g!Z!eE0m$c0LchjUC4vaW2_&HZlBL)!ibaQ}hXa4>ywHMAS;{8L$@4(p`&1R*(< z5+?|II71;mQqb`=sAzQ!8>frD!71d}XfFF@8j+tm0m~~tgzCjH81|Kq-*9%D&3L@ufF@}mD0tK{{QlDbyb^+A7UX% z&s76dW2;g0jco5X;xZR%LAzYJGo^$L1mDRAH~@o(6p0WMu1;{U%t2Z{-f$7MiD%1q z7;G_#m*=KX+}wM2L(*A!7Cr5Vi4=k%rcsC1nQlF2e1j@&zlmCecry__Y#Kuhhvl?yJx(MsD1GPb(Ylez?dnu}2wT_EybE zHbn3-Sl5@2WFjkf8Y^}2KQxX{#Xgkkb6uG=q>c1kE=)0bYwepwB-uH=a@Jm2WQ+Q_ z-nE#@T^GDmjrpOtO>N5ml(#D}nAn2ix-#EJgPd~TAtyGYKP3WTUn{vWZkWLoqy{gt z9GQUEw?>)Cz6WG+djF289m;O>x+ow^{q=S;+MW^NceK9^tW)^igEPOJ92GJ~DFsEz z?a7*!JONWntWix@&#w=G&8?YW?K>(Ta?j1Z#R5>t>X8oMVhC|quEYgbX zNI=Qj0^AHW^YW8jiwmdgfr|8uv|`&2Z-!}Cy5P@#dp0Qb{rt-%Q{o?CTPCA4F#Iqv zSech_$yXc2`jwC`NT0)FhRKX8*czozP=Jq0p1_UHCm>wYB$&rXH9n`d4;ISV0u(xt zmFrt!*1p!#5G};qw$bp!$_%nkHi6==cwUQ0qB71*&d0TG7BZefpD2MTb&s7o%)*%Y zW!$|JnSJlYa_OGU=Td4!~ z-&qJoe|(LkNz0b8O=`hFr5g=xo|{f*x?j^(Oey6eF%-s_5f zngTQs2G>aMogp-L*_!5AF4iF&Ry=R-CIA*x$5 z63u8%!nyGCj3|)yMi+d~@F*Bjym$>VDV#mNo}Cm5w%EWb)|ll5!Y zxp>V>-+f1+$Ye@Xqgk;dg^Ls%4>$4;O}Z}D2XJJ?AH2BeEJ@8dGHWQZEtODADuZri zvJ9ousu)fqW1}<6LD#AWzR}IK?YToOriltb9u!sdEfOtkXg zro--JMqkJqF-0DV-%c=cGZ{n_o&#Ami-G-sK>5_h+Qm~yWu+!^Q4$lrFrGtgS1D$$vQzwW?P{eI5v@%$u31dSmPU!> zjG`Cu%BkPqXsdn*?y_~LzD5}Sa^Wr0p0E|^)BuNeJ(5Pr`FKSBJ0_@d7;H}% zsrK2r{?;QnR9)JXcE&K$J~8masSZ>#B8-&eNg zVK!h8FiPC6z(8Eyi4ur=cdZ!+T3|O?hH{dm=rfTuc)U}dRenvEb<5(cg%#UPyb*e_ z2!{=VK{%6Ae^=*yZIWS?lqOHW5MwBmn|mA*%3%^gkA!&hU1;}}Kv>H-cBS|0^T9^i>_C+yv;L=-qveCKI-)mSh(6diC$#tD z-^}m6FSNfdp1(Nc`m}(IC-v|6y7BdnE}U<1uX( zUy#YC*pU^%#U{i7n`OEp7m&SzM{|DI8f7T~B*6sw^TC}ONTEGwrcblhl45hQCYeNK znod`~&J`3p4#_vyiJEqPR&IwS%fz@4{} zFziYCiz&;RZY#0HNyOAHp`uJQz27?|ej|Q?!ZhjHP45(P#LH+$K2UJqn@xpet+Y^6 zu=1qdD>XLceLuW2EGNrczI++yqSFuzMw`xmVWtmo*{vzI)Ry z*$vy2H$ZE`>W<)BKi^hpvyo9_+3$_d!ktxav@SPc^GjTN!#fge0khuUJr($WSXq>p zF;>e|{V?@fjlA}|@7kJoo7HjMz&HBrK9Zcjq3htUn>l(mwO%xDDR3CYTo^##XZ<}n zS~G%x9R~?aVuV_=y^9H5;o_z#~1+r(IqcxnfiBLP|M8>qz>U~SxTZ_tBD$?eDHW$`( z(|jKcbSU47T;axY-46l=OWB>mb&sK}~GfX|)|#n76)!9Q&DI z|J%)_unfG$Ry)<^DZ3VZ0V+C5etavOM>nOF=@zlHlIwhuvZ_VRYFT?pJLRWZ)aeAu zo+ZcURu&0QW4abM4imaAS2C0hw;XU53iMX+61Q_DKECuRa4om@e$#-8SvEE1n`5w4 z-yaU;E_G(2pOp)Mq8_9Y1=yL=MOS##nIEk zrsq^LR2$x(JGRw1!DRH|Euo}K2+v=;rBqBxeNpuRJ;PH{obk_Q>3pDw#4@nl^DqFZ z{S#w>c+rU5;UGJ883E)9_GL+!I4>>dXbU8(;T;ij{~S?Kvf@Icr^SlPBhwS9#IX z6&?87#LdOk!A{f8mf6bH%Ske|Nd6NwY0eBl_2$|%&R1#q>}FW;dO zyAz9zKeogBc0Im0jvd>{zk?BT@B!MyrCl81yssnx#6Rzkh3`>9E0;-HT-7c@6*pgATAAX1>iFQqb#AfdXP-jS>eNgx!Ez2-{Bm9NX~4R})bch$OoR-# zgQd)&W`YrgK`osmbt;%wlgT94t?}B}VlJ!mec`!}w2NAWK!W_<$hH`V2zI-{DYH9> zu+zqWoSCk<3(bTl>@mH8BXZyvcTH**1#@ z58;0#D>^$ky8Jb&Iq?nlK`a>JUwQ}c_9s~LAuKV%r9fzHmSyw^J^U$c$v4DeD&M{3 z`8Z9+zSO#2FY^-!9R=GPR?pE<&r?yrs8;b8gl2d5adME4^VRYRT0!!51W}HW@wmG0 zIE~dTLNOsx+z}mR%-o)Cc3Vuhl1tfhdqEuy>Elo22+j1n?nGhHZ84!Gn>gW6RqJ)j z`i{er|G)z7Ds_HU<95n4Q~G@2vM|TCetjyNuFhe%ucwu#pwzpqq2*Z)|h#m|LB*Z^xX5y0&3KWh$qH#=i9 zXJA$4Pj)w>xn;l4gVVE9CY&Il+Y*t)0m0E+D6Fm*BSGGB4?=}gf1Wqa%CdPadu1|1 zU!5aV9?33;<~|jJ?zhAH?gMy*{PlVhl(>x)f#Je+9i&sXBg$|rJH2x7{xj{A>hh;D z>^d6Sx4CvdVXKe5_qf^Ls2dBAXmoXDG@5+hsc+Z5OJzjc^2cz84?d*sYu+T+9okJ- z%xKUPkbBRLEVvWynrcMsvdXB8u!q<}t5oF|y|Qt^9o#LrWh-u(s5^Dng;R%D>_)=F zm2_g-grL-I97;G*Degm3X%ca0D9&GwuBg{54LGSR7qF76^;=3xXG~u>-+zuO5DS-$ zoF-)_a-cP4qo2hJFAwCE<>ui%UrCmSZN_v^2xnPOhdFI#{OA;=vnNv_S`Q1m*6sJgE!)7V37X690zR&XOMPFA7r)N2at4BeIwqB5bXN zm+a}6@^Tb@ZNnwA1{0RBa3L@;2(`n?Xg1J{!B{_HSo98UQ+!zi0%jZwu#F#U+gDG%R{ zpt*4=<(!zf=9V3a&c(Zfr$|Qb?Z*1ux<}y&^9U4GgGJ0p?r#8(tL}$r)Yb16;|s^1 z#$8kmCovo(jKc1gRnL|b9>i4H*)%7F+De*cc2IK zH1tLfL%hYAq3m-o`M&p{_YOp$aJYjZ^qZc`Yd7bQq@qyF(!JgP@O%G2Y9@{_4(Ca# zQ0I(kc)_~$$%hB9or+n#n1iubptIOoPH?GnP7d| znc=%@(c}IN(+fpq&~sel1a+*$ad9e~>GNp^x9he=&EgfN7D=u)G)6CnH>v;Y^zSuH z0}lgw}N zEDURLv6lJ;*e`3Lp03B9P>)ypuczxp5E)p8y7AWf5nOBx3vi*V4Mo|fc|+EzKMJ-# z;Qu*e6^^f1^gx1u1e1V(U;}3?VB_w;rYYdc3wV9n8(G;hSv#6pT&deQqN`yDc6oEt z+RdQQFk(OtcCqyrGk&HAQ+*Zai2aIDZ^ zXzmWp81$vj+1xbC$xdwfPT?T26eTV z)1PAqOSt$UmP=|JI6jlSTGgF?$Ctva#=!}ocg~C&xN`A~ZzIi9PcyAk*tbTS9H+qy z3_SgkWywrnJbr-;BYn0#{57hG6(ypM8|sH^MS&NnF;dMIbtz$Ei6|JvNHzYIU>e}o24!L*h$MxiK?7-9NtJ-O6jni|cllp~w!{YLqe-pfd! z_(XOr(He#VA zDNU?~JW5r29<(z=v3%jm_-I`2zMC(b!i_4X0h z{@({CKVLUXc9&kd;ynK%c85cJN2Xq${QCa&Z~soX^vGQ*{r~VwZEis6=6|2kf7I<` zpTGCd$(APjgY%E97Vk3H-Y_Xp`CgqWzousM6RBMvryXoPZ+E42Qc3vQ7rg7v`&DG9 zw``p{U29=&)S)c9tbaG}B;U)qm-X-CEIs~Ps(HfOn}0XlKKb^M9lP-M*{`43J^2Q# zz2B?uT`m2-zp;G%73uZUs@Ps{WngSRYH-WoU_g#U_KcJj9!HE*B#U@c+caND+J3k< z>ALs2qx`2oNWOpdAbaI5;Kf%9BUd^ES;@3qz5eF^jU1!4CqlnXcW-NW_jHF-`eo7A zT?dxTUZs8I>8n$k{m+-rZrbNmb8FqL(s$A!3Mwlny`Hn~jn%I3mv7XLsy71fDK@gr zSiA5;*2VbulYJ}GKIa4r)~#ZhZ2MxK;n^o#EIwV{Mx9M69llNJY!}`ysB(!f(YkN0 z_SxZ(nm)^n-`w*e*@d?~6>PY!+OTFOXEfiuPUSe37qg!Bb@*;Ho}ajnVZxrDm9N&9 zaL@ByzUX3iMchksrkHyIz5nh?_Qu_7`smN}hR@}+asw+!<-#$|PQFT}DVD$UX>!&>N2rfST>RP*8-II%3U&~e3 zJYKeZUfr{s&*#-IEIxg0dR$%V?bYk|{=9bE`d;Ps?C0zH?e2X(d9U`j{ogmI566F% zv8-D2z2g4M{Bt$G?|%QAUT;zV@X`AHvA_QI+y7rwYIuNmid{zR4VE_57Uila@xx}p zjT1jSE-F3TCH69QbzA@W=*g23Z*Hip{yu^8=ec6#S4W&z&J<4n=4<8e9jvu`>!Dl! zgHxGXRbN^0y_CtbP)=|8S@6`0uVe%NvL-gEj0KHYiT}nO-wxRacr!AIFoTB2IT+5* zG>=#tv~=QBU<>sWaLf(V?SO#>pcn%~v@>upI5n>%KBTfBwKx{kIzu<0Qq9}p2TK^X9AU61ZosS(fAxF0*IS|x*Gxf%~tJH+S6hF}ea-qm8(-TDj+aiOdX{3s?(;)R-2TvC~n3ZAY+4+HcA zC1Ls-7`<#!G@~6aiEa-1JSoDQ-9<2SkS0;kwWCkGAhfS6gK9^chCw$0eIf#3!tHXX z2`JMN==#w|jS>3us-XJO$B@yDK<|Gej7V?9+8akV0KKD&Fu=YE*#K}VdZh}8d zV^%o?hB+=X?aqgItzM|hyO~-~Lh{7GAXBS=9J0i_U?ZRT)PiSUDvnHcNoJ2|eh{X% zHPiduG&eZwUTr_W5k~Ntc&=_hlJ)~wG)+~ECI-n+Fr2E;7<6b&!7NW+2Ze*W>d^?z z9>b^oF=f}6312tz2MIr^?3ZO`YRxR041}-#ys2Tv=Ni&qj2q(zoa26|J2Y){S*aT76&i#PQ)_SuS$UR=uWcbvf zs}rs6V|5fLgYS7Kfs%RL6F^7PKxU8#lg{1|Q{^3W*ME0MR}@1j{IDEqcsD<%U^k)R zH-h?wOGBhiwOuSGd6a{X=gsj*g52jOH%M=VPg2pRL()iy)?akM>;3}e>A(bf74II& zzxqz*xwClRWi24zRGu-JPVXg&s1Ut7&g9AK5wWD=ouqK@^HRyizR1`edHxfYf+3jl zKf35aEhl;p>fR;<7#JexuaT3vtuqVr@6W3E$q$fhXntqHQX^C)_RSiSg)4@VKNJdu zdr~J(i|v6j#j9PNDv}1;IK9M&XM3g=ix~w3%M8V~fm$DR76S5?dbPLcE*jg7*5Q)j zJN(Jq)pvt*Y||rdC{RSrsqeTgG)aXSHZceF=o(IE#j3?6jp*%UP)dW!640*^KhtWt z_%O`@U;xtc&0OInRc+sG-NNrhnm@}J`-vXKI-skiDVnk2@)n}VI$~Z+$R18dm&dkc z;(UEwc=ahxZW}u3%!!+?P z*1D84-KLmjAGpz3J?^uA7AW)!qM8-xGM@z%2pv=)Gk~eG6Trcl#T4LV{`(@&iXT_( zXGN2`^Ol-d&!rC>Xr%{{rbS7@i3%iv19B`|#DAiTlT z)BuH4{CK% z>;0gy>OrPCZ7mEt;fd=5G!iN}hp0-Ls#~ij`*!$=vy+P}YcEpKt2Texm1E+Uem6&QXXS6Eiwo&LQ0oAbiI)E!-9b&fG{lRAimf zu7Tl(Hy$^Ts@0cig%vj#Y_~nB3${3 zPU$l>D=bwvUR&{Dm${NmsCtNoGMVV=pqooFM3r~KYkcbDYu6aEVt^MxJT;r4@z5aN*=3@@;?0iHPJ1m5;#G;*BSztwgt zB}sTvYl~7KBokM|%T_5aWnfKKq)6#~XGaFhGYj!Ke8$5S!P~;kFOq*=7&6g6&)%TH zz*-pp{KC2coXl82-&z+t(Bky_$~e(g0jzPO0k>*MpJ#YW8AfFfToq63WzrY5=kQ#( zk-X?W#nrETC=^xITsL|1d9PAmq%gY9U*FD!S|<}O2<&(|jV`==9#p`}hfWHI7v}xJ zzX_hdjvI8bvb~*h96>XU68kL`lMq1>7FMnt#Sp36EBiL=JR#I6N)$rth4U7+s%_D6 z%Oy#q1YJ{cz?&`+u5mA71Y4}f`>0qP<8I{GQ-?0OujE7TXUkNUTI>B?^18G}xF@NL zk*jR6tc#>bUvdn#{d0CS_CEY_Cm4$F!<0Y>cGJq0#9(=rsLIU`6CYZ~s;K}?bi!nMK62z(dR@_?C6;)Lo6sNjoO@_bUYI(IUJYjf@`8Z36a zGZQGtk<08eWpcp0A3zBgk9f8ZGXOwF;GtKbXNZ5$STu)MG@Bqj;0DYn!U%Ir3A zHfJ@WzqQ6g`)@m&?Q_$!DA>VTun)8GDu2Iw&%sQY{lyQCGa89PPa;%NO)UA~ou!DW z6)}l-;w>&OVPi4G$SF!rdxhId4DrzNTc{-#IL!MJc^i5nsk-Y!FgaD&@ExZyN=H1J zYZ&}~%H0y_*r@?ohU2T|?R`o*G@`cmr*R zj2=#+Wrf8WjMJvhd*2`i^L|v{A$Z$y`9=2$AF`xz`hhA zx3x%+It0op_Z%^|6=fnOI5Jv^6_MKNV1N?3lY!(XzXauiAcpc2;{mKo{K3*gByM&b zSkg`s;tjsT93z7F&X%iwg)LrBZwWo`_%s>qg{y^T(DO)YaMbZpxYI;zwGH8<(FW3u zqDpAl%n2*!ZD1H{mSyOy6zK~|je&;HEv%0K6pskuEW4OE`Z&%{O z>aZtJ^^IAl2V5XPbk%--5pIDfI5yVSg1fvqX?bzVF!sAODK>3LtV^K`HvNXwuOWts zuJiI9_3k%T_&VnZ1c2UjAb@LEZ{^{V>wpr9UW}4qX-y!!;0s%l2eL>PUEtx6GQN%b zGG=Y3Na=D(E4Q`*0`Eh{`#j+)m!|g|KC89p5e3rF-oQThr@8&{yFE9py}M#4uPsgE z-8;SI{g(6%=dIwQ%aW~4CFyQGGZ^(QiY=UPopbq%as+o{yNrwHe7|h2dOgjTwzk54 z!X6#l#JOxF36&=RZH88)6gf>KJ}I+P-4e=H)~{6nz-ehe5UIb&`%C8E)&3N3S!cCu zxkpzdP zl*K{X&rOpgucj@v);AebFh&^Wn)`uFrTyS^#$&WepFI8LRs|Y=yxr1(+QC-XR@n7b zLE{~BKX2)?e2RdwI=r9G6TW}hieCAFnC-i1lKR1JvxrAh`2hm|(UX;e=Q<+6{aQ!r zQ!=46IX-iiu6J&fgVd+oIl&){n2iry)?2cTNbU$=HSWr&0=kifi%-bY39{J0_Okl= z3F$cc#r7}u3#|9jvecr_EdbiG)<1O+G%ExKUD_0O2koPJCoFh z+@%C!1zpz#b*Zvl+Rt2eL^N!o4&zqkTQMpWEM0jHTT1Og!I)PK({$RiJT0}jb3Z@< z=EN$zK7Za#%XX&qeM1_nK5+<}6x1D<0eev$C>>~{4Mv|6(w5?d~&Wp z-kX$^q^hDp(sIF@-zW${*BLTZSce1sm0>$KZjzUX;{CH*- z8S$U1g}omE20LgQF%H^B5Q4T5f2_ywKtD_2k zNUOzvsprv!(2<;tPc;e2$^PuwPJS_2-Fn$sX|pY|k?!2Pt=OO$(1#9Hx4d9%K*2?2 zynA*yb8~M-==%a|h+xsUKqyhX@BgfzABABArFoYL+0SurY&EuLv1ke=>DDcgBEeo% zo2j+~d0D~{A;wEppRN{U6Z~${hS&OfHgUjH5&p9mEQH9OaAXPLE+3J$jmo&z`(vTL z^HdCfQW`rP=hafp1LJi$-qq{b8YsSpz;7)7taVfcjz9zp7?`03G#Ki?YVG{l!`9sS zk9FC=AYoU!-lw}ezrg7EyIpJ$*zlA+SiCEtiC1TK-5G}h$K0=(8Qf1XCq}+hWTGS* zsv4Rf%H!(=`m%A9>Grj<64cFKUUGapY|ns3B+(f!ryD%|-N;>SdS{wXC6lLD?Ev5l zp0~im!Ku6MX?F73i~Y-KhRD(|;PoNq?cr(ZEV@Lb<#^BF{$b;yJ!PT&>2U7nO?ybl z-jT;kz2K|e+t4|Ut*vzr7yMb;2Yv?``pFpvD^5bb;ASR2V_|Hl_1m3oRjE`r}Lzn zOZRjlp7HAlpc9kl3!f*&RYJucor_18$LhL>qJ~6nio{zc`-JRmpyr|bV{gs)0(El3^Jm=>SHT&dGp52RV%2flR}R4-0Hoy#tpdg4?f73Si_J7JLjRa`Luw+?v#I}S7FKP3;;y#_cp8vFC z$Rr;6hVG3`b_@4S%$vxFRyMMTf;U0<%%VbLWL@%Eoh;^qjEYPthH4^5MG)gY76X|a z)6xgHc*U>XmA+eqEccpY9m80Ql^tvu1>h>S7db62W%#MO;f$|O8&;hH)n@~RE8(?l z99y!>+IG7MXocL6AK+9o5U8Mf4<#MRjuHxj7@Krd#bZ}L(~-ehZesNq!Ce*mVFh`p zi6X3a(2*kAZB}L#$iS&mFkl2Y#JBj7W_~vih>1fh%+p{1iJ~c9;-Cd3 zbU=?ViC^Nx2E=wi7v}z+`~;fB`PU@W4kZ9w?63IhCVVPpC>9UIkv`c?h<{<9aK?jD zNkMURf28Vy(1Jm@|499l3aX6e%$m&ozX;A$C_p0!f2c_AfHuqf9}@oq73+CfjT4Xp ziu$`SR|1e8RWy)Stj6z5q=-!aC6S2~j>ZEK?hn=T32sej9lxXgJyhr{(KzMW-i2wH z%`d6DK-xvD>Ed(t0Pd^ft4p%jp49UJLCQacCNZ|Owb{LE%eM_vZ`sb7P*QvTz_ER0 zc-;1tF;a+GFZuawaO3I5rOm*8&`a#Oe`&%s@6)pTmEQf(Tu#l7d(F=UVWq?UgVFq* z`=~7ugO(dfl4$!~<`vN-{pd5UIQ+LK2P6q5k7;8x#`Q9y%&oz7(%Vy@>vE3JDzryl;guVoayoJ zraXxHn`{cM#Acm=dH7pIiU(oV@tvk6`+IB;Z~HzfV+dz#&sQ$K-fm~D36!Wso6e!N zi#JSaYebY|Un8}a6L8wC>nSGNUVAshWSd!eyqHm@oh8AV<{EAt<$F7;t;_*_B_ya2F{t2hx>pk)~y7xHu zie}xDHn8dFl5ubM)S~vCS>(B^6XAn^{NT{;zONiN&U+Ro9vn+yk2P&VgDyKppx~RE zBQRehh=#?@s=dG%zun?_7SHC(D{MV5%Ls`@q=7J9Me9PbsCE{EH zBe>E>v#Q5Th80VLeSHav%yD??{JElBBrPX&{n3N3@liiNH0M>Dx%4MtWex1` zhXwwmjP^@dm&s@rHa$M#$hh)dJI_U53Y1PI<~;fW%lGK6JS4|Bj54()4Y!@==(o+o zyadpf?{;k8;i2$(E~Z@KJd-l5#*Jd@{IrhD;uLjGZi)7C(D?)FX!k&Zgh%Cl0pAxy zg;r+H-p_fmJo=w1V-V>as=))Dk(T9D$d_3*%K2w|bDfyngcPd!4CATpMC@bI56uAHCn1MA%(z10%{`Q(a-#+d3 zcs+didO0-c+5Y0_0la%ndRshsocsBF z!KM4GA^Ffq`hX00!mh<(xQT~p{(x*t_HOwo-JhT$SuTB!nX4qqOtIbVAV~bz)lqhb z(3BQit&5=QyINutFz4yx=by2?&=-0I#nYpzMcw3t-fr22`2Zc$rko_|{IT)-V7@8h z&iVcg9Vrb%XMpB6q&WmN`~_k zVx`{48V<=jrG8w5FpFsVW3=gr?3&*nBCMrH9*MRTuH_N%_0ovm(2KfUcE<_0mP%{r zv9YSm1^jY12liu1-O-r_Nz|2I>QRNZL|)#tNKAno?{?Z#Tk!$iLid!AYXxzWM_$p z-Wy6s?3pf+&l%!C4jUk=lyU1}-hbtE$H!lMB&?$sBM>D$tvyjCi+GElv(db6%ugGP z6eZ}zmM}1Fm?e4Sb-QEyZKi*Et9gxU?d&XmDP5yK3E|7z{p;f*A#SA{Y9=dh_p&=@ zt%eC#0fM4BW%(z5-sSSzW6eROi@Qu)14z}8BF!o(=x3_$pWm_D)S+H>Fg!$lFf+aPd5kZNwtkDYl7{!BM7& zkE&lyDS3@BQ;V~maW%{AQIu7qSws?7GrAi$ z_HjObl{bsF_PanBXzeg$4nJ~jp)s{qT3A!1-e#DDlQO?0J#cZ+ncgFzM!(S;AN?OnOgpHyvryraaxmzI@Nb!{W_nqrh*A!Dkpd^BEaD(Mm1Q0v)Two$;l zSt%pB`w?}=m;F|bVkd-W(Q8p;pUP#Dmy;$nfr4p>@;ia)EXOn?7nM5BGw zIG*vUH2q2}lK#w8UkKY%f`LZAj0r5gZLZ3fb2!HypuCWPJUhoW@v?@N%f{J&7YT#% zo+ITZt!<*}RMXoBTfm8dK_0uXv^=JB1y-d@Mal8DxL>`+(VS~_#M-P3x?}%xD?+aS zvIF7U+cF6>`+ucT{TZ~{>%V>tfZYX_kH~42zk9T$=o>b*tt6F z8|d?#mkUf-OT>bt6E>&is|%{bqH@W{;LKeA@EnP$7&4yD+*`xLg3Ga{MN++2SioUH z-~Fq5Dy6*yHKV)w@txrw2kO=#eevUi!^=#`Q+ zl-Km`vq49<)^2^t0Pv^-dopq)AY5 znS=_FN7;^DWi?N-HTH~=&yKqKVDgCrIOk1MZ$rAPP!E$Lun#Qp5shl{d~#|qPp#Vx zi7(HopReXD2rxT;+*#j{cBN)f71$iEMiA+n%a$F!yq;^FEkFiaY)!>GDbh){6V40? zpG!Jd!u(*fpw`8_Uqy=lDmCU8wA`4n2HgQ}=ZYIERT{-8H!_L$X?MkN`-$&Ud=AG` zLKPIzxR7}@Qlehkk!$7tMhm_|NBQJg%U zdd55+)1EMrp!4tC0>!v4ZUnYqDtDjZ%t zd>Zpoc7UiMOrFVzcJA=w$(_7_sE6x}Gl%a?gH+Vtx|5c7_-I*ui_>XBFN5BRJ-uv^ z&vWa)mR``JvMoQ%;R^9J={vvQCN<n21RLCXI7b%@1S^vG5;ulwUTbsq=ZfcpZzKK{)=0D7ieA!g`GQn}GqC?)$Yt zo1ZiHKs5rms5dc+1I%>90SA7V<2leP(E5XX4NE_e)j%+l*b;#1upg5x8-spoUhVru zD7h`hf-Xdg#V$MW9ZuTf0RE{9h)qB4VZ;&gYw2XFYYQY^c)_iUO9J{UXN#QQB`TaH zINTnVAz9xekuuiZhhMt)aryjSLsj7E#tuexbvpzStj)kFLO3BFPK4gN2*?DjvG>JIXs*0 zf-hnWSq*Nk{8nhD-3npkunb!cx6W>=d_@z&N4f>;TpV19Hst_KNWa{$QLb5{J`3S! z|0Z3wz|g(m9rcmH1Z?&3HTKPi+lZO=6{L~lvS0;V6#yt52gyge^N;k>ztZRbo&Mu@ zdLXfQXSomewf#59OHb>UIjQ-K2J2=QsT>s+=nmx`%%dVcNz{~b+?)85Slf~SPmj*1 zZ>6}K%c06O*1i~>83g_v*}Bv&=r;$I>2?pZmh*DpELi73o>nNc{Y6Joon``*Yh}5H zhDxQJN5MQn3!8Gi&Yl-aWe8p z-W1uS&EATuR=LHeq&O8(pSwp4D8`}EsBs9Za_+mWm$3H*v1jo&tJ4UP2=ovLF%0jD z=9zQCiK*Z7w7`|hxmRci9sQD2loI9l^6w)P5c#1iSwKz-ZIsX}N)!1BL=_N8;@&)b znw{2JZiOEEZyqShfAJ{p$>M_Vlw2sI*BUz?4Y9D&m%`D4EG2&XDW-nS%J;QRO4OiF zuj)wUu$NICN}Unn2oDttMICDX{Pl_LofVGvDh~LlYkYG8-AHTKSyVNJC2F+1(Ly7f zOxG;^!rb!V5d%d0wAHS&3l_LX2xc+JRX=YQ8YK~b*B zt|}Ijnm#m;u7#a&J3N*bONm}aX_jRV32T`uiC*#vc~?i1=Q1cmbr1sOr9^|sNr?=Y z{%sC{s7XPpCmL61BFf$#T{-1kv%(WDm=dOPBAgf);coAgj%o+ybMrH`u2nb+`9e5C>8On58XG zM!+0!;XPs1Xp^TvhDMj0Fa_pB`aTDIpeNcP1xJ#xn1S&Nc|+DnWld}v-x90Wu6d3Q z65m(wXhlZpEyx6d560<4D-~1`blHUCrfla|reT9v^*if^jMSNm{@klr5OEM`;-pSs zYH*TBp@Soc51?hVnFcl0?iV>>5w%;af zAaw9^@Sw6;GiF-TNyKRL&=j}A+22$iNdH!;M$!mU*$?|$B@}pF>c`=>pWdtoW)iq| z2>vqQE>Dmn{*7;tq5edsq)egO@><$RQWgSnI=FBnH@6e6J}3V{T;uF0gDTcqv#!#X z->(MVTL4SC3xmCMXZLUYLx_s9vwP}QjCFb_zRhf>VBR4fnw#yE&sh*X? zi?}Xdx0Ui|bm6JHk5rbGcF|WlQ%giIHroz1%4uOSxacPU)6c1A0kWDh-5B6AF4ylq zqvWr>oGzm4tMXqIbDWDSIvUl4n@(;+ovc!)fA>mYN%$hN$Nfd({~z-zgr8b4rWXFUFC zHxraJ^=A_A|4d4n+-JHuxE$aMbH+IQO_f@SYvNakHf@3Fh$9BwvI%<6E*{yHic+L|Ff!gnNW^sx0R; ziO+JMjUf4vjo?2D^N0?JTtqW5C;wFF`acz3W?qF%#%)z{d#dD#os_$_^vqbGyR&?AJ(eD-d$HUe}H{)BoNJmbv3ZATf z2%44aI^!J6<7m^5o5LSb6H3+5CG-0a2UZ1<7B=-PtR*EYhFqS6FjJp@)t&bD$)0|d zisFNe*e97_W&tQ)vd>t3s+t=PR$Em_4@#{QeTRsT3@+h=wgY1IOE$jesaCm~ z^cwInf}{8QhsFlCBTKDDW(oJBL*7Kg$O^6@dgtgY%p)h}ZkFRS?%b+Q^1A-vSCKx2o5lWP-%bUWkj!cXfct^sGGCY{+PQtYYf_oHwbyDS>0Mc)k589E*QhN zY*^qV_juW1F!lyhwE+#%v>SKG4EY#)G5SryepAc+L5%^ThL!uh`<`gqTtrSb{)5`p zY#c-_!2KunH!92sl>dYJqH6%YBP_>g)4T0`r!o9dRe3Ll{aiL9qrclPGVOqlX3F+s z5zGh*_fRbqx!M5-ZE~|6`~G-t(~{}h0nyIAUX0(n?4oxqUh_zQk>9$EfXLNg{~&K+ z<_iJIF?Q$!>vyLHlh1Q zj;{z=L~mbzjD5(zxnJ5%?JR~WDSTqoMhX8J1*l6L@>$LmqhICIoGb8E=*+4*x^Qbg zh-I`a-<$)}RXJ&rS0Zw8>tEAq>O?iFPoLqsDf}u_=0IUvBAmRT89X}R&J^npeSxWUjzYE5ke+%r+j`Yz9Y8kTJ(ISplNS$;r3^XZ$K z#(RTJhww$95yqsf?h68WI!wM5woz)?-50X-Meua$nRPMXsZE6`6x{W7yIZsvr^4d% zkVFZ;Rl3WXZWPFLRxv&ic?| z7r$b7&i1&Rr`4leNC=^qQz{EIg#@ndiwv$l1orP5)%iGtqo2qFgJ8$?ormUCsRA{-R3VUJUq>b7qqO!O!Ih z#j-;}vz$?%()~{47rgg46+Fw2O2-Kl=T^`5%J>v2jKn18L^-QEQp$@q<&r+>!hT8@ z<&f+NcuVGI>~r88FORx+#iN6N1H1B?GyB8jPtK~FuA#4UjjR7MDW`YTSrqoC z$&jSqCV3Hmo9wjv|1-&}VADO_e!y7;1ewGvwtC~Y&2A+kF2Kdc7l_Uj=Po#2lw4aR~b&fKGV6Sc4|@{qrmNvIKj&N;|X@EvFnTE}lRcd;s1-H?ml zXe}OBsgy9r^~Eg_djYC##{K2htAoZHqzn;UrF<;Ucx6Xr~5ON6*P{;vnKV zP(BDZT;V=o)OIQl9);tVSk)_-s;HecxD%-XDQKJF4$drt!7_q)1aGK(j4*4`0d|Gg zhbYgI0eeMe*+e=1A8}D)zs2DNor_=CjEsKV=KEDk!q!jR2m~jE{`~=45Bh*<27)un zxV{85=5}pE7oCg}4I#3|kahGJVzFLI3qR?xB&Rfe1%h8`E}TQSg?Qqy^thE`8q%J+ zWlX`EDlWH!ig!{DD&7ek?1;Z@E7U)WXP2Y@SMh2)ZM#w@mlIh3Qi#xxxPMHzGfqG= z*#l{9tVWYt=1vReSw@Hfp+OG|y&XTsCPpghpe{S0a^mgdhZ_ZGSN{NB`>x-uz^K=f zP_d|_838HiZXh6Zv~NUS$i8+i9C^X(1`hy*!`fy2{Q5C!9lKtRtY}yypKc?WTg{T& z%yM2YTpsk}Fua3$t?7K#*)72-*w4%vS2sDIc7cm_lyd=^RHVaopJvf7G_16xLP|Ha zu|UCvfM;m53FQ3Mwpxkhj$VDwx}O5RL0lnHcO825DalSugE`1e)I>;=9)y_Uj%Ro|Uo>u# zU)gkv#q(dONzrXP?iBg2{^nr-h?$qQO&?NB8M+dTJww4jH?@`$<9wUV z_f*%0M4WXrf6`EoTEjh9@)oGzPTivY4*Z2cb4(ZZkOpQS_TVxDH}I_d3*!due7T6( zLKhJC(6n`=nDtPWk9FR9F4fayv+?;rYg2wk6+kUBQ3E*vV0Xxxx1W;_;#WQZ6))%k z9tqJH2vHD_nseS7KT+efp3T~ggOAzV`^+c;w~Vd0sD^RH0k)2Db)1hL`mn>=9fx~w zYdkG~%*5V(n~_}3A)=88L5%y0^yW`0oJCatBB%(E6VqwaIEX1kc@(r)n0Q!?(>0#j zBf{NBDke|QlEXios7Wo)%MH@yo| zY;xf3qlW#$y?-tk!!0b_|v z1cxQ!Ic34Z*My}txXNXy3(M-iI9wi8Tqq_LIViTQvnJhY)3Bvwne z-_r#k0Et-co1C!HnccUZb4vn9`U z3w}nUzFFsU1_=)MkKlluGH8)M1^50IeEwT-HNmlqE8BzSv2B+Zw1_&17Q=lK$*64w z$*BBa!0x>@Nr5r{0#^R|*(@4&atI9j`T7Q^R@|}4D}wzj&vc)6DC*PchX5=cDh3hF z#gr3Rxta<612}2`0hp37TekfkS_D}Q3i}za#_grU%iz50K}-o+B$C@=MXjiTO%z(h zr*kWju7+m{G^&OO{K2Pe#F7hgU01ekd30T{-VgX5JRz2r@LBy!JQYmX?=$51Ps&P zkr!bEw71_4i15J*ldxCmkBSBAFGZNsIfkZTW_-~Pu!yZ<6)lm}FhIalLM_$Hzq@Wi zogOdYg3C9f1qhk+EK*jBHE|B>ZxUJ^g^fXKVA}#6z$(G_zZ}iZDri8IDtBwZi>;5| z9ZLvbc6qk|;q3ypp?cY-MySvfNjoA)*PVX#n6t2x;%&kpwQQ)cngg!LNjJs)IE`ao zMK6jIR}fjFE99Yh4F&7Jf(`c$YhV(dVG`mB_eO8?_FgdeIWE-`jvqjQ^((oEKi2Z)oFBR=b#=D9A-vEwEzX6WI{s3^ea|_sm8g7RhKItKjUfy!&ugp|* z=&%Tkgs|k#4kHNKZoRnufl3JYkk;w9*E*)|w>Q|2hu}cyjRx6!A>8Y@vsw9<0=>Z5 z0U~DzzioF!o8b^lOMYA)xL(J-lUWkp%|v!D@L|WKGO*!@s(3^P!gcDjKj{xS|DrE3 zwG`Zj2AMzDX$7=LfVUqEa{hNZ9pv!d{mV5DDj~HW1b%l1(9Hu9E5ayN7ExOeRwh0% zNt%)=&!On_tgSPCRIP|xF1g5UGZ(v@{(aT9m|U^vd1}$5vI@Shb9x?q)Qj?YgrXDI zRunJ|i_GU_z14-6E2^t(z_xv3xIx&n8L`5MC8&pOZIS_30W4Da;XDtv+(ltyxLy&kWj`o2+o9*&mDUplBD3v-sV!pvC1~Q*NhhRWZ)m`#F zVt1&B8d$YNJ3ueBL4$Y17S?ddsFLchM<;vi7Huxa(^sn3L7)?LV~YSEodA85{4K^6NlG#ZA&g z1hY8RoH*C7xD&f~omXKnBv_gc4iyV(!khsSV=r>KaPCWcr=vFPQn(DxYB;tA;ww9Zl;-h{Ft2P zr%%f;?&3Oy#Q(9#u+fCftG4_-m1Z#;!&PSw@^XT5Gq&ZScADrf42EM`hK8Y2+llHC zc7hpDdt_?(_794K#`n|jj28gLAI(9H1fV7#dkA}}vD=8-x}YwO5Ioq{kAKzpXnt8) zxlEclJhtuA7nVfUzz(iRK0OAtP5$?eLWnqc-v*_=Xw;b$+}oAFd&Obe`V5f6^9PPZxr1C+@s=iw^n z1#^c%VZ+g*sgstH`u5nM1wh|wVN~ibP^-f+0!}9f0Zodf%HNKdkg>OYHsR>6A?Z1{ z+A9FcWRZBj!I7mX=kfxi~S;~2Z zC93%JJp}aV>OWxBKXu6}ZsqnZ=P(n7QM)xs1g|5T=Zfc{QiwqZAf$^zvz$|BW;uaG z(5vHlfLn?{Uuhl(Ay7pLe^UnE+z-qZXUP>u%p!P%!G^H0MO`jQWYrp3Lcw<8QSS;1 z%!LqxHpmUYj&s@3UpUeYPCJ8bzOPz@$Nu1&Q<4Yaeat5oY$zIx(~NnCOusxekWqJB zJb^>=Zxx8Bf2s)Xxgt`mP|>WmcBu+DRN_O{PiqNB!G3jF7Q7%6f2PNJw;Y5tmi}#i zNob#pr92~6()p|GRWWw(6~!62}H!OK6!UjaVJpT|W3HXK!LCU>8!)0nk&@-x3p>jPgdlc5T7a2Sq znrbN~UFivqH7ebG!GoDFPS=?tY4Br?4n-j==(ll;e)5Awje- zHX=j@(}C;QapI%WBb=&!fFR03QJFl&!rW$!QXxR^dx4k48{6zD^?r_;Y~tG1}%=@LJr-OC4K_Ri`ke1Ie44ECxhN{#bqaA zj+90~7G&J@PjSg1FFW*4;VE=@Sh^s2L;dHuePfS+IX*5hFy|T=F#La>+t;%C{7K5f z!rb)ppGWw83{ncD>rb8@u$ztsm9mq;$VSI~rZ6Ce49E8_(r)jCD=Ov<(yQZ-KG3&- zPVtN8_+gC1$czM?08{Bi-^I3ZI1i(Q-oN_3x_fjz`Lu0RaUb7pA-!?mAK146mj$aA zbGCf1&W!c|G+XN@w-GmcyB-aOU2g}|`==Ri4`*+Wug7lfFFDiW8wQt8H>d42HK=E2 zIk%vr{hOU@LV`?2IPKk?mBh^%8wYc*0Mv{Ww+y8mP1JEWBc8Qkw<%*@-skS6lLM2s zHL9V5h?}#BjhC{v6l5bCmWYt6Hy4;d*~>d?AFI9FXzrSE7pKcPi>LZ!8ee-6n(k$w zht~_Y)s;(~k&nJm&8=^--9w56(AW2^*}&J$dT(vqr?C5hxy}C!=<6YD)KT{J*1e$Q zjqmN_xO2jAPEbZjOUk~dZ)>O9+Pf5y$J)s5!~&&pzag3_ThJqhnst&vek_G)g( z+ThZ6-)iK`_1C?N_bk)H0yXxIyxVwjjbY;~?)GGWD{mT|bDyN+blXFq=J8rLfCo^s zw5Vxa_0sz4WW}HZBe}{SrE)v#YRz-CV|9@(pPLeL27K<=w8bUKNf7wp`OGZ!{l)if zX~UpiP{^LRZ@*-4?FyJe%tyHPS}#N-K+I1f_~!B~uvvN6-d?lC@Y0@nvtcx<(an;*wIwh$ zS@uwU{r&3W%Y(O5+w1KXN&Q_K-!&WC!z-}v<+lIVYTw-%`-a0K#ga;xzn11!C(fh& z-B)*QB73t7t8V$lX0v;>is=e0&Z%XQw~LyV&l5O+CxusL!v?oFo-|@Qq@$g-yHWDn zomN~bTt<>EO-?GwL#b0j1UUd2D?_Z?3@kJ=rc^1*hvS4on$ornx z%IJVxZ3MA_kNBo7T)k;HB{bL@=bh3Qtp*rYt4lyZnC_2EjB*eRtNBPt02RKuK+=a9wqo>Yxd_RnP?K31}h~ zG*K(v3hnT32*O3U7O2ZO@i+V*D1Q(5JIepA0*|W& z+95T66@piO)*hS?#;OGjB`^pC#`O=ae@R+}IATHvfWqKGVK#q-^#JS~eZiJrKBi{stVSvJZTSKvNs*rs|xxKoKehS_v+t;Ihu8~dX00Vl@ z`!b0zwT$0D4j(gNX--em8z=7~UmG_(I1S&)`soD_vUyd+Ojk_q6qSkqkRolijNcBQ zPebR1{)0+nT%~Xs&pPi7=~t zZDa1-xw(w-`8j&H@HqbPedYSus%}!>i750cSgq}pH*?AxJ?;6%yv_TCudUlH*i@uy zas2-g_7=cxEnAncnPO&UX66`TCYhO;8Dff=nVFfHnVH!!Gdt$Qj$xF0-+S}j_s`5< zDjk)oq_x*teNJn4A9Zitr`^ZF@z_cEOxuNT+lPKLi(ivcIj$WZk8N{(M4uOb%%<|S zZ+^KZo7h~f-bwwo(eX=uxV8Fhe8FDZ89093$RM2Y-N=YBzK->{z9m|C+kK_45sWB> zh9LURcZu=i2Ue)uz9;t<_973?NtB5|ZZI#Oq>71kS*%qW{tYqLB>Z`1Qpc zWK2F6+Bv{`jU>+N)&x7ql$goCNgvTN7jwamqewS8&h0mZWvP8!iGQg&g1kH#|7Q|+ zJt<3b;*0MH>#EmCY`gpwA@`DGSrXqu8_fl>oa@h{!+7r~Zmp(<)o%6xYG zd0C0dHm$8Ii3!yM-K$WB4tfIDejtZ+3%}ID?0;K`R)_iMkiHj%9D>PFA#*Q4=}+t- zbGH!)SPl*m-V+tKz@Gc!p@nc%E>11~8}TUoSz)CE+gj{R1gvIQgcT9PKV3Pde6sW@ z6kd7iSs@|10UO=v2<(54ZUGA~Iq;t@9`5xf5ea_0t{Q4RzCXjjLbFcNbcrelM+9asQi7#8h_}aGqgNq5D!4Ap(X^A~O zM)kHwe$;)p-N);>Z8OIxzSwb4#4aVFo}bb#pHMu#`tW3$=R|G2I%oEN2CEtJmGaZM zVUs+MLiZ$5D~|%(MP1+i-A#*(gKHQHmIO1_or&8F(n;8bt|1rwWy@4?g_9S7lYKQu zw)Kpii7SjUG8^Et8NSmL_vaDW-zdVuL2ZvPj^il%U?j^hiY}8ewaP5ekM7cef^HUV zD>!&&JNL>PdHR8){EM9mje|cH@$XB&PP|KZ7j+(_mv1Wif_fD-@eRB&E+osbUZfS zVxR}ACs2Q?HnGoNoi4pnl}G@I;ziJN7;Q#+?4&kmtow=|S?q;%!s4BhQ*jK#EH=FQ&1bJE_1PVfbsiVH zZUO9p`|qYbOy-S-+_2BC4f%tfvDs$dCO(_H$}cb|q~;%7uiYW4_yflA&R3~0JtVRp z{qTR}bAjhZ;<>)~6p-X|>>#;j%OTa_?#T)cNb6zu3N($;9aK>rx-)cDLq-S_)O4QJ z=@j6dC!XGQt8uYExL3uW{kmB*=uK%%a&jsVl{)RuFr~b{J?bbOesR_sd%XDyE=zHh zoKStNB3iV^=u9A(gV@$#bJ?_FN@0DHKPj3rUD9d8oz}Es-oJ5w-(cjloz2Kx`P0rd z=5Q=Fbtm-`!L*C{^5$nf!%g&>GsV&)!s?9grGy-|A*&B%8(OjN-tMNw1tRiT8q3** zDV>d06GXKZJ`;S(JJ~5{*%^e7+Sl_HG`{EaBc)whu`${g^BxNiR&Q#kkUTDDN2rY* zO%tvr3y&f0i|w5i$8XQL2WCAArJO}GW_-<7=lZqVNbJjrX3balYK)jq4kIC-eB z3V&-0;s$ZdmPqj2MA(%hgn!alb@QNjA9n{O*?Qeoio?B1)L@Y$)GSEjL=JES#Expmq%}6%J(T zy)BF45+#|5qWuAJ7;;|)I1iA@&oqvWCiYEsOC&f( z#4X`Kf1)ydFJT-(^1NPp)ZZyF2rnD`BAZ1d@ps#$hh}#iW@Xo0b?G3c$;-HblV@i` z%z60)gjkdM&pSCyya8L8BQK>&|8Lcq%E6ZxsxIHI7apG(*KKmq&h@wR@B1xwlU*#{ z6VF=*d?ev+GPZjd%tY6=zPHmpE2#J|)|zK6bO10sBw0;!VI)Ru?M)^+G&qtc1y4>q zm8X2BFpFrfB*j^o6n(q0=`&i-7)#fEjy$=}5^it4m!8EpS?EfomXsoiT}^ngXHwQz z?1+O2TfMwGhlU(3(m-Wi9XM&bW1YtV>PMz=Og6K;_cO_a1t_&utbNB-b?pxOCMLVkblw)49RQCe5`{|c!2BzQZ$jDp3 z^WIzxb&nl>05zW)7_E4^l70_^bZccf9$q9xB> zGe<;(UK^%rZ!O!ezafBsCPW;QO&DP3i8Oq^T=#Y^VYZIAFA;*Zm)h&xXXoSBM$AGA zK7K;tGFXON&8+^~?b*Xqi!cY-m9#BnNX5{5*qR`N*hlMjb-T;tahW}*2HAH4c?130 z9NIewmc~E#8I*oVVW(|A78V@)y=C+Ihm?X2bW@6-gAQvBBmK>uNBbIPyZ7Bm>GHks zuGEKa903vH@w%qxB{fN>qv2?B--aQw&zjB00P!gi1jf$M#=2C0%}>MYm{hgogX<7B zvh>>S`)hdfJWbCJ3>cHaVt*MCI8ECkrAtKm!ej?)zy1~$nAMWiDqfdC?g+T5j z%P2PS4C-v*2fEKVYGZ)=gXwE(rl_C94s_SMV8d)?F31ML|12ThGvM0HtQU0MfW;*g%6 zx2?eo$cF1GraA>Z~OylH4pHynK|C~(+r^5Th_^ybv4-S?XX4tX(PFm;Jax-C&>UWqoe| z9Pgr|+^n2B8%N3uim=*G0zQ*Jg|w~|wW{@L3*gXnHB)wRJQuC{WA|Rb$+w z%vQtMSHs%N352%Bz;7X(fRyUF>{V-?RU0B=^Fn`rS^AdQC_NsY|nj=X1W|p*WFsp(>e`2 zWX8Xxn**fK)S%4MI(dD&aT`~x;;Xy$`XsLW5aTUr1CHgkX(?gD*r2xcLuWJp_FcL? zkm6qTxVgq^ykPep{MAw^Tgq!rhPQ2^XIPSOVj9+ zWUO4D5R>ZEY){DuB>QS9`)a>dZ&H0AMR)5v*aO$1Kzr^z{>Oq(_S4e#2+nO%kdBS~-U^=Qy8mj}O!P<@!h za?|i!$>%hG9kxI-5<`L}|0z*LJD=mhcE4Z(^0-<&c{t`wwBmN{c5LnCN?Z8!kpw;V zjF9*`Xh8B__~nNYjkXZI*VI};R-bOCN{Mie5ojF&2worM&OmXpcg{KB%r$8_oA}C{ zNyL>(q=K)$%U%}>A{B9|bb`S5R!y$`h3;_55q`E9g(5^3z@V|7p<7}LWIi%%VnJC3J~@`Ln4FzJLJWh zIWVN_8C*^0&*1ABw!F&bGoQaO!D)L<5U z1m4aNicHktmMjo)tuw`iRusg*0xBfW^ISra8>qIT)b85i>lX;2Jj{$m>d<Co z2tDS^Ss5#}SU8^mQCb%Nm15Lz*e0e#aoIeNb}fhjDAC5GTO6S<5E3vxcF=2_La*Tp z-Np%P6qxk6b{k6!?B`X^AQ)cOU><7}4YpvGK<%`C7!-}yu{`jn8j5T<6cFqTf0D8s z-g){NDwE!f3EB6Y31u6dCj6f0)BWu`$?EhIAo2@MvCkokr zI2NAQ;D^>iIWnkUJ`T3gxh1~19(UWH2J`tpHyD6`^w;Q}^F=HgPOogghQCfObkbx&`$jQ zBs4)d0CF4*O3VLa(0|Y`w;zS*oeuH$=IJt!Y~KGN(xV@-8a?7ef?BHLZ=tnf9laR~AKi}oXnqnnr0n?a*H9iv1Y zhWKI>pY)!ny?yRIQS^Mj55}ae=DtZH>GiVceee@PA0!y50FIz2n$PIc6W8yO;iYYU zNk0{J`DjMoyzD)4?LSV+hmT;TW2U4ZW8oT~Zg?}}y4%$5D4JW{yzq4SOigc3$+^E( zd%Y=UxmN+k15!W3)$VlZ1+C^j)zKY4ntyh4e;aXs^XJQzmp+$iOU6rDDycOAm`$p) zQrGX%ttZ~Sm@*7pgs$#{tuhHx;Od)bX_#f`TSVpCFA~FutDjKI?C7|bK-K0BUi>X= zb*E?b2k;7})x2qt*n7-e1u|VEd>ZO{uaZHm-NCN)#g#V`4yV6TwNp^a>`CBBXV4$d z8w#m4k)OCoZHB2O((@(L>wQhK@Q$}MOt)x}a8@FEEXPiIE|MS4 z+5GyJfVuYw#2dOu%|(r7Vr8Ibn`UAknQQ$LKj7^u>;49GEiJPRDuxGFVxdn;2+V zQY(_6>d}lo1RyE|MxKH*3ERG6G+Z%C#`Rx35et_2+?NTQuqI zIlnb?t0l`eeaitsr_K|SBS5QgI8#t-3(`sHhIhg_WF0eo)7cxwHi(sm{leUcRf0T4 zoVMQn>I$Ni9p~^6!!F9^JVX&@_6P!=9%2E7j!lu_*rO$`NsL*b`NSG#hCEH2@#q|k zW$gF4VhDDAN-ymTd!U8c$=xcbr0bV~dA<4u6*9s|Ap%y?91%F}uOT@X52>TxqKvw^65z#}UjWXSOe+yvAgPn(`>moGU zC}cfHp1usG`9sT%(U-tag^C=%n+#!o3f~c!V|?xtDj~@Lg%l4r>q)b4qxlNt^CvzO zJ4uFN@M@8GRB6xX6U8go6iG(-K6(KT&fj93{;y&z)Y*SqHdoT5r|StTQL_Ek(&9VU zAZ*~d!K%>8?aQUJ&Ia$E*3!oL&hz4D%u3UYs9PhOO2@dh;oi9YV}YmMOQYIHuJhsT zZE{~Q^9rfa#8JxLGM)Kj-L82oCkimSa4&xrJf$yi`IJ7`f9|*(kz0mfHiX9@VyNU) zA5zan5L#vKfV&-t;k90&sDiG4w;>{O%_AfP4<<#VMO^9eQoGwqKt$tpxw`E6@xC2B z{Z+L2a~xRi5iO+eVRMq}uCT)=tPF97Pp;hZ-yD>~ls)_RZHUOR$XikJ{Eul_@vnVa zY{-ROL4(9k?M_1+(OJOtT2S?(V~YSDm7m&=X_&+?)D^Y|f=d*)zhG2vHtZuS=*>I{ zdkA~rf#Oovk}mFDn@@_PCSeI#1l@@{4j`|u58X*z<#*u{NoC)ur5a8u>qX$&A#>H+o9j3_Z%DM`?3%KJ1V^`1r#%FoXx28K<{waB$ z)Y=gyopYz8q5yitpksl1#9&f4!$3y}dURw%l!TS^N5vg2E5Y9?JV1lY^lZWgrBq(u z?_L$$l>VhdIqw9h#VgzG@;rXwsVNY`dHir;76#X9`E7Uyzji}He@r&2DgYtd=aOBi3F=6{9vKM@Hr)aar*XrjHHGO)abQ1 z;Ua&@LP(7_Y}ZCp+~lREwDaOX#Qc!kjw+6IZ$5_QCT4hKYi{DD1dYM_J9yI>^Dqu% zYsovgNM{0(2F=L?Yx2nujX$XM;`9u)7)=cqMt@MN{5AfCI*glKbp97=eMo%&LI(ds zHm0=}HdGh~KC+cm)n1v}u7Vn!p9Xk+NRd(i_bN*fVjz9Hcsg_#M-~hNhV>BYgtjnU zC*w*O0?rU_7>AbMa;zekc9kLxbU?Wt?*Fza0 zNJSGl))-4dl4v?bgNXsfplH#qge8Be4^VT{twO`x6u0^9zX$(%e+hvYq zg}JA0bT|Vu1k?xtI!FuEnwxfrCkbPpctxm+q#QtXJKl=Z{KI6NL;6CvYERU{ zV+J>$R8MVgq9&5VNCXNPJQ~yB(RgVZ(^^HE*{C8Fk#`6;MA|@ZdBQG|V;Tv32p18i znS8}ziPM$ZI`a$AG!Z3r)vOC_rDoL>okD8*AzVOEN(6_|5mj|wvM!eOPzbyc!VoS) z-}z`+Cc{b@I?{*=6M;(@N0eS`$+pw~CX0)1{obSdSxwzvx|W#co!w41^DL`i4`IRA zM)kz|hWl$EH#Bp(K};7*d8+c^^!O0wQ8k9zUC8CzN>H~z#b>1FW(jBA;eiUqYR+%; z51ZbjYRO41u$qM(qR}MJmkI0cV&1Q2A=QqB2?B^e4>RBwe6td*H*;F&-oa_=glaPK zBse8C(a@Wiy>MU|@c$%xO)BU-EGn#2A_%|?EKY>NOX(r5uYg!MsTn4stTzWu(g;e> zgj~@u#-9>b3eEh081b1Z4M9}#fUI13_&mbIqe4?Av7Sl{1C}06NlY^`FXE+A%8%CUMnoI~;~2ZFAYO$f%KRXG_H(~Y zUc{gNi&kw_WL#M+!jn2LVtrDw%xHJ!Br#!1#_o}nS_C6`YFt5#A`n$YaXbfImAsBx z62p`sfcAXW6rm!m9|=cQCCxZ5LR@Ls13RRV=O;v?KP|8)aIMhDj{YokY7y)|QHc>lD2SHoDAN#B{$+tq9ngaK zPndr!nC^^7d?tQai`*^qL`m{gR~*h->WrX;GTl~Hsi*o`Q_vwc{}qGcFTMwme~`C2 zBkr8xRpuotxbcDu!`?!mtpnDDFgOGfcvY)rL{m#6(9=(aFd9?m5A8Fd0v*RmPt}2x zfpfuAQl{=e%83OM|3#S;?4Ojm(`LFewdojdq!vjIJ{e0!oZWBq*aqOLxlpntp~qG3A16MZAS?n8)sw zRG~t)(4pdF>i=ZgK=X;6DOEso&CjC8L;xJwmN))wMsl4pDm(419x4bAhU` z4ioojh~nV2CW?-5QNpCl)j}6a>9&yHQ>9Gk=DKvYwG6=vEUlj5g$B+<)wIwkvfNRF z700&p;~a?hbV9ZrM)6S*y@w*L9A znDOIV`BR68u+XRgkA*SdK!bwjVH3y5s(s(`vQF|37=^HAvmTa_tVk^ak4|(cw1M{ z;OtM>o(pRqbT6_!2NexRYPu?+0skQ7^8VEwWNno$Fk|FY2T`rmcn8t%sc{aX z8L0^lLkKX^+*we>doBeLk@2W8Xu~Xg*hA+`f1F|zv2Qa5(wFoPT6Dea%VAAK z(jeYjQ1loZStOH`Ff4Q{oGOHVvj!_cW~5d|(%J|$!PDk~N^)nHd0G_&p-I%MqZXU|e|_e2 zAF#k}5J8s}Fz^pDmfx~ef(_05S6q;^=~$x^3j7#+ZuD~dlJvzZYR;`ip1V_?X?{v? zlV(KWPfDJlc?dYuB6C5TN_3{8F7-!TU~h$V9Bt~RIv&GPg^-GcTSrvsrE>I^&5;=g z@#*v3HBz2fylNV*q#6$Jjch9r<<-t?Daa?b@|wJKY4ssf8gTOqD>NHJE)^iWdjkdm zcg0@%XEc(KCaShK=V6?cX!!}GHnGpXC*u&G{ip&Th)Nr6^AM3#@M5gG&EQMdzni6g z@!NZdIgKNmbMTRPcxfOdMGWI6-uDX=X(dI>#~Yz2Uqf*Q;S-ta7qU_<+sMvs4C5s} zpVLi+bH;QG#iUg6-A8=+nUXVr9uFb8gVP`jf9}GjDH_#*E~$HNfx-J_k5r6?;S+J*ouWP zW^)wZzN}{R8Pa#ZUx5hRVy~dL(2Fb)zkpHRH`i`$_>EJ4n6z(&2?7HN{vC)vJZ0t< z+C=9I@Ux+OLqr|8zBh%`Q|h|hOiRxTBw>Pnxg_rf5bYUI!puhI!4#4pk-xzAkI4c9_KFl zA1`D_srQlc(7%)55A`$SI{-cVA5zHte+|O??U>MOe&sDRRmSjhlKV+8?}sYH-;QAm z*K`?h<~9m465QUG(MH2KW8OkfX?h*g{~@;Kr~F3}GeIFxw$f?s2Q!=m3SZF3Kec%K z{|b!#kCORcBEU&6sXXr48=zo8k=K40CydxXL%7~=K7^{pD29JpgU5RIkDOa*JO^NF z>?4&J1LY{dy&)qWHzvrtYuIt^BlU6YBbiMx0Rh|Ae4Z_vHyQ&G&(=E!EswYd-Q#$+ z09hpRDTfy7F)lcmoqq0FnWlk*zQLL;`tS9#2qk98Z4?PJy!y@Q@Eli^B?%9nHf8Pc zkbM@!tU+XyQ25pajS(!fguic^+;tY>v{G(N#~x}4#B41Zk>Ef<(XqcPeX>H>V}5c{ z%o7R_fGqV_1syEYuj^yB!WP%;{q>-Q#Fm0_29P_bo5@o9gY*+9K2q!L~o zr>244p=v9XU^e>OlUJ%k3eLfrrTO}!#BEYG1jMz|?B)??9Y|=q3^;7+dXB$}O9la; zblraucu8@VdI(@6@V6{pnuMYO*s{#Hr@yU*e;d8UZ#5C~Tij$S^*C?uxws7k1vr1r zJ_f>+{(&j|8%7sU`m8ib@aKElS;v;h5QQ|(+wJRnK|p96fHRSs5z}2LV&_2pu7KG_)xlSk|!*&vg97EcB%Y6dJrkM&|{4t3M?7v@WhB_w*BdQQ4xm z2DD%|fh@%*nhkRSeV4C2(p$zeB|Drm#*8;7i+YaAabqg_>5zcigr(pn%~AmM;k1$L zruV&RwX+M0^MZ1#UO((IUTsy8gi_3-TRSP2la?`DUI6W&*4o=glA7fTaC-}F-SaK;zQ*Y8hzf&jgv-=aw5j9xI_)EVyw-o$XlKHai3 zOg~?boE+~MnLnz%ZC};U#p2H=jKmy+8v3wR5(a`lD@(yW_Bd55pOTYa$xu^}PK(f; zrK_Qi0Hy#`P|ZR1Y9b8&T1L5A`%~S|Y1#8wp5c~=^gD=}*b4&!z5<&CMhj5KdFf-q zHQDkrS|DL|%j9WOCn&RQ>xG$9z)o6xGZx}#2>z(3s7oi^>5HN%;)K-RKn@KRY4s#E z)t``5z>qv=sZOZ!1Y-W?agSZ4(i#yuKhq@vnCPdY0u(R<)MMM zH0d91^ciJS{*8xzJI~Q>Q^(LWt6bmhoZ-YU z0)esBVSgvmsw@X4=_dtkYARhtfcU)oA?8kN4Rsjg(V^3Km7^l&qTp}u-fdz>MF>;E zJn?}#e2~z8tT-ZnAmiFC=eLM;VnqV>@gI_;6R^?Z3Q9`#vSfK>RWQ+c4*8C_{$Y6Z zH7H@!$gH^jz?(3@!~GnLX9)_oB7S4=-D_vk983@g*tOU=Au4oq9v!Yf*H`e~D)(AS zUc~6#*EucrfPpy7r|0`UOpX9fX6R@kM5k&SCR-5ER&nOsS!hF+ObMRB24OOoeFN-< zV*C}dy(>7j?HcOxO3jiig{0LWC#AMI?xP|FEiwt**UdY| zSv_Ick&cS=C#29ve5STn@0;`TvS8?_HX{>0FJVqdsVAYCU(SwP!r(N*;3p+cS}G?e z{)-bQn`e_B4>grjoHbRU#3zvXocTed!LV$$=;1mW1%O$h1A09q;|iHD4~qy74NZ*} zkkXPy@ZXd~Me&i<0irHAI7gyI-(Z0U4{EA6CBQ!Q6Dg!#RIbSv1 zL-3D!qzcr%L9Tkt&J^xf;#-87cO7Xx#3+?o1GdY^RfA_0p8>ysw@BKv+f*p%Tzxov ze#QRu*LjClGR)5khF_GSsl*OQ!DNJBxH4AdL010zp(`#d%Yppo7G^?He2dZ|bC~#T z+(&!{MX76ZLBnBEfdcxN<=&ULMFGrfP#(y?9?PcahbrJa(fdI;4f>!4w$z+)i)*lf z%)7otX5*H+JTde<#bv{wPFiiqhfT4~C_(@+aaK*Nf^eZ3YP507JshXQ2TEtWF`BXR z1jRUIg2ScQ0*9gQ{52s!p(a24IvC>pUj#gM8xNC6Vfp_>fbs~62Lor^kv-cBOiW&u zyfoN+EPgR_L4>%JxKvtP7~mT8c;KLvAQjr2uOSSOFw{v9^?R0_PFUC|+RjyK0T zY;qtOvn0CD3CN0Q$1(oOY#c*=KWY9Ksfv3fzpQ{PS{z88Wnn!$9({yS z>feT}!~fxv3`F?LkdhQ|ARnpK%pf*5{^<0%HBl!mU_0@2OVJ@Z!8ui!09}%}8)v?g zmd>u{M8_Mmypvo^2ymH_u=2}#|JLbQMN%9pv(#Spi7}%$E-tcxGUIx4h6x}YRYF*`wI18!cTHoJIJ2_ zI(Tu4KDfwP2~0;r&oRg*nQrt#?OsePnC46&zRF=_LT zx@euzC%=GHYS^9=(AP(uEJ7-RPFQMr)2A)RIhy*SoBLO(3fO!y6 z8ai6e`}x&Un^!}2=9I7qW*P$lUO${~9q(5M0vrYmR_UOg$dpG%-fhil#fjlGt$pF` zac~d;*5y3)zskAL01wX9BgKai8d?hCSB9vN!mO8@W6yOfq*ppoJPgh3PPW-nw5!%y zUw$4iJn%SbCl=FNBMxw)P~l=969=y=nRao#>vxm1Jp$Z*VALN>U0e9 zO>kjh1y@S~A$hBuGw$tH2(h6>LUKC>mKQU~xZb|3Hvyv!%t~&yH#T1$b>j&@9Ijk# z2`OJQ-u{_+tZpRBClF6@Yjs5FVGX{I$>c^4j9BMzRx+|QFaSR6BK88)!BjS0QWV0c^y)cS9^KnrZ()RgM-x$?T zV+c@z7g`LDf6}u;p3b@lWO8`@j;f&CA3fJ^HOLGPGUwGZaG0QcU=qdhC4m*2 zpfgFh1<3)Qf~6U_7;5_ECz~cGcIN{n$r(xcwlD59mmrEu@KSH;R zN2p==V4^WIF5!}{Hj4BrAYTx_ghdaL8kMs)NSz=9w@MzziORz#Sku6t$3rnXr?LwY z%-#YNIFgp>Sz^?@)=(2JMBlbjbH_*zuuU|A;;ndG3rnCdOi#?mwrmzKoI;-{f+=>5 zp4!jCnEIyQy%U)vJxFqg@Dn!LHYquF(XWi1CgEsy12DT!IoK_O7B~&*eH1LBCpT_` z?VtT5;IrHM&|Do65TJ`mFs_~Kh`$nQU-&)4XA{eORVUT? zU>oOoMK?tb8UTaiA|eS+!t*ivZ1nN)MxfRDmA-*el$N&bM<1>O{Qx*ik@q1V(M$Ja zh%rs{GqOYg+DUYN~3{jY`F0{&QzyE zR(e6oTT^0Kq}WOCM+fJ&C=Nc=7bOwup0I4W z#vZOLcxhs4j#_u)+zcN1_YPoXW8>OtU9LxcI;L56Im2gXdmD>`NEf&FrK3#xABtF< zPm2kb?p(B39ZYBoxx*$%gK^vOhOWi~2tsoptESPg9}vi&TUk1}3n(pBg)fSu!xqM} zsVwT~Ewb&T<`6B$df~nsy*smfG`IEYPxa;s*vZ0&zs}xKqDqBVP2e$m@WpLe-lYh( z=>&WtV z?f4skC$muK02qW53DtKsp4Ucc76~b`cyv+v0@=C8LBVWBVPt8I<+C++?0eOh$H&P` zOUsH3cE}sO+SM!7g-)uyxt3xvx@Yu9pUMR(sW`AhM!0z>O%yesUFj`CarUTIn z`{s!He*By1-RFho*TwT!`yB6Pkg>$R9p9JBR{dTbKV+$)i`v|`+x_(mdx4MpP%5!D z1gKD{O%SiJK)zFuO9gpa{U!?B28w)etbKBqK_cf<5lF^>$DqpoYgrP1F+aow0*Bmj zBkiy@7LPKT=8J}K$dBSMVr~4;#ZwMSuhte_tNBV?7D9JN49Q=2~J* z4(0@-h;-xW%D1`vB8Ne_rdkn`jxS1Wu%sDSc75S~di82^WKv_c)SF+#+)Afb@JEB; zOIS$JAMl4fNPaP9TG4JLG&>5L*v6Nailp^<1;=f~Es&ceUc2g^LJoTx?#KlQ?0c~) z6R(vNXb4oC)On`F1i$Zxb;QPNG$`_M z-w#XkvQmaB>B=7_o~sepzW1G5^RBbnE*p4;U)+Y1@-}qr{d6)$&L-Cj=PmdTBbf^P z>3XfcCq-$5dvxUF&tZ7GFJK^&GYcrmHrt@ zbkTrp_RC?qe2OHETqCX}RU<0uVHvX=Jv0F=F8FP8+ z+|QMrW<0|EABTM;WeVO-^*b##{R{I} zmyn}Bma7w=mu!lvHq@Pf%1gt6DB=EomkH zRE<0xN8Ynw|I)%N?qNjR?8aUp~vK z%5-xKmg4inzRY>=izFD<3><*2cU#nDJu2)--m5?FZr))+ys|;}ir_nAX+ze=^@A-} zCBc{k2bD35wjKZ*qJq1LVIoMzwDXgW&Cm3%#Wa;9HIRlh8gP&=Z#RM>zspB>QmOW5 zZDbBrWiNMG3^X_m_gI5khNrea>{g|h-Sc2Rt=S~X22XweqDjr1W*+v0f>UO+tzy^U z$7c^%@2K2!2IJ(YT3y*|`{?aPUD-J*S5VIPNeJEboL8lFMAjB$u$AAR%2g=xlxrkbqQuf}Tp&b3ERNRFtX|r-iv0P5 z)JkFGw4m`hg%rh_=jV=1Rdx_5U08Dn$rAkYw=PL#;}RbfJwW%+q$Ee&vuPSHC<2i* zEY~~?Kyv@Yh(AswJZC7-R!y28shn+D0w&f|(<#av(Q;@6Y{PM`; zM6zLRj>X!RX9Xv8PY8!iJ=Hiy(`hV#Xm^fPQ2I`>#>LUDy zuD`3p{zu(krD3CI>w)<>GSqIjJV}#9g{e7pzQz+O*!mX-lFGQ*mat;94jIYqo&sfX z9M)}ukDt!AzDSjA!j!S|WhE8Key0u(j-2P_Yrb~L#4V0ZbmGkCphYj&g`fMa+D$BO z!$pNjaoU+n?W@Nbkm*&^h*Ktmcr+M|b6gv)jm+mVJKh(bdr3N}l<~#M?hS2m4(?0tq^-{l=JRn>taAxkDe*>e(auk8#!{XOZ94*`UpxvT}Ps z!A3yg*#8jzN3w#Gy@T^#t(qNIZx_gnF7~x&;BJ4MB@e;^JxmgW#(G&=m%!bR!iH=^ zG`iy5OOBVrc=T(H%k?rJzTi=iok7(cE!8|FIgCmrUw%kdS1$)U*%)sPuYe^aPkSK6 zC@Hs#+m7RC^&%7_BKaNRQTp`l>1LPtR12A;9hWE6(V!mQc(&klpUX}pChZm@YLc-d zHf5D=myFLCEZGlC;HpxmS5+>@3{%A~7tRZFtn1gOGHGh;w)?u8x$=t5484vh#7%&g zEAQa#n#1tw?cuNw#IA@7@&|)o{M#&E>E@^RDxYcMV*;z^A)oE*n5wi{f)A*0EtRlTS~3L`+S8W(o zSovmlR<>h=9GSxl{390m{3#a=p zk@=!wG7(cGY=rhSMyzzRm|4DVabhYLXGmtSB5pa%Du=cC;bUfdFJxv$!V0_&IYzRW`P)cxa#$1JWtLapry&|gb z&7Z9-xDE5$8x$ZSM@z_Ck3i}mtHvvJmF7xb=rvQdNf!InzjhRNbA6SctUofLp&ypP z*bruIDY#@y(`t#CV~GFt={w1tlcYj=Ar>Wd=FB3woFq<`XJ5MfH?G*YY(xW&q{wng zT9b76JNo4>WLk2JicvJ=82z7K6o&=;H>}=kfh%w=DDKY=GsobRe$$VzN>m$`Uj)$& z3!ifH?g*F}l~BxyifL@w5^G<)+j|J7=iF|r->thBoG=YTQP!JB59j;_aJ%Syh(uof zZZ^7b_-WKhS$`5e97E`j2j49vVMH~1CsdK#yQ`8~(<9}+`Y-@%-95K=-F+jgCmP*- z^JNFRUsqjsc>S5nt@XE_totqJSst$w zyMoaI{lU3AR4-U&cyLp9;fJQ4NxSA62kuJgOAJmIkki)ofjtmwFbnvJg2p8ytqz-Z zshv;sQ332@A?&Hza9BL}7=D3PdmWBvFwE#k@bp914ozT1CdmLmGs73@2!*&TemV>?ZV-^ zPRX9wJaN6S^EoZk^mV};Q>?E3xN~pAn~tXkzOpk<70vQV5>Q#{c2w_o)~PEyQ>OLk z2hR1LR{dA?+l+m>G6CO|p1E!75=_taDZZe3%j>GelO};Ry+@z8SH&FNvfX&X`R1cN z+$Vb`AN%~he@?bE*&m#LWVLvg!S;qpfy(#lRQWYEo1aMS`Z(=i>v_8? zt&>W^*S_FgciyieL%n6|)ahCaYoiWj*=7B^c_;Z^&b_REA7|#svt%VgUZ^9;{E;bQUW@;2&hQt9w* zN@u(9enFK>e2Lb5bG6S7ht%|0X8h)!7s)QX?WthHb=8J7GdZLA=5;E^vAme|w6DW= zqw)O2eGC)!{H%PnzJz<8@A5?#yDQ>enlr`R6X^YSSF$(mUeiZ^rZ;>pza6%1{jryU zTl`Y6d{BeI%>$QjR-8|EJufT&VM~VqQY#8Ri%4Nl)5)PwQUdjel~fKYr@O?P-UfP2rsO_O9}r_H({x)(hWm zUy_#AD>KzL^V5_$yO*8YQ+@4C)1m4$N4HJ7WK>;Q>ihPQ>W`|satEW|e_lW3iAQkp z=~vg<Hyi@El zVsEgtskSIrMTs9a3vQhF;c-#v;V!Y4v8&tq&qq(5lz4MPW%c(7oIlSME5AD8ymF>+ z`Zr%IfA3(e-CGac`X8Li+^YJ@itnXNo`rIH%g=(RUVJ4R_?I=YNo6c(#7g`(?)Y}d zKERuiNrV|RJkG&zex`ZE+MuNqrvh83r+{N_pl$~YGyugI7^0nlgTbkJCGjDZ1*yfc zpw=0>0hMar4nKfO?*Ye=xna72bOYltpb?NZKDcR*uCb$yJ2(@lj+aC?2YsFtVNP^0%p9ai6m;$A6E6tup5;*O zXwxw0CZJD5AWW#PfSQ0ZErG5debgACpRXFKAAJlN-3avlH^K<^Cak@2bOX>kx(EaA zqZoj#+ly`%dfyRY){SO##~^x==%%1|wGgJfZ-IsiO2-RbKYDu*p}(sGDT|@D4g?Y! literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideLongIndex.java b/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideLongIndex.java deleted file mode 100644 index 37321b8b8..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideLongIndex.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.twitter.search.core.earlybird.index.column; - -import java.io.IOException; - -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.index.DocIDToTweetIDMapper; - -import it.unimi.dsi.fastutil.ints.Int2LongOpenHashMap; - -public class ColumnStrideLongIndex extends ColumnStrideFieldIndex implements Flushable { - private final Int2LongOpenHashMap values; - private final int maxSize; - - public ColumnStrideLongIndex(String name, int maxSize) { - super(name); - values = new Int2LongOpenHashMap(maxSize); // default unset value is 0 - this.maxSize = maxSize; - } - - private ColumnStrideLongIndex(String name, Int2LongOpenHashMap values, int maxSize) { - super(name); - this.values = values; - this.maxSize = maxSize; - } - - @Override - public void setValue(int docID, long value) { - values.put(docID, value); - } - - @Override - public long get(int docID) { - return values.get(docID); - } - - @Override - public ColumnStrideFieldIndex optimize( - DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) throws IOException { - return new OptimizedColumnStrideLongIndex(this, originalTweetIdMapper, optimizedTweetIdMapper); - } - - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - public static final class FlushHandler extends Flushable.Handler { - private static final String NAME_PROP_NAME = "fieldName"; - private static final String MAX_SIZE_PROP = "maxSize"; - - public FlushHandler() { - super(); - } - - public FlushHandler(ColumnStrideLongIndex objectToFlush) { - super(objectToFlush); - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - ColumnStrideLongIndex index = getObjectToFlush(); - flushInfo.addStringProperty(NAME_PROP_NAME, index.getName()); - flushInfo.addIntProperty(MAX_SIZE_PROP, index.maxSize); - - out.writeInt(index.values.size()); - for (Int2LongOpenHashMap.Entry entry : index.values.int2LongEntrySet()) { - out.writeInt(entry.getIntKey()); - out.writeLong(entry.getLongValue()); - } - } - - @Override - protected ColumnStrideLongIndex doLoad(FlushInfo flushInfo, DataDeserializer in) - throws IOException { - int size = in.readInt(); - int maxSize = flushInfo.getIntProperty(MAX_SIZE_PROP); - Int2LongOpenHashMap map = new Int2LongOpenHashMap(maxSize); - for (int i = 0; i < size; i++) { - map.put(in.readInt(), in.readLong()); - } - return new ColumnStrideLongIndex(flushInfo.getStringProperty(NAME_PROP_NAME), map, maxSize); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideMultiIntIndex.docx b/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideMultiIntIndex.docx new file mode 100644 index 0000000000000000000000000000000000000000..195caa1d9d33a6194f24a0007ef34d87ddc3dd9d GIT binary patch literal 37736 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideMultiIntIndex.java b/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideMultiIntIndex.java deleted file mode 100644 index ccbf99a29..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideMultiIntIndex.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.twitter.search.core.earlybird.index.column; - -import java.io.IOException; - -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.index.DocIDToTweetIDMapper; - -import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; - -public class ColumnStrideMultiIntIndex extends AbstractColumnStrideMultiIntIndex { - private final Int2IntOpenHashMap[] values; - private final int maxSize; - - public ColumnStrideMultiIntIndex(String name, int maxSize, int numIntsPerField) { - super(name, numIntsPerField); - values = new Int2IntOpenHashMap[numIntsPerField]; - for (int i = 0; i < numIntsPerField; i++) { - values[i] = new Int2IntOpenHashMap(maxSize); // default unset value is 0 - } - this.maxSize = maxSize; - } - - public ColumnStrideMultiIntIndex(String name, Int2IntOpenHashMap[] values, int maxSize) { - super(name, values.length); - this.values = values; - this.maxSize = maxSize; - } - - @Override - public void setValue(int docID, int valueIndex, int value) { - values[valueIndex].put(docID, value); - } - - @Override - public int get(int docID, int valueIndex) { - return values[valueIndex].get(docID); - } - - @Override - public ColumnStrideFieldIndex optimize( - DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) throws IOException { - return new OptimizedColumnStrideMultiIntIndex( - this, originalTweetIdMapper, optimizedTweetIdMapper); - } - - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - public static final class FlushHandler extends Flushable.Handler { - private static final String NAME_PROP_NAME = "fieldName"; - private static final String MAX_SIZE_PROP = "maxSize"; - - public FlushHandler() { - super(); - } - - public FlushHandler(ColumnStrideMultiIntIndex objectToFlush) { - super(objectToFlush); - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - ColumnStrideMultiIntIndex index = getObjectToFlush(); - flushInfo.addStringProperty(NAME_PROP_NAME, index.getName()); - flushInfo.addIntProperty(MAX_SIZE_PROP, index.maxSize); - - out.writeInt(index.values.length); - for (int i = 0; i < index.values.length; i++) { - Int2IntOpenHashMap map = index.values[i]; - out.writeInt(map.size()); - for (Int2IntOpenHashMap.Entry entry : map.int2IntEntrySet()) { - out.writeInt(entry.getIntKey()); - out.writeInt(entry.getIntValue()); - } - } - } - - @Override - protected ColumnStrideMultiIntIndex doLoad(FlushInfo flushInfo, DataDeserializer in) - throws IOException { - int numIntsPerField = in.readInt(); - int maxSize = flushInfo.getIntProperty(MAX_SIZE_PROP); - Int2IntOpenHashMap[] values = new Int2IntOpenHashMap[numIntsPerField]; - for (int i = 0; i < numIntsPerField; i++) { - int size = in.readInt(); - Int2IntOpenHashMap map = new Int2IntOpenHashMap(maxSize); - for (int j = 0; j < size; j++) { - map.put(in.readInt(), in.readInt()); - } - values[i] = map; - } - return new ColumnStrideMultiIntIndex( - flushInfo.getStringProperty(NAME_PROP_NAME), values, maxSize); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/column/ConstantColumnStrideFieldIndex.docx b/src/java/com/twitter/search/core/earlybird/index/column/ConstantColumnStrideFieldIndex.docx new file mode 100644 index 0000000000000000000000000000000000000000..d1d3235aa7ba31780d0a654af17fb923d83a9af8 GIT binary patch literal 36895 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 Ov4O0C;bD~W{ntN-UPR#l literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/column/DocValuesManager.java b/src/java/com/twitter/search/core/earlybird/index/column/DocValuesManager.java deleted file mode 100644 index 2e1e61b4b..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/column/DocValuesManager.java +++ /dev/null @@ -1,248 +0,0 @@ -package com.twitter.search.core.earlybird.index.column; - -import java.io.IOException; -import java.util.Iterator; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import com.google.common.base.Preconditions; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - -import com.twitter.search.common.schema.base.EarlybirdFieldType; -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.index.DocIDToTweetIDMapper; - -public abstract class DocValuesManager implements Flushable { - protected final Schema schema; - protected final int segmentSize; - protected final ConcurrentHashMap columnStrideFields; - - public DocValuesManager(Schema schema, int segmentSize) { - this(schema, segmentSize, new ConcurrentHashMap<>()); - } - - protected DocValuesManager(Schema schema, - int segmentSize, - ConcurrentHashMap columnStrideFields) { - this.schema = Preconditions.checkNotNull(schema); - this.segmentSize = segmentSize; - this.columnStrideFields = columnStrideFields; - } - - protected abstract ColumnStrideFieldIndex newByteCSF(String field); - protected abstract ColumnStrideFieldIndex newIntCSF(String field); - protected abstract ColumnStrideFieldIndex newLongCSF(String field); - protected abstract ColumnStrideFieldIndex newMultiIntCSF(String field, int numIntsPerField); - - /** - * Optimize this doc values manager, and return a doc values manager a more compact and fast - * encoding for doc values (but that we can't add new doc IDs to). - */ - public abstract DocValuesManager optimize( - DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) throws IOException; - - public Set getDocValueNames() { - return columnStrideFields.keySet(); - } - - /** - * Creates a new {@link ColumnStrideFieldIndex} for the given field and returns it. - */ - public ColumnStrideFieldIndex addColumnStrideField(String field, EarlybirdFieldType fieldType) { - // For CSF view fields, we will perform the same check on the base field when we try to create - // a ColumnStrideFieldIndex for them in newIntViewCSF(). - if (!fieldType.isCsfViewField()) { - Preconditions.checkState( - fieldType.isCsfLoadIntoRam(), "Field %s is not loaded in RAM", field); - } - - if (columnStrideFields.containsKey(field)) { - return columnStrideFields.get(field); - } - - final ColumnStrideFieldIndex index; - switch (fieldType.getCsfType()) { - case BYTE: - index = newByteCSF(field); - break; - case INT: - if (fieldType.getCsfFixedLengthNumValuesPerDoc() > 1) { - index = newMultiIntCSF(field, fieldType.getCsfFixedLengthNumValuesPerDoc()); - } else if (fieldType.isCsfViewField()) { - index = newIntViewCSF(field); - } else { - index = newIntCSF(field); - } - break; - case LONG: - index = newLongCSF(field); - break; - default: - throw new RuntimeException("Invalid CsfType."); - } - - columnStrideFields.put(field, index); - return index; - } - - protected ColumnStrideFieldIndex newIntViewCSF(String field) { - Schema.FieldInfo info = Preconditions.checkNotNull(schema.getFieldInfo(field)); - Schema.FieldInfo baseFieldInfo = Preconditions.checkNotNull( - schema.getFieldInfo(info.getFieldType().getCsfViewBaseFieldId())); - - Preconditions.checkState( - baseFieldInfo.getFieldType().isCsfLoadIntoRam(), - "Field %s has a base field (%s) that is not loaded in RAM", - field, baseFieldInfo.getName()); - - // We might not have a CSF for the base field yet. - ColumnStrideFieldIndex baseFieldIndex = - addColumnStrideField(baseFieldInfo.getName(), baseFieldInfo.getFieldType()); - Preconditions.checkNotNull(baseFieldIndex); - Preconditions.checkState(baseFieldIndex instanceof AbstractColumnStrideMultiIntIndex); - return new ColumnStrideIntViewIndex(info, (AbstractColumnStrideMultiIntIndex) baseFieldIndex); - } - - /** - * Returns the ColumnStrideFieldIndex instance for the given field. - */ - public ColumnStrideFieldIndex getColumnStrideFieldIndex(String field) { - ColumnStrideFieldIndex docValues = columnStrideFields.get(field); - if (docValues == null) { - Schema.FieldInfo info = schema.getFieldInfo(field); - if (info != null && info.getFieldType().isCsfDefaultValueSet()) { - return new ConstantColumnStrideFieldIndex(field, info.getFieldType().getCsfDefaultValue()); - } - } - - return docValues; - } - - private static final String CSF_INDEX_CLASS_NAME_PROP_NAME = "csfIndexClassName"; - private static final String CSF_PROP_NAME = "column_stride_fields"; - protected static final String MAX_SEGMENT_SIZE_PROP_NAME = "maxSegmentSize"; - - private static Map> getIntViewFields(Schema schema) { - Map> intViewFields = Maps.newHashMap(); - for (Schema.FieldInfo fieldInfo : schema.getFieldInfos()) { - if (fieldInfo.getFieldType().isCsfViewField()) { - Schema.FieldInfo baseFieldInfo = Preconditions.checkNotNull( - schema.getFieldInfo(fieldInfo.getFieldType().getCsfViewBaseFieldId())); - String baseFieldName = baseFieldInfo.getName(); - Set intViewFieldsForBaseField = - intViewFields.computeIfAbsent(baseFieldName, k -> Sets.newHashSet()); - intViewFieldsForBaseField.add(fieldInfo); - } - } - return intViewFields; - } - - public abstract static class FlushHandler extends Handler { - private final Schema schema; - - public FlushHandler(Schema schema) { - this.schema = schema; - } - - public FlushHandler(DocValuesManager docValuesManager) { - super(docValuesManager); - this.schema = docValuesManager.schema; - } - - @Override - public void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - long startTime = getClock().nowMillis(); - - DocValuesManager docValuesManager = getObjectToFlush(); - flushInfo.addIntProperty(MAX_SEGMENT_SIZE_PROP_NAME, docValuesManager.segmentSize); - long sizeBeforeFlush = out.length(); - FlushInfo csfProps = flushInfo.newSubProperties(CSF_PROP_NAME); - for (ColumnStrideFieldIndex csf : docValuesManager.columnStrideFields.values()) { - if (!(csf instanceof ColumnStrideIntViewIndex)) { - Preconditions.checkState( - csf instanceof Flushable, - "Cannot flush column stride field {} of type {}", - csf.getName(), csf.getClass().getCanonicalName()); - FlushInfo info = csfProps.newSubProperties(csf.getName()); - info.addStringProperty(CSF_INDEX_CLASS_NAME_PROP_NAME, csf.getClass().getCanonicalName()); - ((Flushable) csf).getFlushHandler().flush(info, out); - } - } - csfProps.setSizeInBytes(out.length() - sizeBeforeFlush); - getFlushTimerStats().timerIncrement(getClock().nowMillis() - startTime); - } - - @Override - public DocValuesManager doLoad(FlushInfo flushInfo, DataDeserializer in) - throws IOException { - long startTime = getClock().nowMillis(); - Map> intViewFields = getIntViewFields(schema); - - FlushInfo csfProps = flushInfo.getSubProperties(CSF_PROP_NAME); - ConcurrentHashMap columnStrideFields = - new ConcurrentHashMap<>(); - - Iterator csfPropIter = csfProps.getKeyIterator(); - while (csfPropIter.hasNext()) { - String fieldName = csfPropIter.next(); - try { - FlushInfo info = csfProps.getSubProperties(fieldName); - String className = info.getStringProperty(CSF_INDEX_CLASS_NAME_PROP_NAME); - Class fieldIndexType = - (Class) Class.forName(className); - Preconditions.checkNotNull( - fieldIndexType, - "Invalid field configuration: field " + fieldName + " not found in config."); - - for (Class c : fieldIndexType.getDeclaredClasses()) { - if (Handler.class.isAssignableFrom(c)) { - @SuppressWarnings("rawtypes") - Handler handler = (Handler) c.newInstance(); - ColumnStrideFieldIndex index = (ColumnStrideFieldIndex) handler.load( - csfProps.getSubProperties(fieldName), in); - columnStrideFields.put(fieldName, index); - - // If this is a base field, create ColumnStrideIntViewIndex instances for all the - // view fields based on it. - if (index instanceof AbstractColumnStrideMultiIntIndex) { - AbstractColumnStrideMultiIntIndex multiIntIndex = - (AbstractColumnStrideMultiIntIndex) index; - - // We should have AbstractColumnStrideMultiIntIndex instances only for base fields - // and all our base fields have views defined on top of them. - for (Schema.FieldInfo intViewFieldInfo : intViewFields.get(fieldName)) { - columnStrideFields.put( - intViewFieldInfo.getName(), - new ColumnStrideIntViewIndex(intViewFieldInfo, multiIntIndex)); - } - } - - break; - } - } - } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) { - throw new IOException( - "Invalid field configuration for column stride field: " + fieldName, e); - } - } - getLoadTimerStats().timerIncrement(getClock().nowMillis() - startTime); - - return createDocValuesManager( - schema, - flushInfo.getIntProperty(MAX_SEGMENT_SIZE_PROP_NAME), - columnStrideFields); - } - - protected abstract DocValuesManager createDocValuesManager( - Schema docValuesSchema, - int maxSegmentSize, - ConcurrentHashMap columnStrideFields); - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/column/DocValuesUpdate.docx b/src/java/com/twitter/search/core/earlybird/index/column/DocValuesUpdate.docx new file mode 100644 index 0000000000000000000000000000000000000000..0578942903ebb17947a9696ca9a2ed7da4c7a986 GIT binary patch literal 36796 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�GN_9AF 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 fMCdo}K+0mMt-}CsR$vYS { - private static final String NAME_PROP_NAME = "fieldName"; - - public FlushHandler() { - super(); - } - - public FlushHandler(OptimizedColumnStrideByteIndex objectToFlush) { - super(objectToFlush); - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - OptimizedColumnStrideByteIndex columnStrideByteIndex = getObjectToFlush(); - flushInfo.addStringProperty(NAME_PROP_NAME, columnStrideByteIndex.getName()); - out.writeByteArray(columnStrideByteIndex.values); - } - - @Override - protected OptimizedColumnStrideByteIndex doLoad(FlushInfo flushInfo, DataDeserializer in) - throws IOException { - byte[] values = in.readByteArray(); - return new OptimizedColumnStrideByteIndex( - flushInfo.getStringProperty(NAME_PROP_NAME), values); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideIntIndex.docx b/src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideIntIndex.docx new file mode 100644 index 0000000000000000000000000000000000000000..8816900376bcc832fed806b09b386787fbd57f96 GIT binary patch literal 37527 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 ZhT1v|@MZ<(AW*InWJm;N4~0Gu4*&<7CoKQ~ literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideIntIndex.java b/src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideIntIndex.java deleted file mode 100644 index 725b54746..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideIntIndex.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.twitter.search.core.earlybird.index.column; - -import java.io.IOException; - -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.index.DocIDToTweetIDMapper; - -public class OptimizedColumnStrideIntIndex extends ColumnStrideFieldIndex implements Flushable { - private final int[] values; - - public OptimizedColumnStrideIntIndex(String name, int maxSize) { - super(name); - values = new int[maxSize]; - } - - public OptimizedColumnStrideIntIndex( - ColumnStrideIntIndex columnStrideIntIndex, - DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) throws IOException { - super(columnStrideIntIndex.getName()); - int maxDocId = optimizedTweetIdMapper.getPreviousDocID(Integer.MAX_VALUE); - values = new int[maxDocId + 1]; - - int docId = optimizedTweetIdMapper.getNextDocID(Integer.MIN_VALUE); - while (docId != DocIDToTweetIDMapper.ID_NOT_FOUND) { - int originalDocId = originalTweetIdMapper.getDocID(optimizedTweetIdMapper.getTweetID(docId)); - setValue(docId, columnStrideIntIndex.get(originalDocId)); - docId = optimizedTweetIdMapper.getNextDocID(docId); - } - } - - private OptimizedColumnStrideIntIndex(String name, int[] values) { - super(name); - this.values = values; - } - - @Override - public void setValue(int docID, long value) { - this.values[docID] = (int) value; - } - - @Override - public long get(int docID) { - return values[docID]; - } - - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - public static final class FlushHandler extends Flushable.Handler { - private static final String NAME_PROP_NAME = "fieldName"; - - public FlushHandler() { - super(); - } - - public FlushHandler(OptimizedColumnStrideIntIndex objectToFlush) { - super(objectToFlush); - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - OptimizedColumnStrideIntIndex columnStrideIntIndex = getObjectToFlush(); - flushInfo.addStringProperty(NAME_PROP_NAME, columnStrideIntIndex.getName()); - out.writeIntArray(columnStrideIntIndex.values); - } - - @Override - protected OptimizedColumnStrideIntIndex doLoad(FlushInfo flushInfo, DataDeserializer in) - throws IOException { - int[] values = in.readIntArray(); - return new OptimizedColumnStrideIntIndex( - flushInfo.getStringProperty(NAME_PROP_NAME), values); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideLongIndex.docx b/src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideLongIndex.docx new file mode 100644 index 0000000000000000000000000000000000000000..611a54690e5731ffcd240f6203d0a604157485da GIT binary patch literal 37524 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 Xbr|5y3d}*ETqVem2+SU`eIOnHNS-M# literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideLongIndex.java b/src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideLongIndex.java deleted file mode 100644 index df74a7e4e..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideLongIndex.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.twitter.search.core.earlybird.index.column; - -import java.io.IOException; - -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.index.DocIDToTweetIDMapper; - -public class OptimizedColumnStrideLongIndex extends ColumnStrideFieldIndex implements Flushable { - private final long[] values; - - public OptimizedColumnStrideLongIndex(String name, int maxSize) { - super(name); - values = new long[maxSize]; - } - - public OptimizedColumnStrideLongIndex( - ColumnStrideLongIndex columnStrideLongIndex, - DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) throws IOException { - super(columnStrideLongIndex.getName()); - int maxDocId = optimizedTweetIdMapper.getPreviousDocID(Integer.MAX_VALUE); - values = new long[maxDocId + 1]; - - int docId = optimizedTweetIdMapper.getNextDocID(Integer.MIN_VALUE); - while (docId != DocIDToTweetIDMapper.ID_NOT_FOUND) { - int originalDocId = originalTweetIdMapper.getDocID(optimizedTweetIdMapper.getTweetID(docId)); - setValue(docId, columnStrideLongIndex.get(originalDocId)); - docId = optimizedTweetIdMapper.getNextDocID(docId); - } - } - - private OptimizedColumnStrideLongIndex(String name, long[] values) { - super(name); - this.values = values; - } - - @Override - public void setValue(int docID, long value) { - this.values[docID] = value; - } - - @Override - public long get(int docID) { - return values[docID]; - } - - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - public static final class FlushHandler extends Flushable.Handler { - private static final String NAME_PROP_NAME = "fieldName"; - - public FlushHandler() { - super(); - } - - public FlushHandler(OptimizedColumnStrideLongIndex objectToFlush) { - super(objectToFlush); - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - OptimizedColumnStrideLongIndex columnStrideLongIndex = getObjectToFlush(); - flushInfo.addStringProperty(NAME_PROP_NAME, columnStrideLongIndex.getName()); - out.writeLongArray(columnStrideLongIndex.values); - } - - @Override - protected OptimizedColumnStrideLongIndex doLoad(FlushInfo flushInfo, DataDeserializer in) - throws IOException { - long[] values = in.readLongArray(); - return new OptimizedColumnStrideLongIndex( - flushInfo.getStringProperty(NAME_PROP_NAME), values); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideMultiIntIndex.docx b/src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideMultiIntIndex.docx new file mode 100644 index 0000000000000000000000000000000000000000..7de1cc56846d3a2e2de5bff8e9bfd78de8ace103 GIT binary patch literal 37685 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

    dvxUF&s-? zGFJK^&GYcrmHrt@bkTrp_RC?qe2OHsTqBMpWg{x;VHuMgJv0F=F8B=-c+|QMpA90|EABTM;Xq7%uyPfi2D3WgK({gL$^mhxigck6`VD z>eVO-^*b##{R{I}myn}BB$ zpCGSnR<&H#TGC4XsTz4Yj=X2VCfvd#?qNjJ?8;_L)9FHjyy2P+&P4XP1-#hxT#<(- zZ4zA5^}Wx;zkHTOmGR~nEXC)CeVOx~up}7f3><*AcU#nDJu2)--m5?FZr))+ys|;} z3jaGpX+ze=^@A;ECH|NMJEbv?# znTI{0V3!$ftJpR8@!A8{J1X~_!8q8fR#*1gK6<-RS9Xrd6_oRR5<+)9=T&JOk+lWr zZRPi;autd^Wm{EoA;qqH368<3bn^HQJ>Xa~iD(OZcxsVOW2ShK^;P|mJDra4mfQj|gbc!-Zv>e(IBK6A_ z5g{omFnn4pzdSNIk!)C-W45;CUcnCC6U1g!Pc@FwbV)xdr!hm^A!9V4gi0rkF`*)Z zC&(5vVhm}~ZitC*Ct1Dw~DIDqiy z{juOZa_~j45Oh`zvW2p_gr;koJ0!6@I3~^bINE^@GsY5xS`e7ILpj1}br|g1m;+W* zz~_qLfJhtl6fcTqHXI4YV@vYhbze1nECrMoh8id?!>elgoGtR;+BUdM6Q`i%_5Y!Z zf8uDl8>oj8sEgnqy8iAC`yX|GwT6wJtq11k$WXi8^2ALR6{hA?`5I5CVC%vT#FcTg zEn&r~6SX)t(TX#j zgBHD97k=rtYB#aC4Hp$6!ER?NwXYthN2XIvBTAVJ;?`g=&T(zHHZq^f?08>z?j`P| zRK^o0y*IQe!Xkj(u6NAn3dHZQ_8ViQY3f8Z<_djGt7nVoKgM2@oJD?DlT(!~?^F|b zTYUrj=YTeM%F68l1sef{WBo(;AIS<%_72W}jcRsWy2<~#@sv@l5! zYU^cbU3_;xavRbO(ddeIFF77|iaJp7iB-0gwnqa<7|Zaa>n)r(LJh-7yJN9ohIr<+~oQ!S*DcATD2M}vB}3bbfh?)Q|SKh(fHHYEV+rwcWh+PpEWDf?v__mq7*cwVFpnu(`ko@`|tF*Ye z&~R&DO(q!2r&ai=plzokxq}oHn|?7f$!Wk@=!wG7(e6tOWMdMl7_m7-3}r+%lY8+~+Gva*&+lQdc4J9G&uh zJ2MaIeqQW&u#D8c>48+^w6*3CGmtSB5pa%Du=cBTwA|l*Jxv#Jqkr83YzRQ^P)KlW z#$1JWtLapHennK@n?GAwa2w{cHz+_vj+T(O9)Z+BR*hHcD$SL=&}*h_lPvbDf9)vl z=KLx@S$||gO*brqz9GcYQgF$drqvQNM<4&|(|6)KCrO3$LQD#(%$Y?pIZ5m+&%Si| zZ=A7l*@y=0Ns;9gG$!frcXZ3bq*`(eic!>L=>4Bw6o>i!H>}=kfje+5$nVb%GsobR ze$$PxNK_k^Uj)$(3!QTD?C_fzm5|SgifL@w5@}z&+j|J5=iF|r->thBoG=bUQPi79 z59j;_aJlGwh(uofZZ^7b_-WKhQGXIW97Eub3*RjzVMIB5Cs>i(yQ`8~(<9}+`Y-@% z-95K=-F+jgCmP*-BfJCMudA**av1C-#t3DXjn4DE`*Tl!I5L|X7<`|}xtvy0-f#*s z*(}Z5{SV*w55y+IaHBA;#Bw$E==v9oTkpJ20G3lx%NH{+*7DqXbd?BTwj1pDmEvIY z_-ZOszF^(^d$i*Z`8i{ZFFVsbcg?z-zhQcyDD=CJs~w?^71=IM1v9+A>|l4^HmjPy z!qgzj)`UdsW^*U@eVh8dhOY0f?!ANmjpw8y#_gl$lbkp_F76&8G^m1}&QEvUTbJg$ zJpmqFI@ZMOcRSAmoA%neJY#c%8f=WEK0emV8mOo1(I=GS)xPVgIw1r)rok?pwLW-f zYlD1jC@TXI)+z4bb;^(Y?T=6YoUsbVR?NF0K|q3tKtM2oGZwIM_g~W#aODNOKJ5%G zZ5XT^OwF&YlOt=mYokxAN+Q6s|Z#hC|-Z& za%=sqC+mL8d6wJj#I9hpK!0%V4%G{m2_D?kUFe~yXVR{@#(}F+`VyVP1?04~eP9p7 z8q5NIqM&ifNUOu9U25kOT~q+uSO{CHHXJ559=czk)n13=84ME|l04z&M=j|za25oi zfb=D;WoU4{JgPKah03LdY z1Tb_EQ49=-(o_&7AbK7ra-hi2q!WTPIf{~m5<+j%s}RHkJz8Qp;6y-LJOz#}2uM^6 z9i(Z5%K`U5FysySBbm4Je!tD`%+A~I`)1z8lC`+!{Ywh5Y)-I>5yi~Y&b7^RPt4^D zVuC^~t4tX#G`*js+~bo?xE!J}lvHc;PU`Sr48aEqGO1FxQ@ zkm2V$lux2bX1wV-Z&uz>AI-*$HGJja$PjhE>?Cxg_#)*v!@afdnM-DZ>Xm$>OxzlR zo?U-T#*}_|{9;v{Fxu;~Ul(HN(i?3WL8v^DLi-teo$_b3W^!jZB>~FGd+q>oL@1)o zfn713z@@(LFt+wXG{l zG^9G~3SC8VCGpzgod z5d^))f|fGzIJIhg>J@ov2trUvDV!!%vzXZ!*@^6nO!c>@m=qv&{u=0}7*Uy#rCbhv?_~F-cqevcj_1&3qB#jO{z2^~iWzzFWVYkVB z(&S7m_e>>(Eu5k@q}FKaDdCar@`quIri-Mn04hppQc`z;nmS-aq6oGvNX}1x@F=MP z4!$b1D$&2HBNOpvV0PoJr$!WQKjY-{D*WfMzYNg5qBC&~MR!Y&_Ki)qDkV)kyi2Gz z2pS>{1$>siCU>MHbtaEAt5ah!HLE~T3tThxfbV1MQ}?*soKC64ys06YZ#kMHBW} z*ae1uRpm+@1S;NRcJL}*ZLpztFtF44qTs@Q1s*}4Rx5mEh@3hO+@W|w*4v{?u39=g_A|FLf4q`!g0Q80vt-VstVH~?rBbhwjJvcu&4DT*=M9wyEc!f^JUJB$md0O7`Kz* z!_h^qu8A@kx;K{6^PWHGsKxcq5}I)3l&aJo4IC!Gcy1K2f*p}J0+vNH^QJoKc7fd91Z~ z^C`2il!Z^e0nKq@Q?_MMNu4%nsg8q>Ft~5Ye5)OP^3yHnOLE|7y0MOlk(u)I%BG@IRL*B;xo@$4$1fN^l)g^9=C-o`;?7_b3ch+rD(0=Eq;WeG43&Kfg$Q`|NW&LM*p z;P{)V_=T`%G!7Pk16`)zQ21`aUSTiT1&$q=E~$v!F4jmAYypQ_OpAKt_N=f3USJ-) hA7t|FF}s!+>+aChhznRjo2yC~;s`8{`a7Ff{{vR`ej)$> literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideMultiIntIndex.java b/src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideMultiIntIndex.java deleted file mode 100644 index 82f233ad8..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/column/OptimizedColumnStrideMultiIntIndex.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.twitter.search.core.earlybird.index.column; - -import java.io.IOException; - -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.index.DocIDToTweetIDMapper; - -public class OptimizedColumnStrideMultiIntIndex - extends AbstractColumnStrideMultiIntIndex implements Flushable { - private final int[] values; - - public OptimizedColumnStrideMultiIntIndex(String name, int maxSize, int numIntsPerField) { - super(name, numIntsPerField); - values = new int[Math.multiplyExact(maxSize, numIntsPerField)]; - } - - public OptimizedColumnStrideMultiIntIndex( - ColumnStrideMultiIntIndex columnStrideMultiIntIndex, - DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) throws IOException { - super(columnStrideMultiIntIndex.getName(), columnStrideMultiIntIndex.getNumIntsPerField()); - int maxDocId = optimizedTweetIdMapper.getPreviousDocID(Integer.MAX_VALUE); - values = new int[columnStrideMultiIntIndex.getNumIntsPerField() * (maxDocId + 1)]; - - int docId = optimizedTweetIdMapper.getNextDocID(Integer.MIN_VALUE); - while (docId != DocIDToTweetIDMapper.ID_NOT_FOUND) { - int originalDocId = originalTweetIdMapper.getDocID(optimizedTweetIdMapper.getTweetID(docId)); - for (int i = 0; i < columnStrideMultiIntIndex.getNumIntsPerField(); ++i) { - setValue(docId, i, columnStrideMultiIntIndex.get(originalDocId, i)); - } - docId = optimizedTweetIdMapper.getNextDocID(docId); - } - } - - private OptimizedColumnStrideMultiIntIndex(String name, int numIntsPerField, int[] values) { - super(name, numIntsPerField); - this.values = values; - } - - @Override - public void setValue(int docID, int valueIndex, int value) { - values[docID * getNumIntsPerField() + valueIndex] = value; - } - - @Override - public int get(int docID, int valueIndex) { - return values[docID * getNumIntsPerField() + valueIndex]; - } - - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - public static final class FlushHandler - extends Flushable.Handler { - private static final String INTS_PER_FIELD_PROP_NAME = "intsPerField"; - private static final String NAME_PROP_NAME = "fieldName"; - - public FlushHandler() { - super(); - } - - public FlushHandler(OptimizedColumnStrideMultiIntIndex objectToFlush) { - super(objectToFlush); - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - OptimizedColumnStrideMultiIntIndex columnStrideMultiIntIndex = getObjectToFlush(); - flushInfo.addStringProperty(NAME_PROP_NAME, columnStrideMultiIntIndex.getName()); - flushInfo.addIntProperty(INTS_PER_FIELD_PROP_NAME, - columnStrideMultiIntIndex.getNumIntsPerField()); - out.writeIntArray(columnStrideMultiIntIndex.values); - } - - @Override - protected OptimizedColumnStrideMultiIntIndex doLoad(FlushInfo flushInfo, DataDeserializer in) - throws IOException { - int[] values = in.readIntArray(); - return new OptimizedColumnStrideMultiIntIndex( - flushInfo.getStringProperty(NAME_PROP_NAME), - flushInfo.getIntProperty(INTS_PER_FIELD_PROP_NAME), - values); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/column/OptimizedDocValuesManager.docx b/src/java/com/twitter/search/core/earlybird/index/column/OptimizedDocValuesManager.docx new file mode 100644 index 0000000000000000000000000000000000000000..6d7472211418bc0b46d46c13f24826c85d8bbabc GIT binary patch literal 37597 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/column/OptimizedDocValuesManager.java b/src/java/com/twitter/search/core/earlybird/index/column/OptimizedDocValuesManager.java deleted file mode 100644 index 2053d7ce5..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/column/OptimizedDocValuesManager.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.twitter.search.core.earlybird.index.column; - -import java.io.IOException; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import com.google.common.collect.Sets; - -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.core.earlybird.index.DocIDToTweetIDMapper; - -public class OptimizedDocValuesManager extends DocValuesManager { - public OptimizedDocValuesManager(Schema schema, int segmentSize) { - super(schema, segmentSize); - } - - public OptimizedDocValuesManager(DocValuesManager docValuesManager, - DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) throws IOException { - super(docValuesManager.schema, docValuesManager.segmentSize); - Set intViewIndexes = Sets.newHashSet(); - for (String fieldName : docValuesManager.columnStrideFields.keySet()) { - ColumnStrideFieldIndex originalColumnStrideField = - docValuesManager.columnStrideFields.get(fieldName); - if (originalColumnStrideField instanceof ColumnStrideIntViewIndex) { - intViewIndexes.add((ColumnStrideIntViewIndex) originalColumnStrideField); - } else { - ColumnStrideFieldIndex optimizedColumnStrideField = - originalColumnStrideField.optimize(originalTweetIdMapper, optimizedTweetIdMapper); - columnStrideFields.put(fieldName, optimizedColumnStrideField); - } - } - - // We have to process the ColumnStrideIntViewIndex instances after we process all other CSFs, - // because we need to make sure we've optimized the CSFs for the base fields. - for (ColumnStrideIntViewIndex intViewIndex : intViewIndexes) { - String fieldName = intViewIndex.getName(); - columnStrideFields.put(fieldName, newIntViewCSF(fieldName)); - } - } - - private OptimizedDocValuesManager( - Schema schema, - int segmentSize, - ConcurrentHashMap columnStrideFields) { - super(schema, segmentSize, columnStrideFields); - } - - @Override - protected ColumnStrideFieldIndex newByteCSF(String field) { - return new OptimizedColumnStrideByteIndex(field, segmentSize); - } - - @Override - protected ColumnStrideFieldIndex newIntCSF(String field) { - return new OptimizedColumnStrideIntIndex(field, segmentSize); - } - - @Override - protected ColumnStrideFieldIndex newLongCSF(String field) { - return new OptimizedColumnStrideLongIndex(field, segmentSize); - } - - @Override - protected ColumnStrideFieldIndex newMultiIntCSF(String field, int numIntsPerField) { - return new OptimizedColumnStrideMultiIntIndex(field, segmentSize, numIntsPerField); - } - - @Override - public DocValuesManager optimize(DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) throws IOException { - return this; - } - - @Override - public FlushHandler getFlushHandler() { - return new OptimizedFlushHandler(this); - } - - public static class OptimizedFlushHandler extends FlushHandler { - public OptimizedFlushHandler(Schema schema) { - super(schema); - } - - private OptimizedFlushHandler(DocValuesManager docValuesManager) { - super(docValuesManager); - } - - @Override - protected DocValuesManager createDocValuesManager( - Schema schema, - int maxSegmentSize, - ConcurrentHashMap columnStrideFields) { - return new OptimizedDocValuesManager(schema, maxSegmentSize, columnStrideFields); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/column/UnoptimizedDocValuesManager.docx b/src/java/com/twitter/search/core/earlybird/index/column/UnoptimizedDocValuesManager.docx new file mode 100644 index 0000000000000000000000000000000000000000..bc150983d6154d20469a1edf9efb5c59fb3fd9bd GIT binary patch literal 37256 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 columnStrideFields) { - super(schema, segmentSize, columnStrideFields); - } - - @Override - protected ColumnStrideFieldIndex newByteCSF(String field) { - return new ColumnStrideByteIndex(field, segmentSize); - } - - @Override - protected ColumnStrideFieldIndex newIntCSF(String field) { - return new ColumnStrideIntIndex(field, segmentSize); - } - - @Override - protected ColumnStrideFieldIndex newLongCSF(String field) { - return new ColumnStrideLongIndex(field, segmentSize); - } - - @Override - protected ColumnStrideFieldIndex newMultiIntCSF(String field, int numIntsPerField) { - return new ColumnStrideMultiIntIndex(field, segmentSize, numIntsPerField); - } - - @Override - public DocValuesManager optimize(DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) throws IOException { - return new OptimizedDocValuesManager(this, originalTweetIdMapper, optimizedTweetIdMapper); - } - - @Override - public FlushHandler getFlushHandler() { - return new UnoptimizedFlushHandler(this); - } - - public static class UnoptimizedFlushHandler extends FlushHandler { - public UnoptimizedFlushHandler(Schema schema) { - super(schema); - } - - private UnoptimizedFlushHandler(DocValuesManager docValuesManager) { - super(docValuesManager); - } - - @Override - protected DocValuesManager createDocValuesManager( - Schema schema, - int maxSegmentSize, - ConcurrentHashMap columnStrideFields) { - return new UnoptimizedDocValuesManager(schema, maxSegmentSize, columnStrideFields); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/extensions/EarlybirdIndexExtensionsData.docx b/src/java/com/twitter/search/core/earlybird/index/extensions/EarlybirdIndexExtensionsData.docx new file mode 100644 index 0000000000000000000000000000000000000000..9d075d04337c023c7b99db2d738f286b066a0650 GIT binary patch literal 36856 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 R2Z3^xAVVTBdwlH%@c`%)AK(B0 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/extensions/EarlybirdRealtimeIndexExtensionsData.java b/src/java/com/twitter/search/core/earlybird/index/extensions/EarlybirdRealtimeIndexExtensionsData.java deleted file mode 100644 index 284475566..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/extensions/EarlybirdRealtimeIndexExtensionsData.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.twitter.search.core.earlybird.index.extensions; - -import com.twitter.search.core.earlybird.index.EarlybirdRealtimeIndexSegmentWriter; - -/** - * An index extensions implementation for real-time Earlybird indexes. - */ -public interface EarlybirdRealtimeIndexExtensionsData extends EarlybirdIndexExtensionsData { - /** - * Optionally, an implementing class can provide a custom consumer for inverted fields (i.e. streams of tokens). - */ - void createInvertedDocConsumer( - EarlybirdRealtimeIndexSegmentWriter.InvertedDocConsumerBuilder builder); - - /** - * Optionally, an implementing class can provide a custom consumer for stored fields (e.g. doc values fields). - */ - void createStoredFieldsConsumer( - EarlybirdRealtimeIndexSegmentWriter.StoredFieldsConsumerBuilder builder); -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/BaseByteBlockPool.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/BaseByteBlockPool.docx new file mode 100644 index 0000000000000000000000000000000000000000..f99ad9ac1e05cc0064eba8231da3070f2b36f34b GIT binary patch literal 40445 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 0) { - this.buffer = pool.buffers[bufferUpto]; - } - } - - /** - * Resets the index of the pool to 0 in the first buffer and resets the byte arrays of - * all previously allocated buffers to 0s. - */ - public void reset() { - if (bufferUpto != -1) { - // We allocated at least one buffer - - for (int i = 0; i < bufferUpto; i++) { - // Fully zero fill buffers that we fully used - Arrays.fill(pool.buffers[i], (byte) 0); - } - - // Partial zero fill the final buffer - Arrays.fill(pool.buffers[bufferUpto], 0, byteUpto, (byte) 0); - - bufferUpto = 0; - byteUpto = 0; - byteOffset = 0; - buffer = pool.buffers[0]; - } - } - - /** - * Switches to the next buffer and positions the index at its beginning. - */ - public void nextBuffer() { - if (1 + bufferUpto == pool.buffers.length) { - byte[][] newBuffers = new byte[ArrayUtil.oversize(pool.buffers.length + 1, - NUM_BYTES_OBJECT_REF)][]; - System.arraycopy(pool.buffers, 0, newBuffers, 0, pool.buffers.length); - pool = new Pool(newBuffers); - } - buffer = pool.buffers[1 + bufferUpto] = new byte[ByteBlockPool.BYTE_BLOCK_SIZE]; - bufferUpto++; - - byteUpto = 0; - byteOffset += ByteBlockPool.BYTE_BLOCK_SIZE; - } - - /** - * Returns the start offset of the next data that will be added to the pool, UNLESS the data is - * added using addBytes and avoidSplitting = true - */ - public int getOffset() { - return byteOffset + byteUpto; - } - - /** - * Returns the start offset of b in the pool - * @param b byte to put - */ - public int addByte(byte b) { - int initOffset = byteOffset + byteUpto; - int remainingBytesInBuffer = ByteBlockPool.BYTE_BLOCK_SIZE - byteUpto; - // If the buffer is full, move on to the next one. - if (remainingBytesInBuffer <= 0) { - nextBuffer(); - } - buffer[byteUpto] = b; - byteUpto++; - return initOffset; - } - - /** - * Returns the start offset of the bytes in the pool. - * If avoidSplitting is false, this is guaranteed to return the same value that would be - * returned by getOffset() - * @param bytes source array - * @param length number of bytes to put - * @param avoidSplitting if possible (the length is less than ByteBlockPool.BYTE_BLOCK_SIZE), - * the bytes will not be split across buffer boundaries. This is useful for small data - * that will be read a lot (small amount of space wasted in return for avoiding copying - * memory when calling getBytes). - */ - public int addBytes(byte[] bytes, int offset, int length, boolean avoidSplitting) { - // The first time this is called, there may not be an existing buffer yet. - if (buffer == null) { - nextBuffer(); - } - - int remainingBytesInBuffer = ByteBlockPool.BYTE_BLOCK_SIZE - byteUpto; - - if (avoidSplitting && length < ByteBlockPool.BYTE_BLOCK_SIZE) { - if (remainingBytesInBuffer < length) { - nextBuffer(); - } - int initOffset = byteOffset + byteUpto; - System.arraycopy(bytes, offset, buffer, byteUpto, length); - byteUpto += length; - return initOffset; - } else { - int initOffset = byteOffset + byteUpto; - if (remainingBytesInBuffer < length) { - // Must split the bytes across buffers. - int remainingLength = length; - while (remainingLength > ByteBlockPool.BYTE_BLOCK_SIZE - byteUpto) { - int lengthToCopy = ByteBlockPool.BYTE_BLOCK_SIZE - byteUpto; - System.arraycopy(bytes, length - remainingLength + offset, - buffer, byteUpto, lengthToCopy); - remainingLength -= lengthToCopy; - nextBuffer(); - } - System.arraycopy(bytes, length - remainingLength + offset, - buffer, byteUpto, remainingLength); - byteUpto += remainingLength; - } else { - // Just add all bytes to the current buffer. - System.arraycopy(bytes, offset, buffer, byteUpto, length); - byteUpto += length; - } - return initOffset; - } - } - - /** - * Default addBytes. Does not avoid splitting. - * @see #addBytes(byte[], int, boolean) - */ - public int addBytes(byte[] bytes, int length) { - return addBytes(bytes, 0, length, false); - } - - /** - * Default addBytes. Does not avoid splitting. - * @see #addBytes(byte[], int, boolean) - */ - public int addBytes(byte[] bytes, int offset, int length) { - return addBytes(bytes, offset, length, false); - } - - /** - * Reads one byte from the pool. - * @param offset location to read byte from - */ - public byte getByte(int offset) { - int bufferIndex = offset >>> ByteBlockPool.BYTE_BLOCK_SHIFT; - int bufferOffset = offset & ByteBlockPool.BYTE_BLOCK_MASK; - return pool.buffers[bufferIndex][bufferOffset]; - } - - /** - * Returns false if offset is invalid or there aren't these many bytes - * available in the pool. - * @param offset location to start reading bytes from - * @param length number of bytes to read - * @param output the object to write the output to. MUST be non null. - */ - public boolean getBytesToBytesRef(int offset, int length, BytesRef output) { - if (offset < 0 || offset + length > byteUpto + byteOffset) { - return false; - } - int currentBuffer = offset >>> ByteBlockPool.BYTE_BLOCK_SHIFT; - int currentOffset = offset & ByteBlockPool.BYTE_BLOCK_MASK; - // If the requested bytes are split across pools, we have to make a new array of bytes - // to copy them into and return a ref to that. - if (currentOffset + length <= ByteBlockPool.BYTE_BLOCK_SIZE) { - output.bytes = pool.buffers[currentBuffer]; - output.offset = currentOffset; - output.length = length; - } else { - byte[] bytes = new byte[length]; - int remainingLength = length; - while (remainingLength > ByteBlockPool.BYTE_BLOCK_SIZE - currentOffset) { - int lengthToCopy = ByteBlockPool.BYTE_BLOCK_SIZE - currentOffset; - System.arraycopy(pool.buffers[currentBuffer], currentOffset, bytes, - length - remainingLength, lengthToCopy); - remainingLength -= lengthToCopy; - currentBuffer++; - currentOffset = 0; - } - System.arraycopy(pool.buffers[currentBuffer], currentOffset, bytes, length - remainingLength, - remainingLength); - output.bytes = bytes; - output.length = bytes.length; - output.offset = 0; - } - return true; - - } - - /** - * Returns the read bytes, or null if offset is invalid or there aren't these many bytes - * available in the pool. - * @param offset location to start reading bytes from - * @param length number of bytes to read - */ - public BytesRef getBytes(int offset, int length) { - BytesRef result = new BytesRef(); - if (getBytesToBytesRef(offset, length, result)) { - return result; - } else { - return null; - } - } - - /** - * get a new readStream at a given offset for this pool. - * - * Notice that individual ReadStreams are not threadsafe, but you can get as many ReadStreams as - * you want. - */ - public ReadStream getReadStream(int offset) { - return new ReadStream(offset); - } - - /** - * get the (one and only) WriteStream for this pool. - * - * Notice that there is exactly one WriteStream per pool, and it is not threadsafe. - */ - public WriteStream getWriteStream() { - return writeStream; - } - - /** - * A DataOutput-like interface for writing "contiguous" data to a ByteBlockPool. - * - * This is not threadsafe. - */ - public final class WriteStream extends DataOutput { - private WriteStream() { } - - /** - * Returns the start offset of the next data that will be added to the pool, UNLESS the data is - * added using addBytes and avoidSplitting = true - */ - public int getOffset() { - return BaseByteBlockPool.this.getOffset(); - } - - /** - * Write bytes to the pool. - * @param bytes source array - * @param offset offset in bytes of the data to write - * @param length number of bytes to put - * @param avoidSplitting same as {link ByteBlockPool.addBytes} - * @return the start offset of the bytes in the pool - */ - public int writeBytes(byte[] bytes, int offset, int length, boolean avoidSplitting) { - return addBytes(bytes, offset, length, avoidSplitting); - } - - @Override - public void writeBytes(byte[] b, int offset, int length) throws IOException { - addBytes(b, offset, length); - } - - @Override - public void writeByte(byte b) { - addByte(b); - } - } - - /** - * A DataInput-like interface for reading "contiguous" data from a ByteBlockPool. - * - * This is not threadsafe. - * - * This does not fully implement the DataInput interface - its DataInput.readBytes method throws - * UnsupportedOperationException because this class provides a facility for no-copy reading. - */ - public final class ReadStream extends DataInput { - private int offset; - - private ReadStream(int offset) { - this.offset = offset; - } - - public BytesRef readBytes(int n) { - return readBytes(n, false); - } - - /** - * read n bytes that were written with a given value of avoidSplitting - * @param n number of bytes to read. - * @param avoidSplitting this should be the same that was used at writeBytes time. - * @return a reference to the bytes read or null. - */ - public BytesRef readBytes(int n, boolean avoidSplitting) { - int currentBuffer = offset >>> ByteBlockPool.BYTE_BLOCK_SHIFT; - int currentOffset = offset & ByteBlockPool.BYTE_BLOCK_MASK; - if (avoidSplitting && n < ByteBlockPool.BYTE_BLOCK_SIZE - && currentOffset + n > ByteBlockPool.BYTE_BLOCK_SIZE) { - ++currentBuffer; - currentOffset = 0; - offset = currentBuffer << ByteBlockPool.BYTE_BLOCK_SHIFT; - } - BytesRef result = getBytes(offset, n); - this.offset += n; - return result; - } - - @Override - public byte readByte() { - return getByte(offset++); - } - - @Override - public void readBytes(byte[] b, int off, int len) throws IOException { - throw new UnsupportedOperationException("Use the no-copies version of ReadBytes instead."); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/ByteBlockPool.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/ByteBlockPool.docx new file mode 100644 index 0000000000000000000000000000000000000000..067e196a89f32397ff57e8d606e18f2e4e2a8270 GIT binary patch literal 37329 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/ByteBlockPool.java b/src/java/com/twitter/search/core/earlybird/index/inverted/ByteBlockPool.java deleted file mode 100644 index 1401b4003..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/ByteBlockPool.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.io.IOException; - -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; - -public class ByteBlockPool extends BaseByteBlockPool implements Flushable { - - public ByteBlockPool() { - } - - /** - * Used for loading flushed pool. - */ - private ByteBlockPool(Pool pool, int bufferUpto, int byteUpTo, int byteOffset) { - super(pool, bufferUpto, byteUpTo, byteOffset); - } - - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - public static class FlushHandler extends Flushable.Handler { - private static final String BUFFER_UP_TO_PROP_NAME = "bufferUpto"; - private static final String BYTE_UP_TO_PROP_NAME = "byteUpto"; - private static final String BYTE_OFFSET_PROP_NAME = "byteOffset"; - - public FlushHandler(ByteBlockPool objectToFlush) { - super(objectToFlush); - } - - public FlushHandler() { - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - ByteBlockPool objectToFlush = getObjectToFlush(); - out.writeByteArray2D(objectToFlush.pool.buffers, objectToFlush.bufferUpto + 1); - flushInfo.addIntProperty(BUFFER_UP_TO_PROP_NAME, objectToFlush.bufferUpto); - flushInfo.addIntProperty(BYTE_UP_TO_PROP_NAME, objectToFlush.byteUpto); - flushInfo.addIntProperty(BYTE_OFFSET_PROP_NAME, objectToFlush.byteOffset); - } - - @Override - protected ByteBlockPool doLoad(FlushInfo flushInfo, - DataDeserializer in) throws IOException { - return new ByteBlockPool( - new BaseByteBlockPool.Pool(in.readByteArray2D()), - flushInfo.getIntProperty(BUFFER_UP_TO_PROP_NAME), - flushInfo.getIntProperty(BYTE_UP_TO_PROP_NAME), - flushInfo.getIntProperty(BYTE_OFFSET_PROP_NAME)); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/ByteTermUtils.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/ByteTermUtils.docx new file mode 100644 index 0000000000000000000000000000000000000000..ff697ec29bc3449f469e396540d3fc5a2d4e7608 GIT binary patch literal 38238 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/ByteTermUtils.java b/src/java/com/twitter/search/core/earlybird/index/inverted/ByteTermUtils.java deleted file mode 100644 index c246caa68..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/ByteTermUtils.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import org.apache.lucene.util.ByteBlockPool; -import org.apache.lucene.util.BytesRef; -import org.apache.lucene.util.StringHelper; - -/** - * Utility class for BytePools which have each term's length encoded before the contents in the - * ByteBlockPool - * Another solution is to have a class that encapsulates both textStarts and the byteBlockPool and - * knows how the byteBlockPool is used to store the strings - **/ -public abstract class ByteTermUtils { - /** - * Fill in a BytesRef from term's length & bytes encoded in byte block - */ - public static int setBytesRef(final BaseByteBlockPool byteBlockPool, - BytesRef term, - final int textStart) { - final byte[] block = term.bytes = - byteBlockPool.pool.buffers[textStart >>> ByteBlockPool.BYTE_BLOCK_SHIFT]; - final int start = textStart & ByteBlockPool.BYTE_BLOCK_MASK; - int pos = start; - - byte b = block[pos++]; - term.length = b & 0x7F; - for (int shift = 7; (b & 0x80) != 0; shift += 7) { - b = block[pos++]; - term.length |= (b & 0x7F) << shift; - } - term.offset = pos; - - assert term.length >= 0; - return textStart + (pos - start) + term.length; - } - - /** - * Test whether the text for current RawPostingList p equals - * current tokenText in utf8. - */ - public static boolean postingEquals(final BaseByteBlockPool termPool, - final int textStart, final BytesRef other) { - final byte[] block = termPool.pool.getBlocks()[textStart >>> ByteBlockPool.BYTE_BLOCK_SHIFT]; - assert block != null; - - int pos = textStart & ByteBlockPool.BYTE_BLOCK_MASK; - - byte b = block[pos++]; - int len = b & 0x7F; - for (int shift = 7; (b & 0x80) != 0; shift += 7) { - b = block[pos++]; - len |= (b & 0x7F) << shift; - } - - if (len == other.length) { - final byte[] utf8Bytes = other.bytes; - for (int tokenPos = other.offset; - tokenPos < other.length + other.offset; pos++, tokenPos++) { - if (utf8Bytes[tokenPos] != block[pos]) { - return false; - } - } - return true; - } else { - return false; - } - } - - /** - * Returns the hashCode of the term stored at the given position in the block pool. - */ - public static int hashCode( - final BaseByteBlockPool termPool, final int textStart) { - final byte[] block = termPool.pool.getBlocks()[textStart >>> ByteBlockPool.BYTE_BLOCK_SHIFT]; - final int start = textStart & ByteBlockPool.BYTE_BLOCK_MASK; - - int pos = start; - - byte b = block[pos++]; - int len = b & 0x7F; - for (int shift = 7; (b & 0x80) != 0; shift += 7) { - b = block[pos++]; - len |= (b & 0x7F) << shift; - } - - // Hash code returned here must be consistent with the one used in TermHashTable.lookupItem, so - // use the fixed hash seed. See TermHashTable.lookupItem for explanation of fixed hash seed. - return StringHelper.murmurhash3_x86_32(block, pos, len, InvertedRealtimeIndex.FIXED_HASH_SEED); - } - - /** - * Copies the utf8 encoded byte ref to the termPool. - * @param termPool - * @param utf8 - * @return The text's start position in the termPool - */ - public static int copyToTermPool(BaseByteBlockPool termPool, BytesRef bytes) { - // Maybe grow the termPool before we write. Assume we need 5 bytes in - // the worst case to store the VInt. - if (bytes.length + 5 + termPool.byteUpto > ByteBlockPool.BYTE_BLOCK_SIZE) { - // Not enough room in current block - termPool.nextBuffer(); - } - - final int textStart = termPool.byteUpto + termPool.byteOffset; - - writeVInt(termPool, bytes.length); - System.arraycopy(bytes.bytes, bytes.offset, termPool.buffer, termPool.byteUpto, bytes.length); - termPool.byteUpto += bytes.length; - - return textStart; - } - - private static void writeVInt(final BaseByteBlockPool termPool, final int v) { - int value = v; - final byte[] block = termPool.buffer; - int blockUpto = termPool.byteUpto; - - while ((value & ~0x7F) != 0) { - block[blockUpto++] = (byte) ((value & 0x7f) | 0x80); - value >>>= 7; - } - block[blockUpto++] = (byte) value; - termPool.byteUpto = blockUpto; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/DeletedDocs.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/DeletedDocs.docx new file mode 100644 index 0000000000000000000000000000000000000000..cf38e3f986442385171d4217c99a06dca0245950 GIT binary patch literal 38729 zcmagFV|ZQN*DoBiv2EKn8ryan?$}0?G`4M9jcqly8Z>EapWXZZ^LfsB-!Cgy=3L{4 zG1guadu}CJa0qk|5D*xU*>o}G!NL$!U0aq9&I~6g z^M2g`uOVvag=n5mP_ot&NDNhVtOhF4a43w5z&K=hZQ&eOekYlOn###2)jr*qgK;Id zw@H6@(kHP1iJZ3;MoNurn@qUxf!t{kMwjZ6UyYg)2A%8Orsx`-EY%$w*87SPJ%-@{ z$UlDC^)k9oXtJF^HIzr)s_JZ^T8I8T1K5O6*3BP-=V*S|^W~kcYtVh^)X|Pn^R+q& zmcsRV5JSv5?G2)#Y9!H5g34g+jIH(wc^G(jpec?e7kpX?H+Wc>m$#c#4;V%I%Aqb) zuhJnBn=;16!}Z~KB1Y2$w_;P3rxrY7tDX`{2>b0xn zz;!*Sz*LStg+})+nV<-zC*JtQ`x(Bp5=UIH?{&F!^FV0)fwbTSUETmh>A$MzNhvG* z2&~=~7zhYF@UNkhxveu3ehuU6< zwrxh_9T}pqIpqVVg$A)8-4@!AE=}Y4oJftRxFM~b6k=IOc_PX!ybHCat1rVm016-} z*TV6ww7UJLt^2n}p%xb@qX6NPI0qEfbOkdOEbbyiX-BkMG3le3n2NaeEX?oE9ZFwx zE3X)jgT)k84Lrzip{6=f2e~bq_)F*7_CFsokdsYmdQDrnZUrm*JIoONX0A`Y&}oic z@r4O*(*$ER01I)-04?YqL z@){90$S@Mpw4f*7WTemoSK9B{Ipl38ayX~9_lxXw^61px%K?|pWYL#f3g;yo zY~WyD_&QCJ-KJ8Ke=MqsBER}oLpXu@I~fA;0XogEz(B%?M6!fNl=9XRLXa$!vV72p zltE*;X##l7P#T^8K+7KC+|y6?}X*DU^i1Ud*IzdsKdsT^jR zQ`bSU;-9%aL4HC4WfN9TS8;FCVBPt4=IrFSJ>v$hU-_vu>=R-NPX63kS(R{5KFo%$ z+ZJH3xPD||VQ+)MnIb^Q#jK634(+XFf}1MU*e`1{A92K8z%mRrJL%!}%8Dg3NgBOW zBnv|NyVMW*?x}*~M*ok`?>H;?bdOwD5ZEV{hz2zC?qct+{nvQ^U62lF2)WHf0adT!hW3@x$}h%Lf_?^6|{&lc0$mS$eh?FZe2oF>%usxOguz8%buU_ zQ#c0CSEjoNzDB;6rtz0$5ew)hg)izD6Hf)BN{*Xw&9&b~4%erSNSz@nAj>f{hEVh! z4QIxy7oiwnUD7p`YR0`u8%-v!2%#OE73pSN))0lan!HOo6dZhJU(JOje!JB_4qhfJ zHLq-?DKjg6s|0_m{Zi>!HY33CdH?Q2J0%$bQ4-AfjSXVLv(k!sHCz%)o*0kCsOxg_ z3xqYix656F*)NnlOFLaG{&_OtQ$l)&>-kTQgK$5wOpA7e{buhZ9V)ZWsnkz~xwxpx^*N+2kesghuO02#H*8=@^{qyB8yACZ$*b0C3I|{k)^qinX z{X|`*%pPMEi9pRT6?qE5iwO}Pohi+^=FySZvW~ujZZt+N2QG>m#crryJLmy`3Npz? z09)y^o6a85!x!8)WX3BymZO~~R{{7FcPMVZwnkXO)H7Jyx3Q=R!oW7$?bKw!Da~zi zzOXDTb#Gh6_|(C5X`y1p&t09FOs`CYm#~>nH+Ub5cfX1L`@x7C47gN>0|9BV|N8^$ z4sbGK0)A>;?SO;RpC{u?|HFBW8}sAs9gcykk!5o*t||4bn8L1>T>tP#N#of0)YO#x z=M}Jpl?26v{MGFDiwE*`BWNmlS@I2J3lRV0oUND6+JxPwNJYnx5^ z7@-R1x!s$aU+0YrymY8`IN7um;51>h8Y|4-Q;-kFGj2G927-avlUX*%z@|XWY4+Es zk*Ep%TN+f5te}ct?>-_?^cP`XHpc#G1NT;&7Suj)QVN#`+(w#|>dyAG?V4t6=%GV{ z))(}9n#|UEITS^h;6yS;lPV+4s9i+IcuKxmiy#bwAK?|Un@jJV=~lJLaBgv}^=zeL z+s+^m_;UMYZE4#sc9LJ-)i+4&#mwAfg)G}iYRRM^AeNn7rq{1x_7k3h1;9>jo3+*-D@kUKyCkC*HX1O_u$y- zM&Xyote#uc!K;h()HQ}UQV!Grgm+hbK>R6EQi zdDOCq*uY%0z0X#{*jK6&WFJIoV;Iu9Cz6tdR77uRf`n+sjc2C#)QpVFQ>!`-!z`9K zVW3cj)X8Yo7=A=_8&nA}-^iXvHXDv?esSyaVT^d$^h)|vLmV@lLM&j@IXnix^9bdl z6hOVTa!YHZ432A+j4R?qmlMgH#MY_d%wRvRf~tC73PN7Iz^9<)x!Vm={$efw?H4PD zSOGy7*OFPFLIGVzvQ38hiiScUFU_9H@_d6BQl)G@uM;4hS7V9)7T|@~H{VR!C z&5W&kF@}#5)Df~!Y?>^{*vz7e*bb>lCf0d&n?LYF2Av!f)i}w)XaLci@7pkhJWV=@ zAgk~wHik8(G*Q>EGDJM(^9_ZMeqN8p%F27xCCud6r%0u>Vjsyu7?v93m^?A!B$-=2 zC13x5iqFBl{J#Kzo4hB+=rCd}ko>?jh2x7@+vYK2s|_Z}mcVQMv>chvUKe!+;=Ea{ zeAsE9_`$1wL>hw9d=W$YLgNahs(lXbaW>N-aNlvpUrFiR+&>dpLe7jadA@4@{DM{F z27S-k2R0J7Jy#!-NxLt4#vmFrr&Tp0 zuiNAoY5cSc$lYO!z*TzesCH=lxhn3Z3X7}Dm61OdMwz@wK~w4roO%&RkfeV5CWjrI8&@#tg8mKZ>Y>;J1!o@3otE>nG~)l^&sFaU714!yEy7y@nr#I z0|r(Fat%lSTnQ5<=q?DPPSU}k6cF64AFOt{BE^2;k|(laN2uxSI?b^{C%n>9)jA5n z(R~j0XhL*f*2{5QQVBoN`!HEYpu8J~)5F&D!55>lr%s<@E}C(umIb9vhCfDn4@HN1 z>>){Igk6A}(+ivXD3PNvHtPUULf+X)l)g4GPlFQlbx`8B%e;7@t1NiIEnJtZ3I}!< zt_*Uy<@aqy?PJc9yNbYI-#w-Bk6gb7J3r)cx=h};rp?uFl82FJM`A1|omPhpFf1ph zbeEK1dwd9huG%R~6ibRc-DRHYEgXp(d$G%|P(sn?pA2P9=Wfnr9uwqm+!`~)%r=EY zj#>O{M9rxZC#$S@Tm-Jk<5OM%DYEz0Ba$_ABkSAQ0a?6v2NB+yKMdL?p+R-g9b6Zq z>2^hF`00=%G(CKodR@+w+r+tUJB7Oo@xBp1TH~eL1)W zhfi~Fj1r_o^v6S3BGY|c#r&Hn^i**BJVd8kw2d=nzQKo%qi2QdVzsHQmSEZxDpup3 zLdn<9dc?JATwMGiwr$kuhH(>YQt0c9pL7RTxpn95;fR}$e{j6&^%|s`L2Jl6mrL5> zRNtL$1!_5mrpAtgCcE}tW3lBmgV!mf6iT;$uLopRa?7Imioe6dL$P$;>d?SblD82X zSK1}x#B`})UZ#bu`S;OB^{xbWCqHba#GX=LyYRO}QUG^vb_CmIjzc8YoVK@fhnmo=IJ!85uj1^^7b_0rQI6a*S^ z<}RW8kVZ#tM-VbDhVFXV^S)$wsWn4{BH>yv z74nJR$9D-u?~`Q|B*xB`naAG@(WGmmBM!Hx&vz%Q!U_|ZNKh_Zk*fd^?9usL*a{e> z2N@WjU;6UvK0`-GYY655lqM^)aJF#Fq7vPUPc9TXOd)qCyFqT4Y1Uqd&Wg4QC>9~F zA^VqJm8$PnTri?bW^RWIHLau9+3P~#>BX6*9@RrDO7E z0#yu^Z8}4<;$&v@Z7om;Tst>r0xs$V4f>A_t6uYQ8k+Ld%hTK0e#b=F_}N6+Qw*=K zMR&Y$^W&*Cky%Ws@^aBdYP>vL&`X*qvV~vfX$>-OT;?f-Aa9s)ypIy=V|FSg)R4Y3 zhcDd;WL;g(M$5O`_p;$kYsPQhlBqLl#`9e6PA%j$%lP_MLJ|G!;yK+rqcWDqaBWNt z-&%Rjj`QKumgvIW z8OnTvIdj#J#})H~+x^l1zvrO#0eGmaz{SY~aB+eUT%7zh2mO0#{hu?@zn9rbB8tJx z*k3Q+;rc@p(M#+jaefz2cF;=J7W;%st|i=y9c=4vn$e5x1@1p^`sPyE%}?E{E^YB) z(>2KiaYun6q0fgZnWOSsBBh@8HcF|B*i;k4^49fncCGM>%FmtECx59rl1Y+(g{yC; z7;JzeZ_c+DZpWyJE;^P}P59ctr30odK9`VY9G08o;?+TVHC5Ag-Bo3?Bea>}+_$69 zs1ekU0#U!RXrxcZL1DCaaWs4PXom0q25kUm(X@y!R&o&dDz6ufY6zk6kOe-#_Gn}^ zzHhN)3L@^_BbF-0T3nZxq51h#p#L%rHISIf4%2z9OykgKLza8(cCHqJ=PCFH(|_kWx)PHwk_iOF zKpheU>7TiFcJZ_|cm8{}ub;Rl+2GsLQ&4F5`qM5h1Y~5|9wfmH-`Kk=r~ZOXo^Ag3 z>@3!o*fT?a3KC%=brp3DnTmu4zWy9cC7J`x>_j#5x3^sXPTLDVL!y|>xARS|fgXhJ zcHIk&m(r>8n+|~A8@3PM)8V;?&UsGC`kVdRd8W|v2;luG_T%Yg`68xNsP%MT|M6+_ zsv~u=P$s`MB7>CD%b9_ru+)RyiS^Ug%D0Kr>n6_) zTdqL5}gt_)7%2?K-hWnO8OJ}36lF$`VW1;-*?Pkou9f->{~ZJVap&u zd#r|-cIBSMWWHP`-(7oT5O7W0M*2B1c)js>k=-O#?$fw>c6+XE2#Jfv`iC;TcW-oe zv{p?d53%^$b!_-{>*-!}zuk#FTd1TG4mfUaG9hjIrAZL^NadW7d<@n;^_cY4PApQU zG`_m%g!!RlP~f_Bz;<13;dZ17`FTdFb@=d|p^?-^#NE~*K^BLdqw>y#H6n%8)(E}T z8Tx7q`ErLcb#}y>hhq7^y&nx&_`|&2Zoau>=)KnYt#)qn3sk#boQI`yo#${Vo__cm zT=)spm@#Gx}rT(4&Gd>xNoA7=Cs3;E}@rl4w~m zvo$r+8e%rwhVENkg#@=SN<64Ip>Yvwckf$A?-dzd}VxliCrZdnvSGnOgasxz+j zTj;VDuN&6O+56=$JGv~w;U6eI7$o;FKSX>845_7~ipjVW1urZr)kinPU)4xrWu%m) z%1~93*eXNl576mIWEqxaU=kF*_f+|B<1;;KjCYQpFI9E2WEO%d+g|0izLn#q>3pMq zf7!I^;;XqBEL#0m$HKNPy`p8emxx@%2`&Spk_krv(RU>7NOF=`7((Byts)w?=0ZaP zW4VRiYY1~w5`Z4!sVWS&)=5JQZ?{#IT_^>kLPm!g1;85b1S30ai)r}GQ26Z4;)5WD06P?3M!U(<|B!3e?R z2|wB|y#@A9>@)TRU??&0KAOKmb%1E0K-~Wd{hJD+oa(}w#N&SuTqu(PTj2guk$(OrC>40ue+qNM1L{#h26{zr`pG~H&+tDaG7!U1dBVf|rFtRJy&1Xl z&t3m&DsmQUns)2xMl;Ca71voL?k3c5^}Tok_1E^-AzJE4?v;U)2u!6)iYset@#x<6 zZ%5Nzv2(^3*IGDq>{uO{uzjbG5@6I#dA%6ge7SRN*S80`#3zG zTf6H~`)g59@#x@itYG&sdRs`p^-i29#(s}+RXABM=7J+0_v6LklNf{Nj1e;ZMma&& z_Rt3L{kfmpN|rmq(0Vtc|46Qs-KkT;QTy+~Z-Cmpz?xX(a$8?&{{EXMC;AgdoVCks zzNL9Pt`4Tu)1!FInTemKT=05ZEb?xIW?jMgxZ4B@hY{8ZU8bc6`z%i%2foVVa2G7E zH?ICZ?iX!|eq2*>_qe#Lewjub!wf&IXz~Du7@<|i+$}d;$_#pYAG|D4JepwLav_Z9 zlpfDik(tQcc}=L`f}{~!x{#OVC1P!y_p}j7mOWeY&k{$~BrjQ5HEZzPGc#N|UCtGK zLIS=&VdVXNMxV#_pXc9^t$Wi4w;WwFAMIXRRev%Hy>@rO$?(Yy4euTJ%W`6VW^&@f zv=sDQ*TUEDwxjps|8RHoD^L%iVsf|YC^W+Duy~!rw)y%_7(BUt0Hg4k%}*(9jxv?5 zJbD~$QJZn0b?A;9em;>NRMEt&`Z1eZ;w@ldk=frW1qPfyq~Z~WIU^H7$9CDRDmPrgF)JbNe& z%hHb^PH#)X?BqKJ>~JwI1N7v296NTo$b4T*$d}nKBus0tqFK7WY#=Z>MPHIyBEKDW z9iyM@9f}cgDSs~H`3f)J#>n31k}u7r_oXTpp2ndDG}svd*~e=9u9&8TNxowjxa9DG zWg#%;(J3h!fAR{`Mw{v&E=5Bb@%?IYKG1Way5L*-GiU#tzj#}Aa|lpgv8%!N_{%X9 zeV(Xw`-1f2J!7F`#{KzrFjy_*XxM`vvKEpn^5*W)9cI# zq}MwL(rTt>n;?YYc1LUK$Q{X(O8g6l(MCvN*}1bbqJ;ber-uF(m^Bk3S z*5zuQEk8W1f+t zG}=s|!~HNs^!Lq4PN%@MCQF?wzY0zrAtH$L%<1c|xIV}$-NKTYF_q#TQhXoxoT37N zwrO*2GG)Q|#A7JWG-3FpQ+$l7aQ*9ohZ)o@VW zL7ZaNNBt^hkB6ec0+~pe&#AgY%5GTz2R_sivfem#20W|A&!J#0^BvtX3gX9QslDq$kPS;ShX&d=sSo5 z*&lWCz7oS@6~nxzLaS8tb9gCim$DEXo??#Wt7qjESef;N`9A8}(SiQir}k`vamvov zq|5jXGx`Pc^hCSM1hhU7+9IzsNj%PAhq4#|X~oQYPxFBrrw1P1k`qB~-B`Y8$r-K5 zYH9d;+}zEU4I^Ia&`;6)-YkiOGX~k>C*JqFMn7f;X0}__Io2;O5|%U62a@5wemuTE zFX3ZV$s%PjbN8%xu-B;@a}>fUsF7EE;pJYbs5{jdQoMS|vXv*V{goG{%;vQtKJql= zRXC9G{eA&WDRe!GmU}L~tYGOFS!1ZpUY)-GinF8DWR7KN=x))%wGVt$IH`N zp-Rudo?mBhK}9y5vKmuiLvQhi%g^v~im#@}UQdqgyuZ`$DpQY>Nn^kJfrOT^HubH5 z;L{L)KlK1ye95X~+`{`hFrkUJ;U2|g76%}RDrvL^6Bbz z0mG0Znh3{C)welitgtdl^;g&lKYJ^%}LIEHRs|OV&}~q zqi1n;twu3XeC^m?{J6r{(3P!^Gp7_w! zReNTixcbPktuI|%!HuCf$FN->=VN{JP*j>OMy8ruv|+CdUZcw2CZ*_XLuI{Ps>Qj( zsH22yRa(bM&w7j{fntQ9mHb_jOPWnVW{O*cb-xJS!q&1ey-1+6_&$qt)p-rl+q!Kx zQa%oI%=5vsvL@kFDPd4ci``^R(e-Gjx{9oA|L_D`8yhaRm&6ol6uANVXN&EH%L-cy z6GiF)X;fbgJqU$79sIM_a!k<^bVqmI>lYQ9V;pi+TuEtJ6}NU0?`e9;RT74ps%N9+ z=F(n~P1WA56&rc%yVY`nhvVo6o}7;gL^}a&i$05D`vTr{3;c$DzM`NWWmgMKR>1NG zM8ZXVRmSJ9qv{=FMhWycWf?ajQM4DPdIA_;Vsun`?67M0Hwu5gt>W^ z$+vanJQnsw>?kP2&upo8>Ftx%=Ndk~7<^82baEI)WfieqtI*2j%8HKnB?D@$j^-R| zqt<5SkevtD+mW&Z*PU=brY5y{N9{kS5|i9DG0|`mrI$EH2y;bdsua-8r9(($i`Nd0 zU@)sE*!%Q(J}VzQ&|)(n{Ny#A1g>=Mc3<^fHgF2T>=0GH+_X%w|H=e?uA-hc_kaH3 z2!6Xe#n?3X+_g61AME>@pXZmjo`eogBWO;|Qy)@~PT^XB%AU0$^BRSw5H^v)*jLNN zgvGY5NmR36RLEvQ+w;3;I<=z|DYK{M8OLCs&F?ce{|5m!ir_A{%}{IG9^N(u6bB2l zeaZ8a!`p1>)UF3ywD*k55d5#{`yXJB6qW2r8!M}j8e_@o)j4rFU~ZXqcIWZ3Pnyc@ zdO02My64Ygl0-;Y3<5<6V=Sj`(i&$u>ib3r7bo5QPz8iR>Aa) z@P@VdzPYt%=hhttgx8mpuQ&4+cxYY657u|Y-D%krg*HcPkpz0?(&a~Q@0Xevi{POa z+tUe73N+#!__M=;m*UPa`}^!ucS}<-r8^uuObM24$r1k5WK6N>$gqJ*6{g4 z1J-W{Gk4f7`J1R9)b4& zU&Ci2j-18Q24b`948nIt2pI>VQ8_o)9wVrWd^@%y|GFhfS-|DZ?O5Ur#0fk?%;T~Y z)TP(k3JyZ^IH(KRa>?2U<_O@b)=V!7Fw+(V90s6GJ9NUE*~SP0%4{w!~iuB z$5XAFLjkJZ9S6mTd96nLt^^7tuDh_EPFkV>-svl_tpLsu_)*eZ$rOrPi%;CJ{M%R8 zc(gap7P)^?R5XWov@;?_w6RYlVWe{ayZq?u>hf7#h41Cg4oYQhCk!`=9r4wPoFd%+ zI>S$|rrSsG_jbSBSRO^X3r$v=6Q?{NIaPkwBA}x5ZGC@gQ6J7(D(wL~Yc483lumkA zqCtC}6I^8FTMo??Pvkg)D$IPvy})dT72N1iIfg7&z1?)hss@;^WGnimD5xTJ>LId# zUWGxEY>QY!Hr&aR{ZYFz@d7(@bSPa>?hdOm?4IT<7i2-1&@V&0tPtl0 zicciE%=pOH%kvBj6wBC8Lb*an7b@45B`!*o>RbgDtSf@cxGWcKE0Y8Z4d6WT1E>~c zox=$k)o;EVG!Vp`sVOnlrfT5c_2XHgoT#6L6}q!A#4W2v)-V=qWvMqZSUg90(d>kR z<)!;Nu5g`|oJ>&pK=b(_>_EdG>41=@NcR@?h$9I@S>{BqfG4Ozab; ziuwYi3W_4~Xc;-rN$;w#LW%nq4+Qx?c@*}gu|RiAuar>gjGRw~nV4zIV5otXl79RW zQM+a4`Q9!etlzI&eWHBSN3RBlww<8S|i zjmP!>lZ|@RBarKgYB|2~=u2s>wGIUN_Lt-ntKZId7@%WE>{so)-vT-tGv+0PAGN1| zNwfzoZN#no9C`F#c-vuN*gDo@WSK?MeQ5tx; z7%?l-zO>SXAYYeWQz#)eeQG3Lk2vFWc&;ds5WbGqD9;%d)HGETzUC3|sfi)Yqf>(D z#P^ev5DpwQXX@0?x{9#YAEpnUL>URI- z(ituddS~r>(Yeoi$7C$AGPwKBfY4NSP6RF=!@`&HZD&HO3pRb?l{Nark ze7oQ&s0s0+KN~obwIdE|20v1T)lNT9z!zoEJaaU`#BS&sK4{c*k)-tHiK(lLgn)an zg!`p~W_2%pq5x1^aa>LIC)FV;eoag;^AzRaX{T2qP6--S8NOLH>Jz9!wb=`h3X~&2 z<_Q=BCxsf+_z8((_zTW3f7F(W^)v{i-88TfTJj;iJ+2UM=XlTvSLj8b3$buD;z6e& zZLjZ?9}`^2FI!8F1dlQ3%4gE5$tGW(1eqo;aT>&l_;W7kU~h~=DyBGn2_5}c(#Gu3 zs@k}8o@Hk5J@Z`cPdwj2V-)Bmx4{$fWQ;NhRx2qYX>#xv!Q#QvMTwn2RAIzFg%6FwlVZ+eV2Z`BDwr)nf;mC6naBPcVC#6oTKlV8OtTU8z=tX zz9q(hkiZK|oiEFepztA=&>zkHYv&BUtdQHvZF?DSW;eE)$7oe~SvPH!Go@I}Qj6_SldL8>ovU7=U&bZn z96(w_ss|Nx*7X+01+ifL?R*JEPlflYgzZvP!O^hxo9WaJ#Mv5UY5_tW!yVMhAZLUf z>iTaTnFMWHa|1M!y-clPs&1>SvDy7(Y)gg;ifQSr#&zOg?oz++nul47hPD;0bX35` zL~hGvm4rbvJEMs&ds)Ds>A!=x|94RG)B(fY;q@R-gfr^VAF8w}1lvpbEVPNoL7r$f z9IsB)qbiB!KmBfaX2?eiiVx#ijn~v5vTxKNds%6r+*SK zh;Uvi(D~EffxsH>d{XLdKCSKP5M1o%0Pd*pS9?l=87E8nGJh^NRmxR_Gp;4;tp~-l zcBJ)RN;pS}r^|EClX)x;SnyJwS@8a?FrVO%z*RU4ZR&4@ZvR{1b=FPTRQz@or>B7O&p;cj&g-rt!b7|?S0f!ep z)U?a*`tyN)>GSUr(LB%%cLu;0`xFDz902ia&IPk?bxY&nTAMQQVVQN3|1jZ+{xxjK zPEed)>E_RTm1;NRK7Af~P?Ukd@VL+p1c|k%Y{3B(@Vgi&Y5sM1pIq(51%#x$tqNTF z-FubkepC-K^B{`0I`ZWx7PLrA{z1Ah3M~_EdXxr-R%7YR`guz&lf11tBj8lLQNUZ( z>fZXL4&qK@(FnG6(*iT4*V_)2zAu!b-A_MVt7(_SfQP;hb-*~{54G%H)TlseXxTrr z@5%P9C4>~Czo^~JCV+zsOrz*wG>x{~zRYM$$V^F{#@dPX8e9HRGahZa<$K}1Wt`dmSq8EBC#BaZ%0rg44zAJemv}-&X z^M(HMUD?$qSMDu`arBlITk{|~%4f}TiUh9i1M8a2T}Xz&Q*#`5Mc)O=9ms4;1yeRP zLdOO@7~%q9??mesyh)HLPC+QpRwn6%PMe#>a3S2DH|hF`ttoB%_Kj7uf6B3*N90(E z&p_B(Rvh9{efgoP{#k#^;oFj*A?lR0&Kn$Q22_C+hGAOy!&j1wCD07Y*$olDbDK(2 z2$RZH2L}P64;e#wJ9!z`J&Q_nD3pt?A33A@)`3@&luwD z2;%eO-sajTT@B$St^p;m>>csBFKZ`x;9vr8=M)ym@`)ThSF_~`8I(8=;`8hUR$wh` z>NnBz?7zw@3K;>s@-|(7>~r>NH%JtD@VTbzt-uto3*iDQf;=m*sh*!l-7UP|0)-WO zyy=GQLv%X#E04MoJ~h1sh+ zQ!9$MWRt(>K!3>)W)trX`bgoW?|1XM{k~lFPmekeC1XSX0e0g(Z}ykTU+mR)-NWDK zo7VnmQdak*t2p9slVQn!Omf5jG1+DJ|7Vh0-lk`!pt#Oj0BHm8k%un-Fa zmoFyM*qqW4AGo935V3x+w|aI2+O|Q(0Ddcx+=MQLp`|0m7`8}v*y=TeJ$`R?Qzf%) zXzcXl;b%Ro%mXIYr#*)}uRF=33j+=V=e=Tv{08T>(l!+AjtoGDfvm_7%q0o*nz!tS z3JoBdu?&W64JF6q1jUn2IrIU!6%BZ+Ss_)Fg;=v|OVd$8Ih5@9kCWyV4W}2yP+mbjYj-L&YWYqlXcLpa^Qc4Nr=%v_IdDd&|OF% zTIU}$50PqUov^DvXiN_GP*cNfnky4)gYado6<@L1>@FKTK)0Y`FGWdyAKja*g-&+rf9$fq2PBmGDy#JB|gOTv{2>Sa`R%=Vp7}o61K~#V$u!mL5dro*^T42W}K= zk@Vc&ygW(T#R1Xh617-3n?zFH8e7ez3Pfy2)^n!l*4MXzHWF8lCRa;9xl|MdF}M|DaQ@sti?AMxZm z3p4nt^c(dK`EsS0(Lx6h|J1yFqLBSmUVwhtb}7-@Y_sWdsJSIKs{){unydw%1h6_} zFWAq^h43mJ0+Sc=1p5iz$PcVAC@uH0En%|OX(NZZ2NM^qrSFwq2xbLCVM!JBh7Du` z_2#qyCH!fZxhEd$(bi~2?v#PG=RPx~f=x(035*cyH}T!yRG3RD0C->$z$a(YXE5PY z3G&IPZ_u#On`Uagv_=JcPLz#bUd2a}H;*(q>La;s-g+?=PwmccY`Wgq`vrw0{t$J~)Vft?PQQ-h`RJY?bOUn`@C3PEe(FHF z5XvePC?bL|QW+L{i&aaAv815qqPKd!tG<69^3*&_-x+=J`r5mj)T{kJOEr`0^;-pt zt-5vebxlZ0_#gRmfG*cREn)4se)GMw^PRT{&rxoovDp~xa$bT|rm7DVxs|s40uzdg zhm(?LHk=}_LTdUDqR{NX-A@VqmGj_IYC-24#Nc3DE54XXP8cqVc~GDPqF*T)NVe+f zujdMT@p*!FKUanV_3hdz3E5XEjw)P}t?PC6+$AvzK^bJVy;F~f+GI9I7m?>fXaS5TrvGTu?CXl{9^;4OYxEtXO_(&CERZ#LIwWmmE(1vav6>+C7_+KsT2 zeQU^`Yq2%kJF&I0ozFBuaDD_#kIhc#8H^s=uX&|GMEylMd=Auj;A)ri%P;cj*IxUt zYL{%yJ7GECcXwd4kNLQnaDF8ULgNH!x4eT1K9#PV+g(9K6|t2VueA5)6}eN=kU}yj zYL};8eYMeO%&vVee+0iGQ{HXxI0FR-{abKQZaJjT--7%82)_IyxCZak)s5vz z8&XJ(NR#d{nP|+ml4wlsAHW`cwaLM;{{&Y0?qU{$H8l)^@p^mbr&`jv#Vv&KD#!4c zepzHeb9m|v3!i@pI&uAaF&9otc zvYlm-?GrDcpOHm4zZ$K+nc^TKpfq`4N=!SqjQW@^eZp=KpibMIX&--K+^SuQr7Z+s zEx4|{juZ#w4*#>5|JU5O6+W2^Yg3Q!Ap-N82XO7$0alb1QV8Jrcnv%XL#y^wfOWp7 z84%iam6zUcz=}sV^AlkSicf0?XHbX-T9AmfT5n7wSZ_JfoW?Oc9WC>#UXVpxHM4N3 zxVkd2L~je<>Lg+uTph#K&jF+g^x*5s z+?>2RSea6fI;_aX*u$xq;B~i8s~@ag&<;c&%k(G(vI22uB=LsR?_P5zR$}Zes86k% z%FO0~8&cve(ExU%*mvQplB895=9o%3NNxlEhVLLFeIx2<_!nsSSb}{qJKTL&jQx(w z4fqp>5FmY5nA55bz#acV1W|_#5AR#(7_Q<;gI-5HbK2gky}$%WZbU)3gdLCEowmy- zR)`VU7^{wSfJh0c>@+ zzAM2#$K9=}e<;umo*N`^1`F8nfVUY5L$l{Lhl;9o6v`S0Wi#UkX2ohE1> zFbctpm#<-{U=;P&+|L-D%EJ0qtuYRe%k7Y$opD9A98xO8dK)n*o_obxD+$*pP0(=!`A^6qJ&3RfTesI^2;g9jefdEb5FYs`mCWZF)7S z(Hurbd#1eF;L-6@RFR=fPPJ#w4XYl69^IGKsC0>z=0n3J{2EXf0GX;u2n|Z$c$qv_ zpwy%sk!&?N9u#r$)XCU3G^tP(rKJt6wd!HZK!1;mZSf&)VvhQYqjW>hNS|?eVjP#5 zxt=w(;jEgV+5iMyI{ zIbp=4Kb7!(8rEKM zPF?08fL6In?fdypDrO)RcGMp#=ExzFo%$IrQ=m=OG*4zCFI$t*@9NJ6(mBZ(d}23R zIGrNw^{i$ZDW}gV=>dAwbQ7*_)1P=viVd2KNxbVSK2vCvu+ZIf^&+e!Dz#u(9%-cu z|3;-drKW2fKDV8$8D+(r1(rvumgnHGBxK?sHEeFil-n;Z~{OHhHh)Q?US}7k(DL<4m0s;eu7FmtBjM%@|1~~}wUK6!SZ;?_Bh8}P}H3Vo@C{y}z z!hnFWzTHs?P$G%K_9v~sXml%!>&XA4Mr|ukSthI`f>pNj+|7kLt!^g@ z>5utIfD_zw%Q{;rzo=9Nm$ny=7DeqCTJ1}>w8C~?|4J?+egvg^vsmZ`f_a{3J`$M- zWDs12FeK9@WmdKmPz0?SwkN11@N~Y$X$TxewBQdV(5-{uJW-}RQTS}UXDAFX8(XB6 z(j;ch(PcyoCoZ+_h~PXh5lH>KAdGm|UA@HA}qU(~?O{s(-0~NBUbuXzvYyLZz}sjkRla(2*h!f?j&-H$;qg*A@ON z646&$bexrtPvaRs7M2ALNSG=zuCa@M?6k8jGpL=#a4A8XEjfOMhH_JZt1i{=a8S&Sa*pJbB2;vsXE zq2ZO;VOb*)Oafm|GxjR;+CEAjY&Idtw(jV168Meq*!h8B5@N88SN!Dr{RS(P3cxk0 zM3GVh7Hc&6jyDM`4YEoZ8co?5rZp1HW8ssTAZGW40&(bbt~OZ_Gw{1{iviNZCH2C1 zQE;S4cUu=`yqOjFDs3Q;%0GZG{s8Iz3&`#d(1QPDm!DMryX6uLP1I(&c_hCrR@`3* z{FT6WizAaQ8VzvYk5q+v6*gTG?lLz-@#G^k;%MFyckWBuCj*0stZ8MZ!|~3PpJ>>SY4JIF!<7lD{1o zAyG{yy)|PyvwfSB0%l@Jw^ZpRqRWeru__#0=3b;E9?XY`oCH!7&Xp9hIa~A$7#F)a z4|MP`iAw^x?S{olz!)V7hrmz27ntgrOIm&un95b;@U(nI^nvu>=k|>}gXVcSKtP;p zp+Io|``o^!mCF|i3k!2om%oqj`|76_N;aImJYh7S3@PTMfRKz$_)epO4I51CU!~ta z3RYGw=x5X?eBRu8gzdg&K#U)emq@#Jinj1cf94! zOl<03zucX7)Yc+hT;$#ZkM?hMtqbro7-DwxbX5_yWNseLzXOmmQ{6Kab2X4A+zq+b zN8G24xVc|@md_52+t(?E4kWPN1Zwa7OYELfE&TlbKU(zt-L3c6Cwz-~o*3H$ zFZ_VNF*fWh|99VKU*IIFcKZ8P=M5;N{=e<-UI4>@<*hcW!m(b;h;2l#r-+ zBuPueeN$&>7?!h^7q&jM{L{Y%;di<-?Zixt8IkNcH zk#)CeIHumil(W6fH$7GURCD|D{}A>L;E`=>w{WbEJGO1BgO1IPJGR|X$F^G{@9D3ehYO}Pn`h!h`CxAq<&AcE95V^SXj*Y+nUfdrz zzT)cXo+SzSv-A{gJtckxSt&T zb!RD7otAN*+^UVX(tmKaeRo8+2hLt_obq&eZ#(&8R?sK)t!l$c;a)?3)E3G@n7&dr zbj?h~I$V##Lt1TpZKJVtP~9yz=CypFhki0NaBp@W@KwR~-;Pg%S|!n$>_6}$aEd&- zpk4P0=MM^BzxM>Q>t78h>A6I`iBg6p0^j!BKZX&wyO*yT8GiRoT--QtZLa^WnsNwv)YFFHG4UJBS(N8o6 zv0AxL7$mCI;AO+KYwzlB9lz3{8y}l4nA#fe(bi(%k@T3}e>W^I#u@~EZF#h9*RJ?6 z%FP=~2kth0mIvZ1Ta^!^O1z{2UWQ~*1G0efL&HN-Xr;nSz~@z^3#(g%Mkm}xbbs@w z5;s#IWeIL_FUncOm~NDlsMSCqa+S!Y6tpVwDhNjzk`?gyqZ-IUP=lANWS<65pg<3; zS1;BUT9Um*cts_^4$5DE9Rz299Z`TCRU%E`HvfjeS%7K;dQHLZB;EdK z^sje+G;$ud1jZ>S`ar4sfd7N?pAG&K<$q>@!P*FJla%udghOiD3K$2%v=Ip2*AD>3 z`VX#uQ~CvROp9a_!{}BTIaxZsm0!eX4I5^@q4R$5avr$1mp;<-@Hq@yoX>gGW8I0v z>G_%eCF8vp0#{%hy7FGk5L5lw@2qEs53jaqu15+4pg4>*7e^dtp*_( z6?m}Q&3ukKCvbRSa~sQhS~6c43^vB^up3HWBSQ_!-kRy!x9+YZe;y4V%s-Dl?JnQG zm{yN#+TjM>_$xM_bEHkUBPGAw88*AWayEDV@Ym-nUl{#$%O{zGbF|(9`V2WFmL->eqAPk=4cWjl`cTEswJOjpawfGu9gRfbr`}3f_e0 zN=k(Od8Etv75>cY<_k>)Uq~S&82&HrQ`CzK^g!utSB^D|Sx(G@FazGqbQBo_-i&ku zx05+R7#*jQ?o$)6T4J#MmuF+3A=ykwdmr~D!YH>Z0}MYy0($Q{ZFtj6v>7Ybyzk*r zPQSrS3$3FHybD#}WMzqYz7RTViJKY|ocw}Y{&tSQyvb7%a3e;XCi*k5)|fZVzRH1z zoi}6_=hPWz7G%B>qNEb3$YaBsiwVDI)!e+408ho&xeTdqr^9#Y0x_sv;JFfN`{zu! z3e_(axvj0Fl~aim&$z8ywcrDS1f@j(s$Jbt-X%( zH!@D!XMDT|S*b6tJ6!25+OpjpJFz@()kAQOcFXQhFE5e8ys3L0H|npmJ0mqOb$nWE zI8r5aFHOrA?DROaRtVPjb1cab->y1j2c0*YJ=~s}Rx|XX^KE+ttrB9YdC07?@kEl# zcMrxn50sb7GbV2)(Cfip$UYtG*2!|pwU6RAa>_BERCR4%Up7eEI0hl1i!z{J8#qlM z90Z+w*JY%H=nRFaD-AsWS042gkv|x@nt~jHaj0yeDn~B9AE^ag)oAAzyJekhnS5}(v1HHC2U)CKopM_-B7Mzco z+K4>tq8rg^)=$$CGdc1+bQ>& zxm&e*2o&5TAzRnUiR;~sIbWPC#V3c3f4?%(X4V1z!9nF+xD($qdsSC%%ekcFlVFvv zFXanZ2Ufe}2*G!{M>`);fhm$~Luo*`r+s8axan#@J%3CYEB2lSI;O?IzqWV+GMkuS!MvNN=D ziP<~nOV{v9-ZI13$BX1>E~4poUN{%o?4X&U*pAO0IfU7)8wif+(g;;pTT*;I5?UCY zymdp=J7wg%&a`di;2{FI6|F~AnmO3Vv4_{~%Iqw+&SlX@kC#h2oe8yZc6K>J;)mTS zhGgegdo6|i&-Us=cb7jvrAW`>W6JlHgz~oN>~Z-r;G0@3PU{v7NzD(kM}-o`3tBBW zlIj+WyH{>*YV_>Z)9DyWAFLcBc84MpHxfVLjyo97uYS?eT}7!lk}urDD^K}Vh{tLf zuy|Xvq8|C??rfN!BPffmI-j1K&{}IYf?sLkF~Y65k)H55Jq7Ph<9xb=((`zFps-Cn zGD72I+GXa}>{S^VoYUcG54pCbZp6`G<}Sc_wz;)r|MdxL$EZWDkS%Y*h`ZkGSet9U zZkT?q7;}Bjye(r{M;^ z2@Az|75Knq8~eNb9gCrsYlT5v=e9(d8bK|W;*)S^{833~MGuYU`*blS_HokthVQuG z)q-_rt|XNR-!(ygRz9gf*|{h&3H)sG;{dWv7maaUh1-kcHAbMzUpFJ+O5cmIuns5XdzOXThlBRW@q4#9yXWryEp_4V2IVR&%uVz3E2_Teky z=N(t6uwh0<2(lDOVnV1O@h=2qyIx7Rpojs6hKND~b$FPHb_Pcq|n{VO!!MBwF^8iWQDkxKAQ-;>r%7ykC z&$n~4k4Kc;hEdFvk*`u~g8mVLPBA;$Bc;h(F~e|T$JG*p-gdEm*y$)I>5PK0zne~7 z)Y_xaO53K&3wzNFo`-epTw7}*j*CaYgzHouuBFwmdn_gQ+!RW^f0m~z`k$VBbNG2a zbN58IY?1l-SbIJDrrTsQ-ofN8_PDXfLk#9JWxa#eNN8#8S2NXDr@{G-@$>a;+V%6S{~Jzm1^m#~;#;lTEZjUA@M#GC`}YX!I`c4#spUV~T{}1{;ikab;@0_f$!R-x8)GEl zyQrMbt~TjiPSdB9!MhH?FCky*13P;`l6a=R0MqozZ8S|sLW5$wHLRXrh|6h0)+Kn^ zXfkEc(Oho1G%ukwyI&s^&ff@Ziobu4!o`Q*UsiKHr66pz)g6rQTG2)HSh9HUAvnYb zL*3Y0Sr+fEc+fqMNK}sBIS*haPOfafIfpgQQgeMrg)->P_m&idQM1fbIEAOljkhuP z>TY0!S}a&B<8tWb2!SbU8Jgc*Rpo&NJC`=~_#EJ-7`>l|eLg;C|8tSrZ6&w!9PU7a zVWySgLW9l5dUIV)P#L=(r4@9vh;$WOr^*txr~QbvG6L|cgW76p2`UGXJ?+&F7*MOJ zGg7{=4+TV9I_#^d)qIYtoNnwkZl~)~z62Q3qtC)??OPW3=Wwgoc0*>l33@+tFzfx? zKw%rg1)A7j_vbxO{E5jbo$N)o)>XLx+``E>*A18>oo3oG`_~3Al3;VgvwlwIym5rm^?}K&cZVTRr|9^HeETK1I^3OUnM9`tKW7sA9Jtr`=%Gb5XMYTLS-Gpq|) zki{S7SzF@qwtGGM<=>i|AFo|nT_hXQ-Pi&*SACiiZ$N(4m@>pSPG)e!MW!}JE*_ni zmXo?J3an9QFVrJi1rS<^=u-}O|CC-LcX9@T(f}enbG{6+^b-bF#WTsXAX50&K;WU?NW`9g9Z(72G-sNAK&i%Hp5 zPu9lzl()#Gpw6DglIl9`-)NNI7{IA>h-0#%0m`5b5m3^ooGi<8QZ7&OIj}LIz3fV9 zV|#WoN@%-A5y53-tDN`9NJo%H?T1Rb`98)}@dUGE8=EqxR68e_YIl*6!&gRmt=76rQTh6_dkw$}5kUng4wC~lPx8>=ox^R;imp3Q~QwXssSvyK4^9`LWMV|h(8 zF(|dykL=#5S%(wZe`%{fH4Hz9N6+*KFepzxziQAH`U?_-rTvRQ8}w{u3o_sd1% z`y-BoO0Jf!hL)bsGz1Rs2vH)B@CeTRdcJBuCy8_b?^bF5;`KGscjUId95)WKPW^ZAlxcj+9RbPpsp!cSjIb+ z5J7eWbcbR5Gnt_O42cN*uaGB8#(56=Q|+E*w!HR56KONM{md0M<$uf>=oBir5!^sWriYN(e~D1R@~I^;lG%1E98~ z(CXae$5$}^EVPtaioj}+UCRI{AiLiJ72HCbR{>Bp&tJZR4fsJlhPIE6*+efG?l+44 zMy}P!b16pjZUXM^_nig$3I>I=lnre&iLpkle3tSJiwKc9+kSb5is8D_5(>$|0OrOY z>NL40shjr00~!y5DPXt77#V*kAlUIPL`B(Njx?dz(DE|Zlvvuw_AI}B?6 zb)z64f=2w^7C|uLb;NEcLXgjbU|I~Rlagl2kuV-ULR5_23;D>w&~@~&B2rl{&FWx1 z5JI(aSD5@kK!hONEWqcOxo-U>-)l$Ak)V>Nnk`IGF`gFL{Ghm){5j2$RGIx5eKnH0 zp^#KxhO$8KD@fB}kbp2!ya|gkxTa|)$PGGEMgT{{e|F8hIv7y%9l;_l(WQ$Z81Gjw zvH+;sXg=;uq#ZunU=8^G*fLor%)DpR3b!nf+lAhtpDaCAqb{N=0K;R4leRm z4@c+|A*I`a=>0_zgSp8cGYrwYKN6Np=R$p^7!lYj8xuqC*c3-Zi=*kI!#w`y4wJzp zdK|pAy}Q2#%=;#-z5ucU4lVm1Er;hs-qc`_HSw^BI9X2~I#F-b+h(0F#EKrTO$p$( z-MUdh5F^;JFmNNOvB955G-7|>^N-;50PXt&Q}JB%diQ!|b|c}xQN#Zp?C(vSTp8Es z3A{;IajTWJ<6>#6W9evOX>Su73G|nQD!SRc)b{4WztB!5#zsYE_!c)9cKQ-FM>*6; z6g-O^uSDCN*!)EBI;go{GZ=>2Ewx0YekAxcJU@N7e7`SK>wd>!f3otWyOe#V6d$s- zyDiTyAEHxhIBiV1(m+nHRHcS|Z*5fF&lBOj1L^rE>~HaJ|i$3AQ3K z3NE^P)_P!eaP@S2)o*a4We~qb7e|=%lh!?jyT^?yl9uPM-iV~d%vUi4txiU*cOE>* zofthOnLP;7`XlP(*yZbZSP6?qiTk`Z54F(C=dC;T?YmLg-~sexw1nh+bS(YD6?XGX`{^ zQehoPn)aSp_xw9b%Od{37D-ARjq`Hu<@5N7u=DF6)7P(B@A=1wZ62|0Z&wDqP+#sL zSW8y3^4NZo+AHAS6=TFb<;nJEtp0e7LEE|m;Pss(W+I2vGtts8kJGaZOf`Ou?s0dN za()H4mXz9_oO=1Z^6*?<>0;T_pzA4b7~1|8Gt+LU#U~7`?fkktY69~paBsJlvOeNp)ldJDbV9fa!1g7-`r_=?^FvXr^$1l zGz&USr5hODniodry0d^WOzO0@>|g6Sl;fr9er5onP-O8-<9;r&Ig(Ru^3zOchqc4p zWg0Sk)!gdG(210Q{>o5`UVu18khI+V;s~UW9%XYI!6L+L-$xo`bO!{Q9AE;0f=s@iC-C zf|PksSOcsaOgWu6lK~a&x@&|y=M|=nt!W3Qq#XOO)!j8dv(if01!j#}`lpIXVzr@)6KgF1+ zu>3ZyFQrUQ))G)4WB#qK&V8(kSHpRUUZS4al}T-$4%$Ahu7UZB^Vv(EiLxI4dxcaY zHQm~ZbM5-Y3}>~QYPpAW>+S37=r&*K8A7drt+=&mGQ<0_RsB##n9ShJjqH*Cm^Sa} zeR6O2vF&_FW)YlGA2zL^u7X{4Ks7sVV41NE*19jM+j5D#5{mZqilE>*CqF+dh&aAF zL8;4gL1y0ydw}Q$%b&IdaJUv{4LF zbnV`@z$ZZ`X++BM-lt;1IrnI=AQ5l`_7gd@It;KyVFcA`K-LP6%#(2`{nWfqNiU45 zBDdb-Um(B!6}5b|W*bpXYvNwOMZg6c7>lBkXm;z|cvJ*A4xQh`?^?vR2XT41?^^UM zyA2CpJpEcZQFl~PD+J3TtIhwDbZ(nJ7DlsSKWSE5+L`aQ&ovtei=38lLGRjRLO2Np zz1I}%-d!#Q4&zg{IrZNBgV=FgV@r@k#j0qR&Hi6H-iB9en27!t5{@})X`cOe z&vFS0T0j3-@j2)*c%aS&J&du`@U;xaONwT#ujXx5<% z+xW!;$f-Q)l_u3}DrL-!QzER+(y|$>wR2+a0!4dl`IU8}T82$*|67a+R|Xc3HL#hP zjP9$;CT4|%uZ6rpS0AFjCDxIX!aFw8q`7D~p7JY(eSqllP}GUcMWCq`*Y41?=gLXL zt`Ld57$a2v@)6}X__NP0rxd(JXqvN8<7!Tj!Nk#)yKTxYhXlN@@>uOH)K2XcN zRsTlq$BNH8{)1W_5ZyhK!gHIBX0DC_5yXmvXeM5^RiwNrr%dgo3R)eIr{Ke}$e0K3 zOVccp3>n0l21Sc%-iJJ*Awb?{xh-i*M<;{w! z)Iz(!!uM~k^2USNWwoHy5PERp;rO-{`eNXOYIflu!T>Qy>QoCs@n5Tbl%2kpAz?Fp zD5?W0#m}{BP|Z~sf>CUDm?B(Y=;*92xK}CcPeBU+)`NreQ%5%Epz7m{L)|7=;4dRA zmLb0yZp5s=Fc@Z)I1wn@5;Ad_z{)1lQl1*A2xZk1ga8B&N7K2}pBqOrSCU}RD@las z>ca|<(2<@Wu?l4!M*!`^f`_UnS+JR7bEGg&{R%KmP(kHe+6jh2{kH_oTnd^#EE&Iq z5LUfC^75?s@95@z0kC>-eORvsQ_EEbCSTgUe= z$|~Lxl?0S;ELPuBkJ56s;AT86z8$zX z@N4HS`GW9NFKYk2zo&$*ob4yg?W+5ra(tWvv|4V9P&nb!Y0R>-u=|TqK)G#h3@`k{ zZVK#-XIiZJYDVMK8z^NJe?>}`D4UqtXOubyH%w?+oR4I$P6>sRQHhCM5Dt)mMG2C+ zDcnYN5LO5X@}1>ADX4~9TwGIA-+Qib|lVBzM5PZ6`BS{L0By`E9ALU+>6TS zQcwgHbswWBCt8Uy%y=hx@=LcxR>;Toi%NM>a9B||#FZi|WO-DqNN;oEAU0-9(&~f&Ihns zZz{l*z_CO%J^YI-DrHTzFO?B}E+q&0N2b=_k0FLLT+BidditDnqWEbkXykP-mZMcFZwsVFRGvEuZAx`60>~rtJQ&81 zc4uO=W_DrnyWrEi_{P?7g~z)B;a}L7{I~N~d3V&XXA-rGN0juCj4mm2rjY@!=e?HBON70-H0w%!5=aW>RqCRAL zNj}0E8FN51BbbXLp9?4N&0=wjD^VhzX;HE>^u9N&q5Q-`pUA7Ww$;&46{AK^$cGC=lqvi%r`e0@%kVFL30D zFD~8Uq&QYgbo5)7H$OovtDpYFj2>Rg9@~Y7hD4TenHd5MG)O6LS3&fnhN!8gT9mNl zKa>W*0F;s_0hG$f@q$L#a7ELui$NQs$V#lM>)oM~;D~V~X0xv{2Ks^K0Vr`g&(K5? zatn3uf})9W+|Qj5#M?9tH?{foPCh_)oS1u{xDjvJD5=^~P?z!dc>5_H@5n-QB#MK_ zYbdpW=p!cD2&pGV+X($ijIt3*NsO`SgM*UbNP{5Qa>xk@jYf|6+|S63(RWP$;S`;q zb(21TzL>Y)to@}>Eod1=j|oPj<=t_?3$?pbYSY=aeQV!l4s8-*w$t_uMauLdC1%i>fr@GDYyn^!C{UIPWi1WP#X$4RPV8ayyjA~HmMkD zy7Y_Zg3ITw?U5%JO4FFuho# zRR@fz!c5OBP_FbjlmKyU_2~Fq=eubiQHp^Ze6zef4q_|)oE<}C5&7hKFbwv^i`@4X zzp&Oa3m!oUJHo8p2)1zfmr>$ZudUmN!zkh@8xPUj=Ncj+_#h5~ZLc7~Mk4rZ>;cl^ zB_w+wZo#o`ezR{yE9sfFL0kmKQ{NL|?9prk(a4lMx8a{35;A&Fq9G+2LY6=&{GFgC z2Ly1gTi1ekffj>!lNdYab`T=?U$zwbFs~r{@DV+;SbQFRfv*B7;MbyF32{q{c(xHX zjf42=q$>7(r@QojZ@}|Kmdpe(7$bRhrPUix5WRUl`oeJtzW`rB&N7BP0;0UFE?rsh z=qFwnG_M8m0Rr*;6^JJ|Vd4tXK=Ui0Z6J3aehZf8WiG{-%6AU>xu+SzAU>~5!Z#hT z<`f7420decQZb;=N6>AAq*|wOwGVDpz=c741aCTAB1oP<`BV5`KlR!S&}sJBwF3UH zK=NeJ_b493=kb0NWaIGqc;`p!sr*MljKElv9?haJ17E`*K_4-<5olve0k=UULOfkw zcuFLQd(r^(?H4jQ|HNb4MEUSSYLH?ZAq(XfAx>X61C9;Av;UAn?ETma^_OG(FWIG6 zkmM=-PjSu%{#@_h!2WU!L!hEfhb^;~j}G_hridyW${y_sa!k!_pXP(ul9%F#BnI4E zfNX`s%6A4BQ6z4^fq!ao_kQ$^{I`2@peZ2aHQR& z=#_8ilfT~{X3$Y73n+zE!K|pEu_;>%#GMTPdGD5JlYqIiWNN&8Cwdi^4hD8^H@UjU zRs|H;EC~voxSZjw@~YeU+8k&+;MW{3oK**BYhtLQ}_W>_!rD~nZhT9QQVLBX{7C&B7)^o+OIb+Z}|bB zF=g!Wo%HCh1L0eHsz-kXZ?XJXGR6C?IGBF(KZAXdDdaqv?lBFRweX)EQ3PNMDg@dl%MVk6EtVDLs1O-@@$4Jy!sM(W z&JQVYp0i`};PC$jO7Aw=j+9ge;~0OnOIh3MONDsR0f_uw*bGMlK%3$3F>Np=KuzC| zIZk7jVHPly;TX3`Np(zdkx1+U5Q8mjrsuwLI1Pt1qy|ab_uw3lKAD6(RfYHrYm?G? z!qVss&N2QSON?Xu9yYIN)?F2nuN_y4^b_TZF|W46j}D17{fUANwh4W@%Y#`hTg9j$ zCGBKznX8yN|2nlo8H(L;J*idq8^dyY2S)oD#YU}e=y~kQvOH0Rh&!idB6d4NO{p4x_^&^(B zZ0zYJku;Ldlq%#NQ`pd=?MAEhAw2uThI$$6A$hb)`JKvin&+zS1b)7uVYPYBl9h>Cot zn)%1l1sth83=v{YVv7{B(PI3A({X~ zUpwT1+N-cv7mAbUthA);w75A88buij3AnGEl$s`Kb_x{CQN(asRxXM1GBEM)cIB=9 z3x;u@qwh%poBiyxTPaS={@5T~-l4^QZ#$y0G#h$}dpQjX^6&C8BGb;hXd8_c6hYv7 zyLP{n_VO6={C~c=Hwo|M!Ho%UM*C`VgF}8;u}5-C%)VL7V-jh{gaEk4zl#x#K!=OS zDJWD+5oZ;ZL4{}8WZPnS2Vv7xAO%q%GGTcGZo&XIH&alq1xOt7IJN%QFRgJ?P=2f+ z=fcBy$dKV#)L7o^KR`RnoGZz=;KMgxrqo${dZN(opKi9$Sbf+SAjA3L?aD3aErEm@ zMHn(CA$1v3MLBzG1c;%wbueo3aTbWT&S03=D=3Of)e6$&;uihv6q=?u_VVP^iAAwq zRRl0O_I#0w7&va)n|+*vr!%5l0#D7+YVwsn5zvgQ6y14UPFShc+Uv z68G8obaLPn3bPgpCoXo>R53pGZ%%B?u616V6y$bM=H$7epMa(_rh5^3gVLG9`>QPE zWQ=lcP^!V{7KjBn83j2hDJ#?gl;%|Z|Dq%$goCIeBjkXIxhItO6B@8_p&)-%klCiV zCt_0>?hFPTC90fTT5+e@4RSIqIcZ>TL-cI@J{I82p3uLYu|tN;Mz6BZ zuE9uv8xhADGiGkE>v1KaAh)C>=PP&mjn%ws6Wk&cBb^2l?59lRJ!&Ritf;>v6yM6_ z0DHw>5Y27Boce|N=c2n+#t${;0Gz!J@f;O*ptBC6Be|P}=mr6XO zd>0XrVnzJ8g&7kU-Jmeb5F~OH^&Xu-Vbe3uXxQ{SX9Nvreo;TLoq7}EZe3(O62FYF2$LFm zPB8xj#phwuElj)JTQYm>A?MAgTs0opWf1tAKLlJhYj@*_ zpn3i#K(+_LiHbRF%aZN}A}lLKQs{3y6g`_dBS=t4P$(fHAmiwFw_~FaBOX|vttucR zs;e0z2;gc59jH&;FK|g}zX4Lo(sgfH6uQZ=D zDok+Bc>$SpC6nECISYcqEt(L$#J>z#hW+3Z4?y^1NI?Q9fRFfMsvolxPk8dwl8~J` zpr1I~#i`-#VC+f^04|AM4>Md#NTgS@pST6%|@TmU6y2K@LlFX7}2bI5s^E#GH`L{en-A3%J%=gh&O=(J1gFXWo4`QJ>K| z&!7tXrY4(C;mO~H20O}XZXl15fF*!o&E)KMjN6o=AKJ2Vx!>h-Ee zebU`c1a~B4uC}|B$weot?Je9eqtc?b%LChs`L0>*Eex0j0YOtsoTL~fqP)iR76u&6 zp{H=6apSnU+@Wcc2fi^XooWd1Xr^N1>Z3%WfNAhrMOcQ|+WTbThG_tj0U~5?%%riZ zeLn_gbXJbC7qq3UO!EA zcG&j~%F?I7Ic34c>+!GtBNmL8TJyAnyP+E`b!o7rif8HY$YI=EXO6aS0uxmAcy2e_wYh z?RgB2n>-rLHOrsu*(ME~ezr9{Dg_00UvSLGIXvu{j1>QL7FXZ^93xepJBAboudtr&&hNvF1 z;WjPO_XHG9pM{e&Td zF>0gv1+nfr1gqZ9(cXwUhrNA6MldsO+pNj+?i-OT|9i1vxw=DTu-Vbhw;qmjn&K*i zIJf5F&{YlSRU1(`+LB4`wOhcdU*3ALP9s=+vEDTi^u9;)^B~B+C2YZA_eTWG4L&Ca zW3C@%{;2XLhVIqS2ZAE(8rWRSq1vb&rQ@R2!CW+ERYm7Nhwa%e;4eM6Pw_ua`0%N2 zvt9;RpeeVGp4}M59fL5&uQ5y*xUF#l4G1S}|#ZcqV56o(87_GNtghzzM>z-KS zberPYAM5RzAe6VWPUj5pF9O%}2PmMpp~BHpPGRECR`Rq;z@Op228H(#=@m28h#w#V zekyqwGb{@ScS#jz8XHOPnB2;bFMUlW$Cju_%M`WZrGf%)Cj6?Af+Iqrhk2wH7<<9x zTtF0wc6?+yvSBrc_7L(w9z?!v@X&e^%Fr|U`VHS8?pBN=fCsPEvQELajb>r!Fb-3# zT?VcFkd?*MZ-z~m#zW2|e01f?-}=c*6gIu7>$9UR92{gmA)5Ky!HVTI_&*){&6#Dd z52*6|8&EtJ`CpD10g9R{>FQbhDfPUT&~5dL0cYUiX9z`NnuJAcJqi-lKtSCnJhmIq zXPhdumFP46=9%9U+!m1xXI0{@x0X?^XVhaPz&=oz4uWE!gq-h_PkQgSuej=sKWJ*m zgs7;RF1oO6XnH^y^W1m2@t@mA1N14wpAbcTK5rx=?X5P@tIrxyG$|)ErOK0jjV8nmJ`q)Q{rAIGF&B)>n%uxE~ac!t4!zcaFrFsn(RDHy(a}BDz4DXnffk{jMz!S%C_p)!yL3O**7*IMMJ|H%59E&U7Chz zRvGc0XEOT@5PGB5qjeqid*Jw|fEEqI zq2Iv}zcezoa^#SieiJy!4-c9dN+&m|qA^Lg5}$%M8R~@jrT1pf_+H=CsXf-2$!jGA z8~iePO@=HUTsDHu;KCiXW_q2#*Pykjq+_$&op8gOpg34owQUU!LO))8vG+50!to`s zgY2ZxRk}i?zI|Pdx6O+6tHRCxLjtzk_V0UhmcS6kOm4HVWYH2hZx= zeBb&Pur@)S;YsF1&*~|+%@-@bH^Edwp}RndHBDA_HSED4X;Q{F(FPKB3W4s9HX|A0 zpDY}xFG&UyUY&!wXik~wE_i;lJ9s10%ZS&7meSsX-0!n54}>~ zn;t7hor0jk;THd-_&8SBCW)~Wm}fcsitEb2AJ_u|W=BZ=OPTYfR)SGfoH!aqh$csB z>aLeBolXEzLUsOV$rzQ*|(Wi@~x?cd|~P*lsk{o8FBF_ zkbV~M7>ChtyEU=c_<{u4+Vvv`tP`>n^?-s5*;y*~6YOuFrN0QyQdCJB=dM_$m|$V1 z81YKKU%S>?<(ZP1X!^XiyCb94AMwu;AT#9b8Zk;r*3>CXSLV)%r8(IWMHJDa8RS6X zD=Z|Q)U83IEJ5mFWg*p(R(yiSV{#`EXoBhPi^_nvC#4J zX=f#Ivb$82UhB*A-u%vBCElwhSSR$WE%Mv`Z~8ZnXUfNurytfC?)5-Jv0WRU&!>&r zotj>V;(aHTnXgyd%O}>n?>B+u!cA}xf#Rz`Zb81>hd`%tvQ*l2q*yhi*`Vm#Bo4j! z_J@MtbUt@}rQPRJgx2o1`q)RoUT8pW-6)>=jE-n;I>T>gs zT8Ww=F^D~P{C)`D@2a~Y?Zdn6#-vEFRFI>}TXIn4nh@dtwjITx7W~OpS{QY0D%^FAQ84L(V;KTGyr>Cp8>auywyW z^~YtcXj*$|rVJd7F6U00@a%@t=Xg_hn*E9kQw_#p#()PA=_glhYNdnClR~Ag?@cnV z>B}X^(p=A^{Yj-=blYIpPh5_Q*k>XuC1ABZf=1* zU*zoCv{*hELsl$OVkgOU_wh{o2q`?TM=Je!H(548j8eK5%aptp8F{yeK^pvtCvDO$ zOvNq@52avvnYJw!40Y$aki&9V(4MSY zch>c^&4@^8&G$3hUvz~vX)EWqmh7dtL!zwY`cN8LG8kYb9CfrKev*c*pENBVlG|pJ zl;V_uYLX~Hfxf<8@(KPf9^gzQ-=4IP-2EnXy2+@c%BH);sa(S*&jo+}rh0i9Bp=;F6;32^0hpVfV&#jw_~`w>wG)dvvH!9M+L z6I0YL@Ica%Y3~~qV~u(;OyUBD!U-7`24t67?2G`Hkjzzp2t$7EJX)Q?beNZu=^GJ@YA zq1PdYNG6Ujpdf+8OBdFo4`|SCmQAdi2FXlN*`FoVzw~pbf=|3OJ?+1I$sE?o-^tdg z;(p&srh&GLJ|UOxk#^&RaUtSwb7E$B@h3@!hB?3IUA z!}Ktq06lmJ5627_a0Q{vDj1!X?uv zEN*WD<8~$@ga2@|&wqpHf8s9ynO1>lqG&9t=Gf#6PAChCPBlD?vZKj}HV3Bc2V!hf z40l)_1pPW>gHh-6xuoAG)Iue}jjWypOO$@!l(ci%QyCXS4(XY$0)j*LteiGujnu!g z2`1IR&ToGCzjX1A?9I0W^pFE|;r&C`U)5p%t?o~0*zn0}Kz@!0vDq$5SZ7jVXiSl< zdXEgU{MClAG-|RTDF1Vdq}X~#jv^=~(>m_^gT19ELTQr#S>$w4K}o#Vq0Ox=+p+PI zr&T;bgKZtP2*WXO-t&3xmu|CW1Cy&@Aps)HW`;uR@?ly;nr}%238Q|Ts&x7pjy30c z##5;+Z!=GwgstR?I3mP1x)ymDc+l(Bwkd7CxGm;hL-bU2t;qTufp+D5pLA)XqUh?K9&Bdxe_@lz%e4ZPJZ_m$4r)-Lfe42~| zN~x4PJ0PvCla+;dh^vB&*A$$y*_U*Xh{M5Y!*;NI7J?3*J8h8&>SUhJ-2K-pc7w~;`-9%$+d@uAZgn1c)*0PcY6?dn zA8!(f9{+2U7Bv+ZYz~-{2?k_${~mK#Ia=x&+5u)|KC-)U)itYa4vhAVLjGtG&HCV2 z7BH5&9De2R;UdKKH$Y?>MIp>m$WEi-pFKA?-`r(hz#m^O zePh<)gHi0+&V4lsHw0<+CC3(a-X0PU$xa^>pqG)6C#IS_`Ay%q-XbS|BdyGUBU4ot zQmAtMBEMStC6*j!!5z*X)N`A#t$G<(xobIAJg)M8+B)-aD7QF{k9`>pVn`$I%F%UDejwFSLSK{n0e+r z@Aq@&oaZ^`{e6GGXWk;TJh2*0&pjzPW}I z_BT8m@EB1{=~N7uwWJQ}62XBVCtdP{8O|`k%mfuo4F{GxhHpGIYVkCFRVXWL((I(I zo7F@1+SH6K)WYb+^qi0vbQiOelj!5Y{Ek-DQ&v%38cx+`P!`c$i8N5EH$YAHzRyA- z6$MzN#X_^fPCu8xBj|e>;+(}vx{^j^KZEYd zSqCvmf*y4Iyj*qBvV5j_b$q{6(l&VP#DYWK&TcksYJaGgXp7fCsttk)=#9dg35B5 zSFE(Kjcb~dOf8nCmK~%B&6(tdXm!C7MIw9xYq5!;-%Fvj>E9j#GW&UpH4n zcXlDqjz`;JR8mTBC}Jx=^Q;Fw0AH0`(7N;aHm!VVK_&Eh3=r)`c>2NKzL{I;$uTGz z4I0CGt{U{)^PHP}0pF;yRHiUDF~Y1H=PEoI=ZqA{3mVx$=O+2;*Q-nrUzl-_E4WCk zWu9tEb8rvkHPqVQG-&czFnqo&{@!jASpO0mKmRm@iN?_C)<=KKb)Tw@X?3`zq8Jg~VO(!5yopa~RRc00M;zfk3>#js+aty|+yP&I?$dZnk$^&p3NHB35p= zcyO6;tJNcw#qPe~I4#A^)LJjsTr8z2L929U>`|&xu@v4jQa44PD;s9(_cHxzUeagK zhp4kbyOrG6eR4ew2hi|q7d5n*IKbRTI!-#TE1u=HrdxkAQOsf(o@Cv-JTdyUDR*%%J|M~aNn!4Spa2_hPUG*<_0`X+C)L|s)Sc|Y|DywKw`~_f*TnQ zc!L>dNLS}+C>p)sm*XTYVAn}zXVzULwg<;Pl;w!VD>JV8lokfk*g+~LMAKF68`@U> zFcB`m1cjPa8&Vud>KBhX$0iyu*hB>olFd!}h~rD;H_>OgYX6ZQcd^?Vwy|_fgJ-O` zGD~@MC{QMnp-9HJNd+4$Tda!5A!ju!v0LCzN34q_c?u*lvdiwSt5m4DlpKxXGOg=6 z*7;`=p6f!dxFP~)%$y2;wf%|rt-@VidCyaS)tA;(Cu1-^4@#N-h@9D%)ijc;{n z%B8dpIQXjYW~s(CxIp-;k>%aju5yv2!xY8(YSg>gzcdjqq2!q6;+!&xq1mM_v4r`@ zIp`+MpfTK-?>qkMLZ?cT$+@^?c%A9uGK?U4A2_F2?wnIa;hOV+^=gWK!0k;}W6qE= z`jm4E`LZuatn^o6^yH$^r!e|x1Y`f|gFr27AMr_L*rrA+OqxEE0?xn5#8o}Zi5d|> zJ;`FRfaFIDThT9M&&Ff)E9DDpn?Q*Tp8}TfKHz-)$3+9N{#J|1w6};H*qsSJtQ8Tx zZa}*X(V}QnS8X?fz`TRT$FHGeMw?%b`uEviVqZH9V`BH{x{0a^5t2nZx~}~3+8sIy zQNr2eFHFtkniLOk*_7-Gy1DcV)$oT!zhks#jTQ5X<1`a)GQ6{uw>u46g z1`qB^98%z3KEf*5<|#StpKo)ghi-w%jueIMmKr={O&UzFPD`q}-8PrXlD;w_oEz1v z--G8Gk1D=>8!M1@?#@PPZvCU)2ITNEx)u3^P@Oy|hYax5Uzriv4xA8du~^;2r;>Dx zy}Or&qXa`p165=}WYF73kMl$3M(6WG3%$FCGps@!$IJ1JpN7YOBL>vC%;OT&h?~!e z!4&nc%iV3(9|TkbpM3P6Ty*aZqD*}JiU?H+ou0w}ZTb0Yg8FWeuWa+7R5d5d*YuGh z;lhFDylqOx_mkG%dil1+@GM%EM<(=Hq$JypJ`F&AOl0}g>n*(0exWpr3$djSH_$T{ zudiwy+ckEiix63YLlyT=Zn|&j zab{3|maikq>j55)-j?5@GipEpOiyDQ zxReOwk-&2QH*t>h}WumF&@5je^ z$$;FI9t7ezAP)sv{+HW&c>L;DC$^*3On|I+wHtNknZQKsRSp1z?_FT*zmmJ5_z%kg zop%FW2^{EL02s=i{J)X^4Eg0OV9R-ai<35~AUfV7dHV#oI_{M#spo+D zfs#M;C>jmT17fPjOHy;F>!kafO1~eRpNc5da_Yj%zPteWT~1Yop(aolBK8RbLEi}n z$`aIi>a6j;-XZk6o;rt2jiC15`v}X(U%GK>0JYKG2Pj7U4EUAprDjok$9>ir%+IWY zPLi5JZMF6(7o)$=$^qj=t*4F$_w`e8KP|C?(V?Lp1F(X=ttw8CEwDTWlfQlY7ow(n AssI20 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/DeletedDocs.java b/src/java/com/twitter/search/core/earlybird/index/inverted/DeletedDocs.java deleted file mode 100644 index 264d105fa..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/DeletedDocs.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.io.IOException; - -import org.apache.lucene.util.Bits; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.index.DocIDToTweetIDMapper; - -import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; - -public abstract class DeletedDocs implements Flushable { - private static final Logger LOG = LoggerFactory.getLogger(DeletedDocs.class); - - /** - * Deletes the given document. - */ - public abstract boolean deleteDoc(int docID); - - /** - * Returns a point-in-time view of the deleted docs. Calling {@link #deleteDoc(int)} afterwards - * will not alter this View. - */ - public abstract View getView(); - - /** - * Number of deletions. - */ - public abstract int numDeletions(); - - /** - * Returns a DeletedDocs instance that has the same deleted tweet IDs, but mapped to the doc IDs - * in the optimizedTweetIdMapper. - * - * @param originalTweetIdMapper The original DocIDToTweetIDMapper instance that was used to add - * doc IDs to this DeletedDocs instance. - * @param optimizedTweetIdMapper The new DocIDToTweetIDMapper instance. - * @return An DeletedDocs instance that has the same tweets deleted, but mapped to the doc IDs in - * optimizedTweetIdMapper. - */ - public abstract DeletedDocs optimize( - DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) throws IOException; - - public abstract class View { - /** - * Returns true, if the given document was deleted. - */ - public abstract boolean isDeleted(int docID); - - /** - * Returns true, if there are any deleted documents in this View. - */ - public abstract boolean hasDeletions(); - - /** - * Returns {@link Bits} where all deleted documents have their bit set to 0, and - * all non-deleted documents have their bits set to 1. - */ - public abstract Bits getLiveDocs(); - } - - public static class Default extends DeletedDocs { - private static final int KEY_NOT_FOUND = -1; - - private final int size; - private final Int2IntOpenHashMap deletes; - - // Each delete is marked with a unique, consecutively-increasing sequence ID. - private int sequenceID = 0; - - public Default(int size) { - this.size = size; - deletes = new Int2IntOpenHashMap(size); - deletes.defaultReturnValue(KEY_NOT_FOUND); - } - - /** - * Returns false, if this call was a noop, i.e. if the document was already deleted. - */ - @Override - public boolean deleteDoc(int docID) { - if (deletes.putIfAbsent(docID, sequenceID) == KEY_NOT_FOUND) { - sequenceID++; - return true; - } - return false; - } - - private boolean isDeleted(int internalID, int readerSequenceID) { - int deletedSequenceId = deletes.get(internalID); - return (deletedSequenceId >= 0) && (deletedSequenceId < readerSequenceID); - } - - private boolean hasDeletions(int readerSequenceID) { - return readerSequenceID > 0; - } - - @Override - public int numDeletions() { - return sequenceID; - } - - @Override - public View getView() { - return new View() { - private final int readerSequenceID = sequenceID; - - // liveDocs bitset contains inverted (decreasing) docids. - public final Bits liveDocs = !hasDeletions() ? null : new Bits() { - @Override - public final boolean get(int docID) { - return !isDeleted(docID); - } - - @Override - public final int length() { - return size; - } - }; - - @Override - public Bits getLiveDocs() { - return liveDocs; - } - - - // Operates on internal (increasing) docids. - @Override - public final boolean isDeleted(int internalID) { - return DeletedDocs.Default.this.isDeleted(internalID, readerSequenceID); - } - - @Override - public final boolean hasDeletions() { - return DeletedDocs.Default.this.hasDeletions(readerSequenceID); - } - }; - } - - @Override - public DeletedDocs optimize(DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) throws IOException { - DeletedDocs optimizedDeletedDocs = new Default(size); - for (int deletedDocID : deletes.keySet()) { - long tweetID = originalTweetIdMapper.getTweetID(deletedDocID); - int optimizedDeletedDocID = optimizedTweetIdMapper.getDocID(tweetID); - optimizedDeletedDocs.deleteDoc(optimizedDeletedDocID); - } - return optimizedDeletedDocs; - } - - @SuppressWarnings("unchecked") - @Override - public Default.FlushHandler getFlushHandler() { - return new Default.FlushHandler(this, size); - } - - public static final class FlushHandler extends Flushable.Handler { - private final int size; - - public FlushHandler(Default objectToFlush, int size) { - super(objectToFlush); - this.size = size; - } - - public FlushHandler(int size) { - this.size = size; - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - long startTime = getClock().nowMillis(); - - Int2IntOpenHashMap deletes = getObjectToFlush().deletes; - out.writeIntArray(deletes.keySet().toIntArray()); - - getFlushTimerStats().timerIncrement(getClock().nowMillis() - startTime); - } - - @Override - protected Default doLoad(FlushInfo flushInfo, DataDeserializer in) throws IOException { - Default deletedDocs = new Default(size); - long startTime = getClock().nowMillis(); - - int[] deletedDocIDs = in.readIntArray(); - for (int docID : deletedDocIDs) { - deletedDocs.deleteDoc(docID); - } - - getLoadTimerStats().timerIncrement(getClock().nowMillis() - startTime); - return deletedDocs; - } - } - } - - public static final DeletedDocs NO_DELETES = new DeletedDocs() { - @Override - public Handler getFlushHandler() { - return null; - } - - @Override - public boolean deleteDoc(int docID) { - return false; - } - - @Override - public DeletedDocs optimize(DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) { - return this; - } - - @Override - public int numDeletions() { - return 0; - } - - @Override - public View getView() { - return new View() { - @Override - public boolean isDeleted(int docID) { - return false; - } - - @Override - public boolean hasDeletions() { - return false; - } - - @Override - public Bits getLiveDocs() { - return null; - } - - }; - } - }; -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdCSFDocValuesProcessor.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdCSFDocValuesProcessor.docx new file mode 100644 index 0000000000000000000000000000000000000000..e0d7fa7c2892b6562a6bedf8763caba6fec2dcf3 GIT binary patch literal 37680 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdCSFDocValuesProcessor.java b/src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdCSFDocValuesProcessor.java deleted file mode 100644 index 45fec2f5f..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdCSFDocValuesProcessor.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.io.IOException; - -import com.google.common.base.Preconditions; - -import org.apache.lucene.facet.FacetsConfig; -import org.apache.lucene.index.DocValuesType; -import org.apache.lucene.index.IndexableField; - -import com.twitter.search.common.schema.base.EarlybirdFieldType; -import com.twitter.search.core.earlybird.index.EarlybirdRealtimeIndexSegmentWriter; -import com.twitter.search.core.earlybird.index.column.AbstractColumnStrideMultiIntIndex; -import com.twitter.search.core.earlybird.index.column.ColumnStrideFieldIndex; -import com.twitter.search.core.earlybird.index.column.DocValuesManager; - -/** - * Handler for docvalues in the indexing chain. - */ -public class EarlybirdCSFDocValuesProcessor - implements EarlybirdRealtimeIndexSegmentWriter.StoredFieldsConsumer { - - private final DocValuesManager docValuesManager; - - public EarlybirdCSFDocValuesProcessor(DocValuesManager docValuesManager) { - this.docValuesManager = docValuesManager; - } - - @Override - public void addField(int docID, IndexableField field) throws IOException { - final DocValuesType dvType = field.fieldType().docValuesType(); - if (dvType != null) { - - // ignore lucene facet fields for realtime index, we are handling it differently - if (field.name().startsWith(FacetsConfig.DEFAULT_INDEX_FIELD_NAME)) { - return; - } - if (!(field.fieldType() instanceof EarlybirdFieldType)) { - throw new RuntimeException( - "fieldType must be an EarlybirdFieldType instance for field " + field.name()); - } - EarlybirdFieldType fieldType = (EarlybirdFieldType) field.fieldType(); - - if (dvType == DocValuesType.NUMERIC) { - if (!(field.numericValue() instanceof Long)) { - throw new IllegalArgumentException( - "illegal type " + field.numericValue().getClass() - + ": DocValues types must be Long"); - } - - ColumnStrideFieldIndex csfIndex = - docValuesManager.addColumnStrideField(field.name(), fieldType); - if (fieldType.getCsfFixedLengthNumValuesPerDoc() > 1) { - throw new UnsupportedOperationException("unsupported multi numeric values"); - } else { - csfIndex.setValue(docID, field.numericValue().longValue()); - } - - } else if (dvType == DocValuesType.BINARY) { - ColumnStrideFieldIndex csfIndex = - docValuesManager.addColumnStrideField(field.name(), fieldType); - if (fieldType.getCsfFixedLengthNumValuesPerDoc() > 1) { - Preconditions.checkArgument( - csfIndex instanceof AbstractColumnStrideMultiIntIndex, - "Unsupported multi-value binary CSF class: " + csfIndex); - ((AbstractColumnStrideMultiIntIndex) csfIndex).updateDocValues( - field.binaryValue(), docID); - } - } else { - throw new UnsupportedOperationException("unsupported DocValues.Type: " + dvType); - } - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdOptimizedPostingsEnum.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdOptimizedPostingsEnum.docx new file mode 100644 index 0000000000000000000000000000000000000000..595523d468c021ae31c4201ccc6380e6879dca3c GIT binary patch literal 38208 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 GyZ-~*%6$L; literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdOptimizedPostingsEnum.java b/src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdOptimizedPostingsEnum.java deleted file mode 100644 index a60562c5b..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdOptimizedPostingsEnum.java +++ /dev/null @@ -1,178 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.io.IOException; - -import org.apache.lucene.util.BytesRef; - -/** - * Extend {@link EarlybirdPostingsEnum} to add more functionalities for docs (and positions) - * enumerator of {@link OptimizedPostingLists}. - */ -public abstract class EarlybirdOptimizedPostingsEnum extends EarlybirdPostingsEnum { - /** Current doc and its frequency. */ - private int currentDocID = -1; - private int currentFreq = 0; - - /** - * Next doc and its frequency. - * These values should be set at {@link #loadNextPosting()}. - */ - protected int nextDocID; - protected int nextFreq; - - /** Pointer to the enumerated posting list. */ - protected final int postingListPointer; - - /** Total number of postings in the enumerated posting list. */ - protected final int numPostingsTotal; - - /** Query cost tracker. */ - protected final QueryCostTracker queryCostTracker; - - /** - * Sole constructor. - * - * @param postingListPointer pointer to the posting list for which this enumerator is created - * @param numPostings number of postings in the posting list for which this enumerator is created - */ - public EarlybirdOptimizedPostingsEnum(int postingListPointer, int numPostings) { - this.postingListPointer = postingListPointer; - this.numPostingsTotal = numPostings; - - // Get the thread local query cost tracker. - this.queryCostTracker = QueryCostTracker.getTracker(); - } - - /** - * Set {@link #currentDocID} and {@link #currentFreq} and load next posting. - * This method will de-dup if duplicate doc IDs are stored. - * - * @return {@link #currentDocID} - * @see {@link #nextDoc()} - */ - @Override - protected final int nextDocNoDel() throws IOException { - currentDocID = nextDocID; - - // Return immediately if exhausted. - if (currentDocID == NO_MORE_DOCS) { - return NO_MORE_DOCS; - } - - currentFreq = nextFreq; - loadNextPosting(); - - // In case duplicate doc ID is stored. - while (currentDocID == nextDocID) { - currentFreq += nextFreq; - loadNextPosting(); - } - - startCurrentDoc(); - return currentDocID; - } - - /** - * Called when {@link #nextDocNoDel()} advances to a new docID. - * Subclasses can do extra accounting as needed. - */ - protected void startCurrentDoc() { - // No-op in this class. - } - - /** - * Loads the next posting, setting the nextDocID and nextFreq. - * - * @see #nextDocNoDel() - */ - protected abstract void loadNextPosting(); - - /** - * Subclass should implement {@link #skipTo(int)}. - * - * @see org.apache.lucene.search.DocIdSetIterator#advance(int) - */ - @Override - public final int advance(int target) throws IOException { - // Skipping to NO_MORE_DOCS or beyond largest doc ID. - if (target == NO_MORE_DOCS || target > getLargestDocID()) { - currentDocID = nextDocID = NO_MORE_DOCS; - currentFreq = nextFreq = 0; - return NO_MORE_DOCS; - } - - // Skip as close as possible. - skipTo(target); - - // Calling nextDoc to reach the target, or go beyond it if target does not exist. - int doc; - do { - doc = nextDoc(); - } while (doc < target); - - return doc; - } - - /** - * Used in {@link #advance(int)}. - * This method should skip to the given target as close as possible, but NOT reach the target. - * - * @see #advance(int) - */ - protected abstract void skipTo(int target); - - /** - * Return loaded {@link #currentFreq}. - * - * @see org.apache.lucene.index.PostingsEnum#freq() - * @see #nextDocNoDel() - */ - @Override - public final int freq() throws IOException { - return currentFreq; - } - - /** - * Return loaded {@link #currentDocID}. - * - * @see org.apache.lucene.index.PostingsEnum#docID() () - * @see #nextDocNoDel() - */ - @Override - public final int docID() { - return currentDocID; - } - - /********************************************* - * Not Supported Information * - * @see org.apache.lucene.index.PostingsEnum * - *********************************************/ - - @Override - public int nextPosition() throws IOException { - return -1; - } - - @Override - public int startOffset() throws IOException { - return -1; - } - - @Override - public int endOffset() throws IOException { - return -1; - } - - @Override - public BytesRef getPayload() throws IOException { - return null; - } - - /********************************* - * Helper methods for subclasses * - *********************************/ - - protected int getCurrentFreq() { - return currentFreq; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdPostingsEnum.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/EarlybirdPostingsEnum.docx new file mode 100644 index 0000000000000000000000000000000000000000..f08e496f615b706348de79e57cfd419240e2290e GIT binary patch literal 37043 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

    (izh|iG?!5Rv^tHrFl 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

    x-C8U|bL8S0vQ`VD!+?0EM7X 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 Zlj_hwhYXlOKV}sJ$Of1muhM>e`x|D?6;uEK literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/FSTTermDictionary.java b/src/java/com/twitter/search/core/earlybird/index/inverted/FSTTermDictionary.java deleted file mode 100644 index 638cbaffc..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/FSTTermDictionary.java +++ /dev/null @@ -1,299 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.io.IOException; -import java.util.Comparator; - -import org.apache.lucene.index.BaseTermsEnum; -import org.apache.lucene.index.ImpactsEnum; -import org.apache.lucene.index.PostingsEnum; -import org.apache.lucene.index.SlowImpactsEnum; -import org.apache.lucene.index.TermsEnum; -import org.apache.lucene.util.BytesRef; -import org.apache.lucene.util.InPlaceMergeSorter; -import org.apache.lucene.util.IntsRefBuilder; -import org.apache.lucene.util.fst.BytesRefFSTEnum; -import org.apache.lucene.util.fst.FST; -import org.apache.lucene.util.fst.PositiveIntOutputs; -import org.apache.lucene.util.fst.Util; -import org.apache.lucene.util.packed.PackedInts; - -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; - -public class FSTTermDictionary implements TermDictionary, Flushable { - private final FST fst; - - private final PackedInts.Reader termPointers; - private final ByteBlockPool termPool; - private final TermPointerEncoding termPointerEncoding; - private int numTerms; - - FSTTermDictionary(int numTerms, FST fst, - ByteBlockPool termPool, PackedInts.Reader termPointers, - TermPointerEncoding termPointerEncoding) { - this.numTerms = numTerms; - this.fst = fst; - this.termPool = termPool; - this.termPointers = termPointers; - this.termPointerEncoding = termPointerEncoding; - } - - @Override - public int getNumTerms() { - return numTerms; - } - - @Override - public int lookupTerm(BytesRef term) throws IOException { - if (fst == null) { - return EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND; - } - final BytesRefFSTEnum fstEnum = new BytesRefFSTEnum<>(fst); - - final BytesRefFSTEnum.InputOutput result = fstEnum.seekExact(term); - if (result != null && result.input.equals(term)) { - // -1 because 0 is not supported by the fst - return result.output.intValue() - 1; - } else { - return EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND; - } - } - - static FSTTermDictionary buildFST( - final ByteBlockPool termPool, - int[] termPointers, - int numTerms, - final Comparator comp, - boolean supportTermTextLookup, - final TermPointerEncoding termPointerEncoding) throws IOException { - final IntsRefBuilder scratchIntsRef = new IntsRefBuilder(); - - final int[] compact = new int[numTerms]; - for (int i = 0; i < numTerms; i++) { - compact[i] = i; - } - - // first sort the terms - new InPlaceMergeSorter() { - private BytesRef scratch1 = new BytesRef(); - private BytesRef scratch2 = new BytesRef(); - - @Override - protected void swap(int i, int j) { - final int o = compact[i]; - compact[i] = compact[j]; - compact[j] = o; - } - - @Override - protected int compare(int i, int j) { - final int ord1 = compact[i]; - final int ord2 = compact[j]; - ByteTermUtils.setBytesRef(termPool, scratch1, - termPointerEncoding.getTextStart(termPointers[ord1])); - ByteTermUtils.setBytesRef(termPool, scratch2, - termPointerEncoding.getTextStart(termPointers[ord2])); - return comp.compare(scratch1, scratch2); - } - - }.sort(0, compact.length); - - final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(); - - final org.apache.lucene.util.fst.Builder builder = - new org.apache.lucene.util.fst.Builder<>(FST.INPUT_TYPE.BYTE1, outputs); - - final BytesRef term = new BytesRef(); - for (int termID : compact) { - ByteTermUtils.setBytesRef(termPool, term, - termPointerEncoding.getTextStart(termPointers[termID])); - // +1 because 0 is not supported by the fst - builder.add(Util.toIntsRef(term, scratchIntsRef), (long) termID + 1); - } - - if (supportTermTextLookup) { - PackedInts.Reader packedTermPointers = OptimizedMemoryIndex.getPackedInts(termPointers); - return new FSTTermDictionary( - numTerms, - builder.finish(), - termPool, - packedTermPointers, - termPointerEncoding); - } else { - return new FSTTermDictionary( - numTerms, - builder.finish(), - null, // termPool - null, // termPointers - termPointerEncoding); - } - } - - @Override - public boolean getTerm(int termID, BytesRef text, BytesRef termPayload) { - if (termPool == null) { - throw new UnsupportedOperationException( - "This dictionary does not support term lookup by termID"); - } else { - int termPointer = (int) termPointers.get(termID); - boolean hasTermPayload = termPointerEncoding.hasPayload(termPointer); - int textStart = termPointerEncoding.getTextStart(termPointer); - // setBytesRef sets the passed in BytesRef "text" to the term in the termPool. - // As a side effect it returns the offset of the next entry in the pool after the term, - // which may optionally be used if this term has a payload. - int termPayloadStart = ByteTermUtils.setBytesRef(termPool, text, textStart); - if (termPayload != null && hasTermPayload) { - ByteTermUtils.setBytesRef(termPool, termPayload, termPayloadStart); - } - - return hasTermPayload; - } - } - - @Override - public TermsEnum createTermsEnum(OptimizedMemoryIndex index) { - return new BaseTermsEnum() { - private final BytesRefFSTEnum fstEnum = fst != null ? new BytesRefFSTEnum<>(fst) : null; - private BytesRefFSTEnum.InputOutput current; - - @Override - public SeekStatus seekCeil(BytesRef term) - throws IOException { - if (fstEnum == null) { - return SeekStatus.END; - } - - current = fstEnum.seekCeil(term); - if (current != null && current.input.equals(term)) { - return SeekStatus.FOUND; - } else { - return SeekStatus.END; - } - } - - @Override - public boolean seekExact(BytesRef text) throws IOException { - current = fstEnum.seekExact(text); - return current != null; - } - - // In our case the ord is the termId. - @Override - public void seekExact(long ord) { - current = new BytesRefFSTEnum.InputOutput<>(); - current.input = null; - // +1 because 0 is not supported by the fst - current.output = ord + 1; - - if (termPool != null) { - BytesRef bytesRef = new BytesRef(); - int termId = (int) ord; - assert termId == ord; - FSTTermDictionary.this.getTerm(termId, bytesRef, null); - current.input = bytesRef; - } - } - - @Override - public BytesRef next() throws IOException { - current = fstEnum.next(); - if (current == null) { - return null; - } - return current.input; - } - - @Override - public BytesRef term() { - return current.input; - } - - // In our case the ord is the termId. - @Override - public long ord() { - // -1 because 0 is not supported by the fst - return current.output - 1; - } - - @Override - public int docFreq() { - return index.getDF((int) ord()); - } - - @Override - public long totalTermFreq() { - return docFreq(); - } - - @Override - public PostingsEnum postings(PostingsEnum reuse, int flags) throws IOException { - int termID = (int) ord(); - int postingsPointer = index.getPostingListPointer(termID); - int numPostings = index.getNumPostings(termID); - return index.getPostingLists().postings(postingsPointer, numPostings, flags); - } - - @Override - public ImpactsEnum impacts(int flags) throws IOException { - return new SlowImpactsEnum(postings(null, flags)); - } - }; - } - - @SuppressWarnings("unchecked") - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - public static class FlushHandler extends Flushable.Handler { - private static final String NUM_TERMS_PROP_NAME = "numTerms"; - private static final String SUPPORT_TERM_TEXT_LOOKUP_PROP_NAME = "supportTermTextLookup"; - private final TermPointerEncoding termPointerEncoding; - - public FlushHandler(TermPointerEncoding termPointerEncoding) { - super(); - this.termPointerEncoding = termPointerEncoding; - } - - public FlushHandler(FSTTermDictionary objectToFlush) { - super(objectToFlush); - this.termPointerEncoding = objectToFlush.termPointerEncoding; - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) - throws IOException { - FSTTermDictionary objectToFlush = getObjectToFlush(); - flushInfo.addIntProperty(NUM_TERMS_PROP_NAME, objectToFlush.getNumTerms()); - flushInfo.addBooleanProperty(SUPPORT_TERM_TEXT_LOOKUP_PROP_NAME, - objectToFlush.termPool != null); - if (objectToFlush.termPool != null) { - out.writePackedInts(objectToFlush.termPointers); - objectToFlush.termPool.getFlushHandler().flush(flushInfo.newSubProperties("termPool"), out); - } - objectToFlush.fst.save(out.getIndexOutput()); - } - - @Override - protected FSTTermDictionary doLoad(FlushInfo flushInfo, - DataDeserializer in) throws IOException { - int numTerms = flushInfo.getIntProperty(NUM_TERMS_PROP_NAME); - boolean supportTermTextLookup = - flushInfo.getBooleanProperty(SUPPORT_TERM_TEXT_LOOKUP_PROP_NAME); - PackedInts.Reader termPointers = null; - ByteBlockPool termPool = null; - if (supportTermTextLookup) { - termPointers = in.readPackedInts(); - termPool = (new ByteBlockPool.FlushHandler()) - .load(flushInfo.getSubProperties("termPool"), in); - } - final PositiveIntOutputs outputs = PositiveIntOutputs.getSingleton(); - return new FSTTermDictionary(numTerms, new FST<>(in.getIndexInput(), outputs), - termPool, termPointers, termPointerEncoding); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsDocsAndPositionsEnum.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsDocsAndPositionsEnum.docx new file mode 100644 index 0000000000000000000000000000000000000000..1c1df0a2c8d1b65f6c9dcaef85ca8097dc070f3b GIT binary patch literal 38576 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%0Abu!>nsx#dlU<{h75Z(rM^pR|3rT!49Q1&#NV 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 (numDocsInSliceTotal - deltaFreqListsReader.getPackedValueIndex()) - : "numDocsRemaining should be equal to or greater than number of docs remaining in slice"; - - if (deltaFreqListsReader.getPackedValueIndex() < numDocsInSliceTotal) { - // Current slice is not exhausted. - final long nextDeltaFreqPair = deltaFreqListsReader.readPackedLong(); - - /** - * Optimization: No need to do shifts and masks if number of bits for frequency is 0. - * Also, the stored frequency is the actual frequency - 1. - * @see - * HighDFPackedIntsPostingLists#copyPostingList(org.apache.lucene.index.PostingsEnum, int) - */ - if (freqBitsIsZero) { - nextFreq = 1; - nextDocID += (int) nextDeltaFreqPair; - } else { - nextFreq = (int) ((nextDeltaFreqPair & freqMask) + 1); - nextDocID += (int) (nextDeltaFreqPair >>> bitsForFreq); - } - - numDocsRemaining--; - } else { - // Current slice is exhausted, get next skip entry and load next slice. - skipListReader.getNextSkipEntry(); - if (loadNextDeltaFreqSlice()) { - // Next slice is loaded, load next posting again. - loadNextPosting(); - } else { - // All docs are exhausted, mark this enumerator as exhausted. - assert numDocsRemaining == 0; - nextDocID = NO_MORE_DOCS; - nextFreq = 0; - } - } - } - - /** - * Skip over slices to approach the given target as close as possible. - */ - @Override - protected final void skipTo(int target) { - assert target != NO_MORE_DOCS : "Should be handled in parent class advance method"; - - int numSlicesToSkip = 0; - int numDocsToSkip = 0; - int numDocsRemainingInSlice = numDocsInSliceTotal - deltaFreqListsReader.getPackedValueIndex(); - - // Skipping over slices. - while (skipListReader.peekPreviousDocIDNextSlice() < target) { - skipListReader.getNextSkipEntry(); - nextDocID = skipListReader.getPreviousDocIDCurrentSlice(); - numDocsToSkip += numDocsRemainingInSlice; - int header = skipListReader.getEncodedMetadataCurrentSlice(); - numDocsRemainingInSlice = HighDFPackedIntsPostingLists.getNumDocsInSlice(header); - - numSlicesToSkip++; - } - - // If skipped any slices, load the new slice. - if (numSlicesToSkip > 0) { - numDocsRemaining -= numDocsToSkip; - final boolean hasNextSlice = loadNextDeltaFreqSlice(); - assert hasNextSlice; - assert numDocsRemaining >= numDocsInSliceTotal && numDocsInSliceTotal > 0; - - // Do additional skip for the delta freq slice that was just loaded. - doAdditionalSkip(); - - loadNextPosting(); - } - } - - /** - * Subclass should override this method if want to do additional skip on its data structure. - */ - protected void doAdditionalSkip() { - // No-op in this class. - } - - /** - * Get the largest doc ID from {@link #skipListReader}. - */ - @Override - public int getLargestDocID() throws IOException { - return skipListReader.getLargestDocID(); - } - - /** - * Return {@link #numDocsRemaining} as a proxy of cost. - * - * @see org.apache.lucene.index.PostingsEnum#cost() - */ - @Override - public long cost() { - return numDocsRemaining; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsPostingLists.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsPostingLists.docx new file mode 100644 index 0000000000000000000000000000000000000000..573402bdb7fed8b3052a81059367137638961040 GIT binary patch literal 45118 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

    E&8I}Hi zllXY&l7`DV{t)hEN9*>Mb zvr9w$y6f{%;LS)b8L!`Vdy^i1+bcx~-$OL(lJI+=`n6lHw|ab$EUEs(K`qz|F^v?< zp&hdGW(%u5nb*rTT%p~A^Aee`IyB~?1|GC9_zH<*I=CJ_xVnn>vqsxfmDiIkkiMfm z+At8^`}6C#-^d%{^I`MTAx-0>#%r}>n~S^B`T8n2ne{4*Rr>tfQ|sD`yDHmi`5Sql zD=DI7t@~2ycs<&B@8#gTR;^n&3%jdLU6|#S@~wx(?U{j;{Oe`?$cgnBn!WUP@Vh+( zhwMpD%vFm%AEO&v2`X(5qAq1$99Fj+ezydkK@Pu95nr!@XF$+1gwi8q-pkRc>tXoP zbdVfMOW`%tZ(hMGZ-+QBo1#VVkQ@q6=BKEanpd{Q`seG2=5xRd^IP*}LUaY3$4YA5 z(GUoWs;G_Ra{IG`i-s3Jse0OZc0(;j?ss2s^Kkr1CETLbWB+N*wr3TJzN(qtNAmLV zp{;!dT0zNMG~!L``?Bu60;SnNs_~2ecZX)x()9b~{F}|Q?dP!A(>?FyHBW}DaHHnp z!cG6t{r%}xzkLQ1bzmz_p>pJR|B*`>UdBCzqCfQN%;5{E_YMBCbb51gxEaVyh&gpw zO_>lIA7U(^Af9f)@2;ND_MTf}?C_0m6+;i-_w14gYvpMAOw*2-=CHtJ6%Hr#_sg%J z!#{Nf-q0MP2P)wc#2mi|t~P~OL?JO-JkPaJx#Gx%;D-WXw796OXbF;B0%Lgq%^?ak zp#<%+I7FOOTX%)`HV*xZ(pbkZ%2GuKLwY`-ti^41^Jghmidq=W*ZZbvCui05K*4HQ z4Flu0*ounfUOYkp3$QqZTsjmfNbj+rE#X;wegI9Qs@$KLH3v#U2;(i39&L#GA|I3h zS9w0DwGK)GXv?jN%zRM@Ibv!gKbyE_AA*bnP0r|8go3P&^1vNZYd}@DQFT59sXH`; zfcOs35!yd@Xfb{<9iRm{|Ee_ksYLtFN|0R=Ye4@0-M*?3i^ z#r>EP{IsL|$5iddTi}o1e>43LD3DU}YcoQZ{{e65kEU;3gqV_+CYP>l?^a~>6-#>@ zL6wCg+xFGrpPN>i2yQy{q>t;t&G$#gR!yrxcm9w5Y>eEFY z>Epwr(Y)Q4$ZcND=0`#ND62iXRlY=xsB7j}tnYUl7y(+>X&nTbjZ)lPVYQVUNCuD<(MJDM|F%(a_s&ZT)v)^_^j z^W#{w>G1=7R%nea21zG8gHHcktZiJWqfoQBPW|G;eTLWXLr>W;sB4Cgdq-~%=j)bu z68OR``=6`oM_T!HT#~W22<4S{w05&P;>p&p-p$w{*(WN6e!Iktt+Pv)weEqar01N3 zxjQnpZU<+1lPS1Sw2= zBX6VoZ}VRWW<99`TegnrFP87k@&|OhA6=bL;+%g6hxQJ=C0Niz=77m6^L4P=jXq{E%!9u0{3q5AA*4hYy<}2m$&#r{Bgc>zRp}O* z2OmkG=i_MrrS%Ld-!iCIjWrK71c)=nA<6n%hwZC6s9Rx_?GQCakJ{oQPsN*Zs|+0b z6Hzh;b~!@*Pf4PD;x|Oon|Sok&luD1z1MGY5SRUhQ}CG1g236|Tx5nMXolgYwuK>f za&3KfSm~CnHU4(nw(qhMdwvv=EHhmT=~tmgGIW}3z|z}A-Vhlhd>(b4pq%X;3E;EJ zisZ8gK})vKG4(p+im_^#R768l+EfAh+ruJwn2tRbQWnumw(m+HdwM`J;Oerg6%~xV zx&^BuPqq^jBO?xb2I*b(cVEjdcorXI?O$;fZcA(qT9=mXDsjG?+NPt-<2P?#6McWB zEwoQNzda1!eccTWy0w4Wx_Ui-C4MhmzRjP0oZ0-+?f7cp&3vN&m>vdo`vQPpO?PeK z0ny%WZ%!V5Bz%>NeP`C$2*@wFvbTp5k{l-+&wfgV6OF)b>rlALl53Ulx1On5eE&f1 z?)H%Nxn)-SP!xP^Ab5qfen+iAqkfD7YZ8aGAjDibOY_ApPm)NRr(-UTG>~d{J_`7A zaetQ8!9AtSP~*rYhgpLM2Vg&a{&5=93wo=bUo<@`SJ+L2(Z@gi~21oAaN0-Oh+!EiTNZO2~HlPWojNU2zGMmpoWb``DL zMOtftn7_p1T+t?Jx5S4T2W$yJV~ipV`nS@-Yq**4$Q$mqxaHpS-ZvjBF(4YIAeEX zs}?7c9d~g(Gh;Lw^3fL)$To?2SZm6S$|oVk2qmfE=L=TR3Y~J1k06HAZ*h!2x5+Ka30=A{Am!)Os>9u&d9*U}wzTTPVR*VBNvi2B6%Q$t@nt75m z_`A!vR30Fz{2!DF?DjxM5~$W<(&(|$D%V~=JiBLh`FJEssD7Y7}*u^P!{^NXkq&*jCDF&XoqGZ=W+PBuT1IbAn|V-F5_rUkBat`_tN<7La8E z*CVLdW@Ah8mQE0q23xEYY5Hzi+MD%e8I}eg7mXZyf!Bp}6vsW>T+O5^G_t^nXr611JWSYMlD z)X;5V2lbCDV{bS|&}#?ZZ0W877w_RB578Y=a9S8E*cMB%wUfQxek`DB(+hU;Z^5NA zmP%p4YgCa4K0wXXpzS2uJXcU3e3E;i7A`s8%Tk_YJyo(Sj>2`^&(gUTW>zZ|;>T8x z?!}JjEyS&{Wm41}aEAWu9a?l@XHL!J`exFL>vCi})RPcGhED`Xj*hC+`vjH8wk^G> zf>KVjg<0CI+*#l2BS(M4sH4Oy+5Xh+l|U<1c$+5`TyDs%w~98|x9hYQv95}#*=d-K zGQ^P%<2I9g3A2hZN{LUh@&Dd0fHtx)u1_uCE-rk^AX>Fw19dlR*$tPBK^t{_b}g@p zJC}(YP*GvhTa$J?-l?o0ZrMLN!%)S5itZuQhaW+x13zf8xOP}!Y@#PkJ|v3ht)c-S zm86D#Q(2BGcm;3o%K0#nGe5y3LBbLilaO<2C3K&n5nd&vt*Us_S#B)u;op?+*;+A| z#CTjS#eF`Bd}h!3E`zh=#xUwNDzwVuNHxN#>*Fl&>y~viLi=sKya5t-U0abR5;UUN zKB^N(b6=8n&mTc`t*^n2>Lx%CH5pZDlR97!Nx;&oJ@1j*!E^RF4q> z1}DOp{FvH0QF*20;fcy=M@{_~wVNn6Vw{ynuj`xa z;WHHmE$jh@{>0Cp&g1Tfro#qiK9D7xoXLIDB-3d+;9CX7l%eleX zs7Uu|he7Dmsi!%h7t(U3gpHL|P^HmC#mcOhEFhdKCnDIKc)r!l&9eCO8Dc%aMUAXENJcOT+i%kg07TI(tPvdwQyVwL$T81&#xQh>qX!|qwT3UJ1I)RcAS|Z zo*O~?3a}FfBQiDQmo=EUHlZ<}fR%>yb@q);S#0xS9^lSe)(i8ft)Z)hI`j(=182xi$>aN1 zlQDN08=z{Oq?z<6`wk!0oXK0DI*86#L&(llU@495XW_p#dd5{xXq~!LqKKWS()|b$bgqqRXe~z$#2GVAv;gmhM`@6*Kp_w!e_8me|$6S z3_y2;^6L5_liN2|pTH{ehn-lG1Z@eE<*~Z6*%sOV`0+i4%V9O&^K;mF!ip^@f~wSnp%>mwiJ@odmlP>n(M`sEW?`5!lvr~=kip(m5gn}a^`?(K(# za5>F7T#mR>MUK0W9d;^ztU0D`fwp{DhM`A@9)y!fABl z_VLcJDE`JizL1XEA>{Ilr=x?2q8#V@qa~Q!+DR0qn87CRP6>%?TqT_c~e;?MQ{$wf^ld(o6pu>Kzfv$05?;(+5W;ap-ux%lJ(LY zEiLI1rn5lS0HTHRwPm5}BAFUT?gg_l{}NW?MT_zTo_sARms}t61qu5QJUYeuHmy3` zs7nPI`s!pQtj9iVQ^YgH%iw%xM%tKV`S2>bysZqydRn8m2sg@|K%guc`bk2!7KP4| zWQ$+}PSb_=>i(lpf2aNA9D?V%zEnOsW(q`1#^rl>$AxVf5mEv=a0>WdFJ}&6e;noX z$zjpL>nrV~?@j!z=|A^^`4s{Y44hU;r|6#tY7cMr55h;}%ER(!cOLf*Vko5{dXo_+ zxl@Fb=KHHo%4J3-iLtVLp3iScAT&cIk>fz7Wh~FzpP?f8G4h8k3-WcA>0%4Y=>8|q z99C_}R&Q#IxKpFVe{-zX-cp6UmLz!vDi;+W)FZd@wyYDwoENNNe^Zr&kaJZTM96uo zQ0b=NY;Ndf(d||$jhECvk|jQrto{lVaPpdIWD_3bhUy~o_f<19H{=W@iZFKfz19|) z!h?Fn=TIbxp}%*0HImQSeu55fT99|il)Xa zT%gMi!y^-6ZH6e3a4A>hKD!W<65``<_w6I(0V3RRTfr)1`#DQ+|bqU+itILVTKi z>Xm1*$GtQPAPO`*XgOQ7VdeskE3ZYWNjw?m-f6#Qp{s$Vn$^qA?kl_Sijqdsk3i0?&p@`pq#z~XwWa*@DC z5ENWxr+J=CT1g>z|NQiAWSRIIB?~{L{o2kSz)Q#yT`n0m8AO@>_v>MU0@WK+br6zu zu{Eh80{z!|g7wf#7Mr)SA|bxJNTt%OAs%IYX}&vlZjY)cq8w@&kPaNLze0QgLMnLh(K~wz;(+1E1MJ}AX(Qg{^uj7ei7-d|3At5 z73RZRmCa&JkDrw+y^D($4aU>$k=#*bLw93%&7AmcMY_%ZklyU{WO8E)xA*46+c zQ>v*3Rd7c~3)18zBL}1SaX^J*+7(ansh30WHCp~<+xm9*TH_6^yWrUgO-g}>9Vwz^ zOWX=Kr0oAf9$Y>3ObT6)M)}6v01>^RuKlc3)k&Dtn3YgKg1Vd^~ zVaj|v(U(vICmj?YXW;sWnf-qe_LX6ABx~EaySoN=cb7nL3GN!)g2Uh*+#Q0uySuvw zhXBEy;C#dGo^y6z`~J*zQC)T0!}L_w)O5GdE0ZMo4=WE|uNd?Ql%rYg_)7W75~A?< zj)0Rv^{f4aMAbip)6X5YreZzz2Wc_(tAm#Oo!SzUhrji!-vCeONtX*LZzb%vR&B~o z&oMt1xDX&yLzWbu(f`tG+@jtpSB?~gCMSLp#F6Ai;!TB&}^pBCr4}%q#wDuXTk=4dF~ji z&`VaaK{uGN4CI}=(L(`1h-y+qIWwT*S29%Q9Ht9VLNTWO;z4*~(5XRt zt8v1|UC8PfQDXQs$vpR^{-%+%-S>*XyYHS54Os{8Qxld80vAq#KYdG# z03m@dEY;pDv;Lt2UxNk|O&ZZt8%`re8V4si<<9@6a$oXYr3!I9P-P$VyGjVqniQj< zmP0S*eG@Tk8#q5HQ0FJ`VZZt}@K8TOV-ki?4Ow*!1PL>~SWRr0;oG}$7w^;mAg;2v zmp~M%uUb}U$nI4F?#%#2UHL(tS~Gihej$VfSy|n+N(P$UAGkygSP>iQ zCfcM2S(ML9VTD|lZ(53Z(>rlg-G<9ciaTk`ohZek78|Vx>Sfe1=$v)p0cjVMGj`Hy zQe9}E)6O@zUy;7AzML(h>L~MG7P4K4$~)*+g&R+7L7e`eO#Y5o&2S5~+|LOB|IwZlXTr&ny2PK&O_g*R=7eX?dgDehsTpDU zhZ4?VlF5?nvqT>AJr?|=M;845D9k0?Cv+ChK%e+iq04_)c$IM-G7-C3&gr3)D{@+l z>p0?AtOI@3pF7JiJXe{I%eLpPIw01A)Kj{s3ax2v^ek4rnHd$kN%;N={p(?Ky^H>> zO{hIPNC`(;Cj`a9WsQE0>2ajt*X_Zt$Z>_rsG|A3hkc8@Z)R4tOw2_^D|#Fr1W=P- zPioHkdZo`=B_esCYj5>{C-w;js2Mw?;H-0I?~2B{{U6OrB>Tmd2|j~FN4i(Afm{AD zIz{V0bCoMx4108W=s{8Y{6b@b+7Kmve9IKRAf(2&Dgo`m(bhwmmFcf5WTgV}}9kQAKGFn(bT`J-wgn z38{vEd*g?;VVDyl-5#{}S#|+#ljl6bU*vbr z!$5Ks=s(DtSlH1c82=aY83XC9hp6PuHOIfmdkv%?l-2Ly)SHwrW_!QRLjO`}iDl~0 z*W2vyYZ17wXKRJaBz$ZAHTvoM?fueDN=G3?QT`LX22%K8q+LzIp!af)2<;CZwYfYW zxsJ?=qf6Ju{TO=l(v3L~Ev3^2Sp`C8*S=Nth7M%?+O%no+x%965_@v%BEh6}wV;uH zH-;EL*jv%+c~4RlienH8^yP7Sq2q=IF+2#D$91}15=%-ez^TBMn*q07yM7Q!x1s!njp&*c}DMzywYvsb(b%B9WKKVpirBZ|+B zdYWn;b<~CyI{OyFvbV)%Km9n$0S6O!IioN`k&EZ(x|}YNPou>BEk4Ko-2$wU?elfy z9Q$EOX&$2;ubfqfUFI2kg$pFA9QaKA)rMb^$GPx#3&I==u!*jp2c3<);eNsjU7mD! z;&UbwcKlyU;|rw+1!mYIzohw|$}V{Avdejt9u<$_%g_Bd-!0*hE7KPdpA%-UXiqLJ z*pNy5q6PgWO_)u*+y5{u?9@%W2!JcfwPCA!J1eILpv`Mk4B$5siS-y#m>ODAj3Enj`%NALIHPwa*X5r!^$i^# z+yIu-N<3g9c!9HyE$~nR5K-SyP(z4j66pjIreZ2?k&0WBkXW#BV;DN-4r|UV=&a`C zhA=EeyU&PB_HEH-mtgHr)Z0NuOmznQ#7>+e+T+#G&a&X|ACnNne(ZDLp`hE4K(zLE zG&hk7XswXTcQhvZJE)04HudGPAN}yfO{Kxu%{CXcZlD`b(HEkmCkJ;%EZZlG^{Ix) zJ@6jEF|q9*dM~Me?s0uGEsBv9y06sx+82u-ZklF9ZX>L>Mc_033q(v zXzxB9N*I8@0LTVnhs)jjk62IU!XmMqh*Z3SC=1(If;y7uk^rX}ZlH`(XiUTKN3eQ| z$8a--?I71Uz3{S3>Co4t<_#al{v$3@rtP%rcXi}%P+S9!#gbnhIa}BJ?v-Q4DrwKY_fI!3a`4ux-(^BIiC41g>ZfF zd&dOZWB61P-Qbo6DpWZoZqzUyB?M?-pJ|~Xx8g=wL`cN#Ri*otPQAQ+u_Nu;R6l`M zGzlu$QKkf!XX6y?)MKJ=^d68u&tg8M_ll{#j%6HV(zqjel?0*!>pAdEf^B| zPP3lGsbbD)Vm_}OE(`o}7}j33+IYU={0{#N4J|c1>s=LyHPlp zikZ4tK;gDJ2Ef0N*Nb-%8b!D2P-MB5W#56-IN8*5*WL}c41X1Rj=D+SSrmyHdY-#H zkp4tI8BVs2qyJ>XG0&4t`w27}-X-R-!It;B>|Ru%!vU713yHaFz<}MJ8`V-IHM=_} zN0N4-PxP@+H5$$;o{YEBT0NoE!L#>S>x=&^*fl(5=YeOhg7o+lh`r2sRfHtTeuy#l zSh}avW&H-(wN;l$9PhP?1kIMic7flIcOE)B5z~^U9J2i-(0#7VsRQy!Js14ZX9y_B zhUQ`-tl63G9;zDP@G}mkPoGsISF!h(y!gsEQ#Pr80#4wlj%mUkQbBCP9-OCP`kxg~ z&~8yKmJ1lowCrLZ8a9vQGapL6V_Y;}NOU(?t$*ED-;kYFwxg69uL2*pW3|tmx1Ey> z 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 implementation designed for posting lists with a LARGE number of postings. - * - * Acknowledgement: the concepts of slice based packed ints encoding/decoding is borrowed - * from {@code HighDFCompressedPostinglists}, which will be deprecated due - * to not supporting positions that are greater than 255. - */ -public class HighDFPackedIntsPostingLists extends OptimizedPostingLists { - /** - * A counter used to track when positions enum is required and a posting lists instance is set - * to omit positions. - * - * @see #postings(int, int, int) - */ - private static final SearchCounter GETTING_POSITIONS_WITH_OMIT_POSITIONS = - SearchCounter.export( - "high_df_packed_ints_posting_list_getting_positions_with_omit_positions"); - - /** - * Information related to size of a slice. - */ - static final int SLICE_SIZE_BIT = 6; - static final int SLICE_SIZE = 1 << SLICE_SIZE_BIT; // 64 ints per block - static final int NUM_BITS_PER_SLICE = SLICE_SIZE * Integer.SIZE; // 2048 bits per block - - /** - * A skip list has ONE skip list header that contains 5 ints (4 ints if positions are omitted): - * - 1st int: number of skip entries in this skip list. - * - 2nd int: largest doc ID in this posting list. - * - 3rd int: number of docs in this posting list. - * - 4th int: pointer to the start of the delta-freq list of this posting list. - * - 5th int: (OPTIONAL) pointer to the start of the position list of this posting list. - */ - static final int SKIPLIST_HEADER_SIZE = 5; - static final int SKIPLIST_HEADER_SIZE_WITHOUT_POSITIONS = SKIPLIST_HEADER_SIZE - 1; - - /** - * A skip list has MANY skip entries. Each skip entry is for one slice in delta-freq list. - * There are 3 ints in every skip entry (2 ints if positions are omitted): - * - 1st int: last doc ID in previous slice (0 for the first slice), this is mainly used during - * skipping because deltas, not absolute doc IDs, are stored in a slice. - * - 2nd int: encoded metadata of the corresponding delta-freq slice. There are 4 piece of - * information from the LOWEST bits to HIGHEST bits of this int: - * 11 bits: number of docs (delta-freq pairs) in this slice. - * 5 bits: number of bits used to encode each freq. - * 5 bits: number of bits used to encode each delta. - * 11 bits: POSITION SLICE OFFSET: an index of number of positions; this is where the - * first position of the first doc (in this delta-freq slice) is in the - * position slice. The position slice is identified by the 3rd int below. - * These two piece information uniquely identified the location of the start - * position of this delta-freq slice. This value is always 0 if position is - * omitted. - * - 3rd int: (OPTIONAL) POSITION SLICE INDEX: an index of of number of slices; this value - * identifies the slice in which the first position of the first doc (in this - * delta-freq slice) exists. The exact location inside the position slice is identified - * by POSITION SLICE OFFSET that is stored in the 2nd int above. - * Notice: this is not the absolute address in the block pool, but instead a relative - * offset (in number of slices) on top of this term's first position slice. - * This value DOES NOT EXIST if position is omitted. - */ - static final int SKIPLIST_ENTRY_SIZE = 3; - static final int SKIPLIST_ENTRY_SIZE_WITHOUT_POSITIONS = SKIPLIST_ENTRY_SIZE - 1; - - /** - * Shifts and masks used to encode/decode metadata from the 2nd int of a skip list entry. - * @see #SKIPLIST_ENTRY_SIZE - * @see #encodeSkipListEntryMetadata(int, int, int, int) - * @see #getNumBitsForDelta(int) - * @see #getNumBitsForFreq(int) - * @see #getNumDocsInSlice(int) - * @see #getPositionOffsetInSlice(int) - */ - static final int SKIPLIST_ENTRY_POSITION_OFFSET_SHIFT = 21; - static final int SKIPLIST_ENTRY_NUM_BITS_DELTA_SHIFT = 16; - static final int SKIPLIST_ENTRY_NUM_BITS_FREQ_SHIFT = 11; - static final int SKIPLIST_ENTRY_POSITION_OFFSET_MASK = (1 << 11) - 1; - static final int SKIPLIST_ENTRY_NUM_BITS_DELTA_MASK = (1 << 5) - 1; - static final int SKIPLIST_ENTRY_NUM_BITS_FREQ_MASK = (1 << 5) - 1; - static final int SKIPLIST_ENTRY_NUM_DOCS_MASK = (1 << 11) - 1; - - /** - * Each position slice has a header that is the 1st int in this position slice. From LOWEST bits - * to HIGHEST bits, there are 2 pieces of information encoded in this single int: - * 11 bits: number of positions in this slice. - * 5 bits: number of bits used to encode each position. - */ - static final int POSITION_SLICE_HEADER_SIZE = 1; - - /** - * Information related to size of a position slice. The actual size is the same as - * {@link #SLICE_SIZE}, but there is 1 int used for position slice header. - */ - static final int POSITION_SLICE_SIZE_WITHOUT_HEADER = SLICE_SIZE - POSITION_SLICE_HEADER_SIZE; - static final int POSITION_SLICE_NUM_BITS_WITHOUT_HEADER = - POSITION_SLICE_SIZE_WITHOUT_HEADER * Integer.SIZE; - - /** - * Shifts and masks used to encode/decode metadata from the position slice header. - * @see #POSITION_SLICE_HEADER_SIZE - * @see #encodePositionEntryHeader(int, int) - * @see #getNumPositionsInSlice(int) - * @see #getNumBitsForPosition(int) - */ - static final int POSITION_SLICE_HEADER_BITS_POSITION_SHIFT = 11; - static final int POSITION_SLICE_HEADER_BITS_POSITION_MASK = (1 << 5) - 1; - static final int POSITION_SLICE_HEADER_NUM_POSITIONS_MASK = (1 << 11) - 1; - - /** - * Stores skip list for each posting list. - * - * A skip list consists of ONE skip list header and MANY skip list entries, and each skip entry - * corresponds to one delta-freq slice. Also, unlike {@link #deltaFreqLists} and - * {@link #positionLists}, values in skip lists int pool are NOT stored in unit of slices. - * - * Example: - * H: skip list header int - * E: skip list entry int - * ': int boundary - * |: header/entry boundary (also a boundary of int) - * - * <----- skip list A -----> <- skip list B -> - * |H'H'H'H'H|E'E|E'E|E'E|E'E|H'H'H'H'H|E'E|E'E| - */ - private final IntBlockPool skipLists; - - /** - * Stores delta-freq list for each posting list. - * - * A delta-freq list consists of MANY 64-int slices, and delta-freq pairs are stored compactly - * with a fixed number of bits within a single slice. Each slice has a corresponding skip list - * entry in {@link #skipLists} storing metadata about this slice. - * - * Example: - * |: slice boundary - * - * <----------------- delta-freq list A -----------------> <--- delta-freq list B ---> - * |64 ints slice|64 ints slice|64 ints slice|64 ints slice|64 ints slice|64 ints slice| - */ - private final IntBlockPool deltaFreqLists; - - /** - * Stores position list for each posting list. - * - * A position list consists of MANY 64 ints slices, and positions are stored compactly with a - * fixed number of bits within a single slice. The first int in each slice is used as a header to - * store the metadata about this position slice. - * - * Example: - * H: position header int - * ': int boundary - * |: slice boundary - * - * <--------------- position list A ---------------> <---------- position list B ----------> - * |H'63 ints|H'63 ints|H'63 ints|H'63 ints|H'63 ints|H'63 ints|H'63 ints|H'63 ints|H'63 ints| - */ - private final IntBlockPool positionLists; - - /** - * Whether positions are omitted in this optimized posting lists. - */ - private final boolean omitPositions; - - /** - * Skip list header and entry size for this posting lists, could be different depends on whether - * position is omitted or not. - * - * @see #SKIPLIST_HEADER_SIZE - * @see #SKIPLIST_HEADER_SIZE_WITHOUT_POSITIONS - * @see #SKIPLIST_ENTRY_SIZE - * @see #SKIPLIST_ENTRY_SIZE_WITHOUT_POSITIONS - */ - private final int skipListHeaderSize; - private final int skiplistEntrySize; - - /** - * Buffer used in {@link #copyPostingList(PostingsEnum, int)} - * to queue up values needed for a slice. - * Loaded posting lists have them set as null. - */ - private final PostingsBufferQueue docFreqQueue; - private final PostingsBufferQueue positionQueue; - - /** - * Packed ints writer used to write into delta-freq int pool and position int pool. - * Loaded posting lists have them set as null. - */ - private final IntBlockPoolPackedLongsWriter deltaFreqListsWriter; - private final IntBlockPoolPackedLongsWriter positionListsWriter; - - /** - * Default constructor. - * - * @param omitPositions whether positions will be omitted in these posting lists. - */ - public HighDFPackedIntsPostingLists(boolean omitPositions) { - this( - new IntBlockPool("high_df_packed_ints_skip_lists"), - new IntBlockPool("high_df_packed_ints_delta_freq_lists"), - new IntBlockPool("high_df_packed_ints_position_lists"), - omitPositions, - new PostingsBufferQueue(NUM_BITS_PER_SLICE), - new PostingsBufferQueue(POSITION_SLICE_NUM_BITS_WITHOUT_HEADER)); - } - - /** - * Constructors used by loader. - * - * @param skipLists loaded int block pool represents skip lists - * @param deltaFreqLists loaded int block pool represents delta-freq lists - * @param positionLists loaded int block pool represents position lists - * @param omitPositions whether positions will be omitted in these posting lists - * @param docFreqQueue buffer used to queue up values used for a doc freq slice, null if loaded - * @param positionQueue buffer used to queue up values used for a position slice, null if loaded - * @see FlushHandler#doLoad(FlushInfo, DataDeserializer) - */ - private HighDFPackedIntsPostingLists( - IntBlockPool skipLists, - IntBlockPool deltaFreqLists, - IntBlockPool positionLists, - boolean omitPositions, - @Nullable PostingsBufferQueue docFreqQueue, - @Nullable PostingsBufferQueue positionQueue) { - this.skipLists = skipLists; - this.deltaFreqLists = deltaFreqLists; - this.positionLists = positionLists; - this.omitPositions = omitPositions; - - this.docFreqQueue = docFreqQueue; - this.positionQueue = positionQueue; - - // docFreqQueue is null if this postingLists is loaded, - // we don't need to create writer at that case. - if (docFreqQueue == null) { - assert positionQueue == null; - this.deltaFreqListsWriter = null; - this.positionListsWriter = null; - } else { - this.deltaFreqListsWriter = new IntBlockPoolPackedLongsWriter(deltaFreqLists); - this.positionListsWriter = new IntBlockPoolPackedLongsWriter(positionLists); - } - - if (omitPositions) { - skipListHeaderSize = SKIPLIST_HEADER_SIZE_WITHOUT_POSITIONS; - skiplistEntrySize = SKIPLIST_ENTRY_SIZE_WITHOUT_POSITIONS; - } else { - skipListHeaderSize = SKIPLIST_HEADER_SIZE; - skiplistEntrySize = SKIPLIST_ENTRY_SIZE; - } - } - - /** - * A simple wrapper around assorted states used when coping positions in a posting enum. - * @see #copyPostingList(PostingsEnum, int) - */ - private static class PositionsState { - /** Max position has been seen for the current position slice. */ - private int maxPosition = 0; - - /** Bits needed to encode/decode positions in the current position slice. */ - private int bitsNeededForPosition = 0; - - /** Total number of position slices created for current posting list. */ - private int numPositionsSlices = 0; - - /** - * Whenever a slice of doc/freq pairs is written, this will point to the first position - * associated with the first doc in the doc/freq slice. - */ - private int currentPositionsSliceIndex = 0; - private int currentPositionsSliceOffset = 0; - - /** - * Whenever a new document is processed, this points to the first position for this doc. - * This is used if this doc ends up being chosen as the first doc in a doc/freq slice. - */ - private int nextPositionsSliceIndex = 0; - private int nextPositionsSliceOffset = 0; - } - - /** - * Copies postings in the given postings enum into this posting lists instance. - * - * @param postingsEnum enumerator of the posting list that needs to be copied - * @param numPostings number of postings in the posting list that needs to be copied - * @return pointer to the copied posting list in this posting lists instance - */ - @Override - public int copyPostingList(PostingsEnum postingsEnum, int numPostings) throws IOException { - assert docFreqQueue.isEmpty() : "each new posting list should start with an empty queue"; - assert positionQueue.isEmpty() : "each new posting list should start with an empty queue"; - - final int skipListPointer = skipLists.length(); - final int deltaFreqListPointer = deltaFreqLists.length(); - final int positionListPointer = positionLists.length(); - assert isSliceStart(deltaFreqListPointer) : "each new posting list should start at a new slice"; - assert isSliceStart(positionListPointer) : "each new posting list should start at a new slice"; - - // Make room for skip list HEADER. - for (int i = 0; i < skipListHeaderSize; i++) { - skipLists.add(-1); - } - - int doc; - int prevDoc = 0; - int prevWrittenDoc = 0; - - int maxDelta = 0; - int maxFreq = 0; - - int bitsNeededForDelta = 0; - int bitsNeededForFreq = 0; - - // Keep tracking positions related info for this posting list. - PositionsState positionsState = new PositionsState(); - - int numDocs = 0; - int numDeltaFreqSlices = 0; - while ((doc = postingsEnum.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) { - numDocs++; - - int delta = doc - prevDoc; - assert delta <= MAX_DOC_ID; - - int newBitsForDelta = bitsNeededForDelta; - if (delta > maxDelta) { - maxDelta = delta; - newBitsForDelta = log(maxDelta, 2); - assert newBitsForDelta <= MAX_DOC_ID_BIT; - } - - /** - * Optimization: store freq - 1 since a freq must be positive. Save bits and improve decoding - * speed. At read side, the read frequency will plus 1. - * @see HighDFPackedIntsDocsEnum#loadNextPosting() - */ - int freq = postingsEnum.freq() - 1; - assert freq >= 0; - - int newBitsForFreq = bitsNeededForFreq; - if (freq > maxFreq) { - maxFreq = freq; - newBitsForFreq = log(maxFreq, 2); - assert newBitsForFreq <= MAX_FREQ_BIT; - } - - // Write positions for this doc if not omit positions. - if (!omitPositions) { - writePositionsForDoc(postingsEnum, positionsState); - } - - if ((newBitsForDelta + newBitsForFreq) * (docFreqQueue.size() + 1) > NUM_BITS_PER_SLICE) { - //The latest doc does not fit into this slice. - assert (bitsNeededForDelta + bitsNeededForFreq) * docFreqQueue.size() - <= NUM_BITS_PER_SLICE; - - prevWrittenDoc = writeDeltaFreqSlice( - bitsNeededForDelta, - bitsNeededForFreq, - positionsState, - prevWrittenDoc); - numDeltaFreqSlices++; - - maxDelta = delta; - maxFreq = freq; - bitsNeededForDelta = log(maxDelta, 2); - bitsNeededForFreq = log(maxFreq, 2); - } else { - bitsNeededForDelta = newBitsForDelta; - bitsNeededForFreq = newBitsForFreq; - } - - docFreqQueue.offer(doc, freq); - - prevDoc = doc; - } - - // Some positions may be left in the buffer queue. - if (!positionQueue.isEmpty()) { - writePositionSlice(positionsState.bitsNeededForPosition); - } - - // Some docs may be left in the buffer queue. - if (!docFreqQueue.isEmpty()) { - writeDeltaFreqSlice( - bitsNeededForDelta, - bitsNeededForFreq, - positionsState, - prevWrittenDoc); - numDeltaFreqSlices++; - } - - // Write skip list header. - int skipListHeaderPointer = skipListPointer; - final int numSkipListEntries = - (skipLists.length() - (skipListPointer + skipListHeaderSize)) / skiplistEntrySize; - assert numSkipListEntries == numDeltaFreqSlices - : "number of delta freq slices should be the same as number of skip list entries"; - skipLists.set(skipListHeaderPointer++, numSkipListEntries); - skipLists.set(skipListHeaderPointer++, prevDoc); - skipLists.set(skipListHeaderPointer++, numDocs); - skipLists.set(skipListHeaderPointer++, deltaFreqListPointer); - if (!omitPositions) { - skipLists.set(skipListHeaderPointer, positionListPointer); - } - - return skipListPointer; - } - - /** - * Write positions for current doc into {@link #positionLists}. - * - * @param postingsEnum postings enumerator containing the positions need to be written - * @param positionsState some states about {@link #positionLists} and {@link #positionQueue} - * @see #copyPostingList(PostingsEnum, int) - */ - private void writePositionsForDoc( - PostingsEnum postingsEnum, - PositionsState positionsState) throws IOException { - assert !omitPositions : "this method should not be called if positions are omitted"; - - for (int i = 0; i < postingsEnum.freq(); i++) { - int pos = postingsEnum.nextPosition(); - - int newBitsForPosition = positionsState.bitsNeededForPosition; - if (pos > positionsState.maxPosition) { - positionsState.maxPosition = pos; - newBitsForPosition = log(positionsState.maxPosition, 2); - assert newBitsForPosition <= MAX_POSITION_BIT; - } - - if (newBitsForPosition * (positionQueue.size() + 1) - > POSITION_SLICE_NUM_BITS_WITHOUT_HEADER - || positionQueue.isFull()) { - assert positionsState.bitsNeededForPosition * positionQueue.size() - <= POSITION_SLICE_NUM_BITS_WITHOUT_HEADER; - - writePositionSlice(positionsState.bitsNeededForPosition); - positionsState.numPositionsSlices++; - - positionsState.maxPosition = pos; - positionsState.bitsNeededForPosition = log(positionsState.maxPosition, 2); - } else { - positionsState.bitsNeededForPosition = newBitsForPosition; - } - - // Update first position pointer if this position is the first position of a doc - if (i == 0) { - positionsState.nextPositionsSliceIndex = positionsState.numPositionsSlices; - positionsState.nextPositionsSliceOffset = positionQueue.size(); - } - - // Stores a dummy doc -1 since doc is unused in position list. - positionQueue.offer(-1, pos); - } - } - - /** - * Write out all the buffered positions in {@link #positionQueue} into a position slice. - * - * @param bitsNeededForPosition number of bits used for each position in this position slice - */ - private void writePositionSlice(final int bitsNeededForPosition) { - assert !omitPositions; - assert 0 <= bitsNeededForPosition && bitsNeededForPosition <= MAX_POSITION_BIT; - - final int lengthBefore = positionLists.length(); - assert isSliceStart(lengthBefore); - - // First int in this slice stores number of bits needed for position - // and number of positions in this slice.. - positionLists.add(encodePositionEntryHeader(bitsNeededForPosition, positionQueue.size())); - - positionListsWriter.jumpToInt(positionLists.length(), bitsNeededForPosition); - while (!positionQueue.isEmpty()) { - int pos = PostingsBufferQueue.getSecondValue(positionQueue.poll()); - assert log(pos, 2) <= bitsNeededForPosition; - - positionListsWriter.writePackedInt(pos); - } - - // Fill up this slice in case it is only partially filled. - while (positionLists.length() < lengthBefore + SLICE_SIZE) { - positionLists.add(0); - } - - assert positionLists.length() - lengthBefore == SLICE_SIZE; - } - - /** - * Write out all the buffered docs and frequencies in {@link #docFreqQueue} into a delta-freq - * slice and update the skip list entry of this slice. - * - * @param bitsNeededForDelta number of bits used for each delta in this delta-freq slice - * @param bitsNeededForFreq number of bits used for each freq in this delta-freq slice - * @param positionsState some states about {@link #positionLists} and {@link #positionQueue} - * @param prevWrittenDoc last doc written in previous slice - * @return last doc written in this slice - */ - private int writeDeltaFreqSlice( - final int bitsNeededForDelta, - final int bitsNeededForFreq, - final PositionsState positionsState, - final int prevWrittenDoc) { - assert 0 <= bitsNeededForDelta && bitsNeededForDelta <= MAX_DOC_ID_BIT; - assert 0 <= bitsNeededForFreq && bitsNeededForFreq <= MAX_FREQ_BIT; - - final int lengthBefore = deltaFreqLists.length(); - assert isSliceStart(lengthBefore); - - writeSkipListEntry(prevWrittenDoc, bitsNeededForDelta, bitsNeededForFreq, positionsState); - - // Keep track of previous docID so that we compute the docID deltas. - int prevDoc = prevWrittenDoc; - - // A pair is stored as a packed value. - final int bitsPerPackedValue = bitsNeededForDelta + bitsNeededForFreq; - deltaFreqListsWriter.jumpToInt(deltaFreqLists.length(), bitsPerPackedValue); - while (!docFreqQueue.isEmpty()) { - long value = docFreqQueue.poll(); - int doc = PostingsBufferQueue.getDocID(value); - int delta = doc - prevDoc; - assert log(delta, 2) <= bitsNeededForDelta; - - int freq = PostingsBufferQueue.getSecondValue(value); - assert log(freq, 2) <= bitsNeededForFreq; - - // Cast the delta to long before left shift to avoid overflow. - final long deltaFreqPair = (((long) delta) << bitsNeededForFreq) + freq; - deltaFreqListsWriter.writePackedLong(deltaFreqPair); - prevDoc = doc; - } - - // Fill up this slice in case it is only partially filled. - while (deltaFreqLists.length() < lengthBefore + SLICE_SIZE) { - deltaFreqLists.add(0); - } - - positionsState.currentPositionsSliceIndex = positionsState.nextPositionsSliceIndex; - positionsState.currentPositionsSliceOffset = positionsState.nextPositionsSliceOffset; - - assert deltaFreqLists.length() - lengthBefore == SLICE_SIZE; - return prevDoc; - } - - /** - * Write the skip list entry for a delta-freq slice. - * - * @param prevWrittenDoc last doc written in previous slice - * @param bitsNeededForDelta number of bits used for each delta in this delta-freq slice - * @param bitsNeededForFreq number of bits used for each freq in this delta-freq slice - * @param positionsState some states about {@link #positionLists} and {@link #positionQueue} - * @see #writeDeltaFreqSlice(int, int, PositionsState, int) - * @see #SKIPLIST_ENTRY_SIZE - */ - private void writeSkipListEntry( - int prevWrittenDoc, - int bitsNeededForDelta, - int bitsNeededForFreq, - PositionsState positionsState) { - // 1st int: last written doc ID in previous slice - skipLists.add(prevWrittenDoc); - - // 2nd int: encoded metadata - skipLists.add( - encodeSkipListEntryMetadata( - positionsState.currentPositionsSliceOffset, - bitsNeededForDelta, - bitsNeededForFreq, - docFreqQueue.size())); - - // 3rd int: optional, position slice index - if (!omitPositions) { - skipLists.add(positionsState.currentPositionsSliceIndex); - } - } - - /** - * Create and return a docs enumerator or docs-positions enumerator based on input flag. - * - * @see org.apache.lucene.index.PostingsEnum - */ - @Override - public EarlybirdPostingsEnum postings( - int postingListPointer, int numPostings, int flags) throws IOException { - // Positions are omitted but position enumerator are requried. - if (omitPositions && PostingsEnum.featureRequested(flags, PostingsEnum.POSITIONS)) { - GETTING_POSITIONS_WITH_OMIT_POSITIONS.increment(); - } - - if (!omitPositions && PostingsEnum.featureRequested(flags, PostingsEnum.POSITIONS)) { - return new HighDFPackedIntsDocsAndPositionsEnum( - skipLists, - deltaFreqLists, - positionLists, - postingListPointer, - numPostings, - false); - } else { - return new HighDFPackedIntsDocsEnum( - skipLists, - deltaFreqLists, - postingListPointer, - numPostings, - omitPositions); - } - } - - /****************************************************** - * Skip list entry encoded data encoding and decoding * - ******************************************************/ - - /** - * Encode a skip list entry metadata, which is stored in the 2nd int of the skip list entry. - * - * @see #SKIPLIST_ENTRY_SIZE - */ - private static int encodeSkipListEntryMetadata( - int positionOffsetInSlice, int numBitsForDelta, int numBitsForFreq, int numDocsInSlice) { - assert 0 <= positionOffsetInSlice - && positionOffsetInSlice < POSITION_SLICE_NUM_BITS_WITHOUT_HEADER; - assert 0 <= numBitsForDelta && numBitsForDelta <= MAX_DOC_ID_BIT; - assert 0 <= numBitsForFreq && numBitsForFreq <= MAX_FREQ_BIT; - assert 0 < numDocsInSlice && numDocsInSlice <= NUM_BITS_PER_SLICE; - return (positionOffsetInSlice << SKIPLIST_ENTRY_POSITION_OFFSET_SHIFT) - + (numBitsForDelta << SKIPLIST_ENTRY_NUM_BITS_DELTA_SHIFT) - + (numBitsForFreq << SKIPLIST_ENTRY_NUM_BITS_FREQ_SHIFT) - // stores numDocsInSlice - 1 to avoid over flow since numDocsInSlice ranges in [1, 2048] - // and 11 bits are used to store number docs in slice - + (numDocsInSlice - 1); - } - - /** - * Decode POSITION_SLICE_OFFSET of the delta-freq slice having the given skip entry encoded data. - * - * @see #SKIPLIST_ENTRY_SIZE - */ - static int getPositionOffsetInSlice(int skipListEntryEncodedMetadata) { - return (skipListEntryEncodedMetadata >>> SKIPLIST_ENTRY_POSITION_OFFSET_SHIFT) - & SKIPLIST_ENTRY_POSITION_OFFSET_MASK; - } - - /** - * Decode number of bits used for delta in the slice having the given skip entry encoded data. - * - * @see #SKIPLIST_ENTRY_SIZE - */ - static int getNumBitsForDelta(int skipListEntryEncodedMetadata) { - return (skipListEntryEncodedMetadata >>> SKIPLIST_ENTRY_NUM_BITS_DELTA_SHIFT) - & SKIPLIST_ENTRY_NUM_BITS_DELTA_MASK; - } - - /** - * Decode number of bits used for freqs in the slice having the given skip entry encoded data. - * - * @see #SKIPLIST_ENTRY_SIZE - */ - static int getNumBitsForFreq(int skipListEntryEncodedMetadata) { - return (skipListEntryEncodedMetadata >>> SKIPLIST_ENTRY_NUM_BITS_FREQ_SHIFT) - & SKIPLIST_ENTRY_NUM_BITS_FREQ_MASK; - } - - /** - * Decode number of delta-freq pairs stored in the slice having the given skip entry encoded data. - * - * @see #SKIPLIST_ENTRY_SIZE - */ - static int getNumDocsInSlice(int skipListEntryEncodedMetadata) { - /** - * Add 1 to the decode value since the stored value is subtracted by 1. - * @see #encodeSkipListEntryMetadata(int, int, int, int) - */ - return (skipListEntryEncodedMetadata & SKIPLIST_ENTRY_NUM_DOCS_MASK) + 1; - } - - /***************************************************** - * Position slice entry header encoding and decoding * - *****************************************************/ - - /** - * Encode a position slice entry header. - * - * @param numBitsForPosition number of bits used to encode positions in this slice. - * @param numPositionsInSlice number of positions in this slice. - * @return an int as the encoded header. - * @see #POSITION_SLICE_HEADER_SIZE - */ - private static int encodePositionEntryHeader(int numBitsForPosition, int numPositionsInSlice) { - assert 0 <= numBitsForPosition && numBitsForPosition <= MAX_POSITION_BIT; - assert 0 < numPositionsInSlice && numPositionsInSlice <= POSITION_SLICE_NUM_BITS_WITHOUT_HEADER; - return (numBitsForPosition << POSITION_SLICE_HEADER_BITS_POSITION_SHIFT) + numPositionsInSlice; - } - - /** - * Decode number of bits used for position in the slice having the given header. - * - * @param positionEntryHeader entry header will be decoded. - * @see #POSITION_SLICE_HEADER_SIZE - */ - static int getNumBitsForPosition(int positionEntryHeader) { - return (positionEntryHeader >>> POSITION_SLICE_HEADER_BITS_POSITION_SHIFT) - & POSITION_SLICE_HEADER_BITS_POSITION_MASK; - } - - /** - * Decode number of positions stored in the slice having the given header. - * - * @param positionEntryHeader entry header will be decoded. - * @see #POSITION_SLICE_HEADER_SIZE - */ - static int getNumPositionsInSlice(int positionEntryHeader) { - return positionEntryHeader & POSITION_SLICE_HEADER_NUM_POSITIONS_MASK; - } - - /****************** - * Helper methods * - ******************/ - - /** - * Check if given pointer is pointing to the slice start. - * - * @param pointer the index will be checked. - */ - static boolean isSliceStart(int pointer) { - return pointer % HighDFPackedIntsPostingLists.SLICE_SIZE == 0; - } - - /** - * Ceil of log of x in the given base. - * - * @return x == 0 ? 0 : Math.ceil(Math.log(x) / Math.log(base)) - */ - private static int log(int x, int base) { - assert base >= 2; - if (x == 0) { - return 0; - } - int ret = 1; - long n = base; // needs to be a long to avoid overflow - while (x >= n) { - n *= base; - ret++; - } - return ret; - } - - /********************** - * For flush and load * - **********************/ - - @SuppressWarnings("unchecked") - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - public static class FlushHandler extends Flushable.Handler { - private static final String OMIT_POSITIONS_PROP_NAME = "omitPositions"; - private static final String SKIP_LISTS_PROP_NAME = "skipLists"; - private static final String DELTA_FREQ_LISTS_PROP_NAME = "deltaFreqLists"; - private static final String POSITION_LISTS_PROP_NAME = "positionLists"; - - public FlushHandler() { - super(); - } - - public FlushHandler(HighDFPackedIntsPostingLists objectToFlush) { - super(objectToFlush); - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) - throws IOException { - HighDFPackedIntsPostingLists objectToFlush = getObjectToFlush(); - flushInfo.addBooleanProperty(OMIT_POSITIONS_PROP_NAME, objectToFlush.omitPositions); - objectToFlush.skipLists.getFlushHandler() - .flush(flushInfo.newSubProperties(SKIP_LISTS_PROP_NAME), out); - objectToFlush.deltaFreqLists.getFlushHandler() - .flush(flushInfo.newSubProperties(DELTA_FREQ_LISTS_PROP_NAME), out); - objectToFlush.positionLists.getFlushHandler() - .flush(flushInfo.newSubProperties(POSITION_LISTS_PROP_NAME), out); - } - - @Override - protected HighDFPackedIntsPostingLists doLoad( - FlushInfo flushInfo, DataDeserializer in) throws IOException { - IntBlockPool skipLists = (new IntBlockPool.FlushHandler()) - .load(flushInfo.getSubProperties(SKIP_LISTS_PROP_NAME), in); - IntBlockPool deltaFreqLists = (new IntBlockPool.FlushHandler()) - .load(flushInfo.getSubProperties(DELTA_FREQ_LISTS_PROP_NAME), in); - IntBlockPool positionLists = (new IntBlockPool.FlushHandler()) - .load(flushInfo.getSubProperties(POSITION_LISTS_PROP_NAME), in); - return new HighDFPackedIntsPostingLists( - skipLists, - deltaFreqLists, - positionLists, - flushInfo.getBooleanProperty(OMIT_POSITIONS_PROP_NAME), - null, - null); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsSkipListReader.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsSkipListReader.docx new file mode 100644 index 0000000000000000000000000000000000000000..5b50bd82a4fc48e2f4688413564b89798fccd52c GIT binary patch literal 38575 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

    X&wLZ*zaPY;L}^Il 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 U0F0o|qiQ?E85kaVX`he&56j_BGynhq literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsSkipListReader.java b/src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsSkipListReader.java deleted file mode 100644 index 7f6f04f47..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/HighDFPackedIntsSkipListReader.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import org.apache.lucene.search.DocIdSetIterator; - -/** - * A skip list reader of a single term used {@link HighDFPackedIntsDocsEnum}. - * @see HighDFPackedIntsPostingLists - */ -class HighDFPackedIntsSkipListReader { - /** Skip lists int pool. */ - private final IntBlockPool skipLists; - - /** Whether positions are omitted in the posting list having the read skip list. */ - private final boolean omitPositions; - - /** - * Last doc in the previous slice relative to the current delta-freq slice. This value is 0 if - * the current slice is the first delta-freq slice. - */ - private int previousDocIDCurrentSlice; - - /** Encoded metadata of the current delta-freq slice.*/ - private int encodedMetadataCurrentSlice; - - /** - * Pointer to the first int (contains the position slice header) of the position slice that has - * the first position of the first doc in the current delta-freq slice. - */ - private int positionCurrentSliceIndex; - - /** Pointer to the first int in the current delta-freq slice. */ - private int deltaFreqCurrentSlicePointer; - - /** Data of next slice. */ - private int previousDocIDNextSlice; - private int encodedMetadataNextSlice; - private int positionNextSliceIndex; - private int deltaFreqNextSlicePointer; - - /** Used to load blocks and read ints from skip lists int pool. */ - private int[] currentSkipListBlock; - private int skipListBlockStart; - private int skipListBlockIndex; - - /** Number of remaining skip entries for the read skip list. */ - private int numSkipListEntriesRemaining; - - /** Largest doc ID in the posting list having the read skip list. */ - private final int largestDocID; - - /** Pointer to the first int in the first slice that stores positions for this term. */ - private final int positionListPointer; - - /** Total number of docs in the posting list having the read skip list. */ - private final int numDocsTotal; - - /** - * Create a skip list reader specified by the given skip list pointer in the given skip lists int - * pool. - * - * @param skipLists int pool where the read skip list exists - * @param skipListPointer pointer to the read skip list - * @param omitPositions whether positions are omitted in the positing list to which the read skip - * list belongs - */ - public HighDFPackedIntsSkipListReader( - final IntBlockPool skipLists, - final int skipListPointer, - final boolean omitPositions) { - this.skipLists = skipLists; - this.omitPositions = omitPositions; - - this.skipListBlockStart = IntBlockPool.getBlockStart(skipListPointer); - this.skipListBlockIndex = IntBlockPool.getOffsetInBlock(skipListPointer); - this.currentSkipListBlock = skipLists.getBlock(skipListBlockStart); - - // Read skip list header. - this.numSkipListEntriesRemaining = readNextValueFromSkipListBlock(); - this.largestDocID = readNextValueFromSkipListBlock(); - this.numDocsTotal = readNextValueFromSkipListBlock(); - int deltaFreqListPointer = readNextValueFromSkipListBlock(); - this.positionListPointer = omitPositions ? -1 : readNextValueFromSkipListBlock(); - - // Set it back by one slice for fetchNextSkipEntry() to advance correctly. - this.deltaFreqNextSlicePointer = deltaFreqListPointer - HighDFPackedIntsPostingLists.SLICE_SIZE; - fetchNextSkipEntry(); - } - - /** - * Load already fetched data in next skip entry into current data variables, and pre-fetch again. - */ - public void getNextSkipEntry() { - previousDocIDCurrentSlice = previousDocIDNextSlice; - encodedMetadataCurrentSlice = encodedMetadataNextSlice; - positionCurrentSliceIndex = positionNextSliceIndex; - deltaFreqCurrentSlicePointer = deltaFreqNextSlicePointer; - fetchNextSkipEntry(); - } - - /** - * Fetch data for next skip entry if skip list is not exhausted; otherwise, set docIDNextSlice - * to NO_MORE_DOCS. - */ - private void fetchNextSkipEntry() { - if (numSkipListEntriesRemaining == 0) { - previousDocIDNextSlice = DocIdSetIterator.NO_MORE_DOCS; - return; - } - - previousDocIDNextSlice = readNextValueFromSkipListBlock(); - encodedMetadataNextSlice = readNextValueFromSkipListBlock(); - if (!omitPositions) { - positionNextSliceIndex = readNextValueFromSkipListBlock(); - } - deltaFreqNextSlicePointer += HighDFPackedIntsPostingLists.SLICE_SIZE; - numSkipListEntriesRemaining--; - } - - /************************************** - * Getters of data in skip list entry * - **************************************/ - - /** - * In the context of a current slice, this is the docID of the last document in the previous - * slice (or 0 if the current slice is the first slice). - * - * @see HighDFPackedIntsPostingLists#SKIPLIST_ENTRY_SIZE - */ - public int getPreviousDocIDCurrentSlice() { - return previousDocIDCurrentSlice; - } - - /** - * Get the encoded metadata of the current delta-freq slice. - * - * @see HighDFPackedIntsPostingLists#SKIPLIST_ENTRY_SIZE - */ - public int getEncodedMetadataCurrentSlice() { - return encodedMetadataCurrentSlice; - } - - /** - * Get the pointer to the first int, WHICH CONTAINS THE POSITION SLICE HEADER, of the position - * slice that contains the first position of the first doc in the delta-freq slice that - * is corresponding to the current skip list entry. - * - * @see HighDFPackedIntsPostingLists#SKIPLIST_ENTRY_SIZE - */ - public int getPositionCurrentSlicePointer() { - assert !omitPositions; - return positionListPointer - + positionCurrentSliceIndex * HighDFPackedIntsPostingLists.SLICE_SIZE; - } - - /** - * Get the pointer to the first int in the current delta-freq slice. - */ - public int getDeltaFreqCurrentSlicePointer() { - return deltaFreqCurrentSlicePointer; - } - - /** - * In the context of next slice, get the last doc ID in the previous slice. This is used to skip - * over slices. - * - * @see HighDFPackedIntsDocsEnum#skipTo(int) - */ - public int peekPreviousDocIDNextSlice() { - return previousDocIDNextSlice; - } - - /*************************************** - * Getters of data in skip list header * - ***************************************/ - - public int getLargestDocID() { - return largestDocID; - } - - public int getNumDocsTotal() { - return numDocsTotal; - } - - /*************************************************** - * Methods helping loading int block and read ints * - ***************************************************/ - - private int readNextValueFromSkipListBlock() { - if (skipListBlockIndex == IntBlockPool.BLOCK_SIZE) { - loadSkipListBlock(); - } - return currentSkipListBlock[skipListBlockIndex++]; - } - - private void loadSkipListBlock() { - skipListBlockStart += IntBlockPool.BLOCK_SIZE; - currentSkipListBlock = skipLists.getBlock(skipListBlockStart); - skipListBlockIndex = 0; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/InMemoryFields.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/InMemoryFields.docx new file mode 100644 index 0000000000000000000000000000000000000000..77cd4eb7960c8dc5c4b29f04d6a2115211078b08 GIT binary patch literal 37164 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�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 Ol^{bRFnet60r3DxqKo4I literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/InMemoryFields.java b/src/java/com/twitter/search/core/earlybird/index/inverted/InMemoryFields.java deleted file mode 100644 index dad877614..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/InMemoryFields.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import org.apache.lucene.index.Fields; -import org.apache.lucene.index.Terms; - -public class InMemoryFields extends Fields { - private final Map termsCache = new HashMap<>(); - private final Map perFields; - private final Map pointerIndex; - - /** - * Returns a new {@link Fields} instance for the provided {@link InvertedIndex}es. - */ - public InMemoryFields(Map perFields, - Map pointerIndex) { - this.perFields = perFields; - this.pointerIndex = pointerIndex; - } - - @Override - public Iterator iterator() { - return perFields.keySet().iterator(); - } - - @Override - public Terms terms(String field) { - InvertedIndex invertedIndex = perFields.get(field); - if (invertedIndex == null) { - return null; - } - - return termsCache.computeIfAbsent(invertedIndex, - index -> index.createTerms(pointerIndex.getOrDefault(invertedIndex, -1))); - } - - @Override - public int size() { - return perFields.size(); - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/IndexOptimizer.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/IndexOptimizer.docx new file mode 100644 index 0000000000000000000000000000000000000000..800f771e9d09cc7fb27c3b84fb723dcda0f95ce3 GIT binary patch literal 39073 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 f=#>(G8)Ao}Lw#*(U<7?1RjeQzV0eh8f8Y8a targetMap = new ConcurrentHashMap<>(); - LOG.info(String.format( - "Source PerFieldMap size is %d", source.getPerFieldMap().size())); - - LOG.info("Optimize doc id mapper."); - // Optimize the doc ID mapper first. - DocIDToTweetIDMapper originalTweetIdMapper = source.getDocIDToTweetIDMapper(); - DocIDToTweetIDMapper optimizedTweetIdMapper = originalTweetIdMapper.optimize(); - - TimeMapper optimizedTimeMapper = - source.getTimeMapper() != null - ? source.getTimeMapper().optimize(originalTweetIdMapper, optimizedTweetIdMapper) - : null; - - // Some fields have their terms rewritten to support the minimal perfect hash function we use - // (note that it's a minimal perfect hash function, not a minimal perfect hash _table_). - // The FacetCountingArray stores term IDs. This is a map from the facet field ID to a map from - // original term ID to the new, MPH term IDs. - Map termIDMapper = new HashMap<>(); - - LOG.info("Optimize inverted indexes."); - optimizeInvertedIndexes( - source, targetMap, originalTweetIdMapper, optimizedTweetIdMapper, termIDMapper); - - LOG.info("Rewrite and map ids in facet counting array."); - AbstractFacetCountingArray facetCountingArray = source.getFacetCountingArray().rewriteAndMapIDs( - termIDMapper, originalTweetIdMapper, optimizedTweetIdMapper); - - Map facetLabelProviders = - FacetUtil.getFacetLabelProviders(source.getSchema(), targetMap); - - LOG.info("Optimize doc values manager."); - DocValuesManager optimizedDocValuesManager = - source.getDocValuesManager().optimize(originalTweetIdMapper, optimizedTweetIdMapper); - - LOG.info("Optimize deleted docs."); - DeletedDocs optimizedDeletedDocs = - source.getDeletedDocs().optimize(originalTweetIdMapper, optimizedTweetIdMapper); - - final boolean isOptimized = true; - return new EarlybirdRealtimeIndexSegmentData( - source.getMaxSegmentSize(), - source.getTimeSliceID(), - source.getSchema(), - isOptimized, - optimizedTweetIdMapper.getNextDocID(Integer.MIN_VALUE), - targetMap, - facetCountingArray, - optimizedDocValuesManager, - facetLabelProviders, - source.getFacetIDMap(), - optimizedDeletedDocs, - optimizedTweetIdMapper, - optimizedTimeMapper, - source.getIndexExtensionsData()); - } - - private static void optimizeInvertedIndexes( - EarlybirdRealtimeIndexSegmentData source, - ConcurrentHashMap targetMap, - DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper, - Map termIDMapper - ) throws IOException { - for (Map.Entry entry : source.getPerFieldMap().entrySet()) { - String fieldName = entry.getKey(); - Preconditions.checkState(entry.getValue() instanceof InvertedRealtimeIndex); - InvertedRealtimeIndex sourceIndex = (InvertedRealtimeIndex) entry.getValue(); - EarlybirdFieldType fieldType = source.getSchema().getFieldInfo(fieldName).getFieldType(); - - InvertedIndex newIndex; - if (fieldType.becomesImmutable() && sourceIndex.getNumTerms() > 0) { - Schema.FieldInfo facetField = source.getSchema().getFacetFieldByFieldName(fieldName); - - newIndex = new OptimizedMemoryIndex( - fieldType, - fieldName, - sourceIndex, - termIDMapper, - source.getFacetIDMap().getFacetField(facetField), - originalTweetIdMapper, - optimizedTweetIdMapper); - } else { - newIndex = optimizeMutableIndex( - fieldType, - fieldName, - sourceIndex, - originalTweetIdMapper, - optimizedTweetIdMapper); - } - - targetMap.put(fieldName, newIndex); - } - } - - /** - * Optimize a mutable index. - */ - private static InvertedIndex optimizeMutableIndex( - EarlybirdFieldType fieldType, - String fieldName, - InvertedRealtimeIndex originalIndex, - DocIDToTweetIDMapper originalMapper, - DocIDToTweetIDMapper optimizedMapper - ) throws IOException { - Preconditions.checkState(!fieldType.isStorePerPositionPayloads()); - TermsEnum allTerms = originalIndex.createTermsEnum(originalIndex.getMaxPublishedPointer()); - - int numTerms = originalIndex.getNumTerms(); - - InvertedRealtimeIndex index = new InvertedRealtimeIndex( - fieldType, - TermPointerEncoding.DEFAULT_ENCODING, - fieldName); - index.setNumDocs(originalIndex.getNumDocs()); - - for (int termID = 0; termID < numTerms; termID++) { - allTerms.seekExact(termID); - PostingsEnum postingsEnum = new OptimizingPostingsEnumWrapper( - allTerms.postings(null), originalMapper, optimizedMapper); - - BytesRef termPayload = originalIndex.getLabelAccessor().getTermPayload(termID); - copyPostingList(index, postingsEnum, termID, allTerms.term(), termPayload); - } - return index; - } - - - /** - * Copies the given posting list into these posting lists. - * - * @param postingsEnum enumerator of the posting list that needs to be copied - */ - private static void copyPostingList( - InvertedRealtimeIndex index, - PostingsEnum postingsEnum, - int termID, - BytesRef term, - BytesRef termPayload - ) throws IOException { - int docId; - while ((docId = postingsEnum.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) { - index.incrementSumTermDocFreq(); - for (int i = 0; i < postingsEnum.freq(); i++) { - index.incrementSumTotalTermFreq(); - int position = postingsEnum.nextPosition(); - int newTermID = InvertedRealtimeIndexWriter.indexTerm( - index, - term, - docId, - position, - termPayload, - null, // We know that fields that remain mutable never have a posting payload. - TermPointerEncoding.DEFAULT_ENCODING); - - // Our term lookups are very slow, so we cache term dictionaries for some fields across many - // segments, so we must keep the term IDs the same while remapping. - Preconditions.checkState(newTermID == termID); - } - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPool.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPool.docx new file mode 100644 index 0000000000000000000000000000000000000000..c0f05104042d37009f157e6ca089b251d6e41afc GIT binary patch literal 39220 zcmagEb9^1$+b#J+_ z%vx)Yyc8%H8W0c=6wq86hkBJ_QCt!*5YRXT5D+S0R7=Fx#>v>mNl)3`&e&0h-p$&o zDM?0dT@dNVln09~8)G+-k74aYXjq!tybuLph4GyL%_Vw$1MF?)gu(n7) ze_8j^yH2RFoIuocK0Mf}00B2cH; zArzB5#=^z%X@4R@?0ugbq_xT=D(l@Ts>es^FF5G=bdB(OXaK&3^#tc%{V4I)Rea#Q z9*}P+O`A-m^`3-Rh};ur@ap*jTT<~wl)vw7xn%P|VEmCd{}oL}7fAlUy68?WCHMsB z-WCWD5G>%Yo`bQKBLn@P&#L&TZ=g&_ewX}WqhuvE%_^dWtGc4cGKKuTsgoDQHa-%? zYu#N6qB`mrefUS0`-Ub<83i~iG{shdYTq>$1M-&p)VHaw8$0wippv0G{fXR^_kuL6 z(j)Fk5Co0MAK6V*3HfQZP=~ar8ZPF9s)a@MsI4UsN`uN0kndofDAk<3>E>-AY{jLU z*}_Yz+J0HNhCc~3J4xvK37*8-AuFZH8ZlvV79vR6quz-~9?e9T$F^l+w7+!7n`u>C z(;o+l$SLW%k={W}b)pP%nl|#5%(d=+J)|QgnNstZHgVnxRPeQ%!9QcHOS#l+idpf7 z8k^H%zx?ljLVv(2nFB8KIY2&AWmxW9q8)eN@&?lbrN9FA|VVY{fM-JDgj))z>%E8OfRfmvu?Db~G zs}>>Xpqn(gH~Nj7Yig~9$vaOXc#2PJcQX(7Gzjwx)39(y&}a5u+^!<)f^r=QGraM%fl#Tw zOfB>#>O8hbU1%hiiw*Q$gfepMCrOfpfoPypqQs}h zf*}HtRd76R+hPJyDf)crz%aYlo*^ZtLVmS#t+Q316?k(){%SNH1n2&9^Vsbiz8@tA z(t!EG#*0_L=fxpVLM*{goY!D8iYoy};NtTW9 zXso&W2;}u3J3;hdfNnwf=-Y&o1il?2^PFo*fQ3+Aw895bPvJ^xJe&ANvKb#nUyiJ| z1epH*-gxCxa360wq^=Kj!JM3=@I3eHz4wlSH5eN0)w9dK9~@8I4~kP(o&@JrKkEl? z>i(tjrz`c5G6kjp>Uemh8yyp zkdb`k0$m;Vp|vg&U%K}aV<2&ZjQ-jX6v&jn=HB~gQJOBW2En8ViVvmf|0>#FAWnp3 z$4Ahm!pJc7L*W=zAYUsV%$y0%kd$gg?4toB{kY^l}ZjUOuvDt27avy=zHG-SeMHo`;dU)!1(4Vb zL@n7?#^Q`D*7JaXI)53NT#=BI(qoZRab9vWRQr*Ig;|b02SGy+q;>Ru3$n*ZAdLvw z0ec#yvzoB79(Po)@BfJjCJ#z&2mb4oNgK~nyrzG7LnCLd)%WRXYvq;ynAPvQq21+E zUrC@VK@0|x8posdu?GV*`k*%0#SB&&bmO3AmAj6@3G|Ps&<=7lQZ}P8t#VVHB~5_BFwlzx*J*xn^OnGoU`$2 z-f*nQc5TYUnJ=U;RS6$b+FQ>v+MvHc*}kV?&iVD zQl9y8SlCN@+9PlNpgM}PZU`3Nq`fXO&TW5Pn0-~+e4Q4aLbb~Xtny&$GPlDG42P@} z`HMvw&XO=z^#bPIdO6a`Pe|;VLKGjVekn3uI8arENWHFa8B}W30qiNQhifCbm)6ZK zn0MOYzq1c3Fg_Sc%GW16&NPV`U0=gtGJ;^H4Ruz2pB>gZoG!s}1~w+r2$Qr1ydXm7 zPd2>Dv|Lvqti@88ovln3lDYXc*EYb8h3%V(f>KJs_*FVa<&kQXJE8v|1E#N+XVkO8 zzLB;GWKAeJBTg)@U6!q2O^#4;h4J$8*nTF7M0}t&}|> z)G%=$E`=tS$q=U=ua3rIGS5~A89JZbrPD#4pz?6V-dsAbdL(O3_1hE5wl340YbZ9Q z@SAjRIofDfv4`!d5azf(taDDqXm_h|@Ot=^UblOe*X_@fGY4k9!}z8?W}K-0h;y;u zr9HoyCSF8<-8obKK3jW<1{-nz{peOoFSWQbq*?Rko{!kfe=?nGj!74^2+T zP*c3Tg%JV-*C24ed!kb>Nt_W%XQ@&1H*gG=Fc@KwVG!QdP83zE?_+rr2p*ekDlK zXLufHH2!9XR^Qu|p>aV&yken`LFVTm0|UYuCCM%-Fwmxuq^sC{!FsC2v03Vpp)qD= zbDZyU&dkhAiLIEDp~yjSPTH*~KXIZ}Q(0MRmf20sHYFgOm$*hYAzn;wP8)ertF7MY zPP~ZHm_%ba;8AXIT1?c+t$EW`?6_H-xOC}T!V4El+p%S>sHNEa!=v4A@bRX^5E3%^Olc=z!8?8iQv_2GSuyvnYJOLL!ugz3H2DGjs=29x0_*R2-|{W-&2N2JAL8%wz@ zW09r`xy$Y1SchnmVeA7gQ7yprFIzV4L)9otbC4u!LmZI%|>v9e(H%;=`>w zP<3SRAi_<_sa5DfnM`NLc3lmO+wW;Cl4}TbojwQkuLxf2O(7>UMc?a6xDIZebZvlE z$j{HgHN9Ped38uS^R?dZzpbs}J_*#XG~FCs7TfjaIM`~oQOeihs3VR(iZ9d;dbJtO z+Q%Fgk&lhv3Ji~qEhMKDUU0)NvW7hCLRf}jHq6(Zv)SI0ne00 zZ(qs0Zsq=7<2@rO#(ySUM@renJJXP(Z&0kAK2HM~y&df^V7Z4Nke!8xUc-9q?dEv5 zzH@i>%js%&hp&65(tzg!!{@BqHbU#mO2YpB$K3P1S=73(VCxGwGFLtC7wwLea~*TN z%ym?#vIex@yv^#*)Fx`*?!BJwGf!hq4=U2hL2ciM5%>W11!J z@w$RcE#}dBNvXPm*V;^!m46LJdC zr-fNLp==sgpY5X@Nc)K{qNOK^1rR26Wi(?8zNTI7;xYa1a>7!mJ z+FEUh6zmPJr0<@*@~z!b!jE9^2i-Xg1Z?xHN3HR)d6y#_!-1l+4Nr~iD-*l^*3Vp< z_N^XoNVAED1`I2MygX$+ku z5?`;;ss%1PX9I)x!!$ENl!x|*+y}*r5Z>}bUB^|ko){qN<5jUNsQGhiJ$0a%CP z0@k5_EjRw&MfuM~$KN|Di9&LLj95P|KVbTU6VQrnBEFpElXp;y*A#gLi?78$h#YKd zZ5q*v?D_9MvU}%HSkF&AC@pRAV9_*w3*d|dK}4GmmN!P>HAPH0?QM`y5wffzgyyd8 zWA9qw6_%MhuS+tkJo=U>^9EDbMmAUvL)w&QBiM#s9aVTNt`z^Ho+wm~(Z9~rD}Wl>*;gpEvp@A7E&{>cc}_Z?Cf#-wo( zSETsB|4l|a3Plf0^)VB4faOWwe0<+z$q-1?wMQgHgt@3TQ)w6Uri3Lzh?A^7T`9;i z_{)?fr^Ve|;-H5tw38I7WC`vb7oNJM!i3t_Q@;MIR1|+g3Tq6y-Jx_l&hCJ1QT2_Lx z@%wv@Z>QCzj~+pE#{0!4$3PE!cbnFw>TAi=#chYJ&pVbE&-3Aho90D!^7^~Y`$dMp z@`&xnbIj-S>+)rEi9pNgzRuJ0=50$Cpz z{L&6zujO|~LIR)k7}j3_qFlFqx6TnKM$TV0y*X#!1%#*g&egU6n@!f9+~U6YKK!J< zCGk47+m9qcdKwlJ0NZ((yPZ?jn2~=se!JJVY9r;}kjbwGDrZDDt$2>7^1D0g`AoTC!e zgvH*~B7zr%T%d5zgft+A)Km++*Xns|2zYY_Gjw*u7zbnezJDAInD|1y-)+7-rE9;{ z`mAUS5Qxa9m__$en(A>t6csRp;0&f1(a{Cr7rf^_8{IAfYpPe3X{GERiC>5 z4c?#vakmtaNs*vmh2VQ7|DdRMD3w>}ypOX>_ua_3`49z+uJUtOz`U|g{tih}4rQz8 z0R;@cJYcAgMnIv~7VzI8?fam`mrtFiNr@FmejC|!XJZg->f(0N^X>OeURnWySt8=?xzMg+v{kEpb#2@~N?1fJB0QFPI3r~+y zGO~z-GlBooq(WtML-b9VDCV1lf+4i1F-)&rmC)M%J z5wxYsPNs|kU{QKg+K<;w^Ddt1%fZ6c@LDF8ZOIjN>%9b|LUzz^P>LBa zWMF+qqV_~52?as4O&W^Av1?9LL{O$%XuWz+x5a*FLGDU|Fl(Jugs|3Im01N6P>Lip zC;@iyEq;WVzjSzF;*binJ1c^B$ZUZ%ILEXEkz{W$kb)9A!AI$YZ!ls5VmrYLbN?JP z102No=RvStQd?l5f1F?4giS^d#^4S++Ap~U@=xq@)_6cEA>cf!ze+U$Xu$y7|0?~P z3apIc(t^nCe-KF7q)&E^)>TqNwqS9SKjdPYJS1|#O5LXj9-+S=^az3tnEssIr7kzelU;BYK|_bF;yK&Rzilpxw>kA77! zNjv(IEe`wh)ecUC&V5E7iFTt5FLQfngYejfmrng&XUoY3o)&x?-qAkbJ+NFCsrFA^g@%Biyl?03q zi+Yl&wvWEexM76{YUKfkq>ZhUbGNmg!RX}2+{B+Z?2mQI&*gr5-s_fIGpU$4=ZvHh3%4U3Mv`tW|b+WX|I1W_=!ns*fFV|SRm z&0$&o_`naGTt9%4{mSAapE^gLLQ@tsj=HEpztA#tPYOGqKnpDQ-Kgp%lV;Ua=RjM8 zBy$3qe4uT_vAUC{4NlDgS$piTJwEF9x8}TRBjsPtR%Yovl_^c;CAh}-L zSue#5t1+XPy397<862Xnh)t2+54(=hPWBE(2sjkJ7I6K5m1(7C?Q_bLL4sZMIQ0~@%>_;=Td3G zyX05){snK*w$$d3ZCUxQD$mnz`wX;sf|l(|;?Ixtg^n55m%EXhkDK8kkB)bHcb~_P zq|c@Em-*jsCw7bmogb|NSq}_vGb7+0A3%t!8Sbt8V0zmfEh!`SM9+$GuWb4oK?S83 zj*bXoG85zzIS(la5|KFVoyr&4ifvMXwzJiXuWzV5Jzffa*KC?^Dx%MggwOD{ujsWH zH23ik&EMdyh`y|xr2FGkBuk~w)3cRC8Oe6I9tH`Y-JWE3@=dET)jIPkeyPPr0CJo; zefu5T2Y#(pP&_lHSkyy|>*bnVm~X3L*p!n*o@#f&jTFg>Go~$f-<*h!` z_&t4SHSA=qh0S*B6c+3E3A4KSa6s-stX$@2-6}?po1E?fiBPH6sfu0lZmAy|F2oX& z_BdraEVJsb=Lie&(HFdJnLBA1Y^^lBPvoL*=e-FWw&l_qYIL+JV;;ZUt-*tsQa5C} zAp&K&_j*LWZGrbMEh5tbws-w)3J!|}#X1knxZ^kDt5(M{oj38lv*WbdN-<}XsCG&D z*lTJ{YR91^NTq2JrwcYQ%3X?4_h1K7KWk;Y#fHbqhq+G$Rw-!baFSWBq`=tRMeNH~ z&&$d&GwSg3yi_!z{C%@dZCD0l6&$gMmvQT7bn<0r33iw9sJ*~6gx;tUxg0?brO<69 z{)SRtyM8#D}a$zCM`GP=3FVS zJyji&yMD~Hk|C}6og1RS;;|z-@;u~GFp%E1P%P4ZZoD%+RHa(0kEU%xG&>oJIS32h-{u$0MSBWhQZir&G@)?(}=**#X$ z{CcPGK`&Zzy;Yz($$qF}UmQc|yq%+WFUqP>Eh31k8QY5+|Gp5v#+gM~`->+G@a)i~ z4?l5fp)jdh?zgG&YTIp+0f`0s&tI$$J5@Hrr!!hQePTs^Pzi) z&`@ZX(E+8m%~$!dj^xxBKj*uF->4f0K<~G_T%UyXL^Mz;eq&0m zx}Z8VGUt30*36A>Z;`07ArtBJeKi~mm@MmR1l9Y61uQ1iJ!d`BDIFz<89mi6Uv&3b ze7e&S&v^Y3z64z;xI;cSyZurV>(6u&&%z0a0R?YhB4dCoWu!Tz3p_zChvR>7LM zv9b!TI+mnTl^vT6;*w!)eGw=1tftVWo!#-Fb@3u1PJoC>$5#kH#&qf;sd}ERvab(+ zdD7hvk&hq1x?q_45YkhHc$5@@erSpft5=ifol}E)VbP(Be{)6tb~|r^gW7fcXmL;2 zoti~fV0p9_fv0UOS$6dPaiw;-2pVj%Jss~LOC{QYJ3GvOCF)oSam-{wu8I1z1{dEh zHtrX+(wMOh-U)2&f*C7T8bvELI)!Dnx2n7I%4HUx!}1!rDUV(lx}~nQgLNF$g(~ZK z$L?&k?BceK?hMrh?L`G4xsx=2;xTU@jd=yp$fYZYk;hR_o5x|;8%7Xx^^2XSxKHxI zLT?VIJOFJD$FhVUw5yKe%rbgw_+p_R^9;<$6}n62==Rxc+*95Tqy{&6HY3`x(~l!} z>KddTsw>VIx+@J-R(tzVT-xrtY4rm}mjSf|au@o{ib+1lga3MZL5sqU^azU!NPE&R zZoe&Z(B(9ZPDpTyt8oM9uHT#^ux_AhxD135vp5<6Y^I$-*v>Ekg8)36sg}(lKPAtOgCd077JXi4JlSIBUFc2+bzxiX z>1&WJKlTyWQQ|xCWU@OGI8JEZ?duyH>RU&XoIep2&fy&Gj7Sh{>=TITYaT!^KY2Sl zeN|E9dA+xWP+Z#y!H#4_cyk~n3-!H8_tCEI_ToR=?w20RB};Rn%4~IDm$6Msk=Zrz zD=&Fp-=A94fpL^beZ8GanlFFgo9!@%89gdP zm%^;Go-SWi1@RVdLAw$LmZMBLMB>vf*KL$)7OBsIIXSpbmn_hAEBHcwqB99ueR_v} z|Lq}Swqq4;^t3Ek22;TnP>uoTE#CE4dFemO7yea#{HHt+U%0E>oBht_C+Llb#rwS2 zLPmo{v$I%^0t0xbd@t%r5tk@pN;&3z{CTWZNq~oYSJcl^%&nDB`5Fsfl&%aM|ITbp za%bfG!^(8)=Q+~_DPRV)s~`_^gt>vD6R|EM9@6!)TwPtcQr44Tjv(TNinV32%VPOj zXTAlC^1xCK(?zR_ME(L@7`Hq>iUldhP<(oo+jiZ0yy$afd4`%4RqXqI9CPFomGh7S zR~EY1Wu=H}`uwd-l?FPKmq-t)onVk`d4?$>k5=Wb(iE!@BOddG*P4ODut1mnlw88c z`u;RQdNxYrFD%Qqh|UY!@?Xga=^-f*`+Quv#RGBGGNwi(iY_nol0P>Iwq}HHMGGoL zBAIw>l7C~q|I)mBal8{hq);1CI=S(>ZInbS3;jM7d7L**G-bKJ>Y`R|VwM!AAn5)0 zf&xZ6TpBe2VqVVvxcwgXwIEjMpmjm1-a12aK@BtT_>tSD9o6PVlLc>jj6^!uX6+?S z%x6hPK%{C>YyZkpyndBNy3eUFGJ;vH#)$BmF0j?7k!> z@NUVqJaVnRt1%b?V2x$tC3|IKC){y*5boc}-BC`aA=Ij$*|;~I|4N@^@L!AQ5wl1|Le z9PiPA$BtO9+qlF1IvdjG#RQ);rT`(@0GBjiS9}e=2SdYCbD8JQqLUFr3@pglMwL&v zQnd40WYk`rjORmWl6B<4@5Uz)vv)jFt7mEqr zM5&f#5A&-T$_d_Z@p)B86X(*%gLUHiNQ(&u5fkF+(EZCC3|^CrSZ_2Y-(-}H4YGX7 zm1>0tR4@fP@H*B1Gfm1-uz|+y+0g)MP|Ci=5hWiOr=djx{5M-yw?c!m?K=Ai? zrF2%?(O(%~vL$`mkZlXyWwf|Fm|Z!-q(bhjwKu}am+5H26yDI&fi?TcE5fO~{i4P- z?@pk6|DH?uF;?+m-}Z9zT+7SS|30BBW;ekqovlo$7_H z5h`XwOYc#&x{D~eFIPlGMJNc=jVaV84LGxV369K`(wyyjvOlpFLGDLFypg*w8&?~x zB4KjCsN(SLs(v3|C5q*qpM<|O9uk+|7$`Bspz1GhWWC=odU>N(6wIdqKy8Np4UpoG zX>G9uI6KFK`q%=mIvfZEt6`6t^{IP(r@R=T0zO&l(nL7)0oPuW=8cwlGDJvJxe3!i z4uoHGfCqb{?NTsAX^UxSe-JlhjaJsgrg1GZdhQwLXuxr`14ql!if@A^;C$0h$6Ku+ zi=fKJoiJp&x-|?NLaX21(4{5Ml=Wv{Lj#EeNfRb?08)Yyg$o@Tg(b$AN5>F}Ta`6h z0taz`WHF98J7I|+`pVHe7dCY4xo4cP3I9~&BN2| zGME3M@=*MbN+p6ufXV^LKPth1>r%guwEgyCJTwx)w1)AQ0Cs)_9rbVg1P%4aGbE%7 zRhL#%hZ8g5iPOM@8ohs*bn!m_H{v>LXBk+r+PX!Ry7WP{&y$HyNl#(0r{>(jgMSEK zQFeB3y@I|*FUil@opiLs4N?xFBWC!fhN%w8VJ5}Pa%cgUmAkf5?u>3MWw+7FveItq zN=I^$=%r?>p++e+G#Y2^1fTRP@;O^cRf!%H;92LpFHQ*g>+cs!$l8kB*TpPX!m{>y zHQ|O+J7DK)G=NWIBHU^ zI=W=x;Q7$JAkxILo`JEXWL1~V0~cc2>8$QzpkMN$T`Yq0d z=v~#^aJbg0KzLYck?1>&f1+~(9kde=t6j4BD^Ib?#h_1zixwDpz&|uLxC35nEi#LL z02%Z?8bXqH9o8#HV{rjKF?XvRn|Aj>ak?MHjl?*BthJVOIg$xA0)uyuCWK7=J0~r2 zyUzr_=RSAFcrfTrmpc`GRKlHtD?Sdx}64@yb8S2U;t-xthlL$7L z%gZKBKcNM=rO&>BQr0hN=8LdwbI}WW>L9~nrHo8R$f4F%PnKsWt(-uTIB+cECV{%c(di7 z>~SfWZ;qF14l>pA>!`b#JKSGTuE&!GTXf!N%9huuJfT=}m~W0X$}HXQTzb)KpH;@A z{G@aOM|OVga=(mArb16hbY76Psxzg$XiF-|OcT;9U64hzH{dgwo3`J@up zrZrg$=`0QU=P?O3>d!h48VbA%4nXVtgXShw1*sWw{RfS~?g3(Im_==6Vr>w%w59w9 zW~=p8y&LcrM9h^i(b>_%cc$I5rN%S^#6DOgDx^-JIM7~LBqqX6AWYIQ%wOR5;0%;( z`@b1={oLVp!5><5vX7=P`gNDcbp^Xr*gAX9M-qo%uY9C~FvDe@0>-SS^Pmw}&V;Hy zfD{F-Er1;ebqE2|3^!nU2^5A=*b``7`BRuVgHE7ZtbSN&h78DCBGV?)iGPcW68a+! zE9gr2+H!R4`wrJxEdkR2exnaCA^4vU$a=sBM6(Ytt%S>aKx1zA4tUY|7~U`}V+>Je zuPz$njX3|S7DIAMQ@aoFt?J?xh--)k21BoFDXK2zg=@w%q@nCe2OzxjazJ?JP>`ek zR;^(F9iDZL_CLa_?Xv1lomxp?{D(rA0oa36+}#Nrim6^u3w!7v!RE#5x9M{S_jOA!@~2;@_3CbKJ zxd8f|IqTvo<=w$^-GOk$Ly-!1wBg+>_=AFxvXoEmzBbl}cd?)!`zkb=X5GHTVk6tG z3!{0urSGA$7iI`Rjk z_ie?Kuw0itG*b@(W6zL2s~sn@g-}{fZ*HzQ_2Pi=OR;hcjAa5bceRyTV!6F%|C^>+ zz)z4{Sn}>8&we?{$r&I!smYoMal*q8L(GW`Psi)VE#h0t9-(;dTO~279sAuP|Fu6n zG`2#>=kh(2)j?tB?2TVll%v)$50|}o zD%exEDS!E#!BCu1g*~SM*@Qhi&q58p$)BOzBVDZ&(VJ-6#yvM}pU7rCm*t~fwO)z! zHd$^u9ja|f&nnuIOH9^)PTDftWi8muO9yew9|FP)dWMFB)%O7@2uRJjYK@<)aoEUa z?7_fBZSH%c6@Xenmt9gqxn%*`K)F55M-F}7W$cN=e6rG?kv^qk?s>>aE@u%?Nd&>i zJR`jSn+jt|(H0gE0_fyS+6)G43SJ%wzn9E(&mvGn~h$o z-YuQU`s&dUgwk#a>7gl5E7{?)7zxs?NL>WS?RzhV+^O}&t!39cYd^n$*dL zjOn*=951aC_-;T3e$U|hWv6z;3&G3+{z5|VBNZXRcbGN!=u5KNPTH#%yDIw+LC;OI zw4G6xZ*RT3iM<;CvsE)W9%qV}ELAO|Z)*Y)g8#_R4zf(=w3xZ)=H2_s+I!w4G+UvO z%5r0{%W(-@fuhb|=uXng3@R7}=Sy;~(QvYiBC+9PkZhA3XFoaQ5B7sAi3QDYu))FD z7F?0<*&*1-#sU6f2tFkwKv_zszhBC2MCb9^e4Od>RkmxU#H8LN*ebEVZ;d|7=@9^S zp?5UpMu=ha%PPvLHo)xFyy#1&D>>BUBzkXDu04DB7(-pf%4N>!-m)D}T*f&n5zZ+K=D))&t-+KpLtI=@ zK4WoyQE(=il4T*;w#b@tt=R}U*|z}ixe-~jx))h1-T6ut0ONzl@YLjhmQL@s{gzu2 zK+s>9&0|N21FC#Azx*nbcH^=CrhLWHv=fpIdVdc>{gj8D0pn9FD=?0iddEE&?^WT< zzTFi-P##l({zm<9QJym;2`=yrS^4VJqpv0kmC?EH^^f2;B=Y+WE=PdifPV`P$SDIC z_*-z_AHi3D1XtsnI=e7EtDahQdx8rn6R6QVB@v8SRS=9x{{z^quO=xl=AXdw?M_C~ zm{Y?*=x=xTK1#)%Tbu&uZ_;#6c}IfYU4Ae=rNhMlqWPF|9CH^VzW)M_8ieslNti3! z`3f!ouLOqvhE?PG-s!1x)%`3a2QCoFZnCOW)W9SNF5um@ok&%~F%1}1g7rD(lGkI% z1-Py&+c7=4E7%yY{T1cqvY9%BSGuz-w0+_M@H4Uq<5R8PH&YZq0FWjFh{UjSOTUld z$}8j+9^$msk^1R3`knHXNa{l1^@8)t+elGB&hS5*`G3vErQrGdumoVie%>061g5Xi#`7$WL1<6mqT%|oG z6sWx%VN7KonueP3Lp#7Ewu(`(L{vow21^dHR4f1St_g8wqJ#}9--yzd&!BgSv|6Z% zbwqm$*Zd@G98?9}%Eu0<68PZ9$=sZb3P`DZj|#NV#@OSj2>(sDSBnp{b-)f-AJgUQ@26r&tAV+v^^2$ z7W)4Lu$TJ-a1!^#p#dxyJ6ta$(7tQ_KKtFR%6}-(3Y;6na|H3*af7uS2|+dG#^iwN zv)@0TBjDUhWcCCeu}>-k8i}Zihqc4qAW!?7{)qJ-^d*L-ygT3k^M|{wwjB|`9fw1# z|FfJ5bY%bO{SE^Wm)s8oyQkB~)g2TqLN8VlR-G48B0e!moRluluIS>jtt);^sfb-F zxyW@Z7rmVNYt@dBRI$fZYSEOu0=BPXdLDJuyZlvztOMJ2lusHOk@xvVt1~BCRCn2+ zRmbK?1HVTzY=s^}P%qQ^6b+^fP^A3xRUU*#iA>4Qc9X2D*+`F5Q0CpRz|98K&r30S<%rx zU}Kqlihegn`OQ|cp{=h&zdSLH&B$2CoK@*RJpMN4#cXQJY9teCUC+#r8fAJWwo<7@ zrb<3D9{z6aUJ18#n5_PVnP%d?dR$r%Au;LTW!?m$NuvzYS{;Z66)QuA?}THnh8roTn?_72X0tn#W7`>4G&WBKBe#1KdBf2R9KOJs2C%LzVFn{a2Nt? zGN-yT5_njBA8l88(Ur_jLgx{=RsYf{#9GH}q?&yClAPwJO-VE1>@p3<{k=%H(SXRa zw)`uZYB3YdZC5Y+N`ibdy6KU6n&24<%_${K!|;XGWc4UB&Mcrk5;a^0hs8k?2kDRc zi?;gTjRB3cMNB?*=l4`%wiLEo1%bzDh$4p$=Zf4P zS!E0nzMxMkvw!rlGsC9#6U^Z>P1vA?Lzm-VmCQH(b4vw!*H!lUUEt8bb!<5epW)A~HhoVMOCM+fN?X^S- z0Dn+JsnlL1SB9dsy_g!ZZIUgO|9L_OkG|u*1x0-aO3k|6QDG}j6p7_aTzA>vQX1Ql z2d7MFB|}~+C@+Lry7SV_fikUPEe!690msJ~<)-5T! zo!h^XLysFq?%E_0ya8{VE1ZW&A_N`)lP(C(a7CV($Ay*hS3+Dv_9mLWKait`YQEhY?0o{Q^xjQT{7eokLCpQ2+&UsgR@kBE? z?Gm#2scH!t{hLcpNgjyTDVI>Nu3#`mGwLHe^~&^MM%`)gBnHL5RKOzsts=Ph7EiW9 zLABb#xhmjDjtgEpttA`*{lj^M_nJufjT-ICN)X(5`p<=Bz5^nL@{Cwf<4Yu{*hCqd zJsOmKg1!z2E8&!ky#o-j8H(y2qL8bC!-X-=1u*8R1B&c5Po?AAQnM%m^1x%Y*-xM@ zwAo&uy(r;4!F!X@W1W)>B4`{W_EJ=wQfo{LM7&AB?Pq4^W3(@BRRYEJv2`ISD`#Ls}*BuVGyt`1F;bXx|=$ zisL}M2uO**g<+hD!JD##&jEEYoAUq%pOe@`;M*>k%y{&X;xO>Mw0r(3&N;+oNB$`s zg?7)&*94!4|NY*+zI(tt7aI_eV+{ll_J6;(uV(IKCT3z{Z0Pj&EBxL%DFx#7=daJ` zO(#Qg*~vgeV-w!fC?LbS6Z_X`4^R9R6$?7))$u3as9OMU@eAhop^U~zj0TBy;pduma?~eZZCEA zY{<9P&mY3?_jcXtwYxqKrw=aDKc6o@Up`J<+TXLM$2Wf5yxw25S63rkUS>Z49_`=k zT;t`T)j@0T?ySITO5Zq~|FA(wPj*R{%T_@cchO;A8+Mt}<=}YhUOqq6Yh5E9It;(R z4BvP!ZB2&Lv7iqRx&3s42#~mWH1{&wdx&DI9(S_8nKyo|TOs$c<|pr7@pkigXEVEX zs@3t*;;nx0DYAM_Hum=M`E2^(<6^$IHtto>{Y=;Dcj@ip#;4O!+V9TgaC?^=w0dYHS~+KyuzBevn^IK8Viq0Ox)x%!n?;%S=Yk+;g}TDJ|mP4)7Uih1RG z%ZI%gwK|0GFRn<1hgoNH_S+q^>on<{ruA9Xyu z)_8pf#e-|N-pP2JIBOquytv$WT=+bnPH)_s6_4%h)myaA2<3~_qwl1Z-4)0}{1Z#< zi(dA|tt;my?TbVnOkB89)BJ_#Og_&wYbNlJ<-?2b?HTtQI-}pa>9e-BxThvdpR4Zn zZ}s1wJ?&dR9=7o79#c8*7#W{GyldYd`pMFUMDjjvl{%ecgHPyPrR? zd;ZKyI`z3sieBFP#Ku4TEFBD)TyyvF%#niRy~NAs$4ja{&dboM(=OHa8Joh>}~F zN-4>NR^V0|bbd$=Ay%xnYEjC{-VlhoG+~F@dtHUgdGdA+!0*c5=m`R>`n?TUg#lQ_ z{BY0jp@#F(^}Hhv%i3M_Fg^b3-b%bSBkLixT?cJ#@aTN^{+R9noW1BI?fL4#ZrWvD z$Ups~X3JXfLDOK|4$4x5zFIDP!(7!SQlGh6JemXqlVEz#B zs9@)-)AO))S!_1D3w{(%iFXgQ`$6&IQStkaz7Tvjnio>gUZefuMQa_K-2L1Z8e6z3 z9gq#IFQ00BRh!yVyo0^5p2>YtN;bnvwej#U)BO<%k+wWPtMy56J+sI$sj+ul<9^m5 zHE)KlQ=!r|={z0os#!Npvrng=7dM++d^e(D2TZbl!V|Urr4wOWNo&x`nXMUkX^epI zQ)mp-XmL@kC*h=yMmNmZ3ynd%Uj7RPiCQgq#VGB@r^ZLuuT1FXr`nvAWNZ5zV1>3nm{3feYC#)SUYGvdXctYwy(xYn}FbzlmQzke*rcSoC7w*05;T! zwt(CI3j${esu}1#4ZE9k_fMgJ?)|5b>!cMhPEpApl!ia>f1&()fqzH&pIKnAHiO%y zGH{)!V-QP*a(X)-Or=9 zi;#nZ%(1@5uMyZ1{I28Po6a20FBe>`o}Wh+b0-!Ltd+xi>|csq#u3mzo?M@y&h0&p z-`6v{P?r);Kjz^CcU&f#JSMT1;YA3bqaYJu|lv*!1GNwF{Qs3^4T0P%6Tf1F?4EQUT z#(z9)-}jG3kISW7&3SF^`%cZfBqXz5*xnynWqS)h&tFa_bGNR4yC5E0U#{Fr_F8Lu zk{fKUJRY61(R2V@zpka>P5G>)MHyT~yIox4&%JNI(Nyt=6+?pI|KdJFy}U#Zk=b?U z*ua?Q#5{^H2@whg` z2s9#~_iNCBH_Jwwvt}*$5gFtB3T9Sp6I0|@tO_S5N6f=Z=&CJYW4P{3!QaTfoai;kamsg&<2Q54GoRM< z?A}~8N!dDuBB6^hpx+oePazzIp8n8dr#WkyC@i!0z_qujWX-ggvNm*rQbJ^w%EkE&K;guHi^4B&S*ZCS#^Hr~2bTFcQ180ML8 zm#^=?oX5E>b{YGS>?~;COUmj>aKM-{=)Rp=c5(Bd@!p1a#q5JdIbEoA)8xr^jl8zj zf*Yd_MM=+IuJ-`vx>-CMBeHU-(HL0&@te!}(gbR{u0eDcS&sSdL)unPy3 zU-4dI-~4q$r5)#rvVW3wp@DP&U>;cgiW3C?*#YfhR28OZsx74<;epPvHQ~0qA@$-3 z0eMlH&dc?9PL1H=4O40t3|q7h9`YP>J0-8jgzEH`&?={+btfN2-|a7>E_#!CJr3w+ zr@GvJ_vlPxuQ6T|C%HLV`Q+Taixd> z)-435Oc{h4tQ~3oK1pqiZoY;Q>b(l`eOKC!O7Jj2+^Y8D8m&C+llb2^ohs}scdiw& z$4^%)y4^|j3HJ7R!Vs>}CX3oFIZ_&yOnTRDZ|n5!H#6xN${($rqV`9kledz;;7&T4EUxov z>#d_y9V-+c;8mvmD#l~A3SPb|S<{IA@N_jQ%oCDBS6j@?Pin6>AH%OU^&aC^+R9A& znwf@ouX!cqln`(gLX@0hvE+Ih5zf67uRQ58O9)z;y@aL;n2?M87J*R>;AwoXXft@Jd~6@OgH zRmoek^&wMSnSGMf`-c+VcK+V>#woZ~Nu18K`le1{(lMD?KrT%z~CF=F!#77!d+()I*w z*WX|49!G~aE{9vN;~&2ve%*7Iju>TRgdj_kA|`|imEa{H+xJbm14RrrGC~v{YQV!( zvNx1|^@H_@$Em@+c;1b9PK!(mnU^3cPQR|ZEP+6GuXENiQm#el#8j)WXG&0w)q55j z6dH^UtKI@RYfi7LzLq;ORD}*^&W=FTfKsv3$e*Hi}`UjDDBi5DJPCa*o^687oiSi5rCzKdF@* z_Op)<#Lh%H&14jce{DH)Q}2vHEAN=8Ebd1$d>PfXcW6k6KPO=ypd7I?z56Q z@K7xG^Quf&3OYOe?&x(fcmGVcYMK4@L}xSiw%2q!(b4oH{-n9jTO8&pZL^EkSa@aQ zS1Z-Cys|f4wMoWYn=GoEIFnH}l-Q7!jp10E8f)S>|Iv}V(uDT}S^?F$xF{37f=@># zO14HKTcRL><}Ys!A;J6elo09X zd-j^H=qE9Dsc zK>)5aLl$+Cr*P4dQ~HB`uKxPsM57)b2R(TG3t^b3V8OlH*bW}9+mgQ0Q^U&T6%6n& zA^eDRTptT(xZd;Gs;5H{gGJbFkpQ%f#7_Gz3pbA@d50&%z^)|iRS>}uic+U~|735oENOwO-3eOBLFwKDcR?BQO zG$_VL)B44wguE7HLz1tp7E=}-&DD-u>k3+{=gm>^;;rDe#OIF~TzvS$Rdx3>3c_|f zz2U^3H9bV{70b^)g5UUHs9OhXs}j9ck9rqT$tsC^7s1TLsnwmg7qBKd>h7PYP=@`5 zeo{g(>Q)7cXYe%niMAHLy-kcz%SFo-T#o%5VK5bKBa7SXYCN!D7cyqvUxPiAVh;#TLefLc$VlMaA=EF#*`WnWLP<#$@=^kBF3INOvCAi$6re-YW}+_A*J zfLq75A2H8Q(s$9tYz*`Og>8xyY+-*tT=Yf>A||VLb`aay1iYpS>>`qUd()6P+Ig-M zb8yp<$KVoTIY;($J$=)SHi~w6tw`7}_ZDYT%-IW1-u(oxQe?8iC?X~24{QqYs%MyN@?Xqsq z+QN>80P5$l_oan>6-FV`(S~R_8$mLUeOV^Y=R$@j>qUE%PMwB`y8eqp6T&0J1stbg zqk>c|cTI#wUnelc+7Q8dy7uh}M?^zp?EPVSH96TR?L~9`e;yRwiF@p zWZj(Hn;qTCQ{U0snq^bWf-Ld4$l8{Ox7+VCsPNI^`gG&g?k3fg>A@DVz3$(Vd<*ic z&Ws_kc{+<5E;_wAdinUGypq&?S#X0occ~H4I+)N})PQox&r4>7+}RZfN)w3i-2K|H zLbf_zS`|)*#zTE?v|x}ti?FoJh#Zeeub++T+STqDJGfD z-+kQmbKLzn436*(=Y_x+w4g$Zn&r|xnfFT+bvDT!7Pq>9>s=J2tEJx#2H|r2LQFQ} zvb-b@!Ocqr%_=>be3+CSjbt6H&jrg|iW=-0Ea~pELCwa6&B2_yzi~|0G(j0OAcD)9 zRZ``6PAe5izJ@d>byi#}Z|%-c#|ZD%DIvIx?NqWJSE61eO;^I$R6^Ux@P#x-!EV4E z0TpXI?o_HDSL(rIa6$fhSOSVj^2Nu9%0NpiF9j4i)Q88ZKNWZ4VU3(+X=1r;%fZ|T&sEOKgEPv+??D;}C zT?Z?5C+h^T(2>B}CYJ9k6N7SRWd7cukk&cLR=q7^Vj%T^vXvw^KUj-X(3W(SyHW$?5FQ^RvwQv8t-ZFo3F3QgFb9) z_{PwPb3@6{KQhi$!p}y3JJRreCTNem9rRmgbK+FssSXmFt?QjAdjHN{h0aqCM-`*Y zeTY}q%w@f^+RYmSKdcl@9E>^^F1ud29$9%g*A)DHPlytIj7M-0*e8A~_;RUFsVP9? zF|m@D(etBSxkxZeAGih=2)l=DtFJK8GwVe5*ePK#li=KhUdV}DsEoU|!{!GBSTg)V z@ffXV%(K4TC@QHiV<9jUQV}Gg5$)i( zyx;^Bqvzu`SSUI?im)`zCq$x}A75*V%YK-J_GHvKYk&_qm(dXk&+MXzE^1Hc20|ec z0pZrz(H<*@0`<(m!ZO~ogbA@5qC1Y_pUZ~+dq_m!e}+6=F#&{hI{Pam*F*3^t;s(^ zW+-bl5EZid?T*;8u$0*877-$I zuEXja6~j%n6%>-AABv{=I4z zHNb#c?+KQ1iLTs)!1%s_kp)BTUN1aK&K#h>fn8(L&9zOup_%FEJBPE-qY@#q6STP6 zV*NKCNg*(OGDkX14RFzqMmR$MC~3VeL_c074Ca;~%m_rk!Dv`6-Aj$RQbb_iTuco8 z6Ehr9ZH|^d73TdvSC}j=(bMpa-TlK2VB9xl{SDA7;Lvt(Y5RRa@55S$b;A*;z0xaG8plH4A`3G|D-Q>< zwIB8z52vf&ddu18%JCuVdpip33n99-M>8f=stx7!%T?>h4>ra%0(}rZyO2J$y(L+? zMjC1+Sh{C0gf=@|nP97;W8h+Y=WT}Ohu6<0*8_*Q+J^Dl^l(H-zi2;DczWNuBWe5m z>W@lU&VCn1(C%i`{^Y@f+>6s!mOX$VZ9Jwl6)xW@Kz7MdfB;W-@PA~ z`#FT3ik6gmh>m6Od(D#p%hj@aOTona>V>nzdt!2PLdNyI(&Jqr!?i+o)IXUQrh2PG zJ8(Jsp@#bK-h|iL^?k_o-H$t4PVz*mB@sJep{UwW)_7c%iK2FgdNuy$#fY}=G-P=z zbeW!?6idfYL(Mo%$220>W}W~_RP~5LYD>$h2%|MYKR%UfN`mw+>vO8u%%Z0A0G z8NhTN?_r?hqe2S4dJCi42TRUa@F&grcWZgY^sYG0R9c)tZX8QI` z`?K%_vBNvQq@%#SP=sI6~Gx>gZXa5W5bAKHirJSm{i{g~?wqRcX$vr{qwTBR&x)cR) z-xr`V^-2ZMN~F*u0?*gIB~MDNcw2HdTWSSU0T9?KbdUJp=OdGU!9Nrr_R1&2dyt05$C~^d3 zaKDz>9?Pq=1ZpL9!rEi*GmRL%YwZkT=tfIIe`BaeFG8FkNLg)ta{^M#jIq6oVi9I` z7$6Nbz6SzL4K{^9!5~eu>(UTaCqTu?ph~Qy;P_6-vStOpl4yJJMfIx@|jK$C(nW?|Il)#^TG91 zCMUt^B!-)vz_A1LF?f3fiU`wy!9{->ccqv*Q@Q~7{D}|2LYSr(v|Jz>QQS5BK>7wU zL74V)7bOo9^KUWs|4%Wdsw}T&jpdZ7soH{yWX!J`8r&ypcy*jt=w%w&J=xS2nV_AM z8k(5DIA44Xm?#_Je^f~)Q`2p%xz=x9&T-ays8xE)wBNnIkMHuQpCi;8+DX`$r80c3 zS~relMaT}%-O3#YP3Z8QJ*4*cp4cshWtYGi4`9;@=_%UR2G_FVhE$l?Vr>SXdaRZy zD5L1ytO*HSa0&>(f=J+N5R|*URBt!q;!}E@Eibx%er!fgx(GM&#(-oWP=WjGHzqi3 z3)+4`PZPEM;>026Wvdjbbb+i}`Ipv1N_r7gRr$@npdy9MZ>W{)b-Rf2+EWjLZh~&uz*rR3MDsfrCgY;W z3Frc*fj6RdeTb{812sJNkG!u?x?8*repwqm$Wm(_cB+s3St46sx%>={5bu);caR{X?fnzj&Y|4a0nJ# z9f>)Wy$mta=Gq^b^;tV@+7~8K5NCucTs@}z4uAgDjoj{a7bs3~9K{jiVo=kW29+Nxs&X6c5)1#oxGIm&l`02Vw{BgvBO0-Fq6R7zl>dha146?Kv4PNvB;ZK|vT&rpI** zWsT5oF50yJzhtpcEIzt^@T#c#Nmdh3ey~{oNI%ZV+ku<&vHX7IdBx!pzyZlnsvFh8 zSemS~KRG&pc2J3`aua;^z7*KWSH_F*+$iSoW3aD`u9D4*=5F0{SS2yR5n4UJO*oS9 z`7CbLRmAhnIJnX-KaLOnaX$@q&L<<@Vm+&Q<^zY;cS)00Oan9v9nR??mIRa_r}-;hK>FUpS$OX91^9s&F_ zc?z7c!X9y{(%?y$p<9`_LM*H@qX(u8ZnY~;gp@r#*J5~%@();42gSrLW!SL4)D2x$PavchN<%6F0)3UO2;T7RmOX(PC@lwJhP z@5(6#IbouTgKikX^_-7j^?p=`(5eAg5c>t~j|G$MVe!udcPruB zCGJQG?y3rd84K-UR1ij+-<500AFJ}(L}p!3N&n)z2mS|nqdn}#0akfdyo>`oC_nT) z7}COjRREQhFOKVb#guSzaTrSKZvoW$JOmd&XjOMtQg`@NhIO)XjGt$t=8{VwOYg9j$ zNK2@E_7ppm8{7nu#};`oOd##g#c9p$BNX<*XZP_n@vVB_;kDN<4YW_n9K#u=M%L^LN@NFZN`B=65*@kl6BCZ20kwm0&7Fsh^c z!a|?Sr@rEA+GWTGifF|Z`#vSUN*0ls@?HxOhz-U5!b1hc{!QSt_7ZLfVmr1P1y?vf zj(x%^(fVwZUy^FmHr~$dIXL^W9JD@2;Vd$+|27QHXh=<*BgS^@HU(Z3wAxU?4kkj7 zXt7e@R58^G{8zGsA@xj$)~1FYXr7t*Gps=0v9OB9SJDhuA% z=Sa?FUuO&n1T6qi;&h#(i6-P0?%fAP6X$qXI3-B5Z5eIp2<)GJgzh@E@J8_<-mz6y zv!kG{5a{y@R65y{gXl_@08i9Z?f@}BOtux)NRG7?{*@eKE1Z@bXFC7~CCQNiL9pYP z7Zx6i9QAdOksD*+g#M3HbV4>Q1_1iveu482SHk%WQ7c(Y@d#=JJ1a_J;mUnGWP3Nr z@cdh#cI&5tOl`%sY)?i&uXcCx7$Zxr_Q8Lp)>aEq3=( zM??f4%0aN}8!FUH1fPpNL|VFn329nq3GQnX=C= z{L5ofRv$_%q!dHg3MfU8Gt~5uAkIzuMkpW9awuO4WB0-yLX^PUj^Y63HRJ$3qE8Ns z|5E_)bqEFgM$9`QZg~mMF2c4+D1U==)nUMFkHPB}Jb!fATquJHl21=YqsbJ}hwoDW z9EZpo@HON-W7rcQ%E$W3wIz>1@}*(xMkqfZ5dYtSczz~LT|*jbeFKyY;U2(m!}7Vx zrwpghg%JBaVS5*hc1^W zk`GYf4F0z-{kB7NS_Ag&fd8wId>9P8ONa4!{GNo^IDG%?`KR+-!+DFLpFm@E@|IXHOdhat=-o( zBi$&V-zP}DN#~<>8m`DVv4u2lic6<46_)j!tSIiz-Lj-L7QDxlfGLoe3fIyF5E z<`|;t-A{Lln>9oHeBCiFPPE$;{R&M33J<%Z47#cn!R4^3m{oN&wiO#8xYLnd4<5<3 zNtk;pW+tomV%G_oU|<*a)9VLpH9#S)QlQYut66@^j%m2E#jAevfK!UC*o_YZj;Cq< z%rNAuEOUl2$E4TFPp{!?oMuB2-}!a=Vz-mluG8xPU|9#3%tHW7@gJDtzhQpJ7C$SF zehU zK;)0&RyY~}+MGb2S(6C?YUW|wNd~(tv!IbI$E0mqx>K5)WO5IH7;JGXJ@>WaStO(p zHAu#xH|J#R=``e-8pKyv+qCvmmS#V2j>#Wb;vAC?umvUao@$W%ow(AZUntj1_;egy zx+FIYri!-MrVQw=j^?%PlwwAdbyC4)uj3Yi8q|wrDfTDzrPn=gjVc`+86D=7nzehO z7qP1=3d9tn?wwnS*zGk8U~>Ga`ZZSG@9^g@r|`I!U~ps!7iQ>1A8LI2Pu){B_eef!bKtksM1p+* zf+7-oGNvzL7g*PWp&Zv2#H%C$bKhlOsq~wK=v<0|lxR|j`Z!euc}R9bmK>rn&_+dw z)=xt}TVr>k^EoAR7Tx`)89dDvygJ5QAD<83dY=9q#9>bAh+tKw+>{1TsP!UA%ES@U zH1leH`UIen7F~}9I~agHC@ARAO11x{U<5xVvD24DNlsKbPC@=BBsm}?=W(($G{Hsz_Q*r^*Aee-6sNH{87a9L2@4oBO0pD^aNjs7wM;YY z6)Biwh~c!Y-I5h#VG=*>E8ByXj1s=aK9B+yhq)Pd(wvxs@u9eUBg=z+_CysKw)Bz@ z@|qOnKNMs|XI=NvwwkLbLctIA?SCmB6fhJ7d3|`ch#VBaO$c(v2551EL;kVifaH#t zeY=#$G}@jC0no;OiW7}NM~ccTD%MI9=af`HMdsM%+F|*HV$)P1g;F3gVfg`W!T=Vx zGf?hDNE`|{^+7jp?Flnbfvg}GBBOZ7kdZmmSbpp-pxqU&)nr`ok=t)G8Z7>OF=!9Z zw>xO8{%j18kpl4cm6r5YK*G(U4B69=dW`8}oc(oz#8A7s7OT;_pFwC1(6s6_r zMH%u5%YpWaEi)Vk1@aoiVpwnMH*|@!#5(6p%P%E>?xH9Hpu5QA4#k3SP@pp=fimPh zvAKNPn3IzMMNPgQ9>=?YHYTB(@YUpOdgu%avmOd3A%5IUDKY*ZoY<()>z8R8t2=h)PmD35esrM3UN|WR%rkzEvNyZim zlLcC0JiwU);eR<}j|`cMUgMBkhmiy~CV?|y!rWxv=T1UFZbeDXU+Mgc)w*x{vrRZo zCIjYYpbC-SxVc2BlEI2_Vmp^3?6p8qEVsjIIxn-=vZr;Hi@Iwt&Ow(%o~kF%d6)6A z{OwX~lOV&k9hI91nPRj5W(mpnplO9?*(bm)lGe-?Wm0M9XD zc`3?r4F4oFIxyOEgYTS(N`HTThzd%xBL2CB8J7^-q&UwIDtaCB8Jk90?9`Z7x1W$F zk1}Gm^DSnc5A6b&6a25wq7llzGAL){ZeUiO4zR8j1zXJg3UmO&woifasM!zBC>qYf zl0jg5jTXfHhUi8l0a+1ICUx|@p8``9Uq{V$Fzxs6$Q-aoC`U@;6k?Qc_ZOn`YzI1X zR|I79)p=l7LEvxyBH*@Nzn?$^&GQceWCswOsF6PY@*B5bb#s3*=&32JzI82d6qfJi z0d1{im~`j@jUrEK_Wci2jXCX$EUJj_>T;PBJ_0>xu;Z*2wsOa^ZCscIpByI8BHoG{ z!U}7kr8B})1+vG52@;t-*k927*&l+~CCO)MGC3jQpLz66W+7ZyTE12qMgMtHn1>ne ztv0c1Zj#`y5t4fP)gD4tK4jqVit(-lqga&H~_0!mZ;$V~LQ@4G(rX>TtP+_A8Q`u<8b7oD7rpGec3YMc5#4{Sf?r&g_> z2w)fl1Wi48nqr)Y@&?mS1aLHmpTUJEOycTshi6P51;nX#t0TapnTeBYj1!3ghQaHV zU>V};A5uk{W&ucsh>-np(Mrr&kw|QZLO$Cr1vO~NoqD_$SeUb2>`0|0g5-1Dz_(B>B z_&zoyax9EPf}mAJqYm~Dole4*ds*j8)Y`p?)ARoA2>VAx)oQe(f+N_3BvOn3^np~l zm@q!uw}AZR6?BYt>RP*?L%o@dmkBs-@>n$YoFK9n+YE5}`S!?|G!)oFp$TKx$cPs* zQv9=dT)`u7jC2L=3=W|1*wc07FHqRv5uEPuQV?L7=kt+dIH?Dukuu;Gip;OVVe66y z8&i2XLF2Tu1r0e4B9eDaF@5Hv9onRyNzQ&Wiz@?5eKEK^<|_&-{Bv_lSQ=t*i5sPC zG4Iy`@O4dM;+s*>Txfv?wKgT)ai}dI<}%aW(YbQSYY(ynKb0!Yz~!n&TX`8qYKAhr z1F#h~mWLGYR$zPR4X?C82(m-eC_7=-yv67KJCU5g zXQ@%8hGX?l^W(kmeH<4wr8Ni%9<8O}>zdH(wqo+MWz*ancYs;He2wDW#<2L}{Trg_ z15Xwgp^yVB*g~V8PY9S>{LYRhTrL$ss0w99p0&_NLZa-N*j&uvI;dUclVY_$xoFI5 zN(R#q6x;L_+PUxQM#iJ=inQ6zjcStzJJ06E={(eTjef>k*}bt=otb0^`8eJ*8cJW} zzLXF9AUch&%RI_h73z#`K(L(~Zz6+_J8u!=8&Utp17cn&ywb0oMCBs~%{Lt!{i1D- zIGJ%Po6hR-8d=q!QRjY|OO*8Vel^sR`qSrNcM~v9;d2X0|8jJYM;opX5H7tVWmxzC z=vtx;sX4lZ!>K!6lf zO@O~Y`Pu(ULFHnkuk>#xeB?~8c|QXz(2Pe{-+r9Zo?!&zw>TyY-1Y>)CInj?QpQHW zWT?rPM`m?4jP^S+!eheHO&_dDx^0QvKlAOGAXIj9&K3;uFGDsAhA5!8p(4@J&R`PG z*9x@Dz+d3Mg+>k#>6bFqNgN>pUX?tG8Igm7yP}3Oi;bjzLT(+%pSdBMXGc_`ZH8L) zRz-m~7kS-G!4W0d$2?XKjJ@P`At;7KJ2^HR-L#%Z`y28|0Ysr=__xh8l#x&B%?G|= z!ksurFb`h6RfD2k2hGyR?*vTsPFb|h->fWVfpctnG~V*2k>hLEK{n66Vz8MlJzt&d z;NTz&3DGP*j@GPh!2i>+SI!&<13*IWR~R55@Yo(eUvX;C)?&{ETIXJ;xGkd@&TAyv@2q0nO!fc>E` z9fia}2{}KfpY=cQ-f=aWU1;jagsG@nE_<+SY5G7J3q1F^@n1T}gAFJnpAp6Uziy=> z9jrIeYs?!{w5TMtW|otE@${&0T6g?`8Ufv3MyB5vi2*ZO!)>vBTB5l}N%A*Q5x9@+QK{>g1!c|w5YO(XQ^q&@msk%cmXB)UVF=D5PsMu-T zjB?Pr<=)zYl#GmOs&qIV^k^AnSZ56$AMdQq_amHM-xd$k>wGGpvpvkmnYpr4p|{b0 zoy#6HMCgy%jMZ~8=z|lO0a`YSg#H9W7`!0A|7#TV@l1Xk_Lt~n0EinUc zI?@gEOaH@x@w2g|TW6v>o6lMr_UGI54H>e;&x$c@1~=}Q4YQjh{wD2hWnJ6--lSW; zB&Fesnq3=k5cz{0tl#`3J3`GpNFKQ zsgact{a;JQzcQR@$k?p0VRSvJBDU=>ysSBewTYaqoG%r@AvX&}HwbH5QYa7{lXStI z+x7VBZPfI`oHg~=R0@1Kn|n{Q#%+TCt%E_i8b+aDe>f=fixhI0=$Xf}TSxI~@iYVv z_%+l{`u#!UK+z43V5*rB>NEsZ4v)lVrKgGF4k?V4kOHgGcU*S{fsj5B zFndDsUn-n$^^%NY62!46!Zdl(Gxz=cnRJ4Pl4^^`E3O!~-(T+U$J5Qs%F4}Wmcq}kafXtA$Z_Fqq zRo9?6Tb;ikp5bgq6jefxW|#+wueg+a+OPqQvI41(m4nnkTJ;4QkI9onumz@fAZ{UJ z^7be}&36qJGSA8jM?hUaYN^ZXd2cOwy0=`6UYqyjU~zA_8t+{TtQ-2>4*BEomHxx~ zh4Sh2*~KQyvk_<{zGutl<*Zq!Tgw+wV&Jqo`~7-%_0)#%^EQNBqy-KlL}DGtBQ${f zH_(~99F`{Hq&=y9w63WKY zx}W01Nx>}#?pXTaigURYD?rT&7!qqTZ`UBLDezx8671mUN?(qVLSajwhnK z&Eyu?_RBO>3mLY3Q*41IN<+8q`RS`&t1?3@F=9or{!PTWcwz}>I0&|gkqG4uXTXi{ zi7wroY9p@EPSDUQwzOC%rN<*EW-Vrp#4!HC>Bn#IL3h0^8GpWA4<;pom7+W~zOthl z_oS$xkKNF==vcM7ZyWsv%Qz9{#(gjjs0y9I(xXs$1I}fH#_s7SE-U;h-M5DAQfrop z@3Kv?%UgW!JzN{X4SITY#jk7M1lr1-C>^dsW*69Y2DU_*{H8sAxyf-~nwgXo(^g29 zUmChEhh6yGwr|WjO=~)?Ve5T!9!$tt)3Wi^N*g*JU(KI2<=GFX&-0`1Hvg3nq4pDp z83P_fbdX%FrJWA8KpK_0u|LJ4ZXll^M{6^i){9D~hh7;@s#l6xuc`%mXO$4HR{ebSjP`>AqC z;*>J=SZ3t)$jJL83^L%)JQ>sW5vukXct~wCg2U>`HQt5JP5C7ZrO7jo4SAIv6uYB%nk;+gX3fvQhaY3DU!5HC zia{$aHIghIGOE7LK}3YhjBJE*XeBn$UBeZXv7L;OmN$MkThv(4NPPSr{(BU0$CTw; z6N9LmK2@U=ivd-;BN5`7Qzj?_$=4>(LZ=f2F0PbuP<5w|9z(ywcW${-P_c%UHX(vtlpD9T8(CH-OUA zmc;-o<7l8A3zRZy|Dt92nA$O)qMV=tRF^^t3iR#$ieKopbci#Ve0SPXYX7_R**2rD z8k^n@Q()8J#O9~ zCCrc=0ZeAqWP>Pm$JB#TDr5L95_(;7h*aVzLkbdDyi5^&`rsy=R=MPcS&-}`)x&vG zgR4MKD){6pv$Mggx9m~v!o6JG8t%`XR2pdeXpZ;lA5W0~*%!<5F?cR2Eu^m3NlKB9^XW^1<7LjnUh4DBSmBoL&JruY_3_1-Ggv_WyG*vPYQ+H}{ z1t*jPMW-4aMcLD0L|Xt;2?Q~*Ert7C84CSAVvEt>|Fvw;KipC^$%Cws1xt+n(2TTu z)kg&vLmugct_p%f@4S*WYlAeXx&0hG9wd;T(t*ekkxOtgyk{QO`(Nf+oZ%dyYiGkF_|`TKOY^e zd=Sc81j(XjONz=8eSh2D*|D9NtoT?b5;WO0P>V9002jPmMyJqh@=iGJgoPExkx%Cp|?$xhE8AS|pc(b~r6ivizi+ulH zwLuKzH|!66es;D|z<^sFvSsa3#=%2_ukp-liag!mjO-K_dfLcrs}TD!r$#2BZI1Ju zMnB`e5!_I_qR~kC+sHSvqXUX<)P_$32HOCJa~v`JyUBW9?jGJhMzt`d#w}8U^{RhM z`{v9m$@}CEtZ^D3LFc#E%})m)`CTC6YN*QnU^q<}3LIQ(O zKI)rQ7fNCZnx4tZKssS)n35xfVtpk4%X11oep8+=t6x)!f%!IhW^;Qt7ABeyJ+%-G zH~ApS*$xY?SB1*Gtv*wU>_U@b%o(|oR;H^@xuZHrTdG`9MMDL*i zsnOL1tsEm6*BSF$#k%@f(Py4ayiaw$tb|14(S-PFJTC44+>}7%+qT-hh?fkO`MbP} zYIiH^+%AbqOBslbcLs7Y@j!I|&)h|X7v-LLDB zX?SovtGC>0q*?jY6_Giup5YJspRyOA%b#x0j50I#4g4Ff;&?E4QIe9 ziAPfZ&45fNd<(A}NhGDSB3 zNu6^tt!M6E~bA^kdLj6?u$N7>F&7GJ_dLL z*MWa)k&xd>dt*=Jh19ib>k49&Fz)h#0&Gg@j?E+f0kx|pldimG#C`X`%eh4xW1yskP$)n;yN{(=x4d{vy%t&j~i*38n<7SAZ-M@HXj zw*)tRdLNg?$k#9QZEG!j{{Z~-OuS8;LVAUfEUM-U`$oupIvuG6HODV^$fPTZYuIik z0MTx=r$6+=#N0|xzHaGg$Qa6VO?SYS{nAt~Y!hoPzen9d3AJpVtM;Uv)0ZJGsN{uQ zn&NESz#1aHQlr7z=oplFp<;S#XwTj|Hp>9xkg3z5u=&a)zk?P!xH>%-*EE>wn4ZP$ zPXXo|KG@A^Wth2$bb8^wThIrWdd!piwg@XUC;OY$i_*(z%AM7hJ4|yUt*bpxE}syQ z=x93iu9e=~*{Xz-(#h(IbdO^6sK7x9{($c2idEVL#yL{){!#K%Hzp>_ zX!N2|E&G-yN58ccY)yLiD+bTImA)*s>=@W&4yKWyKW-mzdHZQgw;LAip-^>wnN7|I zv`|;yJ`HjvbD-}k{pXF1X@g6><`kXCy$G4k7@2G{+LMahY{*Eb=?2e5Y6(^b-7^yh z7)UR$3WA^%ft`?guGBiv`Z0f#jAK5C0gC~V*i_=0TG3gXh|b=Ok*cPgO<1P5p^U7K zuvcDU+lqH!O5NFFqij2j?u-+-tMfctM8txBzJoZoO(&6oT5}QqJT&ovBx5{Ao^s8n zq9o{;4Y+zzAWPAVb? z`j_J4&Ne&4R_6AZuNv4Ir>-~kc3Jnt^$WGKg1_+PJIQ?E^6Lbz&s5Acs&f2%-I?zI<9~k};~=icBCQfkw7<&nG0G7|R$wdC zgdlrANYi`@tyDH^imF8FXM&PcGV23uN)KlaQNy$t?d!+e zClqIOv(k({>*Hu@!SkS%8QN!it?BdVyweS0h_gkyUQ{aW;OCjI(}`0fJNun#_jrbU z52m+6UG;qb+22I$hP6-?H-CK<6`|Z#{JiR9fJ5EuM^-P5QWXm7AgrfZFf>~+8>>;#k=60_BZmx7{>VBSn4A8kmIjbW|XK{ z>hg(mN`xKY>Al9^T*bAPeAgfIh6|GwL`lSgjz!`m#w6PGTsWL_?EcbtE^Wu@b;3SI zaDnsEIzDYg3yovwUgum}dhcA(0Bn3!a;rk+28=uE?a1=MI~S=K0`s11V=Z!Z_Fq-R zYc^s+YgvA!@SEACF2Usa^8APv)sQjtnC~jrOpXt|aS54^MGV!#wuNuGXbp-8fqKufNjpd}R_!50UQKu`{>-49Z;^bwkphi<8~ zL&eE+_UMXkQL)s{G9gF!k&km}%)mwQ5DW5!yxF8Uc#U+ibqgq^>2u%`#)qy5US2ww z7+|p|Pj(y6h}xgzL|Nb?Hgw6B!D@RdwbA$yabz9GUD!l!32&&o?ofRWkKw~VY*rdLXFt=u>%A9~U^f)zWFjwBB`o_c5Odvw-0&;HOWyh}{5@-W~%&q{*V0$+o z%bS57_TJ{-qcc*1K&Y0=E^sLx$RpGJLIeNEV=n-T|Ht@0LVHqRTnwFoBXG$e0AxA> zoCjL|d-mA6d;Q2nlft*h$4?RgxC=Q5#CQZA4z&CSxAyS((_Mq$XUbLRL7?YOq@Cvg zj`&eI04RK20o(rscSCY9O97pC16^?+>6{91;t%-$E&rY5k6u7kv0q3O2Z1aMDL@QI zn7n~O`oZMw6X;_9qg+Yq1JVyl{=y@V39B6elYCy1l!vrVddO1{_>1SaA_^&-wD58W zPYC@9Cn>{_GLRM`4jG!leli>>OOWD8v&M&b-Mc^Wq&Z|#3R3-jNTCt;M>S4LKq_<( z33%gwC-{@>CFLU3j)z>F3BPk4Rg$DEq*CjUMI!O1SB?lTQaouqc!=*#`fZ9GjSls+ UD1aICeO57ntbys#obmnae<^vJhX4Qo literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPool.java b/src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPool.java deleted file mode 100644 index bf85c8765..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPool.java +++ /dev/null @@ -1,225 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.io.IOException; -import java.util.Arrays; - -import com.google.common.annotations.VisibleForTesting; - -import com.twitter.search.common.metrics.SearchLongGauge; -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; - -// Modeled after TwitterCharBlockPool, with a lot of simplification. -public class IntBlockPool implements Flushable { - private static final SearchLongGauge INT_BLOCK_POOL_MAX_LENGTH = - SearchLongGauge.export("twitter_int_block_pool_max_size"); - private static final String STAT_PREFIX = "twitter_int_block_pool_size_"; - - private static final int BLOCK_SHIFT = 14; - public static final int BLOCK_SIZE = 1 << BLOCK_SHIFT; - private static final int BLOCK_MASK = BLOCK_SIZE - 1; - - // We can address up to 2^31 elements with an int. We use 1 << 14 bits for the block offset, - // so we can use the remaining 17 bits for the blocks index. Therefore the maximum number of - // addressable blocks is 1 << 17 or maxInt >> 14. - private static final int MAX_NUM_BLOCKS = Integer.MAX_VALUE >> BLOCK_SHIFT; - - // Initial value written into the blocks. - private final int initialValue; - - // Extra object with final array is necessary to guarantee visibility - // to other threads without synchronization / volatiles. See comment - // in TwitterCharBlockPool. - public static final class Pool { - public final int[][] blocks; - Pool(int[][] blocks) { - this.blocks = blocks; - - // Adjust max size if exceeded maximum value. - synchronized (INT_BLOCK_POOL_MAX_LENGTH) { - if (this.blocks != null) { - final long currentSize = (long) (this.blocks.length * BLOCK_SIZE); - if (currentSize > INT_BLOCK_POOL_MAX_LENGTH.get()) { - INT_BLOCK_POOL_MAX_LENGTH.set(currentSize); - } - } - } - } - } - public Pool pool; - - private int currBlockIndex; // Index into blocks array. - private int[] currBlock = null; - private int currBlockOffset; // Index into current block. - private final String poolName; - private final SearchLongGauge sizeGauge; - - public IntBlockPool(String poolName) { - this(0, poolName); - } - - public IntBlockPool(int initialValue, String poolName) { - // Start with room for 16 initial blocks (does not allocate these blocks). - this.pool = new Pool(new int[16][]); - this.initialValue = initialValue; - - // Start at the end of a previous, non-existent blocks. - this.currBlockIndex = -1; - this.currBlock = null; - this.currBlockOffset = BLOCK_SIZE; - this.poolName = poolName; - this.sizeGauge = createGauge(poolName, pool); - } - - // Constructor for FlushHandler. - protected IntBlockPool( - int currBlockIndex, - int currBlockOffset, - int[][]blocks, - String poolName) { - this.initialValue = 0; - this.pool = new Pool(blocks); - this.currBlockIndex = currBlockIndex; - this.currBlockOffset = currBlockOffset; - if (currBlockIndex >= 0) { - this.currBlock = this.pool.blocks[currBlockIndex]; - } - this.poolName = poolName; - this.sizeGauge = createGauge(poolName, pool); - } - - private static SearchLongGauge createGauge(String suffix, Pool pool) { - SearchLongGauge gauge = SearchLongGauge.export(STAT_PREFIX + suffix); - if (pool.blocks != null) { - gauge.set(pool.blocks.length * BLOCK_SIZE); - } - return gauge; - } - - /** - * Adds an int to the current block and returns it's overall index. - */ - public int add(int value) { - if (currBlockOffset == BLOCK_SIZE) { - newBlock(); - } - currBlock[currBlockOffset++] = value; - return (currBlockIndex << BLOCK_SHIFT) + currBlockOffset - 1; - } - - // Returns number of ints in this blocks - public int length() { - return currBlockOffset + currBlockIndex * BLOCK_SIZE; - } - - // Gets an int from the specified index. - public final int get(int index) { - return getBlock(index)[getOffsetInBlock(index)]; - } - - public static int getBlockStart(int index) { - return (index >>> BLOCK_SHIFT) * BLOCK_SIZE; - } - - public static int getOffsetInBlock(int index) { - return index & BLOCK_MASK; - } - - public final int[] getBlock(int index) { - final int blockIndex = index >>> BLOCK_SHIFT; - return pool.blocks[blockIndex]; - } - - // Sets an int value at the specified index. - public void set(int index, int value) { - final int blockIndex = index >>> BLOCK_SHIFT; - final int offset = index & BLOCK_MASK; - pool.blocks[blockIndex][offset] = value; - } - - /** - * Evaluates whether two instances of IntBlockPool are equal by value. It is - * slow because it has to check every element in the pool. - */ - @VisibleForTesting - public boolean verySlowEqualsForTests(IntBlockPool that) { - if (length() != that.length()) { - return false; - } - - for (int i = 0; i < length(); i++) { - if (get(i) != that.get(i)) { - return false; - } - } - - return true; - } - - private void newBlock() { - final int newBlockIndex = 1 + currBlockIndex; - if (newBlockIndex >= MAX_NUM_BLOCKS) { - throw new RuntimeException( - "Too many blocks, would overflow int index for blocks " + poolName); - } - if (newBlockIndex == pool.blocks.length) { - // Blocks array is too small to add a new block. Resize. - int[][] newBlocks = new int[pool.blocks.length * 2][]; - System.arraycopy(pool.blocks, 0, newBlocks, 0, pool.blocks.length); - pool = new Pool(newBlocks); - - sizeGauge.set(pool.blocks.length * BLOCK_SIZE); - } - - currBlock = pool.blocks[newBlockIndex] = allocateBlock(); - currBlockOffset = 0; - currBlockIndex = newBlockIndex; - } - - private int[] allocateBlock() { - int[] block = new int[BLOCK_SIZE]; - Arrays.fill(block, initialValue); - return block; - } - - @SuppressWarnings("unchecked") - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - public static final class FlushHandler extends Flushable.Handler { - private static final String CURRENT_BLOCK_INDEX_PROP_NAME = "currentBlockIndex"; - private static final String CURRENT_BLOCK_OFFSET_PROP_NAME = "currentBlockOffset"; - private static final String POOL_NAME = "poolName"; - - public FlushHandler() { - super(); - } - - public FlushHandler(IntBlockPool objToFlush) { - super(objToFlush); - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - IntBlockPool pool = getObjectToFlush(); - flushInfo.addIntProperty(CURRENT_BLOCK_INDEX_PROP_NAME, pool.currBlockIndex); - flushInfo.addIntProperty(CURRENT_BLOCK_OFFSET_PROP_NAME, pool.currBlockOffset); - flushInfo.addStringProperty(POOL_NAME, pool.poolName); - out.writeIntArray2D(pool.pool.blocks, pool.currBlockIndex + 1); - } - - @Override - protected IntBlockPool doLoad(FlushInfo flushInfo, DataDeserializer in) throws IOException { - String poolName = flushInfo.getStringProperty(POOL_NAME); - return new IntBlockPool( - flushInfo.getIntProperty(CURRENT_BLOCK_INDEX_PROP_NAME), - flushInfo.getIntProperty(CURRENT_BLOCK_OFFSET_PROP_NAME), - in.readIntArray2D(), - poolName); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPoolPackedLongsReader.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPoolPackedLongsReader.docx new file mode 100644 index 0000000000000000000000000000000000000000..d3dc72592acdfcc6c2685ce18e7abd19a932ee7c GIT binary patch literal 39326 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 Zz0sk84lOW)e$Fa3kPR?BL{ffU{R{0n&TRky literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPoolPackedLongsReader.java b/src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPoolPackedLongsReader.java deleted file mode 100644 index 5edf92f77..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPoolPackedLongsReader.java +++ /dev/null @@ -1,253 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import javax.annotation.Nullable; - -/** - * A packed ints reader reading packed values (int/long) written in {@link IntBlockPool}. - * @see IntBlockPoolPackedLongsWriter - * - * A standard usage would be : - * - set reader at an int block pool pointer and number of bits per packed value: - * {@link #jumpToInt(int, int)}} - * - read: {@link #readPackedLong()} - * - * Example usage: - * @see HighDFPackedIntsDocsEnum - * @see HighDFPackedIntsDocsAndPositionsEnum - */ -public final class IntBlockPoolPackedLongsReader { - /** - * Mask used to convert an int to a long. We cannot just cast because it will fill in the higher - * 32 bits with the sign bit, but we need the higher 32 bits to be 0 instead. - */ - private static final long LONG_MASK = 0xFFFFFFFFL; - - /** The int block pool from which packed ints will be read. */ - private final IntBlockPool intBlockPool; - - /** Pre-computed shifts, masks, and start int indices used to decode packed ints. */ - private final PackedLongsReaderPreComputedValues preComputedValues; - - /** - * The underlying {@link #intBlockPool} will be read block by blocks. The current read - * block will be identified by {@link #startPointerForCurrentBlock} and assigned to - * {@link #currentBlock}. {@link #indexInCurrentBlock} will be used access values from the - * {@link #currentBlock}. - */ - private int[] currentBlock; - private int indexInCurrentBlock; - private int startPointerForCurrentBlock = -1; - - /** - * Whether the decoded packed values are spanning more than 1 int. - * @see #readPackedLong() - */ - private boolean packedValueNeedsLong; - - /** - * Masks used to extract packed values. - * @see #readPackedLong() - */ - private long packedValueMask; - - /** PRE-COMPUTED: The index of the first int that has a specific packed values. */ - private int[] packedValueStartIndices; - - /** PRE-COMPUTED: The shifts and masks used to decode packed values. */ - private int[] packedValueLowBitsRightShift; - private int[] packedValueMiddleBitsLeftShift; - private int[] packedValueMiddleBitsMask; - private int[] packedValueHighBitsLeftShift; - private int[] packedValueHighBitsMask; - - /** Index of packed values. */ - private int packedValueIndex; - - /** - * The {@link #indexInCurrentBlock} and {@link #startPointerForCurrentBlock} of the first int - * that holds packed values. This two values together uniquely form a int block pool pointer - * --- {@link #packedValueStartBlockStart} + {@link #packedValueStartBlockIndex} --- that points - * to the first int that has pointer. - * - * @see #jumpToInt(int, int) - */ - private int packedValueStartBlockIndex; - private int packedValueStartBlockStart; - - /** Current int read from {@link #currentBlock}. */ - private int currentInt; - - /** - * If given, query cost will be tracked every time a int block is loaded. - * @see #loadNextBlock() - */ - private final QueryCostTracker queryCostTracker; - private final QueryCostTracker.CostType queryCostType; - - /** - * Default constructor. - * - * @param intBlockPool from which packed ints will be read - * @param preComputedValues pre-computed shifts, masks, and start int - * @param queryCostTracker optional, query cost tracker used while loading a new block - * @param queryCostType optional, query cost type will be tracked while loading a new block - */ - public IntBlockPoolPackedLongsReader( - IntBlockPool intBlockPool, - PackedLongsReaderPreComputedValues preComputedValues, - @Nullable QueryCostTracker queryCostTracker, - @Nullable QueryCostTracker.CostType queryCostType) { - this.intBlockPool = intBlockPool; - this.preComputedValues = preComputedValues; - - // For query cost tracking. - this.queryCostTracker = queryCostTracker; - this.queryCostType = queryCostType; - } - - /** - * Constructor with {@link #queryCostTracker} and {@link #queryCostType} set to null. - * - * @param intBlockPool from which packed ints will be read - * @param preComputedValues pre-computed shifts, masks, and start int - */ - public IntBlockPoolPackedLongsReader( - IntBlockPool intBlockPool, - PackedLongsReaderPreComputedValues preComputedValues) { - this(intBlockPool, preComputedValues, null, null); - } - - /** - * 1. Set the reader to starting reading at the given int block pool pointer. Correct block will - * be loaded if the given pointer points to the different block than {@link #currentBlock}. - * 2. Update shifts, masks, and start int indices based on given number of bits per packed value. - * 3. Reset packed value sequence start data. - * - * @param intBlockPoolPointer points to the int from which this reader will start reading - * @param bitsPerPackedValue number of bits per packed value. - */ - public void jumpToInt(int intBlockPoolPointer, int bitsPerPackedValue) { - assert bitsPerPackedValue <= Long.SIZE; - - // Update indexInCurrentBlock and load a different index if needed. - int newBlockStart = IntBlockPool.getBlockStart(intBlockPoolPointer); - indexInCurrentBlock = IntBlockPool.getOffsetInBlock(intBlockPoolPointer); - - if (startPointerForCurrentBlock != newBlockStart) { - startPointerForCurrentBlock = newBlockStart; - loadNextBlock(); - } - - // Re-set shifts, masks, and start int indices for the given number bits per packed value. - packedValueNeedsLong = bitsPerPackedValue > Integer.SIZE; - packedValueMask = - bitsPerPackedValue == Long.SIZE ? 0xFFFFFFFFFFFFFFFFL : (1L << bitsPerPackedValue) - 1; - packedValueStartIndices = preComputedValues.getStartIntIndices(bitsPerPackedValue); - packedValueLowBitsRightShift = preComputedValues.getLowBitsRightShift(bitsPerPackedValue); - packedValueMiddleBitsLeftShift = preComputedValues.getMiddleBitsLeftShift(bitsPerPackedValue); - packedValueMiddleBitsMask = preComputedValues.getMiddleBitsMask(bitsPerPackedValue); - packedValueHighBitsLeftShift = preComputedValues.getHighBitsLeftShift(bitsPerPackedValue); - packedValueHighBitsMask = preComputedValues.getHighBitsMask(bitsPerPackedValue); - - // Update packed values sequence start data. - packedValueIndex = 0; - packedValueStartBlockIndex = indexInCurrentBlock; - packedValueStartBlockStart = startPointerForCurrentBlock; - - // Load an int to prepare for readPackedLong. - loadInt(); - } - - /** - * Read next packed value as a long. - * - * Caller could cast the returned long to an int if needed. - * NOTICE! Be careful of overflow while casting a long to an int. - * - * @return next packed value in a long. - */ - public long readPackedLong() { - long packedValue; - - if (packedValueNeedsLong) { - packedValue = - (LONG_MASK & currentInt) - >>> packedValueLowBitsRightShift[packedValueIndex] & packedValueMask; - packedValue |= - (LONG_MASK & loadInt() - & packedValueMiddleBitsMask[packedValueIndex]) - << packedValueMiddleBitsLeftShift[packedValueIndex]; - if (packedValueHighBitsLeftShift[packedValueIndex] != 0) { - packedValue |= - (LONG_MASK & loadInt() - & packedValueHighBitsMask[packedValueIndex]) - << packedValueHighBitsLeftShift[packedValueIndex]; - } - } else { - packedValue = - currentInt >>> packedValueLowBitsRightShift[packedValueIndex] & packedValueMask; - if (packedValueMiddleBitsLeftShift[packedValueIndex] != 0) { - packedValue |= - (loadInt() - & packedValueMiddleBitsMask[packedValueIndex]) - << packedValueMiddleBitsLeftShift[packedValueIndex]; - } - } - - packedValueIndex++; - return packedValue; - } - - /** - * A simple getter of {@link #packedValueIndex}. - */ - public int getPackedValueIndex() { - return packedValueIndex; - } - - /** - * A setter of {@link #packedValueIndex}. This setter will also set the correct - * {@link #indexInCurrentBlock} based on {@link #packedValueStartIndices}. - */ - public void setPackedValueIndex(int packedValueIndex) { - this.packedValueIndex = packedValueIndex; - this.indexInCurrentBlock = - packedValueStartBlockIndex + packedValueStartIndices[packedValueIndex]; - this.startPointerForCurrentBlock = packedValueStartBlockStart; - loadInt(); - } - - /************************** - * Private Helper Methods * - **************************/ - - /** - * Load a new int block, specified by {@link #startPointerForCurrentBlock}, from - * {@link #intBlockPool}. If {@link #queryCostTracker} is given, query cost with type - * {@link #queryCostType} will be tracked as well. - */ - private void loadNextBlock() { - if (queryCostTracker != null) { - assert queryCostType != null; - queryCostTracker.track(queryCostType); - } - - currentBlock = intBlockPool.getBlock(startPointerForCurrentBlock); - } - - /** - * Load an int from {@link #currentBlock}. The loaded int will be returned as well. - * If the {@link #currentBlock} is used up, next block will be automatically loaded. - */ - private int loadInt() { - while (indexInCurrentBlock >= IntBlockPool.BLOCK_SIZE) { - startPointerForCurrentBlock += IntBlockPool.BLOCK_SIZE; - loadNextBlock(); - - indexInCurrentBlock = Math.max(indexInCurrentBlock - IntBlockPool.BLOCK_SIZE, 0); - } - - currentInt = currentBlock[indexInCurrentBlock++]; - return currentInt; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPoolPackedLongsWriter.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/IntBlockPoolPackedLongsWriter.docx new file mode 100644 index 0000000000000000000000000000000000000000..f858ad7e51668aea6e770d072c14b5ac8f8d178e GIT binary patch literal 38616 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 <9;wmlW+AV($I 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 0; - - // Set the writer to start writing at the given int block pool pointer. - this.currentIntPointer = intBlockPoolPointer; - - // Set number of bits that will be write per packed value. - this.numBitsPerPackedValue = bitsPerPackedValue; - - // Compute the mask used to extract lower number of bitsPerPackedValue. - this.packedValueBitsMask = - bitsPerPackedValue == Long.SIZE ? -1L : (1L << bitsPerPackedValue) - 1; - - // Reset current int data to 0. - this.currentIntValue = 0; - this.currentIntBitIndex = 0; - } - - /** - * The given int value will be ZERO extended to a long and written using - * {@link #writePackedValueInternal(long)} (long)}. - * - * @see #LONG_MASK - */ - public void writePackedInt(final int value) { - assert numBitsPerPackedValue <= Integer.SIZE; - writePackedValueInternal(LONG_MASK & value); - } - - /** - * Write a long value. - * The given long value must bu UNABLE to fit in an int. - */ - public void writePackedLong(final long value) { - assert numBitsPerPackedValue <= Long.SIZE; - writePackedValueInternal(value); - } - - /************************* - * Private Helper Method * - *************************/ - - /** - * Write the given number of bits of the given value into this int pool as a packed int. - * - * @param value value will be written - */ - private void writePackedValueInternal(final long value) { - // Extract lower 'numBitsPerPackedValue' from the given value. - long val = value & packedValueBitsMask; - - assert val == value : String.format( - "given value %d needs more bits than specified %d", value, numBitsPerPackedValue); - - int numBitsWrittenCurIter; - int numBitsRemaining = numBitsPerPackedValue; - - // Each iteration of this while loop is writing part of the given value. - while (numBitsRemaining > 0) { - // Write into 'currentIntValue' int. - currentIntValue |= val << currentIntBitIndex; - - // Calculate number of bits have been written in this iteration, - // we either used up all the remaining bits in 'currentIntValue' or - // finished up writing the value, whichever is smaller. - numBitsWrittenCurIter = Math.min(Integer.SIZE - currentIntBitIndex, numBitsRemaining); - - // Number of bits remaining should be decremented. - numBitsRemaining -= numBitsWrittenCurIter; - - // Right shift the value to remove the bits have been written. - val >>>= numBitsWrittenCurIter; - - // Update bit index in current int. - currentIntBitIndex += numBitsWrittenCurIter; - assert currentIntBitIndex <= Integer.SIZE; - - flush(); - - // if 'currentIntValue' int is used up. - if (currentIntBitIndex == Integer.SIZE) { - currentIntPointer++; - - currentIntValue = 0; - currentIntBitIndex = 0; - } - } - } - - /** - * Flush the {@link #currentIntValue} int into the int pool if the any bits of the int are used. - */ - private void flush() { - if (currentIntPointer == intBlockPool.length()) { - intBlockPool.add(currentIntValue); - assert currentIntPointer + 1 == intBlockPool.length(); - } else { - intBlockPool.set(currentIntPointer, currentIntValue); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/InvertedIndex.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/InvertedIndex.docx new file mode 100644 index 0000000000000000000000000000000000000000..6669aec5068a83e8a238477abdd584024ab7c800 GIT binary patch literal 38032 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/InvertedIndex.java b/src/java/com/twitter/search/core/earlybird/index/inverted/InvertedIndex.java deleted file mode 100644 index 6e4b79250..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/InvertedIndex.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.io.IOException; - -import org.apache.lucene.index.Terms; -import org.apache.lucene.index.TermsEnum; -import org.apache.lucene.util.BytesRef; - -import com.twitter.search.common.schema.base.EarlybirdFieldType; -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.facets.FacetLabelProvider; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; - -/** - * Inverted index for a single field. - * - * Example: The field is "hashtags", this index contains a mapping from all the hashtags - * that we've seen to a list of postings. - */ -public abstract class InvertedIndex implements FacetLabelProvider, Flushable { - protected final EarlybirdFieldType fieldType; - - public InvertedIndex(EarlybirdFieldType fieldType) { - this.fieldType = fieldType; - } - - public EarlybirdFieldType getFieldType() { - return fieldType; - } - - /** - * Get the internal doc id of the oldest doc that includes term. - * @param term the term to look for. - * @return The internal docid, or TERM_NOT_FOUND. - */ - public final int getLargestDocIDForTerm(BytesRef term) throws IOException { - final int termID = lookupTerm(term); - return getLargestDocIDForTerm(termID); - } - - /** - * Get the document frequency for this term. - * @param term the term to look for. - * @return The document frequency of this term in the index. - */ - public final int getDF(BytesRef term) throws IOException { - final int termID = lookupTerm(term); - if (termID == EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND) { - return 0; - } - return getDF(termID); - } - - public boolean hasMaxPublishedPointer() { - return false; - } - - public int getMaxPublishedPointer() { - return -1; - } - - /** - * Create the Lucene magic Terms accessor. - * @param maxPublishedPointer used by the skip list to enable atomic document updates. - * @return a new Terms object. - */ - public abstract Terms createTerms(int maxPublishedPointer); - - /** - * Create the Lucene magic TermsEnum accessor. - * @param maxPublishedPointer used by the skip list to enable atomic document updates. - * @return a new TermsEnum object. - */ - public abstract TermsEnum createTermsEnum(int maxPublishedPointer); - - /** - * Returns the number of distinct terms in this inverted index. - * For example, if the indexed documents are: - * "i love chocolate and i love cakes" - * "i love cookies" - * - * then this method will return 6, because there are 6 distinct terms: - * i, love, chocolate, and, cakes, cookies - */ - public abstract int getNumTerms(); - - /** - * Returns the number of distinct documents in this index. - */ - public abstract int getNumDocs(); - - /** - * Returns the total number of postings in this inverted index. - * - * For example, if the indexed documents are: - * "i love chocolate and i love cakes" - * "i love cookies" - * - * then this method will return 10, because there's a total of 10 words in these 2 documents. - */ - public abstract int getSumTotalTermFreq(); - - /** - * Returns the sum of the number of documents for each term in this index. - * - * For example, if the indexed documents are: - * "i love chocolate and i love cakes" - * "i love cookies" - * - * then this method will return 8, because there are: - * 2 documents for term "i" (it doesn't matter that the first document has the term "i" twice) - * 2 documents for term "love" (same reason) - * 1 document for terms "chocolate", "and", "cakes", "cookies" - */ - public abstract int getSumTermDocFreq(); - - /** - * Lookup a term. - * @param term the term to lookup. - * @return the term ID for this term. - */ - public abstract int lookupTerm(BytesRef term) throws IOException; - - /** - * Get the text for a given termID. - * @param termID the term id - * @param text a BytesRef that will be modified to contain the text of this termid. - */ - public abstract void getTerm(int termID, BytesRef text); - - /** - * Get the internal doc id of the oldest doc that includes this term. - * @param termID The termID of the term. - * @return The internal docid, or TERM_NOT_FOUND. - */ - public abstract int getLargestDocIDForTerm(int termID) throws IOException; - - /** - * Get the document frequency for a given termID - * @param termID the term id - * @return the document frequency of this term in this index. - */ - public abstract int getDF(int termID); -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/InvertedRealtimeIndex.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/InvertedRealtimeIndex.docx new file mode 100644 index 0000000000000000000000000000000000000000..2d6431599ca55448bd5eac94ddbf5fa6afcf652c GIT binary patch literal 41650 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 z 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 { - - private final TermPointerEncoding termPointerEncoding; - - public TermHashTable(int size, TermPointerEncoding termPointerEncoding) { - super(size); - this.termPointerEncoding = termPointerEncoding; - } - - public TermHashTable(int[] termsHash, TermPointerEncoding termPointerEncoding) { - super(termsHash); - this.termPointerEncoding = termPointerEncoding; - } - - @Override - public boolean matchItem(BytesRef term, int candidateTermID) { - return ByteTermUtils.postingEquals( - getTermPool(), - termPointerEncoding.getTextStart(termsArray.termPointers[candidateTermID]), term); - } - - @Override - public int hashCodeForItem(int itemID) { - return ByteTermUtils.hashCode( - getTermPool(), termPointerEncoding.getTextStart(termsArray.termPointers[itemID])); - } - - /* - * Use a fixed hash seed to compute the hash code for the given item. This is necessary because - * we want the TermHashTable to be consistent for lookups in indexes that have been flushed and - * loaded across restarts and redeploys. - * - * Note: previously we used item.hashcode(), however that hash function relies on the seed value - * StringHelper.GOOD_FAST_HASH_SEED, which is initialized to System.currentTimeMillis() when the - * JVM process starts up. - */ - public long lookupItem(BytesRef item) { - int itemHashCode = StringHelper.murmurhash3_x86_32(item, FIXED_HASH_SEED); - - return super.lookupItem(item, itemHashCode); - } - } - - - /** - * Skip list comparator used by {@link #termsSkipList}. The key would be the bytesRef of the term, - * and the value would be the termID of a term. - * - * Notice this comparator is keeping states, - * so different threads CANNOT share the same comparator. - */ - public static final class TermsSkipListComparator implements SkipListComparator { - private static final Comparator BYTES_REF_COMPARATOR = Comparator.naturalOrder(); - - private static final int SENTINEL_VALUE = HashTable.EMPTY_SLOT; - - // Initializing two BytesRef to use for later comparisons. - // Notice different threads cannot share the same comparator. - private final BytesRef bytesRef1 = new BytesRef(); - private final BytesRef bytesRef2 = new BytesRef(); - - /** - * We have to pass each part of the index in since during load process, the comparator - * needs to be build before the index. - */ - private final InvertedRealtimeIndex invertedIndex; - - public TermsSkipListComparator(InvertedRealtimeIndex invertedIndex) { - this.invertedIndex = invertedIndex; - } - - @Override - public int compareKeyWithValue(BytesRef key, int targetValue, int targetPosition) { - // No key could represent SENTINEL_VALUE and SENTINEL_VALUE is greatest. - if (targetValue == SENTINEL_VALUE) { - return -1; - } else { - getTerm(targetValue, bytesRef1); - return BYTES_REF_COMPARATOR.compare(key, bytesRef1); - } - } - - @Override - public int compareValues(int v1, int v2) { - // SENTINEL_VALUE is greatest. - if (v1 != SENTINEL_VALUE && v2 != SENTINEL_VALUE) { - getTerm(v1, bytesRef1); - getTerm(v2, bytesRef2); - return BYTES_REF_COMPARATOR.compare(bytesRef1, bytesRef2); - } else if (v1 == SENTINEL_VALUE && v2 == SENTINEL_VALUE) { - return 0; - } else if (v1 == SENTINEL_VALUE) { - return 1; - } else { - return -1; - } - } - - @Override - public int getSentinelValue() { - return SENTINEL_VALUE; - } - - /** - * Get the term specified by the termID. - * This method should be the same as {@link InvertedRealtimeIndex#getTerm} - */ - private void getTerm(int termID, BytesRef text) { - invertedIndex.getTerm(termID, text); - } - } - - private static final int HASHMAP_SIZE = 64 * 1024; - - private SkipListContainer termsSkipList; - - private final TermPointerEncoding termPointerEncoding; - private final ByteBlockPool termPool; - private final SkipListPostingList postingList; - - private int numTerms; - private int numDocs; - private int sumTotalTermFreq; - private int sumTermDocFreq; - private int maxPosition; - - private volatile TermHashTable hashTable; - private TermsArray termsArray; - - /** - * Creates a new in-memory real-time inverted index for the given field. - */ - public InvertedRealtimeIndex(EarlybirdFieldType fieldType, - TermPointerEncoding termPointerEncoding, - String fieldName) { - super(fieldType); - this.termPool = new ByteBlockPool(); - - this.termPointerEncoding = termPointerEncoding; - this.hashTable = new TermHashTable(HASHMAP_SIZE, termPointerEncoding); - - this.postingList = new SkipListPostingList( - fieldType.hasPositions() - ? SkipListContainer.HasPositions.YES - : SkipListContainer.HasPositions.NO, - fieldType.isStorePerPositionPayloads() - ? SkipListContainer.HasPayloads.YES - : SkipListContainer.HasPayloads.NO, - fieldName); - - this.termsArray = new TermsArray( - HASHMAP_SIZE, fieldType.isStoreFacetOffensiveCounters()); - - // Create termsSkipList to maintain order if field is support ordered terms. - if (fieldType.isSupportOrderedTerms()) { - // Terms skip list does not support position. - this.termsSkipList = new SkipListContainer<>( - new TermsSkipListComparator(this), - SkipListContainer.HasPositions.NO, - SkipListContainer.HasPayloads.NO, - "terms"); - this.termsSkipList.newSkipList(); - } else { - this.termsSkipList = null; - } - } - - void setTermsSkipList(SkipListContainer termsSkipList) { - this.termsSkipList = termsSkipList; - } - - SkipListContainer getTermsSkipList() { - return termsSkipList; - } - - private InvertedRealtimeIndex( - EarlybirdFieldType fieldType, - int numTerms, - int numDocs, - int sumTermDocFreq, - int sumTotalTermFreq, - int maxPosition, - int[] termsHash, - TermsArray termsArray, - ByteBlockPool termPool, - TermPointerEncoding termPointerEncoding, - SkipListPostingList postingList) { - super(fieldType); - this.numTerms = numTerms; - this.numDocs = numDocs; - this.sumTermDocFreq = sumTermDocFreq; - this.sumTotalTermFreq = sumTotalTermFreq; - this.maxPosition = maxPosition; - this.termsArray = termsArray; - this.termPool = termPool; - this.termPointerEncoding = termPointerEncoding; - this.hashTable = new TermHashTable(termsHash, termPointerEncoding); - this.postingList = postingList; - } - - void insertToTermsSkipList(BytesRef termBytesRef, int termID) { - if (termsSkipList != null) { - // Use the comparator passed in while building the skip list since we only have one writer. - termsSkipList.insert(termBytesRef, termID, SkipListContainer.FIRST_LIST_HEAD); - } - } - - @Override - public int getNumTerms() { - return numTerms; - } - - @Override - public int getNumDocs() { - return numDocs; - } - - @Override - public int getSumTotalTermFreq() { - return sumTotalTermFreq; - } - - @Override - public int getSumTermDocFreq() { - return sumTermDocFreq; - } - - @Override - public Terms createTerms(int maxPublishedPointer) { - return new RealtimeIndexTerms(this, maxPublishedPointer); - } - - @Override - public TermsEnum createTermsEnum(int maxPublishedPointer) { - // Use SkipListInMemoryTermsEnum if termsSkipList is not null, which indicates field required - // ordered term. - if (termsSkipList == null) { - return new RealtimeIndexTerms.InMemoryTermsEnum(this, maxPublishedPointer); - } else { - return new RealtimeIndexTerms.SkipListInMemoryTermsEnum(this, maxPublishedPointer); - } - } - - int getPostingListPointer(int termID) { - return termsArray.getPostingsPointer(termID); - } - - @Override - public int getLargestDocIDForTerm(int termID) { - if (termID == EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND) { - return TermsArray.INVALID; - } else { - return postingList.getDocIDFromPosting(termsArray.largestPostings[termID]); - } - } - - @Override - public int getDF(int termID) { - if (termID == HashTable.EMPTY_SLOT) { - return 0; - } else { - return this.postingList.getDF(termID, termsArray); - } - } - - @Override - public int getMaxPublishedPointer() { - return this.postingList.getMaxPublishedPointer(); - } - - @Override - public int lookupTerm(BytesRef term) { - return HashTable.decodeItemId(hashTable.lookupItem(term)); - } - - @Override - public FacetLabelAccessor getLabelAccessor() { - final TermsArray termsArrayCopy = this.termsArray; - - return new FacetLabelAccessor() { - @Override protected boolean seek(long termID) { - if (termID == HashTable.EMPTY_SLOT) { - return false; - } - int termPointer = termsArrayCopy.termPointers[(int) termID]; - hasTermPayload = termPointerEncoding.hasPayload(termPointer); - int textStart = termPointerEncoding.getTextStart(termPointer); - int termPayloadStart = ByteTermUtils.setBytesRef(termPool, termRef, textStart); - if (hasTermPayload) { - ByteTermUtils.setBytesRef(termPool, termPayload, termPayloadStart); - } - offensiveCount = termsArrayCopy.offensiveCounters != null - ? termsArrayCopy.offensiveCounters[(int) termID] : 0; - - return true; - } - }; - } - - @Override - public boolean hasMaxPublishedPointer() { - return true; - } - - @Override - public void getTerm(int termID, BytesRef text) { - getTerm(termID, text, termsArray, termPointerEncoding, termPool); - } - - /** - * Extract to helper method so the logic can be shared with - * {@link TermsSkipListComparator#getTerm} - */ - private static void getTerm(int termID, BytesRef text, - TermsArray termsArray, - TermPointerEncoding termPointerEncoding, - ByteBlockPool termPool) { - int textStart = termPointerEncoding.getTextStart(termsArray.termPointers[termID]); - ByteTermUtils.setBytesRef(termPool, text, textStart); - } - - /** - * Called when postings hash is too small (> 50% occupied). - */ - void rehashPostings(int newSize) { - TermHashTable newTable = new TermHashTable(newSize, termPointerEncoding); - hashTable.rehash(newTable); - hashTable = newTable; - } - - /** - * Returns per-term array containing the number of documents indexed with that term that were - * considered to be offensive. - */ - @Nullable - int[] getOffensiveCounters() { - return this.termsArray.offensiveCounters; - } - - /** - * Returns access to all the terms in this index as a {@link KeysSource}. - */ - public KeysSource getKeysSource() { - final int localNumTerms = this.numTerms; - final TermsArray termsArrayCopy = this.termsArray; - - return new KeysSource() { - private int termID = 0; - private BytesRef text = new BytesRef(); - - @Override - public int getNumberOfKeys() { - return localNumTerms; - } - - /** Must not be called more often than getNumberOfKeys() before rewind() is called */ - @Override - public BytesRef nextKey() { - Preconditions.checkState(termID < localNumTerms); - int textStart = termPointerEncoding.getTextStart(termsArrayCopy.termPointers[termID]); - ByteTermUtils.setBytesRef(termPool, text, textStart); - termID++; - return text; - } - - @Override - public void rewind() { - termID = 0; - } - }; - } - - /** - * Returns byte pool containing term text for all terms in this index. - */ - public ByteBlockPool getTermPool() { - return this.termPool; - } - - /** - * Returns per-term array containing pointers to where the text of each term is stored in the - * byte pool returned by {@link #getTermPool()}. - */ - public int[] getTermPointers() { - return this.termsArray.termPointers; - } - - /** - * Returns the hash table used to look up terms in this index. - */ - InvertedRealtimeIndex.TermHashTable getHashTable() { - return hashTable; - } - - - TermsArray getTermsArray() { - return termsArray; - } - - TermsArray growTermsArray() { - termsArray = termsArray.grow(); - return termsArray; - } - - @SuppressWarnings("unchecked") - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - TermPointerEncoding getTermPointerEncoding() { - return termPointerEncoding; - } - - SkipListPostingList getPostingList() { - return postingList; - } - - void incrementNumTerms() { - numTerms++; - } - - void incrementSumTotalTermFreq() { - sumTotalTermFreq++; - } - - public void incrementSumTermDocFreq() { - sumTermDocFreq++; - } - - public void incrementNumDocs() { - numDocs++; - } - - void setNumDocs(int numDocs) { - this.numDocs = numDocs; - } - - void adjustMaxPosition(int position) { - if (position > maxPosition) { - maxPosition = position; - } - } - - int getMaxPosition() { - return maxPosition; - } - - public static class FlushHandler extends Flushable.Handler { - private static final String NUM_DOCS_PROP_NAME = "numDocs"; - private static final String SUM_TOTAL_TERM_FREQ_PROP_NAME = "sumTotalTermFreq"; - private static final String SUM_TERM_DOC_FREQ_PROP_NAME = "sumTermDocFreq"; - private static final String NUM_TERMS_PROP_NAME = "numTerms"; - private static final String POSTING_LIST_PROP_NAME = "postingList"; - private static final String TERMS_SKIP_LIST_PROP_NAME = "termsSkipList"; - private static final String MAX_POSITION = "maxPosition"; - - protected final EarlybirdFieldType fieldType; - protected final TermPointerEncoding termPointerEncoding; - - public FlushHandler(EarlybirdFieldType fieldType, - TermPointerEncoding termPointerEncoding) { - this.fieldType = fieldType; - this.termPointerEncoding = termPointerEncoding; - } - - public FlushHandler(InvertedRealtimeIndex objectToFlush) { - super(objectToFlush); - this.fieldType = objectToFlush.fieldType; - this.termPointerEncoding = objectToFlush.getTermPointerEncoding(); - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) - throws IOException { - InvertedRealtimeIndex objectToFlush = getObjectToFlush(); - flushInfo.addIntProperty(NUM_TERMS_PROP_NAME, objectToFlush.getNumTerms()); - flushInfo.addIntProperty(NUM_DOCS_PROP_NAME, objectToFlush.numDocs); - flushInfo.addIntProperty(SUM_TERM_DOC_FREQ_PROP_NAME, objectToFlush.sumTermDocFreq); - flushInfo.addIntProperty(SUM_TOTAL_TERM_FREQ_PROP_NAME, objectToFlush.sumTotalTermFreq); - flushInfo.addIntProperty(MAX_POSITION, objectToFlush.maxPosition); - - out.writeIntArray(objectToFlush.hashTable.slots()); - objectToFlush.termsArray.getFlushHandler() - .flush(flushInfo.newSubProperties("termsArray"), out); - objectToFlush.getTermPool().getFlushHandler() - .flush(flushInfo.newSubProperties("termPool"), out); - objectToFlush.getPostingList().getFlushHandler() - .flush(flushInfo.newSubProperties(POSTING_LIST_PROP_NAME), out); - - if (fieldType.isSupportOrderedTerms()) { - Preconditions.checkNotNull(objectToFlush.termsSkipList); - - objectToFlush.termsSkipList.getFlushHandler() - .flush(flushInfo.newSubProperties(TERMS_SKIP_LIST_PROP_NAME), out); - } - } - - @Override - protected InvertedRealtimeIndex doLoad(FlushInfo flushInfo, DataDeserializer in) - throws IOException { - int[] termsHash = in.readIntArray(); - TermsArray termsArray = (new TermsArray.FlushHandler()) - .load(flushInfo.getSubProperties("termsArray"), in); - ByteBlockPool termPool = (new ByteBlockPool.FlushHandler()) - .load(flushInfo.getSubProperties("termPool"), in); - SkipListPostingList postingList = (new SkipListPostingList.FlushHandler()) - .load(flushInfo.getSubProperties(POSTING_LIST_PROP_NAME), in); - - InvertedRealtimeIndex index = new InvertedRealtimeIndex( - fieldType, - flushInfo.getIntProperty(NUM_TERMS_PROP_NAME), - flushInfo.getIntProperty(NUM_DOCS_PROP_NAME), - flushInfo.getIntProperty(SUM_TERM_DOC_FREQ_PROP_NAME), - flushInfo.getIntProperty(SUM_TOTAL_TERM_FREQ_PROP_NAME), - flushInfo.getIntProperty(MAX_POSITION), - termsHash, - termsArray, - termPool, - termPointerEncoding, - postingList); - - if (fieldType.isSupportOrderedTerms()) { - SkipListComparator comparator = new TermsSkipListComparator(index); - index.setTermsSkipList((new SkipListContainer.FlushHandler<>(comparator)) - .load(flushInfo.getSubProperties(TERMS_SKIP_LIST_PROP_NAME), in)); - } - - return index; - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/InvertedRealtimeIndexWriter.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/InvertedRealtimeIndexWriter.docx new file mode 100644 index 0000000000000000000000000000000000000000..508aebd37741bf36ddaab79c737d5f060e990bc6 GIT binary patch literal 38596 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 rgzvqwCGi65!SUdx-ah50A+|L-w6fp= termsArray.getSize()) { - termsArray = invertedIndex.growTermsArray(); - } - - termsArray.termPointers[termID] = termPointer; - - Preconditions.checkState(hashTable.slots()[hashTableSlot] == HashTable.EMPTY_SLOT); - hashTable.setSlot(hashTableSlot, termID); - - if (invertedIndex.getNumTerms() * 2 >= hashTable.numSlots()) { - invertedIndex.rehashPostings(2 * hashTable.numSlots()); - } - - // Insert termID into termsSkipList. - invertedIndex.insertToTermsSkipList(termBytesRef, termID); - } - - invertedIndex.incrementSumTotalTermFreq(); - invertedIndex.getPostingList() - .appendPosting(termID, termsArray, docID, position, postingPayload); - - return termID; - } - - /** - * Delete a posting that was inserted out of order. - * - * This function needs work before it is used in production: - * - It should take an isDocOffensive parameter so we can decrement the offensive - * document count for the term. - * - It doesn't allow the same concurrency guarantees that the other posting methods do. - */ - public static void deletePosting( - InvertedRealtimeIndex invertedIndex, BytesRef termBytesRef, int docID) { - - long hashTableInfoForBytesRef = invertedIndex.getHashTable().lookupItem(termBytesRef); - int termID = HashTable.decodeItemId(hashTableInfoForBytesRef); - - if (termID != HashTable.EMPTY_SLOT) { - // Have seen this term before, and the field that supports deletes. - invertedIndex.getPostingList().deletePosting(termID, invertedIndex.getTermsArray(), docID); - } - } - - @Override - public void add(int docID, int position) { - final BytesRef payload; - if (payloadAtt == null) { - payload = null; - } else { - payload = payloadAtt.getPayload(); - } - - BytesRef termPayload = termPayloadAtt.getTermPayload(); - - int termID = indexTerm(invertedIndex, termAtt.getBytesRef(), - docID, position, termPayload, payload, - invertedIndex.getTermPointerEncoding()); - - if (termID == -1) { - return; - } - - TermsArray termsArray = invertedIndex.getTermsArray(); - - if (currentDocIsOffensive && termsArray.offensiveCounters != null) { - termsArray.offensiveCounters[termID]++; - } - - if (facetField != null) { - facetArray.addFacet(docID, facetField.getFacetId(), termID); - } - } - - @Override - public void finish() { - payloadAtt = null; - termPayloadAtt = null; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/LowDFPackedIntsPostingLists.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/LowDFPackedIntsPostingLists.docx new file mode 100644 index 0000000000000000000000000000000000000000..4a43cc70af01c6f3f5bc283e44432d8e2eed2ca6 GIT binary patch literal 39155 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 { - private static final String OMIT_POSITIONS_PROP_NAME = "omitPositions"; - private static final String TOTAL_POSTINGS_PROP_NAME = "totalPostingsAcrossTerms"; - private static final String MAX_POSITION_PROP_NAME = "maxPosition"; - - public FlushHandler() { - super(); - } - - public FlushHandler(LowDFPackedIntsPostingLists objectToFlush) { - super(objectToFlush); - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - LowDFPackedIntsPostingLists objectToFlush = getObjectToFlush(); - - flushInfo.addBooleanProperty(OMIT_POSITIONS_PROP_NAME, objectToFlush.omitPositions); - flushInfo.addIntProperty(TOTAL_POSTINGS_PROP_NAME, objectToFlush.totalPostingsAcrossTerms); - flushInfo.addIntProperty(MAX_POSITION_PROP_NAME, objectToFlush.maxPosition); - - out.writePackedInts(objectToFlush.packedDocIds.getReader()); - - if (!objectToFlush.omitPositions) { - assert objectToFlush.packedPositions != null; - out.writePackedInts(objectToFlush.packedPositions.getReader()); - } - } - - @Override - protected LowDFPackedIntsPostingLists doLoad( - FlushInfo flushInfo, - DataDeserializer in) throws IOException { - - boolean omitPositions = flushInfo.getBooleanProperty(OMIT_POSITIONS_PROP_NAME); - int totalPostingsAcrossTerms = flushInfo.getIntProperty(TOTAL_POSTINGS_PROP_NAME); - int maxPosition = flushInfo.getIntProperty(MAX_POSITION_PROP_NAME); - - PackedIntsWrapper packedDocIds = new PackedIntsWrapper(in.readPackedInts()); - - PackedIntsWrapper packedPositions = null; - if (!omitPositions) { - packedPositions = new PackedIntsWrapper(in.readPackedInts()); - } - - return new LowDFPackedIntsPostingLists( - packedDocIds, - packedPositions, - omitPositions, - totalPostingsAcrossTerms, - maxPosition); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/LowDFPackedIntsPostingsEnum.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/LowDFPackedIntsPostingsEnum.docx new file mode 100644 index 0000000000000000000000000000000000000000..74ae4199e10300cfbac51d86bbd5fa05f348d958 GIT binary patch literal 37978 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/LowDFPackedIntsPostingsEnum.java b/src/java/com/twitter/search/core/earlybird/index/inverted/LowDFPackedIntsPostingsEnum.java deleted file mode 100644 index cb1c54c05..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/LowDFPackedIntsPostingsEnum.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.io.IOException; - -import javax.annotation.Nullable; - -import org.apache.lucene.util.packed.PackedInts; - -/** - * A PostingsEnum for iterating over LowDFPackedIntsPostingLists. - * - * Can be used with positions and without positions. - */ -public class LowDFPackedIntsPostingsEnum extends EarlybirdOptimizedPostingsEnum { - private static final int SKIP_INTERVAL = 128; - - private final PackedInts.Reader packedDocIds; - @Nullable - private final PackedInts.Reader packedPositions; - private final int lastPostingPointer; - private final int largestDocID; - private int currentPositionPointer; - - /** Pointer to the next posting that will be loaded. */ - private int nextPostingPointer; - - /** - * Creates a new PostingsEnum for all postings in a given term. - */ - public LowDFPackedIntsPostingsEnum( - PackedInts.Reader packedDocIds, - @Nullable - PackedInts.Reader packedPositions, - int postingListPointer, - int numPostings) { - super(postingListPointer, numPostings); - - this.packedDocIds = packedDocIds; - this.packedPositions = packedPositions; - this.nextPostingPointer = postingListPointer; - - this.lastPostingPointer = postingListPointer + numPostings - 1; - this.largestDocID = (int) packedDocIds.get(lastPostingPointer); - - loadNextPosting(); - - // Treat each term as a single block load. - queryCostTracker.track(QueryCostTracker.CostType.LOAD_OPTIMIZED_POSTING_BLOCK); - } - - @Override - protected void loadNextPosting() { - if (nextPostingPointer <= lastPostingPointer) { - nextDocID = (int) packedDocIds.get(nextPostingPointer); - nextFreq = 1; - } else { - // all postings fully processed - nextDocID = NO_MORE_DOCS; - nextFreq = 0; - } - nextPostingPointer++; - } - - @Override - protected void startCurrentDoc() { - if (packedPositions != null) { - /** - * Remember where we were at the beginning of this doc, so that we can iterate over the - * positions for this doc if needed. - * Adjust by `- 1 - getCurrentFreq()` because we already advanced beyond the last posting in - * the previous loadNextPosting() calls. - * @see #nextDocNoDel() - */ - currentPositionPointer = nextPostingPointer - 1 - getCurrentFreq(); - } - } - - @Override - protected void skipTo(int target) { - assert target != NO_MORE_DOCS : "Should be handled in parent class advance method"; - - // now we know there must be a doc in this block that we can return - int skipIndex = nextPostingPointer + SKIP_INTERVAL; - while (skipIndex <= lastPostingPointer && target > packedDocIds.get(skipIndex)) { - nextPostingPointer = skipIndex; - skipIndex += SKIP_INTERVAL; - } - } - - @Override - public int nextPosition() throws IOException { - if (packedPositions == null) { - return -1; - } else if (currentPositionPointer < packedPositions.size()) { - return (int) packedPositions.get(currentPositionPointer++); - } else { - return -1; - } - } - - @Override - public int getLargestDocID() throws IOException { - return largestDocID; - } - - @Override - public long cost() { - // cost would be -1 if this enum is exhausted. - final int cost = lastPostingPointer - nextPostingPointer + 1; - return cost < 0 ? 0 : cost; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/MPHTermDictionary.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/MPHTermDictionary.docx new file mode 100644 index 0000000000000000000000000000000000000000..3d840d42f3967a84361734b0ebaf4d1b8f2213e9 GIT binary patch literal 38470 zcmagFb9^1$*EbxqF&o>qoiw)H*tXf&YHYJ{a$*~etp<&4Jg3+7<9$ER`~EZeWbavD ztTkt5%|81m%78_Kbwus$Tukj;3{*WGOr7-@ zJZx>6QsflYgpj{oykVp=3J`gVB4JeQI#4;#CE$qFX5MjWEi<0Uf;~M<@I%>*p~*4ZRS_(+*0}d;*E3td3JhB^(NcQRW|m46iMm<;?FObx>749--W$wb&n1 zbbFidcPDug4G_%28hub7=gOj5P0BU11D1(XGVrU$LhpMX>exbfC~Zf5%N;IW;L;*6@9TIxgvp{?-S=G zc7Bp2t6iN+VtSgGy#$9Bd&XvqnT5E^v?Vsd8b(?RLHSF)np@OYjR1pnm{iz~Kw=No z-4HFCjHo+OL?Kg(2M#lJA_3Y>v_T!}hVxnB8WAxA8e2)kvXJs5lv{WgDh*d(`Z;?j zdkNWQ_Q=xewqG{xk&lASE|P`;LdWqAC@SglCd^n|MTk<4Xt$zLhtshY@oia{?au&3 z3!Tab{vRkOh4%7iI^G3eX+19-;2lQm5lNw%AX0DsTO8ySh1gA_t(k`@{ z;+B13MrU<6F8(_~;osm@EPPx_ zLkYtYE&@#=;k7W{*NiaNUvk80xT{k_`Yw8&=dLNtd5p(;qLgqx!PVt}OJy?a$u5TT zkPg(dv(0~-BF=7AF3CRu0u>qyLrGx+^3#BX{ zG$M82tL&6M#N2WvY_QXg4TKv`jkdz>(WVYF&RR3VnoC{#v+*^vzaPFfLdfZtK||$( zEK{mFC>Fdkwk!Q|Mj$6}i;ChvxTEaddrhd+!Ju9mc3d)CB z*KymlA1MAYJU_p?PVY<}An0P!%36o^);!KdnfBE$Ya<_V*qz@z3^qIY;r7asIWt)b zy;L|0LaJTzCtcTM!BK<%$Cvld%XqYpoL3Oo$L5Io)N}5l@2`E=xc^<3+qE^U6JT9z zAV5Hn|FbS%9UT5Di|V-D8WVEI3oV46OQa>Vuo8A+(4z3H=mt(*Vphxi7>RTOL>u$2 zpYKyR2KP6{y9nL}-j~L)mnC5{=tg-9HH`76f)Pc>4Y;P-$l-&v$wLxnhziJZ4D~@2 zJx7D-vFZgVdRUiq4aJ%+_ z6vd|H&F@M~3XzrIZ?zVco@LYg>|gfojqG9Awv_B@0>Nt+b<%`A*FW zi2oR`tCZels3PXC8KNXh#eXp(#HBT+KG!%r6kXERlh=vC$YsYtaUCRqIMY2-S>wX_@beF4AdF0x%ARpsVX$4cg||u9A`(4XpYZ*P zt`ng#0rod0kjw;5zem?uLOsaqGhi?aNVygRmCM@~Y#DPBR6{=Kq=8Ys(?KM0w(hP1_oVCcqRwL z7@S#VEM-+UX-YtZx^zhs6@3QcOIi7nBu((k=lM4(nT{_G=Uah=&EM>%1QETLf?q&#+Xbg15w5WKV62Ok?dy?u5?@RTd9u zhgJj2YN<3dy!)E!Cn=VQmCb6r!_ZL^Wtsg>Y^V+Qp->~#0Uh5*+=F$T-j@u>C$JKH z!k$ZhE04Z+l43mUUcUaizCGQ&J~|!$9jHZPo00m52_W0VbN)r5Ky+ps5|Lfjax~N(>sr8r!zj%#_|lO=3(eb_7i5 zDXaEoj~>f)jx!(jPB=7A=(<#lCg|!V(V!9O@H{$0IuXUlP$B`MTF9!x_8H;C-_Yn{ zt^hh(%3m4Zo`s2`AB325~-{$fy{jmGp`7~q1PNEjj?i|7)TQ7H$sdn_!Z2rb#N%Bas zI5c4xHq|wCiyQm~ZO(o`keGRo6 z3R#y>H6+fr6_paUW2(8Tz>I0?-;YMRm{8ivG?iA%y3Moe)nu8eo5Hqw+PQ96NlWeY z+Z)EnC;n6YD@>QwuyVPcU$R~;eInagHlO;yu#55VRz5HCJ5q3J)a4sZDR5O+X7ykf zR1Ok{UyAjB@cpu(Q8WfEaJ*8iPP;sQ3Xs-@>+x44jsmz9L8p{IB^t>omfo4_SlC%B z1vB)mxY0swk(jougxd8Un0K<4xyPtwS+OV5@SZHxN!{5!5ma>xrFh7?&MYjc77V)wdO-AYId>-uu>0D%O?Jj zN~k^03;&s@fjf`V-i~IjfTH0{{ADbc4}cQv6Qju@9Q|^yX+@6l-k9z+Syo#Z)Q<}@ zo0T|xpjG8V&6do#X^H3@dB@M;V~r8?tIaULc=al;y;8g^$$VryVxWe@cqq(m`hEJ_ zhss2gIo)tv>&{tv%eYUT3F;SV-!pl0^_x=M$(`aR`;6OHjxl9dhWAj<0&{X6t=&+u zvzsFuT(XeC(~8ZI`_GhqVy)WQ3w$ljx>>S1TzDydp4VFQnC4@2R!!zJ^yg(DmUafo z+Q_!wT_NZBhPe`T&rZ4CoSe!RtzsF%4$b?==a4AFkojH5HbC$*EfsiiPd;%~L3;hR z8KGd<_DZE`FysN*$m$f$G^fFo8F?Kt=6ILp^X$DfZYC?-IKmk$f;5?BRgklw8|=-J z%HzGdNe34!?N;#xfIym-N3G_n3DG4{h*l^YRZ+5>&&n2YGGwzernl5$VCkM#;*X0? z33=~NXl?fbT3pKc5gI(-(Ws@IO0%SuFGk$X8=*^*rY-WRjS_gVtPgWn9jrEmH2KDc zAnmCFXTLl-nFA{C1_f^K?Yi3pur;<{TS&^a4bNsyS1za5cyr(K-Ad`4z=rns?>R$| zEAWKWkfM*{8V?}Xog*NyVIwV zNi7>3Az#E9nBp2u^?NHK(c3GJDOu0D^5cSy5yQRF0ma!WE$^0NT`FFDH~YGYiV1pI zzp;>chMTtdj_rCOm~(@<4IhS=vmf+)7%boIe{1=Ww)7?Y`e%G))Z51U`H8~*AWBD3 zZI@pIprNvxGecftYx~?~X2tXFSk8d|v&d6vi{kk{QkLODtO>QQf5S~fO|-m-RxX(8 z=~t`fu5XZ{48(-GJEz;G(hsJM(d1XO0K#%>Qb@{(i6g&o=Ducg$pA zg+^i&uq~cM9jTgG)Ia7FGF+>-v$YW1Pr*MK|2x+)m6*Iy zj36NTYLFmE|ID?si>HmL^Ixs5o?go42*5Rl<1JCH;-yszG!IX^B~ zZvggwZ`eM(PY357+UGf`Yj1XM=b3^_!}jk_aUV}FOBb=Ff-NU| zdXG;VSAetyz{}y>?>j(P*xs?{TRq>q?MM4&D5Kvhp?+%V<#hjHSla&1_}WQJ<=gnl zb))CH4QHt!VO4KWr@}Yx@aX!FTgwJ*@0W$OaWD5s!4C&b`+k%Mz~0TloyX_1$`K2L zhp^J6e!nIGf_`(qm7HO3EjzcRuixaq=A}&@*9o2rX1`+!$U1$wQrsC13w|_UTzdhE za^LdbJVP2EK6~Eq<(hdD6q)2d)7S*Qe%pHUNca=@36S|y_z!---vj2Z&QILO_pBP8 zu%!{8Jyt@DJ9E!sGhZ%K?yfyD@HxkCqx_ucz23OJNN!~iGvzdbe#fm1Mx-sj@8X0$k~wF@9|N^d-A28& z;|mn24X-ZRVSXqX*v`vM96*|&pJ$XRz=!t?jkq=<{(y_(IU+sQz9+t*=p2Mkd z^5Lt0;m2Q-Yq#`)HqezC-MZR+CV#jVXTSUS>*I%Zw?qzZSG$e`#}oB)4~N$SGdbn^ zTcOrm^yca{GZ9^<3>SjRB>VpRuoW+AAO%~fv8TRF~m z?MS-!mkrBK-kOVnqLs)xX4WmKWlh`NB;+CvaA_FjOgM6g-a|1*;^U;k5V|HUWs&$* z7iwY{^G);~1DKnV0Q3+~6(P9Q4r(HJ+s&%%LP;29Qd-m?hs2fuqO4zfym1N0ML8Xn zq1)v4pjup`Izq_u*Ow&kVScaCM|%InE#xF*denA75>NhHBC6= z3=oW-@FRUvn_&OMK4VJ+h7tkKqy8&Y8;BMP#Qm?(zo{U~DKD&uJ^ly5g%T-n1nw^t zsU46e`TtAezoFv2u4^!Z(tv0Er!Y5MpdMvppjY(9U-U%q^#4O5JrNA0Cp^qws^^p3 zn~*#Hob|7vB4^RYDK|hDntl$CnDzou7lFE~@5K|Szm~r?;UXZVM;cB%FpV-fzO1#` zqif5*4NYg+))`MsbN;{)urfSu^G+Ad&!Cg~dNH{1a_8EnXE*3A{Mx@X;g)Z)>~W*> zI5d}AyW>&&dqF_qaQ|SmVCOMrOHi-nPK+?tZkJ(2C`C8+f;|D}1 zIeymG;5yO$xu4r|mOH}WS{H-=aIU27iBsZX+vz~0eeG^wO&oH$jV~2n-_4T~-Ld26 z)ypm3#W`C}0At$8VFKp#_%CBlc->8AIX426&ft8UEqwWd2&=?S-=BJN+U!^g) z3+C4wSAQS(i`FDEq~cBI@Vdo2dX+VNva$APjpZavfK@%|WZQf1M#7NNJ&kI=Q_A}0 z@tMbJ_dsmwLtgUFYYMJz7k3qlDa29C@RN#04{(TK8a2$Fa)ZUppttvd%Myjdah6RN zf`|^Ou}o#@@yzYl#0pMGYSG0DIVm1OmWDY`YvB}`vqk?bF;oq*lKB;rde2=GgT<4j zT#+Xv;QbRu&fjO`d35i2?j6~xCw*Yk(KYkY_N7JT7lYtyS0|h_uk7H^?!Lba2j&+> zCr(Ur0nar}JiRVkIzPS-cSpYhwGc{1cS}H_Ar8Robr#$D+dDz<#M(ZL{1;X~#qYBe zX|&}rV`vLn4D&66cVzH$NpzqJMkdwIS+pzWdi%Pfq*>#z6#Z?(&NUshZJ#upP;^HR z+7n}bOE>4&n7H<*pl1*4@I(avCW{S7T9?dh7BD_JX3f0uU%SjhSqhf;PQZ5j4VwGe zLvcukZWwWDO9Ey)-!WjDlVQnTSGL;`u)|5}`&vS_#C9QWT!R(E+-b3nz~~fnNn(!t zcF=i*e!P1iO3117rI7m@yj&{-TdzyL6sN95RUACELk(!KGXk=Y<=9;@bqS*!U`Gbc z*9Vpv|0}n4NzvGoSC|&sB!H+C4Q1H(o6&iH_l3&5Z|Sd`y>q_eEt!o$`|^q%b>7F{ zj+y9lge_YaBp>e?^MGmh=iA}y_v@iSFTk6lr{BYS%E#i_^W5*(V+W?M9q+Az+4qdE z)5DNn?;uDknVziz5C&U-mbBqJ;wR;V7k0z-kixQaXJT9bOz$Xigg z2lNm%u-fDhmpGYu6yxaDU!9!UN?0o?QdPw+eKn^WjWPyTB92#E*zGq@;IV%nvuIil z1?BC>D`b8ASi$V}P|%+z6)y8RQFBP$DGOl7gIYw^9iz&CXHoz46lEnb@{GSFcPk5r zqmz#Rfl}P%x;u``zEoCAgMnUc${UckIj|pB=7B;#NT{mtR*%HLCHVHaMRZEg{zF$JJx}C zC1-4sCA|7+y#hHp!ks028XpKP;aBQpZfCFq84PPdSLmsNoPceMn%t-^&`q^T~-uF9(KWF-a{I4 z{50rQ*q_mUKaZvux)x2tHJeaYuy};5KGtmPx0m#*|;zUHIwpE4-ZioAHs?lVcmtY5HAd+EEHgT)Q7gXc} zZe|%gi?eIhiwP5IM|Ts(jOG(pxw5J1e(^>CpB?%Pk;iT=l*U#H3v0?0+q9D~;->dR z2d=JK(|bhKhmNhi>0aD03qDFn$Z!y9B2ctGx6imoUp-5xkj=c|&>;e`)c37Rie9Dx|kn z>rRwhJm#q9gJ)$;;)!D7fTkv!(W-*$;dXTuY3ts>F}4;qTwD*aG13TfJ@l_;n+um^ z)@DZXw0)B3-Woa(ayeS~XU(P9q92At0ZiJ(0E{t{gF}y@+DRs-~K{DFrs{Pr9bM5RE7m^TW z=a?tn){yg<*&48;p%A~Yrro8tO;n$&`}kt;I?>X~Vic8C#C5JfE0rrLINq1^tF}0r zvagO|bw1$@E`$!2O(@(Bc`f`;taPeAmcG%|V!6;us;s8I`GAKs%cbA)YN( zJ1~sFq?Tys)9d-HwEsYZO^@)4$9MwxrgOLRs^_x)xe&}2QQ6|Ad6MmSCg^h&)s(6K z^G`?c+nq^<#)0R~)nWf&-`D&+zofNfbZ}|`Q!4HsAwST`T?~L8RwzTfzZjnQ= zGc(zhJU=M8cxyFG3h)K5>&$Kg&_uGeo#J?&^aoAP8ccH~xMf)?JNsm=c9? zV2%TCP@C_YTZ?vX1<)tBzNC1)nKQ#h>pXg}x+CiPo=sk8eYhHhuWKq*e)#r&sd2FY z9%{BVmFOf-Ee61w84|b@bFP9qVm71DMtfZSl-Mpl77()Bn7Ibo0cz`p6)#>ELnkvb ziEXjFqQCvZZIPJE`VzgNh*1>2sj0J#eH7D)ChvU9;cBzw=COt03eySeLk%Uhozjo$ zHRl+MbqUqTtuKU`&sk5G&uQEfK^SuRi-WhMSL)u%U>3I`2z?gUx>NwX^9Sdtb?oNQ z`FuUrDTIkTY^U7e&6CBLx1s}BEnezOW~_5Z0B7Fh6<9q?XM!ngXF9mN?$(2Ztb>tx z%{^x4R~ku_PK@bgvjWchz_pCR7Nu?3VOBS=_LN^d0h<)yOX*r2(2$guV_#uAe{&7P zdw{RvF%m`1;A#P}nYRbvJ0b+X2BA?pH`N{?s0l|N*^+(Rl%Oc!^yYFbaR%Z99wO#( znhWUA>23xGp?U1rg>1TH?E!OS@2c8FCt`1+C1QUNfHs~BxdN#>$lb7XgrEY1nZyva zuZcLCY}ptLQ1J%r7bE7i81lK|%a^$Bz;-xkirDi^U4d-|a16tbklae7lHZzr;)3Pd zy1K@txp6kj{ga}iS=__zVM)UEJwkCq?S0s#M_*T$FKWuXFL$<3%B$O9IMHl~uTEs- z;r`bde!4YXJ_4s(eX^r@9s<|^*_X8@LPBZuV}GFU%srz%#|!F(lJ&@V+m6{yk< zkok2h^c!WGMeDQSj`!~}qzd&t3O`dE>rFt{oZMpEN#94!09HPYoRo*kVJX=I!!bYk zN_74eUiOdh`G18U{Rs~y5b3P&<+!!`34ZNm^)@FypV?s5>?)qC#0c4;*n@Ul%q@nL zR)KYwcouI{8sz2K8S}FYYjZhVvDV5TwKEepup>vC!WHH2pen=mY1VvR29y!~GQ`Ug zakjtsSiIAOmu#&(PhVf5jO{p-GlXQma&<}kqC~OIm4DuG)Q=6q&1sPvvBE0RXl7o!)ZbWdzqD_koo^)$C^d#v zj<0=g8l}+7!;L1RkMgI8C$0BZ+%zi8EK(AbgnS>KQ6cDt%3{XBEGsx3w%#JX6vnIU zx6Z57+h$75YhVQ*J@DAIquD)cv*J&UlFH`Utv;uV`z^`|idHYE-Ri__7Hrz5M7q!0 zBe2kvg;Vm?m_#f4YtnrEj<>OHl*6!7tv+7Xa7U4HTeiX!D(dDp)5Ik)$Pd>=5ge#( zWo^nEK@x559e82zWr_eHzN^BrEzYM;V~81_3CtKRKVr^jVc7) za@OiJTr?aF7+f6f=i+&W+(-h7FPtqfWilR>YW&BiV)EibJl=tQ#Jqw>+G2$yM34qa zy+V}H7C@??XhM(X;q#pI&I(JE_jIj<;}5*iLIN^7mOA;`8YQjRT8o$oL}M-SPq+IS)ZIvO(O#DyNU zCV@$`11)X9sr(Xp2Z4^S;Wj6bO)n>o6kM3Og{GKvscsXbzW1XONO%TY_LWbOOA$q} z|K(!Xq)6-1QU`);O=?xXgvj`*foLt_jKkr%qC{NiI!3)bXGlQ9SV8ETo8PA z5uyXnPgYzggoFrRkN#ig;P9K|#Cu|~_$OlQ>`)ZbF4Zf&U_vP|K-Z}MpV_1ufylY= z2tFD49Tc6}_J1iJQ)GZ(O)iH$BVkUO!VW%W9F#z}Pg+Nf1H+~11$)Ye9r>2WE$??~E)IHVE$NEuc;^*|0^ltKN>-Ut)7u4C|^UeigO+M6e;rY0N$ z?!g@HmkyfMwfKqLp30K_YN9W>4pHG-Qlg2c2s?Khoib5s(1`NT&5B_!e-*0rZh&N< zEIu-Kz$iEg)PVXgNECzLa0dA!Hk2$UK_G3$fep|S59w|3g}B>C1BN()FM6Dag)0#c z+V$Uedr$ZPiK%9uae0gIWF^FEjv#w7^ zktH97iuem>&uqlt zk@v2#3Y|nPD|C|y^I+kH2OX3j2*HoTSfk`0T@n}?_MnZHF z`p7@N*VJK0PPmaYFd)bCYLR#!NdAXL(#i~NrIMw5sXx9~`2YCs4bzl$^gT0SzQl9m z!28>`_$Uw(cwnycW&RlyKIjrUsA$rRmfmz0HQGEh#UXd`A1V(d{-{(TYy_(8hyJ4y z0`$jsqv5vSK1>HDqFAMa8k(QP&3F^EuwX{+?kC)Q z&;E_L#@0~|QKGSCRjnzzU*q>^=2zNX6zZ)#yMG@ThF_eM(^IcxsMSOIb7ngOJ$aps zQ}~btp{ZdKAT`9Sd{F@_=(c>@R>qUrg{|r_QdM5oMN{QWAsV~bY%|y>qk&HAs+;7O zaY-?2FQqQojS4#Bdi&W0v0&}(d=W)gndhp6^-@IM(V#Zccyb%!Y?UId0HKcl4r+OT zBf=JS?NnPjQOm|uAI)etQ*(&2%Q9ijVPF_)URFRAZx+ErlN(G z5;&N|Wxk}GIACIHIBv0<1q_<{JBaIl2c=Bz)88Fj4{%2~qaOaD`d)=#b19dFHvTxk z9mD$Bs{{40O1$aMyc@0w^5ML~!&p|sH5G`=8x_cI)?efFy^3(gF=x5; zAfM8TvieI2#|Y6>dG2`%xA{IZZt62L?!Oi0;~(I=3T2^9{;kmMe=EGsx(S<1*s9|2 zQpy)TEBov;>Qtr+eLax>lYV5brsy;4zNhM-XfI-K#iA;-mW|P?Xx&zJY{C})pC|Ou z)7C~e-3LIhBR5nDTS_+!+0t#DZjSMJwCU*X@F-?Np(eI;e*fvfvM}1rx}K4#v~)$E z-3t$D%H{OOd4HeOdAoQFH+21-KJdmqNe?w^kN7R;g2}hKx#3{7Rf*`J%qrP`h~QZ7 z8a8A*C|Wf*_)q|X_-b^vKtBrjT`ZIo-x|D6uGYdlLUP__ z1rFWLz4BBast2iQ5P54I*-|t!S`;SV0Bsn#rV$q%O1(qNSE+s+Sa<$KgjzGrJj^E9^o`vl+b_nx%`Aa zQfW(I>@?8d>I`h-e{5uJhs(zQXg?a0F1UMK+Wp>H0#RD@LZ^us`8&q`NAi&Ga-J~F zD!2Mvp}$;bcJ=XrxnnqJ6l0kjO4EtSCJAb(YsZFUs z>V|sg=zs@(d?4(dNZq_QF*5lH2szsF1fAeXQpg|*+_SC#BvvMlEj zIhJD65H{u&2e_0LKULJe=xsVgF8UduPD*LN!I5M@6NxV9_N9B@xPsun<2|3v3Fn1l*?yOe0~s{V=J%( zYi3ouiJ4>jU0zYhV9z6G-D#hF&Q|RPi6RF++jzYhnCf*QRA7mpX9+gh{p+x+nI|$( zNTJ)C7DsH(WYV6`r6Q?BYKVW9Eyf}v;7oSGXOB(JtKzt999MpB^FO$F7s_(jn z+UFWq|7lW2=eV;t;%}2-DSu3I!T&MYY5V_Yl1t9Idm3=SR_zBgiB@9y!DExtice68 zg@MBxoB7q0!VwR+qFf)bw!gb_b_m+KPDu}bE1uGbE{UP3Ey)nJKzq>QHHbZSZ*o&5 zy=Cy#>B+;-YDS40Ote>P7I{u*f?Ed$90tyN*#!9w&TF}KFxVa09vudx&2t4RJ2z^U~~Y)nO%W(yio0g8ZkB)@)0_7jOt9(LA%O=|9MP8j0CdHfro?c zKmyS^{-AjXS3_%uUHw60bhw9_9Aed29$y`RFKemzhSh3&S?>Y52^DuKLVS97Z^XQF zy4aZh6{!~+4#T3#R&fqhaGY$a%DX-YP8LLT1Uv-PtfQG zN(A}m09_9}KsEb;(n-3#1vTb%Z9^8Hjp7f%GsO{i^ys5AT}ueO=rE?HHMRSJ-l#8J zg1LuzVKVl(m!auXox5jFK^x021Axgps{khN3qT*}EFa4SO<%Di$9Dj2VFJXA0>8feJv#4%=JA~6S5sR5-kAKw71 z7<+)KG-%!De)mFyUUNM8;?icgPazKjLE)o)BeMKt*B<{T#G^E#2Tz%Pek9aQU#=c_O7anC`1XU({|%lHC#uK&$X_1Jd?B5RB-y|=c(G-l=gy^(291Mvi+^siJFs>gxJhzj-7TERbE6_oz3sSD9Ju<2ht^)$w7eyc|`bBxdh%t62tD1@t$L{Y%Mt?MR4$f%q0YQKOtN92C=_KygIBQc{p? zm6PAk6?S5C_-%f!^aW~LwUgp9uafLlI7XWzPYMQvz*XpNZG~YH_=57v3hE6=y%Gh! z3i+ai1dd-?)vO-LKbnHX!wC?pj$pGFjVp5(Mac!EkyUq3JR)jSSRGx2pAVqcj@ycqk6w8qomQ_z#U7wX)Nhjr5Nw=)BC*5n; z!;bf?AiJ+cS8eV@SIf4)PzS;J;WIuqIiY7Tcx=7ql?D;^73J_cP~n2BUd}DO$faL< z?Y*jAvNmmp<$&MafzdqX<7C45mBy-1|rHaLV7y}2y1#XJ>s@v| z2`fMfMst|0s1!Fa3qcC{c5Wq8*K$q)M^)hcj<^*K81sOxf0S>VAKw;?2Qya4A{quD!M97G6|CI?K3amS`%FXN?8*bM^INvku><8O>x)l1Ru z^TAj1uFJ2(#X-44|19SJH8*aBPewypRAak{!2IUfyLN5^E6M^XXz%%W4crPtqxw{U zb-t?+5ZZZ_m)@t(f=fI73tH9a_N1*9^af`{8Cr0MZec9;SaDtrE~J&R;D!cA<$x|?{G#}Q-TY8WdrTQwh_E-I zKDBHpF`3%mkPvN(1h5&#y$fBHB(K0T#a7Bfa_RHcw}TA#4y&QzU7+D%3G~KpbM;;^ z^f@lo$&Vyl@&V zTQ8qjAckRM-BDtByLcOy ze2~F=uLOD>cQ&j3p+F~ib^zZQEMVIM-g-C;&722|6QCbkv?8}*GuM=?HzY!ej~^ zMra=}^1%$3uVJWQei&iup1ig8uMs@$0STrMujpu)t))muXqr6bX``X(k7Xk4i1&@sY6}ZOIJ-ms8ax+ zmnowKij7JUDV7ssK@k^E9Sp656Y^Ejnp)7BD;_rVboV&eW*=fkrl`N!OV@P`^%$1M z$8eaKez0U$1rCk9&ib&J+q0R-h1=G%Fn*6QKNVlD(jix;0RDL7&DOK()8;{{=4Te# z@w=KaSs}#al>O&9GpHu5ax7a-5Lz_s6wUOhDjW1`7Pn6NHN`sTDp?}8h!of4l$h76 z5wl#R5t~A(Dp``wgXGLiRED$@Q&R-&@0#iIi$cbxIVWq*35bBRhWgM$Pu43PdUMm` zPbJH!--ivivjZb~iCD2gUm2ziA@VRndPhh&fG&HFCJg^{0ZrwniD6UB*jf?_pGtT? z4QVYqr!BGLLo45<_5S)N6%&vOJNge5Q`Df*_K#^!W1vlz@19JAUN%M}?P|~ZQaLFY zyrMUnpF4!vez2IRr=C2grU&R!(T=;iO?~1qD%NlOO6*-%@r7KygqilHvj<^0NwFEj z{7^Gp=oFRqgo?Id=-g(aW`qTI23Q`+TJHUWl92KJj0eL7dqX2rU?J_1QcpYuyj57N zMQmJ=7DsTOZ0g6`)r?H9tE!fXvWCaDefuI(h#OcyT;Aht>Vv!Y;v4nFrG>2FZg zz|1yF3s+U~R@t1#u7l!wF~1!|!rQCkn=H8`m{U<b>yRR|aP7x9UnV=%w-pj!P|GkfJ z7Po2K4m}dK0vEe<+9|}Hks^KuDSpQ1i*^t!1R4wlvTS^FnYlM;DQSS6P;cf-p&^xD zrK?D2Voio+8Hjzklwv-XVtyz`1Ox^Q4YDdx8IgaFHF6N-y#{KP?gE7>44wV?_iw3u{ctHLqRVo`fiZUTZVXU(4=Ppjv zDK%RWNPo;v{2buMn^xJ1`9-D5I5a)DG$^V^(5e<)Qu14QeapEFco7utO`@Ue2&Q== z`ADR~kU?-6LXeD?6j|9$KoK;m*q)%~f{-`rCn0d;F#gAA`vm( zU6=W;h(%s$&_6GSd>YI6IlsiePs~`6882pffeaI$EN8b%i@HbH3xKi_Nz2^b2NR#B ztm!5WyDU7IAN8JxV42*f%vtqTIl3vch#{m1KGK-^0O>@Z=>ge|5y=<2GaEV5JI*AA z#YN^QL&Ghz#j--ep8(#TrtOsHw0smlSgk{lZQRji#qk>8vGW7N#6@8nuK39I`t+A6 zm)X2(ZXw+qAm{v&CkA+Vr0+?MF@rDr*V3CzTxPO0KcM5h-4LsdAs^u2IN0+t)m=9!t}-0C({V#KZg1DKLBH$cV0!;N^W*8_ z9q^VrJ-(rL{c?8>sI5i1xX8T+ZtdUfT;u1XH^2mRcUBQJXKozKz1t&YrnzS-4ZBYna&f(OFP$BHZCfKBI*7Wvh}w87Z%ackux5-3yZLa13YNNlu=2IsyN~6l z9d~uQo-=!?U#9f86Qt~3_Ve_9JVKnZXG@Kif8P<}v@8#dx>Atq_?9`umcW!y-b;h}} zn3$w+C_zKWbyH_x5SFu=7q&LI^vk~n;d=dj@9GQV^e}I&og>#ac0yysIHQLhvHgt? zrPify%1MUJp`ZH6TDLu?eeKesx>faC>${UBtrnEnDo>2k{j8f6=gp4gRfcR{TG)l( zYsaPy7GZ7@ue8@IgZQsE|Bs~&y?Q==JA%Ib(!sSGzcd1FytVgwetcd69zwnk*H_-n zss{j|c8lH(sdAxq^o_i_y9!lQaAFa#;Ok`8wtQv|SRnCc;lY=g7A(eM@qemYGe?B3 z9A0<>WZi8TjH-1r=4@^8PED3S)!hENF?xIQacXRap^0y2a%I^qyVz{g`>r|n^sq-TToL0@%?4kpt*9ALu-9& zOQEzhm@t*Gl2AP^Zv5`$W#_5yZtmFe=_4og#Q!2SZfWlWm+;`Dd@yWs&CA~>PX?O* zf}l{4Ahq^)L6&a4eo_Cc^K<3lEhQlOhbXRnL##!g$|m@Gd%*6$i$ z&Z;I3^2P%uTrB%xa;ss||3lbYK-IBq-NLv95AN>n79_a46WrZBxVyW%ySuwP!QBZS zAjsR~oO|Cr_y6Aa4+hO(ckQ|6oYmcXRrRi3<|aZ5QL+nDDJ7ZE^4yAp&JXFq#0vFR zEs9y$8~jl}P1vFKey_siJbF3%<9B6m^aKK4I^G7ngaLSo`Qe_=Lk;Jx>uE;}mbJU; zVS4<>y_HyPM%F`WyAImg;L*kI{R!OxID64)+SAp8-L%WRpkMl1&6c&ogQmf_9h9Xo zeYI@(hPkRuq&|n2wEE`8R&)8VhDUzfYvoWM{d9Qn!TcfMtAd@sot}oZ%VM+HUGSrD zO1yfY-4BWvkBVQv^#$X*(L9ra_8RRMFIwx^40oteR@~pt=iO{`ZCxX z>zUjarD!v(SQ`%yGuzPH4NsYbZ8W&oJ)Vvw8PK8R>r1N;Vt7hFa z%|4xeQQT~Dscb~Uenjv5h$mwGLnp$vlGdP=Gg~v@r!fLTsNfi=(c+?7Pr_*(jc%Cn zcQgjEdbv*+Bx<$b6{EBp?;3AiKQf`4A6tGhbu>SqZN$MN=`+3mZdzTAHw^yT_Gs6s zQ{^(w%^Ob#?lE~$0OBuOQwXC*yrKzSfn-?+vV`KI=_M(&R^=n$_o~{1)hj}y8)++g zxcyy;n<<#G3^%nOAqAvJ3aj00iT3?r);MpNt+YK94`` zuim|w)lO>Jm~8n`f}w~^7pm2N7=#V%9GJK8%+nm_;oD} zZ_0ZuEz00B+U@chf9`erg{F!xtQZmu{|EOu>d&9(!P2|#92*$(oR~)uhP>ICC^Ck; zS(%0&XA6Qby3S?2=cZuw#9)Un&n7@4ve}Rhex56YF&@{37y(8E^u7%`@MhU)bJnZ{ z-y&n2e}kD7+r$+47OTR^$`bQ@A#~LiH!~qP`vJGAe2Kuk%~KY1D@L3l`aQVbgg3*X z#*v4eH*6l~+!bdYWU(5etQx7rYs;653BP3B!lIl2Pu1VG0%>5c%YWr3Vo0aJb2ZfN z_qj+_sP{IBTOsfPs4OL7*F2=&_%32sOJ2Xlz#xGgArVuInXhgda0jI#6tchJ4?>^h zmfA2ZgkJ?gss;s_;8A^36{AYWiywkv6(^qL;v&mnIt1;mRQP6jrF)gGS%Oid?`wzWP7{z;(6X`N8p_7S3RFzUZRD0(+|9EHD2fU#_C=g z__Wz@q{`@CT2_Cu)8o)uBiKAFu%t#QUw6q4yKc97c|5hOXX(cl+Vu-sC&ktBkXh&A ziKJHUA5C%|sjOCJP2WzTH-f*AeLB@^kmZ!?9LI0wlw&@t>Dj%xYLc{d3PC~_WkA0% zbe=*u3OW0x$4+zJG*MV)?}2M?Q^}fXF=cJ&1f__`Ec3+}$9{t2%aGJ>BmsedmU}3> zQKVfE!bK=~$ML9YMMlVbR|$VUXVaD?Ol;$=Tg9~;9sgmT`F6Sb{-5(Wx5X}FZxWpa z?R!aCT?q~tQwH6)Q_C)H9yDIt@UEDB&?sjMwQia`*{+e-)>`mG{dRRj?ebKnN-R~x)%hf{ybYrObws>c5SM|tPAYILFHS#m)JLd-B4-AxuWEk zWL;<=#$J|c&#bZKsdP{JX)6u$<7o+d?hfx>3NxdEi^pjIvZohkUrt$Z&FD6d1 zbF^~FxqFu@H}FcnGNah1%j9ToqM7$TI6rgQL9@fLou0k&2yg_0(V z+ATR!8kS6Y*KTj?^zAn@=@`m?Svy7Tk3=VLC4a)5bTnC9|Dvt8j#70ZUwnX9nf9X? zkJTz@`L1M5Bl^wL)u=E}P!?TnF*84@z21BbzuMGmj9YOlGwE|?8s5F;1a(!FFn3Lh$eUR&XYkS$@>l4X~dn039uJ8Qh)}s~g z$)i>K9weS~{26f|ZJCMp@Qs0}K7@cvWr37MT=0FHTgPeqHyo1OnZ?&RNSysTQFVQ?0_DDM2+>?@4q}a4 zTK33L6*`DHJ5r$}l!6qudIdWf2591~C4=-FDUqJE^$vazd{+rD50JvGiZVksV`P)7 zQtY7le77+FctXi-6vIpz{VKH~7#Jn!9Ji-4R-U>OHwq_qS}QT^Yabtgor!Xm$tW2A zyXD+Xy)y=_ykn-axF5~%c~sZly}d5#v~&zixIy*TjkG#;pOxf+heEmU_sVp|!1FU@ z$M2VO_fK@Imf4?AbvAQvdrh|!9ZlcjPn-L^#9*${HoItzg;q9xv{F6EDS6RVn`F$j z$)LK4F&Sk;i4IxW7>>26u_li59UZwVPIyhA6;NG>i7?U2dv|2gq&1(=6|Z_7xU-+c zU0?kuK8bBG{U)AVRE!{eG3LRNPF7pCB?2N~{`}$)9JD`A36XxWXRqmsei|cFJ2Z)D zxSrv;n@%jiOQxx05wLtvW_FlSBwv}h$c6di072;DrD$%7^1GqldDl-PuZgu%?~-N@ zs$unqER&*znrD#hPmfM%Xg)7PL$7}0PutQUSrbtzO+7d`*WOlL5P*?p@S;xg6fRnF zN`GMJ>W@!OH0tqj(1X`M5Qd2g7Tmjy?cm|ME$J&gHLP5Ig8{xw2tOhf*T=#cuJ?4l z>giC#U=em(#1CyFzSF+T!p)-zpMel~_<+E!y9l$KUg^^5-o;rBHv`_0u*t7SPTRfT z9486iL*;yNy-n|So;jle-g5+g1^Ln#+}#h7!ZY&)m}Wq3t7SGC8WiKLY5nr2xSSSb zLz0iJ7E=}-&DD-u>k3+{=gm>^;;q28`1`jQTzvS$Rdx4s3c_|fz2U^3H9bVH70dTN zf@6Fz)UAWHRq@`cUwW5O$tsC^mqEhABTP=@`5zLJ74>Q)5`=kPT7 ziMAF#y-kcz%SFo-T#o%5VK5bKBa7SXYCN!Dm(pflpMyLUV-E|kFDDlqzAsaItmSuK z!X0Tc%(XN8)MT@@+1`{BRKadUX$KuIAzjDTt+9gb>pWqtjsiS#Pe)xnN%bhYud~(> z18O~ePRbwlR}s;UF8g|VEuYgmrw6;O$N8p|KLLjH__Odv=Z+=*CEPl;{fK#flD>;B zW@CT{C~Q-tKnwfp;i4BxATe3BvxDf)rWzN3TO|4RrXh2*^IRw9;HD#w!B2?g9GUm^ z^wFMQ#xm;NCGG4P7yX^S9)j@dRttZmCfVBjk@~A>xq~aBUz|nn#+=>-g zVdOI%ZHSh$5hU{1m!pwX(A^d{4gyS@9l$WgKu8Gj->jZ{a z8zNXw*Se;L%7Ek%ewS~n;6W=FU3)OYl@ zX4w?8AdCN6WNk~t+wJ!rlz(e+eY|mNcav<&^k56#UiWKBz6JSFXU34&Je|c27oFZ5 zy?k<6UP++T+STqDJJR8<38^CIqrTO21odY zi$Y)wT2R47&2p)p%=;yZI-6t zE&4R$WyPzAcU=1^Cri=4xmu{WTcm&nP5Cx;vI6BB>6W-#B(84OZ(<3Txwu-aj$_FV z&|MSNVVZ3k730;7^lMt&wKwu?-lW<9DDG5_ny4+u@^$XOUMz&ub+A%*vQ7XC9`Ubj zV)@K6F(`F5j_u#8+e8vMeCcRBH;Oz;M9=mLGOSF_bQcRlu&ETcsq|^~B+>y;bhWsF z-g7GOx8c~~xzGD#Gbv#M=g>35In&e(q1ylpOKEfQb8XQeG1-};`ZB}lb9@h{AlF;c z{53unz0%Rl{EH1%TCk*9mSk%r``IgaeTY}m%w@f^+RYmS zKdcl<9E>^bwRsmV{{F|m@D(etfcsYoD8 zAGih=2)l=DtFJK8GwW35#3^AhliI$#|zsQ7eD_5kr)^NlzKLs3bF84H4;kP0Iajc5nOX$pM#b*PZ3-TvTqdx1!VtQpo&{)`#K1!?)l4Cu%Q5`$MDYa3ES8u zqr+yg-^lfv1#YE?zAeDLgZ}eCU%{Y|R&t?jr!h9DRW8z$v4{|va~)Ras2Falt)P$` z4PkBrq0UqLQhI4WJfQJ1oB{S&j*|(50)n0FK~$9O=g1I>53j6nKRt+YCKmz%GtcFW zw8x<4-!u*ZB520nZxaL~-bCz$A_Vy?2&T=DJ}qgk5)I?!Cq%{QyHtoA3f({-FCvxW z)~W&42O(6SaE-|y0z?SH%>sOhneQ=J_N{)*0tqU0rq$9672|1{EdYv(DUj0wNsT#> z(O)yA7Ya%3Wh4jmp^7vU1_=lw&6ltwi))r`?a0(Ol_H`g}tf@Y?p?;OrTk4l8dPSE0Ni}l}pBm}|q$sFl4 zHNZvQ8sP~2qNMb?5PiQWVlcM^Vn!hP4o1Ur>HgH1D@6qM$;HIbKQ+S<(dKCR=rFJU zxx-{|i5`bo0(;fJ58CrS15V$d?)nvMv!85hv%#OE>0?de^-Bg;>$+ zwIvDMu2(N61Y!(39tLhKJwEjFm}dO%2mUd7VqdzKTIr~)%LA#q# z`<(|5axYF_N#+28wDE*GHGcIb5mv(TQR1PX!%IE<>Urm$efNG`HgpI*6)h?C5FN|l zc+Ham%hj@aOWwr%>Y1~{YhrS9LfZAU(&JS=!?i+Y)Gzr9O!ZcWcEED>Lk;!ey~!76 z*ViG}S6}XIS&380mPG7?g`#Rh8RKzPCW_h}>ecw0XCvCav*6{ekY##4QY;-q4K?F5 z9n*+hn|T5#5!E9K$t^9XB8ckj{|Zxxd8 z)ms?V-dM860--b)%GPoU>0NQ0skAzyIRin}hO%R4$&FCe_}bpY+TAY+rk=58dZ}h! zxr{+ws8m=-l4kv9Hhuq&(zc90v_q1XK;ycafAu_hChYn;%=GoE_Iu$eVux3J$J@0b zFVvR@2-dRooC3D*qz(%B_oWyKPX)4rS?eyZacDdD0K9>-%p_%5d zv3;ISQm(H6*HY3uQ`4`W*M2=$R=ZjCHR*ZF8-;hi#m#jZY4ZsK>$twIj+??f%J}!T z82aB(vs08x>x^b7eTPT&XFA|gIv+&^PHOmn=sATy_@v$YPdzr?n3BXzaA#*E8prpy zM%Vdbo5}aPJNutFpZe?IC}ma6T@u_`#u4csaMK_Rw9KQ z5qSRITk@pzN$_t!P|Y9~lSI!zTSxtjF1{oNtQtw@g$tyFtMAS?6}RbK{F^(Y;GJse z>^ybhlU7l;nRFAwTkF#JLT?T*hG~QLj>Bsshf1PU!}ly86p9>vY243cwkL8bEdg3d zov`+p`%EK7uUb2U7`o9C&|ewq(Tfl#2vSyCUz~sxGGlD-qF98O9R^54jPHR!Q-e$) zP%uc-?7B2W)Cth?)E}5aj1eaZ((WAs(G7gQlnp@7PH3lmW$`yPKDt>37IXUAH_JVT zI5~loOpvw+3Tud!hbgCiVtg1Pi8y%*48a693roQu!Lmm!dnuPh9&8E_k@pAVZxN^bf-D~* z0IdFZ5s?Ez^^%?1e+gjBfu4n>?!Yr%%V#=8oIDSt{GjDb=Z)*5L{5U!NenkTfnx{A zF~0Qh7ZIibgNuY3ccqv*Q@Q~7e8h)fAxzT?TrLoaDDE15AbkOuAWRG0Majd&{7a1e z|5J>qD$8%P#&XKkRBZtTGUneJ8r-L9cy*jt=w%w&J=xS2nV_AM8k(3tIG=qCm?#_J zzg0;kQ`2p%xz=y~oa3zZP^As*)Kjpp4XS0w4X!Y;#oF{o^;j*FS3=RbSrZhz+lM{#R zcU#2}MfcuaOMDV^l4hhF-$N=UoJ+4JOA-Mm-~f?h>*F9h6h=_(CS>i%=mHtH@=vXY zl=Q-=s&bosfkpD0Ur{U9>vj?4w5J{f+yvaPfw3s6iRO1MO~yr#6VUlh18zj@`Vd!F z2W~_!ayzi_#WQbIlJ&+FwZpJ1b2{t`P)Xl@IU$huKbk^?@V)iT98pf#+SqNTm$Wm(hE5+s3St@VAsV>={5bu);cVR(Qu|nzj&)#8Y|2a0n7z9f>)U`5A1c&9y%= z>%Df?v@b*=FUAN}xOzgV41e+2joj|{E>N7pIEo|2+e9k7(V-L+GorCropV?{j-b8Y zSe$tQP9T4O=!}A|2u*7)YC_!^a^y;kK!LAVKDgQ|hEu%}R^mcK%4wlLd~VQnTLtT? zCpYb40|P9g1qZ=GoLc|w4Xn|WNeC;Vh1iXBxC5?Wo%(p31<81j+6QW_2n}sDYD3+b z{s(G>uiD?JgII|Lr+-jugJOH<(s=GN(JVADAVOGi5Y5Fac1l#X6Sv^FbA+gST%eWqvhE(E95C5{YtgDju9;| zsC-#bmD*^RSor?URo-Mcx1t`j7D69RJQClo%0LX9P~AQfL>M3jNrP%BB=KvlpNjLh z3M6c%4@C_?<@ov5O=|fHBQT1cjx&Ty3|-x|MGvaQgK20%!1{2I0UF2_98?3G38=dS zOZ*jtr84B#qs^F&KMhA&CC&sYc7#mbrm%8}v{h!ts=`_I1t9>zBhhs44HhQRER-Y| z^vjarxdyO;By^=0$E?FyClNpgu;8H@NtSFE*qkUV(!T;s6I4)D&N#zRXjD$p%BP?i zz>*0_3S-qjAg|0x{Dy8Z5Cp3aH-JUkb2?m-PPv}yl;$zq{c zymfv1qN3_6QB6Sk#$x>~{UjrA2X4;WQu)a9io?a91CpUsH>!iNG+A+fa&!Rgpb}N( zCg}WiDWH?L>(CYbZLXm_|=W(m9!k#b2L6vs- zalG)q_S0bJyffl0*0Y*t-asj9_^Z-#MA^jDKch4-cwj=);(R1~4N54Sj7m)8f^dKg zEJl#jL*Xu_CyziNp%E&qq&w@gm_7ubA&IpWu!P789 zw=yyLSXd=S4@_y?YFC^HNqc;*#qb=ZZ?LEi3W;4xuwx14^0nl`sL(Vp3c~8)IbqM` z;yzTySArs_sD~IOd9g~25hi=7(_eZmbHYBZUsNi~f}@JUVeS+;VXNa}CHmV_NAYnJ zlGgV`6oROU6Qgp%r2fcC@}pTO$|N-uVyH&6epIK^MsQ^*y$G1fN+||8VIm5HZWuxJ zoWH>8eW?If0;e*y%*ZdYsFZcJ{#3^F`IH>!ADLSBxiY<<0=Smagm_|sA|r*OqS)X+ zQ465|iAn$;M2f#qLzV)k^tT0CH2@1@KcRhCFxeg!|3q-N624vHj+Ef8DnFR9&>ltw zVYI2NR7?J=Dz8m=)&-UH58plT59E#Zup0+hrCG5u4(!1Ekk=qc3%^x)cWMveVcR$f4fnlV^siUz+CWzxREP>a(tfXe^Dj^`6p$Llxbs2?ZGr% zHaX$QXcAdePF|DT$1tNgE@q)9eFIK9QT&WFH1dWQtMMAuw?Gfx883@|yhCXx1e1Dm|%r;d*E@SYqqz zIt5oPf#`@R>_Zk+Z@ZK}#ow5Kc8nOqG-(m0TW>3^GPaD zQ6DqCq@Li6O*kT&6D%Zyg$TfgVt?kLf@1&5e^&bwZUTzPR;@lj2x2(b4Z*-F^qLs(tzsGj?<%cVZtN8WLH?ZEgfG&>*F}TL&?S8KI_{ zX;Z?I|47#sjv0HDO_ zI!6;t$Su^n4~izn@vv}4kZ9X7+R_owKm7~3>&(In#e;aqR!Pl{g1Umg&o@BvbWawd zD_I;oQB$b{!~ikbR!Ac`)>i08a*VA|T5_E2034JAM+OAJj$>X}cr0?%=RrnpjDb`7 z52xq^ZCVTf^u>Gw<{hqt@)@F5vY6r#)ChJ~6h*_8`gX|nZjj;mwp1aFKjp7rLkH*I zqzbA(!6L(xWZW21eoW-9hL4r>V364FKsC@MeiF_3o~p$GGC6+Ghr~vZ_9=K8h$KTs zNtIc?FSKtZx_JE+9AMUz(J`FM1mO-4WsI#me3mU5pajJh=I3CoqbSNb!NhRVyAQ7l0L)%07LeHs66ra%SowB+(|Dog$b zSgLGbF^M`%JOw1W}}Tb$tU2WH-zdpo7!@jti7B8LfXr ziW7yyfl_KylsbPw!L~8ad2`G;$wTI8*a$E1Nx?lh2M%*ma3)|~f!avOvG#x+?re2W7y)=AI8aFeRl4mj$?>tY`sM9p6iH+;6peFc6~wwn~C6a zv4==YSCAZlxCJMA`OTF})-to}L%0Y|XTBxFIH1`Dqme0j@4`R-O3La(iG`G82wMTA z2y}*;9umO0Y2OIp1zHZ_O=0X_*h7fof7wwOz`TYWz(@4XVexzP2fhxbfZvFDCB!W+ z;n_vlHVNTtkg7WLpY1XDy#>z~T{aiOV1ne`lhJ50MfB$L=nuys`~rLpInNmO2#E5w zzH)8JW03sQuyrGZ4-km&uRuJZNmJL5hFV_%ZG*W7@Y}GwuktA-RKIc1FFef=hVc1h z6Taz!wWdJ`FzA~El8OO^KZ5Qeq|`f4s()~+0WJ>VBY4y05<&6?DxAUp`l;V`h)!$3 zz8&y?6_PiDfmi7;K9BFCARC9z$2&h-&lEliVg$#V_Gy)T8TuOe2>OV*i$EJ+4!8{> z5$5go!c!(e+?N5M@354``6nLRHp+(=Qo|Ix2stP}2yq5_8E|X?p8bauV&BJpsJ|TJ zf5|Psh9plLd`fUV3gmiM2K&n~41uZ+UAF9cK04g%+Y+isCloy9hn3y9mY;^Z>w? z6|X0=#qF&ar%Mk9CC zxWZPZ^$0M)z$h3$6h4{5?Jzvp%jfX>@q!ooDg*bI=+yKum}7{jcR$`KY}O3%@pi|! zIMHrX^vgF5$Up3kGU%#S1eL?8Vpi4B*j8)=<4#9@fAC1QO~Tw;F*8}c7rjo%1OvOY zpI$#;s{smbl>~)OUd{4Va!kXODPHxR2b@xD#csS9a6C=(=Z3+bWtcOJIVQiagnl2s z#%VSb_L*O&FLpa^?K->m2bOVg$vgzW6o0@J{{{0+rua!=9QWgWni+>?h+z4Y4x6p3 zI{^S_Oc@7!XMOscVEFdF+VLNuJ1j0MW_Z69hcj>gXRt3a#hhoeeP%)PmVxsVigM_G z(^(DOSiy~2`RVCak%=MW5S)1^e=a@D?8VSyc3CyQ4uQ7K;$lXy!?MO46DH#zo_mX3 zoSHMj`5^_)dwxP59RA-xnZ2gF(UK})9Fwp1X&XBO=@2iv0FmE{Tj6K`Xmk91W=$pp zsF{axry1-r%mPL-9Fw+b=}u{G63IOPVz9-n^xW5u=aG;`)F2s$UYwJ$XVZ}9Y7n1c zZPVJ%SekvoIVQhhiE&Imz!sFud#XY5b>d2qexh76;ni_;>5|wmm@3+0n=+ugI-1wE zQ;Zo=(n$rExsF>1Y)~(jq1d0)msepC#y~CgXIfci)1cM_(xG+O6@=)W`hr;7m=m{|=#+s*GcMxD` zIA#UQ#-3RgO(W?_316uvXacdNy0tS6iJ70uY$kPq3)8{afZH><5ILCk)$HZR!w#Q} z_Q7u<1QI$AC{K#Cw>?h+m_n~kDN6cZF9-H^H*^f|m7Z2FDk#FSr(^oUb^&!g7)o({ zfnOBGVeY%^D;1APh%O{4NQou|sZUZ>kcVU@WXK^J18h_TX?->Hvo&@nI-gQ9XVKk5 z&ERRa;MFna`gpy0*Yot}AP#dF?UpPr1C#h} zU)dhGWR&nZ_JI_zIn2$tlj6i2j1R%(9a$dqwI`~`u%(xHkkh0f|0XXZGV8jJw$)rk z5dwa&Z~sH-pn#zu@cWx*i||1K+=KvUtiKjFIOK;F2PAjI?AxV0rqT9H2!Lz+yBN_J zbfk!!fQV0bi6P7RFCJbP6I|Jojgv23_Qy+Nq(w;B_ z6~GE|DLjgY3>le2jpfVk0@_{ST200UAG!T9qru|W7lZcjbi0Gb>c_?a8OaZCUuj8i z1tiog!jL@;smGWu%GqBhKn%63i&0mIvqZde0mHmmMNwL=UX&r1upD5o&@#huP#~v4 zEQ51T>p9+mFy6lF1x7 zSYs(CW1Me`QVUMEL@dC`D9A}kS)~D>w4fIF7bPJf97I(aAxBKi1EGTN(148_1^KIj z%r3D!LNb-QjbjVPZns2@c?HIg#PV}Ju+l2 zdW}PF9Yzw|m^jXa33HQupF0T!xfLZjU#0VJtk!+o&^Dns=?s|A02LzNadYufMS~Tg z#C9%6*lYfxSZ;^a^e@ccmp!esT-05Ia1Oe}^He>7F1n0QN}!yPy8&5sI>5SC6l^i`E71N7+ujAnqh{YYqi8q_O9p}MHChn&8=@PL_+^Ae znAFkpLiwjCK98F1VA}8BkvU+GP>z(w$;T+-?k_~=*$#B(uJFs`tMkCFg23PYA>g)M zzn?$^&GR<_vI7WCRLoI3mP`*2VOc4X;y{y;*!lE1L4sm}VhIre8K;2zJzIr1@!-Z> zH31n>J*_w)pC_@&xcN4vc6ED+SQGU923x`rGyK~uzl^X}Oam7NgD8^Qag#r!%5D*S zGW;^AFu^$&1!OXnO!qhCED4HtXu|Z9|1xA1_JdC%0O5}zMMhEQAY7%jZg?=#Os-^Dx7`)FyV#O%nW>A*rWd?IC34 zMFtM981G6jibYvX?jZtT2tNc0OPI9PWD1Mq>mo+L0iI}x%_-(Sh*qLbC}6>geSZByUpf$hh9*Q)gu226v1ps6QMQ;ZW)-eCF) z1CHkKbGYz?NnAbd@Qmpr|2Wldbp&`cGcj_FaUxN`GBNjlEI2^DZ>xGFxh z6HjOXeK(G^x=VccMI^dIp`Yxk`yc8s{XWzQBK}`>maqVI98jG;ucxU01~c4$c8GN> z{tL(&4HNQqHA1@eU!<65Zf?BeGhg2StIlaYpNLL3C=k#Qpfcb`8P7jOX&j6k9nGvw z{;acVRN1iq!GY4XRjk{xV+`G7C$&d;LQ=CSO=byrNB~gXcOa`f_BhyF*)8I=u+b#r zl#6rJo2RMnE{B0(S^5k(=N!01eO?%PzgZw5N@^;$+u7w}%NIQshNO@%21;FCE+5SA zZEqKQysWyk=BdE$h-3!`o-K_kh4G=3%{`&5F)(0$7NwlEkEQINW$qj*hYI(@)HLKo zF7%MW1(?p)N1keyh%U4uIB6SM?5#4zsg^A?zW&;yz2mggj4!0IfbU~NBFDlwBnVtp zFzR4`)9EB^xtDSNiCViiady$a9bx}VLA4s~sNe`TA&C^jAAKNIHYSYM_QgMcc?BJ# zox0X8@KA3i<9Py(n>-fHJtvUt*){{5e!e|2CJhDlP;kQ7H8SFvj1>QT9#`N993x$x zJA(r#JoaoI`4bd2cm$_Ayd(rz=EZy@8BXc}X{0o`g#z<$p|Ev{gN>=YoWOC~*@A`~ z2Vsf3rkFnS(GG3W_atXun#GlYrM?(k9`hCX6~4K-B`gh5xWtW8wwTvze)zg3QL)V^ zXfCt>gIb%C?l{yI5OeA2?&w@u6auGjQ3e(bg{vBQ--AUjEqf8_PoqcPp?x z^oCd3AOu?b(_-Pp{(i6_XQ@xweyr$8jAbfH7NtLh0^^^`d&!2E!>Q|--mZit&XoPP z*|H{!aBFdX5cjgk^zDPmdOyw&9*7Mas_Uo-^Lg{ z>+|2U`-CBbF>b5%1+n2K468A~$-$U9kG*qCMld^J*Sy91UYSUi|Gm_xQp2%2)cj;m zxsT(LrnCkj!K1Y_d|eZI-BwhNwrrYv;|{Rum$y-@+ZYyKtbaoUec;jJG6Zs91zT{` z^AQ1ai_h87gv+HO5LLd+$g>vuNKk}b6Pt@UTnDwQd{VSFl#9l^rerV;L7`1wzMcE7 zZe%>_u1K5h!l*WRu=9LwoX$gi*C;gJ%I<}=>f9tl(A)8*(NO9#_qlx78_{WeUHX@_ zRiV!41_axM@g_3(xbqevBq}dCXuj#-=qGJ+#L0|XnRHf<-;q`Q z8FlVwxkO2iuUA7YsiEEnyPJS{3h!G``sbsAJlb%1|8S`tNyEYiKx&CLq~_=roF7~) zf;T9D3@-i%(=2ewvD%|Bt8Iq`w&C;KZMwYmUnQuHH4YSk041oJ0KXpQZntcAntj>nfen&=l zLRh-#jWtQPEuQibBSgTXl1DKka&T~0)Np38k@Qc=tpoTnH)Qhch)T50P^(_5DDdVYubU}2q9pp5 z$LfKxm)tG|M3HDG$7Z9O*7InOA&=xifFx5L{&^nJ1sD zb3y8F&Kw5=K#AkuFhD@a|8mS2P|;gSPv7!So#Tz9Uh5wWI72_bhfySFNLa=<5MEC@2O>$oW3~r2l^R zimTD=LQ_X3L`Bu|vj@wTrVo^{z;mA)|G9HK$bd5P2~pJV^HwU-!Fm(D#=J2_i%L>! zW;xj>Pmce&vjji(^*qA!|w_dNjiP2~3*C@`u9=2Nu}J7Z{9KV!1*k z7RJm^VG7g^++Zgm!cBvIhv`V@$OuHcYeOT}I%+CYQ)z6R#zk*lLl8s~g-Q{O=wbZ% zvbOtcIr|3fXREy!lEQcHY*eO%#w=--BpIgihz4c;*AnTv;>qPS$6-+sX(hlb6}?kb zGtE2B;1?66HmZIL#kJpj136FpHLZt=U=_2O@+z7Q%{xEC-oAFkJZbxKxdQXt3L5V# zUx5^F-~Tv=a&qs4tF9{5V&`e;KPw7Tb%$ooHgI!d#7+@bvD3I2<)C%Ty|o1?85z}7 z>2Nye(K5=g&Kf*9*;$+KM>xB_Egq)Vd6!3LdzgyoItLJ3U z2gg4Hv}_a!{SJosrJ1pvBah5XS>UWNGGuNfliak1#x&Dfd?6x!gGQEQOgjZxO_Vm5D@CW4oOE-BP%2NKU>B>70xuI zZPwT@x_+r5w(T!GuQ`Ra37@ZAEET~aHw#8L2x(eU$P=89birNN_4w#*)bzugH}%(4 z@_#y?drh;(ZGu16!Ju3XqmZ{h9F+b+3OP*l#N*kmqj0r&7K{h{JH$@v^+Dr6!3~aJ zs|fyK_@dFn|7~yyYa8Slo@7DvqLFgfV!8TT3rsZ>x*L>O%XD>5(*X>U7G+`!Z7^ZC z5a|ARE0Pf&%1vyfB)mUl+!Ar2dFwij8{%)YtK8rpOB=ILYf!K#g-#bBKn`zsvG`rv z<}^5s&})tTnek%OX$Yzu9*Iwij}yfmk{Bz&1y-Z4xb6)6!F?cL_Jrg=R5)MiB^X7; ziDOZOX!4|H?)&*N=>!lZ)D}-xTrqBypYQL-)6LAv(pbQ+w5yjdl;_&XcV?Ojg{hxV z?!C(A#KmJk23f%49LFQ=H^kx-i;`sPH%}a~&dAaZ@DPF_Lt{_#l7KbyjLx-Zs=D#HxR@%)Eabn69YMAC^?MENjLvC&|14vq-9 zL@%HbtnZe3>GCq7AUr)epmw!{kggOH$LTBaQCVnXbb=D~$4lR5atmzxr5maR4copd zv_KQ3pWg-@mX*05c2%`)*-rYUxLi}$sMYa^&Z zPp_`{_u5zfwsI#*hpXV(1-6}mEfFT)X^$UnvfMw-OiGGrDwR?|OvqW&vhmSM8#)p*$=1B^QG=K|B(=(7K+1+0S_WFNUqk>P6t~c zg-YGnpJGurkWY}KwV6%(ol2+VuI>00B`FCWo%QaQC>K78=0fPw;@DweZr<&8#oeTY zj#jFLg(dPrk&7F%Qu$B}S+Qt|y%hKT#|xbkq{xCksm$m7RM{jkO6htmGxB<5&CkJyf5lq=c5=uo2CcNzNV0gysQNqy z5fLsuvJt|emDogg4Odjgb~;8{-l%N0sIj1t_)9tbcocERl;vv^gNU0xRihJ&0ad#r z5#pLtCMW~R=O)lXr&D<@u9R_5b*Hx;L*LSACT04oLy#n|pEe~9J72{>(5GNzsJl0X z99JVk4rD!gb8cpB$3)8OzFpw{pewG+Si8KlVlT%X5oIMefYQ{K!2m1cXrLVnkTh!l zq-FUlwPQX-DM1COE`<^l=K<4u~sZE?XLPZ@b0_8FsBnx=XY^c zBOFIfa3ks{`&5vjYu3-Ac?vXxEj9_TifWMWB1P?+f z^P(tJw7a@}gbBRaz?J~9Po|(CQ9+*G!+h!af#H!@-O3E3g%#%#X7CO_CbMd?L6o{< z>Om=$G5i(@y)HRKDshw{1qm!(rm#MJP?JupY;waaNOqFy;XJ9qRe&cIeDamq`QX({ z_NaE@UaoEp_xnyN4YYkU$7}VsN63HXVp%?1%f)~XJP1Jc`Wf)oz{$bU#!Ah~lHSbG z$m-9>US&irOdkUZ&@V6H(YVnft`L-Y1w?YBT$n2H=N}Mp9dQNv@0%gr+paFQ!-rPV zZy@+ATr$nV;tsYj9v31q_`hxs`EL;e&jJM?GpZ0x6-`9domyPM31vaisYXXp_Ouw$ z7Qj>jKul~);f^aqpkGI9F&g|nmks)bTdF2`kTtSkiP9gMk#?_otKeeDAwAPoL2&3@ zRMKW`kOo$_z@!`62Q04smoDD1gT+pO9&&&#ynpEWt2*qz)%__A8#!GI$j=cWwmW4B z8%)cLOek{I9*{v+zuFR($4obc6n<`#6x-~|Qv}6i+QfbT1RF>#- zY?qKmnz50MQ$9vg8*yY ziWw^MSuzqRrE>1vpp1@gRu)gfUAYJC8?x_TJ)r z^OSi3e|)*}kK2R~MR8!e^w%uj5~MkloLJg>`;~l5cK%BNdKDRYYNo}T-|T(oEqeMl z(%Kw2GF5dkg&Nln^6Ql!VyO|9+>z`deRoN_YF7!>`&JXBld9A>#2(XwbI!QihN_|4 zj1r22%z>7Wisd=^FHCGOdpC1V8FCv2Ds~;!A><*Y+hLzz3foXE0uig%_C@T-eQzy>sZ@-4;3WZ39O%O8U*-+{;QBR|Vl=yK< zvU6~rE+t5Vvy+Nn1j(|s%ld3h-KF|?u;M_|Q+lWRQ;bqqn}AJ$N12Af*oi~iEYnbP zet&$JEZ{_S*^pV|1K%POWm}KB2<=qSD*OBbuevjPvNY#B$YZ0M2agyjDr+$Wu7#)^ ztI$!LEq12eNZuk==u`XBR@lkzB0FAtU`RhH#mN&@4A!~W95eb(bTNj-tM_>zuXZe zDil$SCQ`GQ=QO>qu#QDfGD}bl_wT4mMDYlbdRH<;oUi)yNtA5coL)iV^UoKO$u+0_ zy1v%)xKy_fOjXaEwJ{)8&*=Aa)md9uzoduZjw?akGKG;n)q*v3w*}O0vh&qCjvHA% zyGKnD*w-e%JU<=0!h%2BeH#_28J~Yqoml)sWH#U)?3~J|!L=V(*;Vtii-j*l0nu)l zhcDvGr{T$#bmQFafF7d9v~jzGh<5)QBunOs)9Zz!v65VOu|ofc{;9$dQ7(H(50>qZ54M;sbClHWQmG-~Fs- zy-Vf>bdlBys_~gCZrCrb<&-D)9ME=TF_F&NBdQZ*=)%;ig>A!KwNoumj&4;@Zm8P% zv6j!v#V$t-im^MU+M*TKEz8QGv0$5LtlY*A=;|#HNT?J9A_~k{z{1^Y(-e?-0prun z{+jDSjJp$h@}i5opt+DvB~C-``Wu1$ib7oVl`6G)iuwoG4`1tfm~c2xk>U}4I^IYy z4Po#5F6mq*=?COn#E}42vCswY3=fkI0`mNEy^~x5FrghU_hM$%j|kav%zo<2<1q;( z*|tvfbuZUs%=dYalKx*w)+hoIINu9j@YE2L@aZ(v%hRyd<0-HCw-KJe3g2b3M$l8MmbDy&MGLnbPjtErzm;F%U( zH|gacTec_rVzMK}cn||`YTPeOAdLE^J1a?`8X5fDr^je70;BIA61Yv#fKGeo=U~}T z@S;B1BrS)khRMIprL!Xgf-jYtFdgZ-$9H0)V~w}iMfg+WEX~_!z2k+K2}cCWUn%vv zpcX#ZSvw^nlP6ud72RK|G5g|#anLWM>^YtVUiIDZBl^X}1=!LK+dKu4>;uVZ1=nXa zi*#Hb?2Hh!sA$^N_>@EuJk~0&jwYLNCm`Q1exf~@h#ac@#>J5+j5&)E*!SQB^&k_| z)LHJBbVtcF(=Z9QEVGbOqbOmruy^=GY1B6K^|M~>GCgPBYtjhlLYwW_WfKTn4)N{9R(+0uSaN>lb)HrA)#K=ac4-L#OQA+#oo?!8 z5)1jrrWTsw??O+B9EuO98j0mqNfwILS0*jdbyQ-6?w7>2h@~)2S!R=cZc4SvN7`K| zu;NSl)=kQIft?)Wea@_nA0emhsyK+=lV$A5rB@Gsk@zm2(ciVO(r9o;@~sbR;A`M@ z6Q8FmbLhpO8m{c>e_n?YbnCKT6pBVEm*L|~rD;Jj{Bm-)=sPQBlj_3SbUMT0ye*1G zx02h=`8msmmLw+2=LA~TV{|Yp-Jcw2t~AWbY}!Ho9vL^mvRh1i@9W7y9WKGLbjGj_ zeF1oTPs>yniciOc_)DM?r;qXfcsi>lnCTxa6C!zIP>f2UrkI*NI2bqbdo71N%f z#dR5ysr=0|V$3AdmtMjgA+ky%>8c1x_lK(ix8VnTqpnjctf}wewb{RHTrol!#uA;(Cz_C(#@q^s!aUW?J1}OZ?v4}oo$z-8^lsa zC3i%Z&lO0m*gIXiJA({titSVrn%Kds(BPpk;Fo20t%YNh3q_A0HY>i}YD<3`W1C1S zyV@|Ez>_rDC!G<|YScmz?2X8~dX*@VsC{iNA*1qPYZdOp1fd@Hm|7b5Rt4wpV>CG^ zvxx1Jth1V)rzFr%nRzvje~6F_qIZ-qByj;>9zMzn8txv+3eNFr{*Y`F%w>ceqeGj2O$%h|E>AQ!*nX4H!an})*FScnHGtXoeHk6B89XpZd2anvO1fYl4om^+(QdnNVr0rD(%pvk=nE7f+vtD3LMi!tj_jtN1wk?kE1Z@3A~ftzOdO zFOKD>3ZfT`kj92)@|7j^JuEXPjxd>VBz#Q5O;Z{jy5v4|2JZcY{~-ao)A?S=AAeY? zkqh;@CWdV6LL95*ac)RQs>Y?F^AAXgK!n-^)ZA9nj`a->oP$8DjseABCpT}~3;ym- zUe>G885rP?Fw|QFE~No=WZ1eI*yGt=0*Ie6{#s}c7Dk4{%&q~KbO6Ftb8daZvyA{} z{(JX0-0)nhM1$pDdwWG0fZUZ60ufl(0((4LFmUESxxKslpYED4ZQ*$ya0L}C!HuT? z9kJ#d00^J!z_b5J?uHlNt^zdP3^XONsc|vjUe@G4pZs^oAA5mVDDqdd5(Hvnz6HX+ zi4+EO%1^`6+uzk`&8`IZ0r-QG>v}w!_R&pZ(B~z=9I#Ki!6DyV=lo`(faPH0Wka5U z{Urz4Fkk}Mh}a;s;(ie}*%DwqxN5wiw-5TI2iK6n2yp(rfv^nwV>S*3fD_#ffJ*r9 zfIp?ZU=}!c++ZDu_?@*mlLS-1sn!NXKk`?vY)ZVqdT>0rq3?_SZHR4-4owWV03&F1 PRBeOU1H+?@w0iU}C65dQ literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/MPHTermDictionary.java b/src/java/com/twitter/search/core/earlybird/index/inverted/MPHTermDictionary.java deleted file mode 100644 index dd76ee10e..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/MPHTermDictionary.java +++ /dev/null @@ -1,190 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.io.IOException; - -import org.apache.lucene.index.BaseTermsEnum; -import org.apache.lucene.index.ImpactsEnum; -import org.apache.lucene.index.PostingsEnum; -import org.apache.lucene.index.SlowImpactsEnum; -import org.apache.lucene.index.TermsEnum; -import org.apache.lucene.util.BytesRef; -import org.apache.lucene.util.packed.PackedInts; - -import com.twitter.search.common.util.hash.BDZAlgorithm; -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; - -public class MPHTermDictionary implements TermDictionary, Flushable { - private final BDZAlgorithm termsHashFunction; - private final PackedInts.Reader termPointers; - private final ByteBlockPool termPool; - private final TermPointerEncoding termPointerEncoding; - private final int numTerms; - - MPHTermDictionary(int numTerms, BDZAlgorithm termsHashFunction, - PackedInts.Reader termPointers, ByteBlockPool termPool, - TermPointerEncoding termPointerEncoding) { - this.numTerms = numTerms; - this.termsHashFunction = termsHashFunction; - this.termPointers = termPointers; - this.termPool = termPool; - this.termPointerEncoding = termPointerEncoding; - } - - @Override - public int getNumTerms() { - return numTerms; - } - - @Override - public int lookupTerm(BytesRef term) { - int termID = termsHashFunction.lookup(term); - if (termID >= getNumTerms() || termID < 0) { - return EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND; - } - - if (ByteTermUtils.postingEquals(termPool, termPointerEncoding - .getTextStart((int) termPointers.get(termID)), term)) { - return termID; - } else { - return EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND; - } - } - - @Override - public boolean getTerm(int termID, BytesRef text, BytesRef termPayload) { - int termPointer = (int) termPointers.get(termID); - boolean hasTermPayload = termPointerEncoding.hasPayload(termPointer); - int textStart = termPointerEncoding.getTextStart(termPointer); - // setBytesRef sets the passed in BytesRef "text" to the term in the termPool. - // As a side effect it returns the offset of the next entry in the pool after the term, - // which may optionally be used if this term has a payload. - int termPayloadStart = ByteTermUtils.setBytesRef(termPool, text, textStart); - if (termPayload != null && hasTermPayload) { - ByteTermUtils.setBytesRef(termPool, termPayload, termPayloadStart); - } - - return hasTermPayload; - } - - @Override - public TermsEnum createTermsEnum(OptimizedMemoryIndex index) { - return new MPHTermsEnum(index); - } - - public static class MPHTermsEnum extends BaseTermsEnum { - private int termID; - private final BytesRef bytesRef = new BytesRef(); - private final OptimizedMemoryIndex index; - - MPHTermsEnum(OptimizedMemoryIndex index) { - this.index = index; - } - - @Override - public int docFreq() { - return index.getDF(termID); - } - - @Override - public PostingsEnum postings(PostingsEnum reuse, int flags) throws IOException { - int postingsPointer = index.getPostingListPointer(termID); - int numPostings = index.getNumPostings(termID); - return index.getPostingLists().postings(postingsPointer, numPostings, flags); - } - - @Override - public ImpactsEnum impacts(int flags) throws IOException { - return new SlowImpactsEnum(postings(null, flags)); - } - - @Override - public SeekStatus seekCeil(BytesRef text) throws IOException { - termID = index.lookupTerm(text); - - if (termID == -1) { - return SeekStatus.END; - } else { - return SeekStatus.FOUND; - } - } - - @Override - public BytesRef next() { - return null; - } - - @Override - public long ord() { - return termID; - } - - @Override - public void seekExact(long ord) { - if (ord < index.getNumTerms()) { - termID = (int) ord; - index.getTerm(termID, bytesRef, null); - } - } - - @Override - public BytesRef term() { - return bytesRef; - } - - @Override - public long totalTermFreq() { - return docFreq(); - } - } - - @SuppressWarnings("unchecked") - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - public static class FlushHandler extends Flushable.Handler { - static final String NUM_TERMS_PROP_NAME = "numTerms"; - private final TermPointerEncoding termPointerEncoding; - - public FlushHandler(TermPointerEncoding termPointerEncoding) { - super(); - this.termPointerEncoding = termPointerEncoding; - } - - public FlushHandler(MPHTermDictionary objectToFlush) { - super(objectToFlush); - this.termPointerEncoding = objectToFlush.termPointerEncoding; - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) - throws IOException { - MPHTermDictionary objectToFlush = getObjectToFlush(); - flushInfo.addIntProperty(NUM_TERMS_PROP_NAME, objectToFlush.getNumTerms()); - - out.writePackedInts(objectToFlush.termPointers); - objectToFlush.termPool.getFlushHandler().flush(flushInfo.newSubProperties("termPool"), out); - objectToFlush.termsHashFunction.getFlushHandler() - .flush(flushInfo.newSubProperties("termsHashFunction"), out); - } - - @Override - protected MPHTermDictionary doLoad(FlushInfo flushInfo, - DataDeserializer in) throws IOException { - int numTerms = flushInfo.getIntProperty(NUM_TERMS_PROP_NAME); - PackedInts.Reader termPointers = in.readPackedInts(); - ByteBlockPool termPool = (new ByteBlockPool.FlushHandler()).load( - flushInfo.getSubProperties("termPool"), in); - BDZAlgorithm termsHashFunction = (new BDZAlgorithm.FlushHandler()).load( - flushInfo.getSubProperties("termsHashFunction"), in); - - return new MPHTermDictionary(numTerms, termsHashFunction, termPointers, - termPool, termPointerEncoding); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/MultiPostingLists.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/MultiPostingLists.docx new file mode 100644 index 0000000000000000000000000000000000000000..9eb270682f1553c4abdb5dc48f35762c68bccd8d GIT binary patch literal 38006 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/MultiPostingLists.java b/src/java/com/twitter/search/core/earlybird/index/inverted/MultiPostingLists.java deleted file mode 100644 index 12ff47365..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/MultiPostingLists.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.io.IOException; - -import com.google.common.annotations.VisibleForTesting; - -import org.apache.lucene.index.PostingsEnum; - -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; - -public class MultiPostingLists extends OptimizedPostingLists { - - @VisibleForTesting - public static final int DEFAULT_DF_THRESHOLD = 1000; - - private final OptimizedPostingLists lowDF; - private final OptimizedPostingLists highDF; - - private final int dfThreshold; - - /** - * Given the number of postings in each term (in this field), sum up the number of postings in - * the low df fields. - * @param numPostingsPerTerm number of postings in each term in this field. - * @param dfThreshold the low/high df threshold. - */ - private static int numPostingsInLowDfTerms(int[] numPostingsPerTerm, int dfThreshold) { - int sumOfAllPostings = 0; - for (int numPostingsInATerm : numPostingsPerTerm) { - if (numPostingsInATerm < dfThreshold) { - sumOfAllPostings += numPostingsInATerm; - } - } - return sumOfAllPostings; - } - - /** - * Creates a new posting list delegating to either lowDF or highDF posting list. - * @param omitPositions whether positions should be omitted or not. - * @param numPostingsPerTerm number of postings in each term in this field. - * @param maxPosition the largest position used in all the postings for this field. - */ - public MultiPostingLists( - boolean omitPositions, - int[] numPostingsPerTerm, - int maxPosition) { - this( - new LowDFPackedIntsPostingLists( - omitPositions, - numPostingsInLowDfTerms(numPostingsPerTerm, DEFAULT_DF_THRESHOLD), - maxPosition), - new HighDFPackedIntsPostingLists(omitPositions), - DEFAULT_DF_THRESHOLD); - } - - private MultiPostingLists( - OptimizedPostingLists lowDF, - OptimizedPostingLists highDF, - int dfThreshold) { - this.lowDF = lowDF; - this.highDF = highDF; - this.dfThreshold = dfThreshold; - } - - @Override - public int copyPostingList(PostingsEnum postingsEnum, int numPostings) - throws IOException { - return numPostings < dfThreshold - ? lowDF.copyPostingList(postingsEnum, numPostings) - : highDF.copyPostingList(postingsEnum, numPostings); - } - - @Override - public EarlybirdPostingsEnum postings(int postingsPointer, int numPostings, int flags) - throws IOException { - return numPostings < dfThreshold - ? lowDF.postings(postingsPointer, numPostings, flags) - : highDF.postings(postingsPointer, numPostings, flags); - } - - @SuppressWarnings("unchecked") - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - @VisibleForTesting - OptimizedPostingLists getLowDfPostingsList() { - return lowDF; - } - - @VisibleForTesting - OptimizedPostingLists getHighDfPostingsList() { - return highDF; - } - - public static class FlushHandler extends Flushable.Handler { - private static final String DF_THRESHOLD_PROP_NAME = "dfThresHold"; - - public FlushHandler() { - super(); - } - - public FlushHandler(MultiPostingLists objectToFlush) { - super(objectToFlush); - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) - throws IOException { - MultiPostingLists objectToFlush = getObjectToFlush(); - flushInfo.addIntProperty(DF_THRESHOLD_PROP_NAME, objectToFlush.dfThreshold); - objectToFlush.lowDF.getFlushHandler().flush( - flushInfo.newSubProperties("lowDFPostinglists"), out); - objectToFlush.highDF.getFlushHandler().flush( - flushInfo.newSubProperties("highDFPostinglists"), out); - } - - @Override - protected MultiPostingLists doLoad(FlushInfo flushInfo, - DataDeserializer in) throws IOException { - OptimizedPostingLists lowDF = new LowDFPackedIntsPostingLists.FlushHandler() - .load(flushInfo.getSubProperties("lowDFPostinglists"), in); - OptimizedPostingLists highDF = new HighDFPackedIntsPostingLists.FlushHandler() - .load(flushInfo.getSubProperties("highDFPostinglists"), in); - return new MultiPostingLists( - lowDF, - highDF, - flushInfo.getIntProperty(DF_THRESHOLD_PROP_NAME)); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionary.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionary.docx new file mode 100644 index 0000000000000000000000000000000000000000..b9dfc4cf3199e7365c59fdc89be858d31b70fdfe GIT binary patch literal 37538 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%0Dlpt`c`Qr8vl@RbTrNei(c~s4J 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 L^YY; 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionary.java b/src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionary.java deleted file mode 100644 index 8b7dee75d..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionary.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import com.google.common.collect.ImmutableList; - -import org.apache.lucene.util.BytesRef; - -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; - -/** - * A term dictionary that's backed by multiple underlying segments/indexes. For a given term, will - * be able to return the termId for each of the underlying indexes. - */ -public interface MultiSegmentTermDictionary { - - /** - * Lookup a term in this multi segment term dictionary, and return the term ids for that term on - * all of the managed segments. - * - * @return An array containing a termId for each segment that this term dictionary is backed by. - * The order of segments will match the order returned by {@link #getSegmentIndexes()}. - * - * For each segment, the term id will be returned, or - * {@link EarlybirdIndexSegmentAtomicReader#TERM_NOT_FOUND} if that segment does not have the - * given term. - */ - int[] lookupTermIds(BytesRef term); - - /** - * A convenience method for checking whether a specific index/segment is backed by this term - * dictionary. Returning true here is equivalent to returning: - *

    -   * getSegmentIndexes().contains(invertedIndex);
    -   * 
    - */ - default boolean supportSegmentIndex(InvertedIndex invertedIndex) { - return getSegmentIndexes().contains(invertedIndex); - } - - /** - * The list of indexes that this term dictionary is backed by. The order of indexes here will - * be consistent with the order of termIds returned by {@link #lookupTermIds(BytesRef)}. - */ - ImmutableList getSegmentIndexes(); - - /** - * Returns the number of terms in this term dictionary. - * - * If the term "foo" appears in segment A and in segment B, it will be counted once. To get the - * total number of terms across all managed segments, see {@link #getNumTermEntries()}. - */ - int getNumTerms(); - - /** - * Returns the total number of terms in this term dictionary across all managed segments. - * - * If the term "foo" appears in segment A and in segment B, it will have 2 entries in this term - * dictionary. - */ - int getNumTermEntries(); -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionaryWithFastutil.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionaryWithFastutil.docx new file mode 100644 index 0000000000000000000000000000000000000000..afec8a9033eda7964cd58797af146c476ba7aae9 GIT binary patch literal 39071 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 bL+o&LsIN^8jG*tMiWOu7439JE-?#n;NMbG( literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionaryWithFastutil.java b/src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionaryWithFastutil.java deleted file mode 100644 index 56efa3754..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionaryWithFastutil.java +++ /dev/null @@ -1,161 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.OptionalInt; -import java.util.concurrent.TimeUnit; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Stopwatch; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Maps; - -import org.apache.lucene.util.BytesRef; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.metrics.SearchTimerStats; -import com.twitter.search.common.util.LogFormatUtil; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; - -import it.unimi.dsi.fastutil.ints.IntArrayList; - -/** - * This implementation took MultiSegmentTermDictionaryWithMap and replaced some of the - * data structures with fastutil equivalents and it also uses a more memory efficient way to - * store the precomputed data. - * - * This implementation has a requirement that each term per field needs to be present at - * most once per document, since we only have space to index 2^24 terms and we have 2^23 - * documents as of now in realtime earlybirds. - * - * See UserIdMultiSegmentQuery class comment for more information on how this is used. - */ -public class MultiSegmentTermDictionaryWithFastutil implements MultiSegmentTermDictionary { - private static final Logger LOG = LoggerFactory.getLogger( - MultiSegmentTermDictionaryWithFastutil.class); - - @VisibleForTesting - public static final SearchTimerStats TERM_DICTIONARY_CREATION_STATS = - SearchTimerStats.export("multi_segment_term_dictionary_with_fastutil_creation", - TimeUnit.MILLISECONDS, false); - - private static final int MAX_TERM_ID_BITS = 24; - private static final int TERM_ID_MASK = (1 << MAX_TERM_ID_BITS) - 1; // First 24 bits. - private static final int MAX_SEGMENT_SIZE = 1 << (MAX_TERM_ID_BITS - 1); - - private final ImmutableList indexes; - - // For each term, a list of (index id, term id) packed into an integer. - // The integer contains: - // byte 0: index (segment id). Since we have ~20 segments, this fits into a byte. - // bytes [1-3]: term id. The terms we're building this dictionary for are user ids - // associated with a tweet - from_user_id and in_reply_to_user_id. Since we have - // at most 2**23 tweets in realtime, we'll have at most 2**23 unique terms per - // segments. The term ids post optimization are consecutive numbers, so they will - // fit in 24 bits. We don't use the term dictionary in archive, which has more - // tweets per segment. - // - // To verify the maximum amount of tweets in a segment, see max_segment_size in - // earlybird-config.yml. - private final HashMap termsMap; - private final int numTerms; - private final int numTermEntries; - - int encodeIndexAndTermId(int indexId, int termId) { - // Push the index id to the left and use the other 24 bits for the term id. - return (indexId << MAX_TERM_ID_BITS) | termId; - } - - void decodeIndexAndTermId(int[] arr, int packed) { - arr[packed >> MAX_TERM_ID_BITS] = packed & TERM_ID_MASK; - } - - - /** - * Creates a new multi-segment term dictionary backed by a regular java map. - */ - public MultiSegmentTermDictionaryWithFastutil( - String field, - List indexes) { - - this.indexes = ImmutableList.copyOf(indexes); - - // Pre-size the map with estimate of max number of terms. It should be at least that big. - OptionalInt optionalMax = indexes.stream().mapToInt(OptimizedMemoryIndex::getNumTerms).max(); - int maxNumTerms = optionalMax.orElse(0); - this.termsMap = Maps.newHashMapWithExpectedSize(maxNumTerms); - - LOG.info("About to merge {} indexes for field {}, estimated {} terms", - indexes.size(), field, LogFormatUtil.formatInt(maxNumTerms)); - Stopwatch stopwatch = Stopwatch.createStarted(); - - BytesRef termBytesRef = new BytesRef(); - - for (int indexId = 0; indexId < indexes.size(); indexId++) { - // The inverted index for this field. - OptimizedMemoryIndex index = indexes.get(indexId); - - int indexNumTerms = index.getNumTerms(); - - if (indexNumTerms > MAX_SEGMENT_SIZE) { - throw new IllegalStateException("too many terms: " + indexNumTerms); - } - - for (int termId = 0; termId < indexNumTerms; termId++) { - index.getTerm(termId, termBytesRef); - - IntArrayList indexTerms = termsMap.get(termBytesRef); - if (indexTerms == null) { - BytesRef term = BytesRef.deepCopyOf(termBytesRef); - - indexTerms = new IntArrayList(); - termsMap.put(term, indexTerms); - } - - indexTerms.add(encodeIndexAndTermId(indexId, termId)); - } - } - - this.numTerms = termsMap.size(); - this.numTermEntries = indexes.stream().mapToInt(OptimizedMemoryIndex::getNumTerms).sum(); - - TERM_DICTIONARY_CREATION_STATS.timerIncrement(stopwatch.elapsed(TimeUnit.MILLISECONDS)); - LOG.info("Done merging {} segments for field {} in {} - " - + "num terms: {}, num term entries: {}.", - indexes.size(), field, stopwatch, - LogFormatUtil.formatInt(this.numTerms), - LogFormatUtil.formatInt(this.numTermEntries)); - } - - @Override - public int[] lookupTermIds(BytesRef term) { - int[] termIds = new int[indexes.size()]; - Arrays.fill(termIds, EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND); - - IntArrayList indexTerms = termsMap.get(term); - if (indexTerms != null) { - for (int i = 0; i < indexTerms.size(); i++) { - decodeIndexAndTermId(termIds, indexTerms.getInt(i)); - } - } - - return termIds; - } - - @Override - public ImmutableList getSegmentIndexes() { - return indexes; - } - - @Override - public int getNumTerms() { - return this.numTerms; - } - - @Override - public int getNumTermEntries() { - return this.numTermEntries; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionaryWithMap.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionaryWithMap.docx new file mode 100644 index 0000000000000000000000000000000000000000..2fa3912e862439e932de75a055828549ae3ad954 GIT binary patch literal 38474 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 UO~45HKB~4roPgocNBVyBFW*NOX8-^I literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionaryWithMap.java b/src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionaryWithMap.java deleted file mode 100644 index 74b7103bc..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/MultiSegmentTermDictionaryWithMap.java +++ /dev/null @@ -1,134 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.OptionalInt; -import java.util.concurrent.TimeUnit; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - -import org.apache.lucene.util.BytesRef; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.metrics.SearchTimerStats; -import com.twitter.search.common.util.LogFormatUtil; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; - -/** - * A rather simple implementation of a MultiSegmentTermDictionary that just keeps all terms in a - * java hash map, and all the termIds for a term in a java list. - * - * An alternate implementation could have an MPH for the map, and a IntBlockPool for storing - * the term ids. - * - * See UserIdMultiSegmentQuery class comment for more information on how this is used. - */ -public class MultiSegmentTermDictionaryWithMap implements MultiSegmentTermDictionary { - private static final Logger LOG = LoggerFactory.getLogger( - MultiSegmentTermDictionaryWithMap.class); - - @VisibleForTesting - public static final SearchTimerStats TERM_DICTIONARY_CREATION_STATS = - SearchTimerStats.export("multi_segment_term_dictionary_with_map_creation", - TimeUnit.MILLISECONDS, false); - - private final ImmutableList indexes; - private final HashMap> termsMap; - private final int numTerms; - private final int numTermEntries; - - private static class IndexTerm { - private int indexId; - private final int termId; - - public IndexTerm(int indexId, int termId) { - this.indexId = indexId; - this.termId = termId; - } - } - - /** - * Creates a new multi-segment term dictionary backed by a regular java map. - */ - public MultiSegmentTermDictionaryWithMap( - String field, - List indexes) { - - this.indexes = ImmutableList.copyOf(indexes); - - // Pre-size the map with estimate of max number of terms. It should be at least that big. - OptionalInt optionalMax = indexes.stream().mapToInt(OptimizedMemoryIndex::getNumTerms).max(); - int maxNumTerms = optionalMax.orElse(0); - this.termsMap = Maps.newHashMapWithExpectedSize(maxNumTerms); - - LOG.info("About to merge {} indexes for field {}, estimated {} terms", - indexes.size(), field, LogFormatUtil.formatInt(maxNumTerms)); - long start = System.currentTimeMillis(); - - BytesRef termText = new BytesRef(); - long copiedBytes = 0; - for (int indexId = 0; indexId < indexes.size(); indexId++) { - // The inverted index for this field. - OptimizedMemoryIndex index = indexes.get(indexId); - - int indexNumTerms = index.getNumTerms(); - for (int termId = 0; termId < indexNumTerms; termId++) { - index.getTerm(termId, termText); - - // This copies the underlying array to a new array. - BytesRef term = BytesRef.deepCopyOf(termText); - copiedBytes += term.length; - - List indexTerms = termsMap.computeIfAbsent(term, k -> Lists.newArrayList()); - - indexTerms.add(new IndexTerm(indexId, termId)); - } - } - - this.numTerms = termsMap.size(); - this.numTermEntries = indexes.stream().mapToInt(OptimizedMemoryIndex::getNumTerms).sum(); - - long elapsed = System.currentTimeMillis() - start; - TERM_DICTIONARY_CREATION_STATS.timerIncrement(elapsed); - LOG.info("Done merging {} indexes for field {} in {}ms - " - + "num terms: {}, num term entries: {}, copied bytes: {}", - indexes.size(), field, elapsed, - LogFormatUtil.formatInt(this.numTerms), LogFormatUtil.formatInt(this.numTermEntries), - LogFormatUtil.formatInt(copiedBytes)); - } - - @Override - public int[] lookupTermIds(BytesRef term) { - int[] termIds = new int[indexes.size()]; - Arrays.fill(termIds, EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND); - - List indexTerms = termsMap.get(term); - if (indexTerms != null) { - for (IndexTerm indexTerm : indexTerms) { - termIds[indexTerm.indexId] = indexTerm.termId; - } - } - - return termIds; - } - - @Override - public ImmutableList getSegmentIndexes() { - return indexes; - } - - @Override - public int getNumTerms() { - return this.numTerms; - } - - @Override - public int getNumTermEntries() { - return this.numTermEntries; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/OptimizedIndexTerms.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/OptimizedIndexTerms.docx new file mode 100644 index 0000000000000000000000000000000000000000..52820a516bb864b29add593a78733f3d1067ee50 GIT binary patch literal 37011 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 S(63oV1~5fUkFKm=zy1f_4C#LW literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/OptimizedMemoryIndex.java b/src/java/com/twitter/search/core/earlybird/index/inverted/OptimizedMemoryIndex.java deleted file mode 100644 index 3298b80e8..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/OptimizedMemoryIndex.java +++ /dev/null @@ -1,434 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.io.IOException; -import java.util.Comparator; -import java.util.Map; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; - -import org.apache.lucene.index.PostingsEnum; -import org.apache.lucene.index.Terms; -import org.apache.lucene.index.TermsEnum; -import org.apache.lucene.search.DocIdSetIterator; -import org.apache.lucene.util.BytesRef; -import org.apache.lucene.util.packed.PackedInts; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.schema.base.EarlybirdFieldType; -import com.twitter.search.common.util.hash.BDZAlgorithm; -import com.twitter.search.common.util.hash.BDZAlgorithm.MPHFNotFoundException; -import com.twitter.search.common.util.hash.KeysSource; -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.facets.FacetIDMap.FacetField; -import com.twitter.search.core.earlybird.index.DocIDToTweetIDMapper; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; - -public class OptimizedMemoryIndex extends InvertedIndex implements Flushable { - private static final Logger LOG = LoggerFactory.getLogger(OptimizedMemoryIndex.class); - private static final Comparator BYTES_REF_COMPARATOR = Comparator.naturalOrder(); - - private static final SearchCounter MPH_NOT_FOUND_COUNT = - SearchCounter.export("twitter_optimized_index_mph_not_found_count"); - - private final PackedInts.Reader numPostings; - private final PackedInts.Reader postingListPointers; - private final PackedInts.Reader offensiveCounters; - private final MultiPostingLists postingLists; - - private final TermDictionary dictionary; - - private final int numDocs; - private final int sumTotalTermFreq; - private final int sumTermDocFreq; - - private OptimizedMemoryIndex(EarlybirdFieldType fieldType, - int numDocs, - int sumTermDocFreq, - int sumTotalTermFreq, - PackedInts.Reader numPostings, - PackedInts.Reader postingListPointers, - PackedInts.Reader offensiveCounters, - MultiPostingLists postingLists, - TermDictionary dictionary) { - super(fieldType); - this.numDocs = numDocs; - this.sumTermDocFreq = sumTermDocFreq; - this.sumTotalTermFreq = sumTotalTermFreq; - this.numPostings = numPostings; - this.postingListPointers = postingListPointers; - this.offensiveCounters = offensiveCounters; - this.postingLists = postingLists; - this.dictionary = dictionary; - } - - public OptimizedMemoryIndex( - EarlybirdFieldType fieldType, - String field, - InvertedRealtimeIndex source, - Map termIDMapper, - FacetField facetField, - DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper optimizedTweetIdMapper) throws IOException { - super(fieldType); - - numDocs = source.getNumDocs(); - sumTermDocFreq = source.getSumTermDocFreq(); - sumTotalTermFreq = source.getSumTotalTermFreq(); - - Preconditions.checkNotNull(originalTweetIdMapper, "The segment must have a tweet ID mapper."); - Preconditions.checkNotNull(optimizedTweetIdMapper, - "The optimized tweet ID mapper cannot be null."); - - // We rely on the fact that new terms always have a greater term ID. We ignore all terms that - // are equal to or greater than numTerms, as they may be incompletely applied. If new terms are - // added while optimizing, they will be re-added when we re-apply updates. - final KeysSource termsIterator = source.getKeysSource(); - int numTerms = termsIterator.getNumberOfKeys(); - int maxPublishedPointer = source.getMaxPublishedPointer(); - - int[] tempPostingListPointers = new int[numTerms]; - - BDZAlgorithm termsHashFunction = null; - - final boolean supportTermTextLookup = facetField != null || fieldType.isSupportTermTextLookup(); - if (supportTermTextLookup) { - try { - termsHashFunction = new BDZAlgorithm(termsIterator); - } catch (MPHFNotFoundException e) { - // we couldn't find a mphf for this field - // no problem, this can happen for very small fields - // - just use the fst in that case - LOG.warn("Unable to build MPH for field: {}", field); - MPH_NOT_FOUND_COUNT.increment(); - } - } - - // Make sure to only call the expensive computeNumPostings() once. - int[] numPostingsSource = computeNumPostings(source, numTerms, maxPublishedPointer); - - // The BDZ Algorithm returns a function from bytesref to term ID. However, these term IDs are - // different than the original term IDs (it's a hash function, not a hash _table_), so we have - // to remap the term IDs to match the ones generated by BDZ. We track that using the termIDMap. - int[] termIDMap = null; - - if (termsHashFunction != null) { - termsIterator.rewind(); - termIDMap = BDZAlgorithm.createIdMap(termsHashFunction, termsIterator); - if (facetField != null) { - termIDMapper.put(facetField.getFacetId(), termIDMap); - } - - PackedInts.Reader termPointers = getPackedInts(source.getTermPointers(), termIDMap); - this.numPostings = getPackedInts(numPostingsSource, termIDMap); - this.offensiveCounters = source.getOffensiveCounters() == null ? null - : getPackedInts(source.getOffensiveCounters(), termIDMap); - - this.dictionary = new MPHTermDictionary( - numTerms, - termsHashFunction, - termPointers, - source.getTermPool(), - TermPointerEncoding.DEFAULT_ENCODING); - } else { - this.dictionary = FSTTermDictionary.buildFST( - source.getTermPool(), - source.getTermPointers(), - numTerms, - BYTES_REF_COMPARATOR, - supportTermTextLookup, - TermPointerEncoding.DEFAULT_ENCODING); - - this.numPostings = getPackedInts(numPostingsSource); - this.offensiveCounters = source.getOffensiveCounters() == null ? null - : getPackedInts(source.getOffensiveCounters()); - } - - TermsEnum allTerms = source.createTermsEnum(maxPublishedPointer); - - this.postingLists = new MultiPostingLists( - !fieldType.hasPositions(), - numPostingsSource, - source.getMaxPosition()); - - for (int termID = 0; termID < numTerms; termID++) { - allTerms.seekExact(termID); - PostingsEnum postingsEnum = new OptimizingPostingsEnumWrapper( - allTerms.postings(null), originalTweetIdMapper, optimizedTweetIdMapper); - int mappedTermID = termIDMap != null ? termIDMap[termID] : termID; - tempPostingListPointers[mappedTermID] = - postingLists.copyPostingList(postingsEnum, numPostingsSource[termID]); - } - - this.postingListPointers = getPackedInts(tempPostingListPointers); - } - - private static int[] map(int[] source, int[] map) { - int[] target = new int[map.length]; - for (int i = 0; i < map.length; i++) { - target[map[i]] = source[i]; - } - return target; - } - - static PackedInts.Reader getPackedInts(int[] values) { - return getPackedInts(values, null); - } - - private static PackedInts.Reader getPackedInts(int[] values, int[] map) { - int[] mappedValues = values; - if (map != null) { - mappedValues = map(mappedValues, map); - } - - // first determine max value - long maxValue = Long.MIN_VALUE; - for (int value : mappedValues) { - if (value > maxValue) { - maxValue = value; - } - } - - PackedInts.Mutable packed = - PackedInts.getMutable(mappedValues.length, PackedInts.bitsRequired(maxValue), - PackedInts.DEFAULT); - for (int i = 0; i < mappedValues.length; i++) { - packed.set(i, mappedValues[i]); - } - - return packed; - } - - /** - * Returns per-term array containing the number of posting in this index for each term. - * This call is extremely slow. - */ - private static int[] computeNumPostings( - InvertedRealtimeIndex source, - int numTerms, - int maxPublishedPointer - ) throws IOException { - int[] numPostings = new int[numTerms]; - TermsEnum allTerms = source.createTermsEnum(maxPublishedPointer); - - for (int termID = 0; termID < numTerms; termID++) { - allTerms.seekExact(termID); - PostingsEnum docsEnum = allTerms.postings(null); - while (docsEnum.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) { - numPostings[termID] += docsEnum.freq(); - } - } - - return numPostings; - } - - @Override - public int getNumDocs() { - return numDocs; - } - - @Override - public int getSumTotalTermFreq() { - return sumTotalTermFreq; - } - - @Override - public int getSumTermDocFreq() { - return sumTermDocFreq; - } - - public OptimizedPostingLists getPostingLists() { - Preconditions.checkState(hasPostingLists()); - return postingLists; - } - - int getPostingListPointer(int termID) { - Preconditions.checkState(hasPostingLists()); - return (int) postingListPointers.get(termID); - } - - int getNumPostings(int termID) { - Preconditions.checkState(hasPostingLists()); - return (int) numPostings.get(termID); - } - - public boolean getTerm(int termID, BytesRef text, BytesRef termPayload) { - return dictionary.getTerm(termID, text, termPayload); - } - - @Override - public FacetLabelAccessor getLabelAccessor() { - return new FacetLabelAccessor() { - @Override - protected boolean seek(long termID) { - if (termID != EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND) { - hasTermPayload = getTerm((int) termID, termRef, termPayload); - offensiveCount = offensiveCounters != null - ? (int) offensiveCounters.get((int) termID) : 0; - return true; - } else { - return false; - } - } - }; - } - - @Override - public Terms createTerms(int maxPublishedPointer) { - return new OptimizedIndexTerms(this); - } - - @Override - public TermsEnum createTermsEnum(int maxPublishedPointer) { - return dictionary.createTermsEnum(this); - } - - @Override - public int lookupTerm(BytesRef term) throws IOException { - return dictionary.lookupTerm(term); - } - - @Override - public int getLargestDocIDForTerm(int termID) throws IOException { - Preconditions.checkState(hasPostingLists()); - if (termID == EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND) { - return EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND; - } else { - return postingLists.getLargestDocID((int) postingListPointers.get(termID), - (int) numPostings.get(termID)); - } - } - - @Override - public int getDF(int termID) { - return (int) numPostings.get(termID); - } - - @Override - public int getNumTerms() { - return dictionary.getNumTerms(); - } - - @Override - public void getTerm(int termID, BytesRef text) { - dictionary.getTerm(termID, text, null); - } - - @VisibleForTesting TermDictionary getTermDictionary() { - return dictionary; - } - - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - public boolean hasPostingLists() { - return postingListPointers != null - && postingLists != null - && numPostings != null; - } - - @VisibleForTesting - OptimizedPostingLists getOptimizedPostingLists() { - return postingLists; - } - - public static class FlushHandler extends Flushable.Handler { - private static final String NUM_DOCS_PROP_NAME = "numDocs"; - private static final String SUM_TOTAL_TERM_FREQ_PROP_NAME = "sumTotalTermFreq"; - private static final String SUM_TERM_DOC_FREQ_PROP_NAME = "sumTermDocFreq"; - private static final String USE_MIN_PERFECT_HASH_PROP_NAME = "useMinimumPerfectHashFunction"; - private static final String SKIP_POSTING_LIST_PROP_NAME = "skipPostingLists"; - private static final String HAS_OFFENSIVE_COUNTERS_PROP_NAME = "hasOffensiveCounters"; - public static final String IS_OPTIMIZED_PROP_NAME = "isOptimized"; - - private final EarlybirdFieldType fieldType; - - public FlushHandler(EarlybirdFieldType fieldType) { - super(); - this.fieldType = fieldType; - } - - public FlushHandler(OptimizedMemoryIndex objectToFlush) { - super(objectToFlush); - fieldType = objectToFlush.fieldType; - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - long startTime = getClock().nowMillis(); - OptimizedMemoryIndex objectToFlush = getObjectToFlush(); - boolean useHashFunction = objectToFlush.dictionary instanceof MPHTermDictionary; - boolean skipPostingLists = !objectToFlush.hasPostingLists(); - - flushInfo.addIntProperty(NUM_DOCS_PROP_NAME, objectToFlush.numDocs); - flushInfo.addIntProperty(SUM_TERM_DOC_FREQ_PROP_NAME, objectToFlush.sumTermDocFreq); - flushInfo.addIntProperty(SUM_TOTAL_TERM_FREQ_PROP_NAME, objectToFlush.sumTotalTermFreq); - flushInfo.addBooleanProperty(USE_MIN_PERFECT_HASH_PROP_NAME, useHashFunction); - flushInfo.addBooleanProperty(SKIP_POSTING_LIST_PROP_NAME, skipPostingLists); - flushInfo.addBooleanProperty(HAS_OFFENSIVE_COUNTERS_PROP_NAME, - objectToFlush.offensiveCounters != null); - flushInfo.addBooleanProperty(IS_OPTIMIZED_PROP_NAME, true); - - if (!skipPostingLists) { - out.writePackedInts(objectToFlush.postingListPointers); - out.writePackedInts(objectToFlush.numPostings); - } - if (objectToFlush.offensiveCounters != null) { - out.writePackedInts(objectToFlush.offensiveCounters); - } - - if (!skipPostingLists) { - objectToFlush.postingLists.getFlushHandler().flush( - flushInfo.newSubProperties("postingLists"), out); - } - objectToFlush.dictionary.getFlushHandler().flush(flushInfo.newSubProperties("dictionary"), - out); - getFlushTimerStats().timerIncrement(getClock().nowMillis() - startTime); - } - - @Override - protected OptimizedMemoryIndex doLoad( - FlushInfo flushInfo, DataDeserializer in) throws IOException { - long startTime = getClock().nowMillis(); - boolean useHashFunction = flushInfo.getBooleanProperty(USE_MIN_PERFECT_HASH_PROP_NAME); - boolean skipPostingLists = flushInfo.getBooleanProperty(SKIP_POSTING_LIST_PROP_NAME); - - PackedInts.Reader postingListPointers = skipPostingLists ? null : in.readPackedInts(); - PackedInts.Reader numPostings = skipPostingLists ? null : in.readPackedInts(); - PackedInts.Reader offensiveCounters = - flushInfo.getBooleanProperty(HAS_OFFENSIVE_COUNTERS_PROP_NAME) - ? in.readPackedInts() : null; - - MultiPostingLists postingLists = skipPostingLists ? null - : (new MultiPostingLists.FlushHandler()) - .load(flushInfo.getSubProperties("postingLists"), in); - - TermDictionary dictionary; - if (useHashFunction) { - dictionary = (new MPHTermDictionary.FlushHandler(TermPointerEncoding.DEFAULT_ENCODING)) - .load(flushInfo.getSubProperties("dictionary"), in); - } else { - dictionary = (new FSTTermDictionary.FlushHandler(TermPointerEncoding.DEFAULT_ENCODING)) - .load(flushInfo.getSubProperties("dictionary"), in); - } - getLoadTimerStats().timerIncrement(getClock().nowMillis() - startTime); - - return new OptimizedMemoryIndex(fieldType, - flushInfo.getIntProperty(NUM_DOCS_PROP_NAME), - flushInfo.getIntProperty(SUM_TERM_DOC_FREQ_PROP_NAME), - flushInfo.getIntProperty(SUM_TOTAL_TERM_FREQ_PROP_NAME), - numPostings, - postingListPointers, - offensiveCounters, - postingLists, - dictionary); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/OptimizedPostingLists.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/OptimizedPostingLists.docx new file mode 100644 index 0000000000000000000000000000000000000000..1a94b0e242e595214badd9cf718c664640640415 GIT binary patch literal 37240 zcmagEWmsIvwm*!!dvJGmcL)S`m!Lr#2@Z`12=2k%-64&;6N0-12?TflcV_0CGjr~} z@B3x<(^a*8vexdZ+Ph0t0U8De0s;a7Vmggaw@SSzJ{b}MViXPn0vp_FAO&#zXzBRT zMAOU3($$F7)4{$eSxIF@9OKjJGj0l-D7lXmI&S&46TK62JfU<=#x=j*BHOVd)cx(a zV1(ARY8V`Ad}i9MAL&ZHNT+Wzt$~#Ev5`@xP5~u!iEqJLKI@4U->ytNh5Ult4$15Q zTy1Nn@0%%JNcNrDK0y<#&{N4={h(ysdx#jis#t9-vcXUUb&*ln@S1{YzPxrSCr$Ok zVY(fr54)qP?$6`?9+dY|0W#Uoi>$QTS#}vnUjzBSM3|mw$$m0zOz3y5bDv;paIw~M zu3zaXLh~F%24H;u;n2L`?Zw4%-Q zpaZcU`aq)*{@yNM1($2yx-^U9PM%MJ?t{U z9ZF#Jt=v;b@vhrSP`@_CN1q4el8QIdqCHOwC2PB4qqmg#k2p%k z5UT&Eq8F`#_#L=<>rfC7$ly;C7fX9rHrC(Qs)UJm&>R>6r=l{$G$oGBTGE9}#?l8$ zg`(YG#!reJfpW#mogHe@M!I-Cr2D5k=2r6=1w@NX#rDBEW_oi$c?&(d8w}@-Ad^*u z6vXyG3Qx`L5Iy_!$ZIMzaZB1;UMp>KQKoh50Rx7HlWB=+Nof;C2RXFTkg`O~E98&# zI&OX}GXOY%tYS0I=aQ68*WNv+BW|g!fE-?^f?DgI%`lVcZF;^;NbH)(toaSDH~*KGuGHFu&mN2a@Qc zhWvUvV5+{CX-QuT$4Pwbeh-U+4#_31mZt8}s?E9i`PkLPd1J~Q+Nc7hB@6{E3#c6NJ}#g!&N?4w01S1tB)^B6x}>U&`3S{~Yvhlq6;Vph`a z)wvBvMv^>Ei9{xh{8zc}%$*bY2MzwOZ(rUl5;NWLox>0uTB8{=%y>w>JoR1>{j)At zD=YX%;JVnuKtN#py)N&aoc<__=9uFOJ4X8>6O7Tv&o=N9Y6J;E^AgiiYlO84nJu%U zl<(qU+Bmj>e)r+H0-xBfBZL}+9vep=7bL9U8lLHwAeqgp-cL)l<9eohMSG&ov(^yh^7;c;4<@AL^wfqoT<|y?^F{8S|>Jp4%3VLw4}9~&O>yA2Ygwm? ztP}bb2>j2DM-Ai}^<_HY7tzOYUAhuOxdJ@U&rI>s0hhn{_)!w8E}(TGKVSTK+{>!PP7=2v zUiykj?Ke3sDpNOBTk&q2wUR=ldXSDfh2+tUjEKpc;Y4SDUur?$NZBA7H;0E1)1783 z6xas23!sBdvJ)Xtee15jO?LZ%@EL>k+<{|%^WIGa`OpK7AK2P}NSb<#X#YGCHAWiP zYQK@1EIOgHK`j)PiLd2juM(fyzalSIr1G|-J%jCujr0sL@X#{-Wq7Kz zs?wEX=q@{6lf2fI+U*^Swp$3-)v@j|RdId_x>xV<`1__k_C#feN*Pf1V$P+L>#|&~ zh^2Mw9xik3T0*vsxQ79+tX)w{D{sn5I*iu$(QFJn;^Su&&giR)H#X+az`WG!2K zjHo2ol-F;13mST9XM3zSl38Mj4j_l0Qf_O?6@k`lAh5AHtNk+m$uNu*pJH{3FFOmb zmk({!DnKyIZ+80yd+$exS9xLc53VfLScRGeF_3xgYTemtk}55!jL+aEjX4|?QX*<$ z-GQVl?ch&WSHqus+{wK}2HE_b!1(z zVc>mw?vCbx;rkLGw1%37O=rSqo?YjJpqRe|8?* z1yFvZ&w);^*^pdG zpNK1`*rr4~bO&G7*YTthe#K*#@e`PtlVj!tkTc>l$g37j%6`9oqif5zt}XB2F?5PE z$IWt^n00X{8yHbstZhsAHjN`?+|=AQ0s>)LH34PqI8qzgA3?=J+gPqzI3&t!gjD28 z{lK>N%b+0b>e>l4NKwIcP`s}`v!RXbLq#u2###kQaFzOPOE~aV_G1{@iNAIml1KUd zpt|l$3Th2Z_X+QDfIsiNi|sJ-@O1X6@T@os2BV}p47X7@OOpN1(r?w4{-o#0)f7Ag z+i6I%iwSCy1vwAn+z@uVW3O-WvXf8MnC9AcLdx(6N#*Pzp0i9Z;r5?jn?QcY##TWS ziD@B+2xn#zfo8yo!rCO{q#xyv>Xz%sBTllNo#vb&xYf_iM)xlP-;6CfFc;C=yp*%t z=27?7a5k4E8?^aUc>S>1uFZ?uXosRNakN=z-`*>)chvK~VtN!AZS)CYcu$Kfm`vV=Y3_r4gKZsg zVnok;FQlX5e3Y4gjn_e~+AnCwH}%3FU_%34>?{VJ7Wn+nRf0~${yAki1`uI!g4eP! z@U%q?Ud#TNvi{tO{e9y4b61ump%Tna@agmgsW&tcr`R#_&98h~5Tk5Ok#DH%a>9+& z?uNmd1+&z4;La_tUk;ta%*2hx{JIbUQ{%fJ{wOGPoS9HnODth)^wgv7201MWyDD-- z!P*|)jzwWfrRn3kNy#u8%LGRIHWRv!>(10>bjNDm975WoODa{0v#2&xV+;DCgey{lpQb)t zBg8KB&4eAl?bUQrzqc~tM;~}7u^rK<65?$E5?wpBF`c(ZBE4r{umZ{H9PnJ1OSSh* zR~7h|ucm8Y1nz^sv;8yI(G_??k!%nU##*ot=>N*K>qjqpOV>XZ2P31zZP|LiuCDw7 zlcygJaUl>xla3Gx?!@nXInyOZ#1ULcLILHl8ZO zu1;2>rseZs0X zKA&WWEeru(?qgr?9~VwzO2k@@c8u=s*UmwybD+olnV;97u&|v&ujhK<7l+rc>!EDG zWisQGlC!D4{jk*Ct+AD(mWt=Gql-qbReQb?F|x{@?hcht0^w2huU9q=`aX|yD`Vas zpT%CCbOC*sx1gQNy=%`m#}&gLOm4$U7W#lqqNIJ+z@_XVA3aC+h4-J7-{+=I9M+1R zh-JOti7L9hJy+ct3Jbn7VOx0wi}Kj;Uq4148#;bi^W*>aEG9W2a;&os-mp6O2+I1C z0!69)Y5fOYk#9gV=O;%VV>`AD_XO`y;XRi^%sX<9V=^AklCLj3(@FTot|EahEZ)xo z-c*-~6*~-WUY%act76iUvHqcKFP*EMpq9$9 z#-^x=h`Xvqhb;;_!4jMbYd{aHsTO;#HSyCE^WzU?YX`+zhT{7_zwGx}`6E1Etv!EC zH+-rEF12q6i&S}>o`j|Hon-T=9KHG(p8`dya~v05vHLqyqFR@`j+OUUVgcKCKVIwf zyJWM8I=>po^4>E%bn|-Oa?sGd+^y`n^X(%Gl${T}g2IVuZ_MPqjM)kZx`?!q(zg-n zzwEq2eP4mTRf^7`PS&eMW>zWMFYOo3;2S;zbaU^#8alQaphGg&ypIT)(FEpiQYGim zw@UBQA(5(rn|heU)M^3XZ+pzo{kCsjjqb+f7U4x5l~>#>p$Hj^zfvD>Jhuxoi;<<& zOnFSN>c^>b_J*|#B`#K>%{gB8{jA;atHv?cvo(84UD)4scCExKEPaT@JZpPgcz>zM zVB4Q&eHZ-NZd5%#^>{q<;B@Q!JS2Z}DRz7+nyDt+WHdK>*0*EzGxYJEqUICKqe$u3feJ7_TSBj;c#8nZ(yo6 z_GtSM&U|G%M@9jpn*DiB%X1mw7yZx7FOO?B9YWQo{e?@PYdN?!8VS`Eq`R7K(JoN={7;QEDpd4@zM}ST5e|`M|N1R%qoyW zP^V(T3UW$l2_Vn>VI&kAk5QQ2UJ<%U1Ax@yA2ATeP`<#!2uW;*9cGcdz>5otYlkh& z{oVNi+==(EPM9rf0HnlUWHZbAA(MM^uYMc)6A_#db^?~7`@pj7avzYB9G0_#!70DHx0 z{J}zw%<^9nS;!ISypR$8P(7RI(S*_dd(^+13SFfdC*47v*v8p{()x4cout}sey8`4 z{(AoUWb>fp?srHsfvI#!aiy)zo}C;1ZP*5j4z9$~y0d%EprxTP`xoXY5mtkgr_+J8 z$7{DXBgX+BiKo7Ware9ri=LMTcY`xIHCvuFKj%bM_ILM2^0)4yH^huuuBFLh9Jg7Q z#FGtUPI=-9Umu-Nq*%PBOfi^O%SbXe23E;$PJr%+6%(pgNz z1KHM7O|-rAti=zi-7sqQxg@WyA0B%yclF1l+~y{Izo6ys`sktYVG?ZwFZ`&y(GwbG zh*1k~tIT9RBk1|1|EySLe~feeBWXmt{Ah;yyRnSTr-X7oSO%&2QzdypGR}q>FFT23 zh2weuOld3~>f+fYi+ZnZ3zPYyg&fIybnyI%pycm6{4lcfF!O?8+nv_G?(CLv=kVB~ z@q<-u7+>k}s%ySOdClP&efvwRSk?{O)6@{G_X`C2QifNnD2&Mls3mpin&MtP{*lLYHKd^Q z#MKo|Mrn+8EaxT_O)iS)YrE!2wtAaFFyLGD+~X5=SC_9^z&Vfpla};-Bl$fl;1RbL zkLfxAuK69RJ;j^F!}LI+iWG(P8CIT>XbWYK$6ko!ugk;ic9BUPj#@Wi^*6PoXb`Sb zM^8WFdSK5D3W}#j)Qh?(iG4k?3-bYb=1n=twE3fBccB84q~YT(@s&m)mK!N67JGAW ziPo#O{AhGRL9F>gEv<>&S~M+K`u#>|I{0l$XbXHCf~v91t4}Vj+{IiKv?-d>XMVa< zjb`ZsOA&|5Ej)nrBV>Y~hn%`LgF(5waVnXwbxU|%o+`$(R1&4WM_NuPTcrU!#BlQ% zhNJZ9$eh|g?jvnwhaX5bl&%z!2o2ImUNMV0-L}Vwcos@)7;$l`EQJDc*ZX&4OFc1J z2FNs3p6k&?HpHIav`9^g0j_%6)LiBYij8hKiAOI+m+TLe+Ak8izl|~*YQ+8;$9782 zCtTKP(m4n(!6;3OJeqZk)$CA@zJ}RV_+G2zCo?!wJ}7u3wnWD~O_aiQrU1j^CFNYU zbX-=BpHWAe=c}a`9q6BR)p%4JTZQy0(vGpf7hZXcdgcYo&qFgP3rOwg8Yl+ zwMW_mD(APE_Da+>KXb#>xV$%|hwcZw3;NQ(-ppdFhOR_0@=wQ?=FcBsXb-eHYBBeo z^MYE;ra9&ZuIH@WdZ1TiOtr>*y}fLeD-Deuh4uSq)fLictMHUp4d=dp{1IM8^U3_c z``)=t@K@S(Me0E^W$afVL})2zW6vT4F$4M6BTvBThs;{mb)rvwV>(2u9#L#2VQ1^_ zm!M0wNw5c5e~b&+TWdO(DD#78@6VrRaZT8yJ0#Z8GPuf=3DFI!sim)wzSZJwCOh3$ zGW~d_1L79Vdt9n99A@8C@y?B)wO>xNdKG2WXcv*i*Nkk(kDARUEc0j4*ZvTS0Iwa! zte+3vTjd zcM6fM?5!Kp3PnnaZZavCT$f>eY+JV?mE!P5yl%ZJsuPY>6Z&;^xy_bU-1axCDydp` z_6`a32#{jCDa_G_G3w!eG~1tkT;ytIqe2X*E?eNeYM zctedvC@Zg^?%qb>Gs!HwM8Q&B`Cz)xRMIW6rqR8=Xs1MQy;MeWdk}pqko{VY<{&~~ z)nirUm@k-SMO@!2R2bBy=4OS*30PQ#NjR;mOn>`nSPL{_n!tQnntmw}#dvCND1z%P z#YAUV#sZPvHdE!#J(S}JP@PLeou1(se_p}J<=}20h=N0V%awYa);3;sqV4O4E9An& zq=;KsS{~c61g}=6rs8~4+^5;%Y{|1cY->>l+rE3T5vkC3(T?JbgWB#bBLNHQ4?**B@RQE<)|1i4 z)i(uD4ruBhE}JK~e`Y{FRMJmc`agVkhQ8XGU~TMw=vW@|5B7V?%LOK`B;i0ah+5JM z)P>aH(75Geac8c+dy2wV4jW5n?Wy5o!{=JjA*==;f$xO>)w$R;&;emOPRC$=DC(u*_Nr^^{DBJ7TXTia{$ z&M#Rs1$O((ktBwe@@4zaFK0TZbI_qy8wD$l-d7T2sX>3}4qZ*d#cJ?!Z=d zz2bGVUvT%_z;#3DK=fsRliy74!}6YSj=?{JYZNdR$IIiZXU^j@?~Wh~Is3sYRNNzf zV{0-^R33ygO=MRh3f)o1_scG3eeh(q9{(4Ng$H7X(*EWBhfyC@C#V|Yly4a^uI&MQ zxfAD5^#~pDmWUl`(8`7zx3Y>(X4cg=cpdK<k;G z#ODJC>QC#kwE28K{LaO$V4T2xv|K)GQ3Gbf_23|E&)wRP^^ci5;2Z(mG@FZ6H9y2eey+mfK<~>_(zo?6!s2?xHIR z5S%=RS`XkILLR2Pl1-txvO?iU6y7+$AY#09waWROqQYsS{mmgcveg|j8B_gT#DzOQ zw~ueN)P)|e9pKcLH^T^{xY3?msAJ~Cvsy6`Fil2eto ztOCkQo>z7z=8TYB<-Xh!WKKurg)+%+$<*u3@Ip&0e$Hk%7l<51)j*gjzY+NcvOyZ& zFT+*9uXC6zU($y1lWoB{lY~^EPu;^1F)TN3RA`o}&q6xfy-t@eF!n5XLwjg64qttA zg?s((Ch{9-31#@GEK~_!4FC?uL-CXC_#?dZukhJ_hadb74u z`E7k~nm8*DJ?0y(g-dj|*$vgVG~}%C^yoc64?)>rVx5eMA-ST{6O)wJHL~?7$xG>i zN~tIgA;*-T_|HG|uO3{lWcTQFhBOW@d@md2amvEYCZZ1VCMhQDc9z_A%B?;m$E%6^ z-9BK!Fb|eSk3rd#^WJVeN4zbF)7WjD)u?yKke}7T4?egRbo`3#_@K{4GC4w}nCrOw zkR}71R}zz|n$x;6h+fZM2PA*?m<6D6GM0wZ30GT0sr&0PzW+kJwrZBmx>cn;R@!h) zn|xKe#2zZ;4*b@{FFPQD)JYp0sBdd$DHK5&W$hDqYVvlH6g951+@>wow?M1Bq;6_X z=Yc9`rhosC9_nIwsw6Vt?B-GvhIuh_c?u~Ci4h7Zmg!B=ENjkZQrfqCEeNFwo)uam zhrgtiWyA%20(&Wh#18bO3n7qV>se+=&Je!A3veP=sZ7}2h%>zUIFCOI` zd3?yNl5zrnsn_1jHWP(bVve|ZZ z!-4b)!!8E9>O(9;(5)39QKtS6+xyS|#U|kP|H(!_>>0>+PPY)>u>YZ?##SGOdgDX# zq0KMXYh1{YeeUx%!OsEh4e2v7;&*xz;3PUimNXDnybZmE!6DIcpApSsQIbIqF38xx zR!uz9whz+Ysp|j}9wU~%7gpt0#Z>KkJRPzq)H|~=fT3QIUsf(AH@|NnUx_&8b$Tc- zmJz>*)-KB)6xA_T5x)=+@vV-b%w<{33d8@IP5NP&>{HL+qv4-HQ5kLjOYzu02Z&YY@B-M#vQt&INbq9e zM7w-b+pC>e&n!=Ql3yKZHYBbxTHJ3woVg->f!|#I+K8fBW~7f)c)`j7(+pHqN6~uv z!ANY=nMnU^mP`IJQt{&4_Hc1u>yP|?)~^GZhMtrt`mM1uRU6u%PVgOFSk2@u4RT>R z!vjwvLhP!6$*p#E2SrLxu9TLRLsGIGP83Yg$6)x!*f2~n^cRY@+mRF!b_4z zpp99bJSAvYeeiP0v`3^8%WgYBE>MvKLm*%Tni8&G`v)wh$xkGcykUDf&Z8iRHuJy+ zc-h;uwzvYK&4YeZLa|39KD2_Rh+F;oFWWsw!g$bPz${%w3L@5^bKh~BM!P&E3Jiwa z#7PJj^0zsV{oOH6sd&=N#Z1hfC>yedD{JD?1QytRwk>n?Pz1h0#wat(Za^mzy)#WG zS*oCkWXL8SGv_$FG>;g-soz>PW~R+l4&+_Nfr^JplO%V6&_Iwz2_G0nro@}U#gmF( zQnr|fg>r%CvW)$8$Q4QPmals{V&K4M+gyWLwuTG7$%12`;M9{D4hTV7_eGL76E1Nn zQ)9;YTQNpB&bPos2!S|kdPp;IW?5s5x-ZqW1fR#5U0{FlXvR)!I*uG^ z9-QP=I{llHeJc6N8YnyFql)%S0k={QNN)O-^AoTyC=6Cn9P4)xP=L^1cptF}_Xj7|bg&*93l z(oV)oS6Zo<`DXipMg<)lCO5-GVEP&DG(cWkt_utDo7>f!k7)TT&nNSkhU$Xn#aw5S z%FZS=pUo#WVUCw+Q}a=4S+3z0`*|ZAuvUKQze~`ww=~8!+s@D(r0cZF9Qn4BOkmAY zPBST=*|0($%wGchs7Gn*1|}|9=K0PwcW> z?_Kl@M7Uz@|EBs36?7kp;&7tjg_ZX2S(Ngu*jD z#CGN%?JP9%it}*I=5&)0mcHAWgJ~!t#u2Xb`TD>6L8zSJu7@Q)mXms3PQgV$CunEo zKiX3gEOA&O39n~w_9RuikrflaLGpWrKDggl>tcQdiM8j1su9Q=hGE#auQJcDJ&ZIRT<;%5 zkE>M2l+5nl@7WYYS=rUIv6qxA8S{7(!%cqtRd>?YD}VA;CRzZ#{@NHku}`qTO#{$A zWuLP9RWEw`$X@0Hpn`45sF8eJfUYzD;{maP5AQ?GJ=-(w`e42jtn7#u)k>9utgUL1E{~&MS;Kq(*{XfX3P31T5V^TL( zUH&5PHI=_t*SSN|X;H)Z-uv-8{DDSWJX?o}@kU2ro5)=w*H@%0lGm>Xqwn&s?-sVd zbQHss6h1QRqJ91u4X8^R^jpl8U|bf^o+d2}(Jojkci(|GfU!Q@{S37P}R3UNm z=v&cg>OeQCPyfbqUHDa`%!$grL^NehJ9MPqlO-+?@mjKW)`tRv<_LlYdvTmu?5L?p ziV(*AVU4Mm+?Li3xbt2k>xUxeNkq1d^c0M}b@?6<-G}cQT5pZkoj%V4O|T~9^`DU_ z)8X=Ma816H-F~7-pNCAR{kAFrJh7`Vhe5cy0(rzpa4XF}4N8>=+N4{oVk^yr7b7lC zYEJMe&lHxF$9!$y;;woYRZ5>}e883FMwOl!^|91D?5Gbfb_*y* zpU_xgC?)cAoqsD+PN#iyD?P)VZv)lLrF9uS!~L_Yynq!TsASgx$U5P!a)-rKf}U=? zSPx9`J{8ZmA<4CYn&|qm-`OnqIZ#}s%ZG_jdd6Y`ApEgBu~>dkWSTqrLwdlm;+*de zw~}}HVd)r=^33w-PMLsGg^7gpj5v2ydun;nx$@ z|K(Btws>UVZ(x@`GZufC{K;K)-8uMmrg8aSCKU`0JBlLyG#Qrs+ay2oZ<8Gk|9>X= zmF&8vKzrO(K(I;dVw+b%`|MT{(gJ*3LZO(9_m;HI#Nao|^${z(+e^p$kgcn9EYMdn z$&EO2xVrjstYLFZdoA7r1fw?=mzD3pr<7doJ%P60)C8cUdi16-W(>v!3=p6ZkbD*` zFrJaT7h4B{Jum<`2(abpqB#_S-ZR#{aG?QYQ`W(-EuqwSg5X`pCUiJ4gk(TC%kYeW*{W9ocnW7V{YdrY|-%u$sjU& zEJb^_F%J8MtmvZwTS{uvS0Lo2_S_kiN0>JrTen9kwlV#QN5&+)x$+_ioV??5aPp23 z;D-b4TVej0Jck^^zmiwmVc+>>Vlk2ZFNH{b$h$|xTVq6Y6W!3ZrW$m)WuEj1-etsC zP+E-eu$u{^91`TxPMY%lYRA5Q0r=4Xkmftc+Bbb31tvY##L7h_%}6LAxBWrkBfZ0l zB965)pHb(0t_c7zc4kJ2g)|$^& zo!$_gK>W=7=I){32NF65p`8iQeL>k@^=lUYM8{5FDxz{-8wV7gE9fOW3y)!1aW1i4 z&35X*Yo2WBxoPi4T137GKgHaj>MV)I3_s0V9LRX2n*2<;Mqu*jz%wh5!}ty|7TG=S zp~+G3vf@rsrNbGKqYI6_YrvG-i67HeA}yyoH&>Q%u21rzSTh#ME|F5O+FmEA+}Wr1 zN&iF8cc@Eb+RlBSUKRQADF`Qp@tR0k^1U!~{ILul*Yn18%1gU0i3Gt*4H}S(I*%<*rwJ}QoQfe`QDnk(8$xymXBJR(JT0S z3%)`Xyk9oxe*k|W(H${F+^0b}M%=r7L+F1}{e^Xnakf~*YNZc|zi-+&RL;6D%f~ru zJ(KBfvRnJOr?am3O&vfhH(moh4&ZdknsuB}3=ve_11B%!9uWoE6bMxi^d;x4HDSEQ zWi^|<3y%=Hx#x*l3}F#hd0qqSk_%!L>+&ccGyHywy(=F7&fauN@rZ@9>n0yT8O30vcm{5ErSAO(10aW5Lp^WKOf2+rDsUmfNm`LS{pSJG73*}Je7oI>%;dd zCS>5Z(3|=yLzKw*WfkQNYp_PeD#GQ;g>&(|KlG}&Jd^60f@H!;(JBuRv*yh!a^|II zMBia(ZXbC@)Fg8`f0TIGgBQWQ$0)v99l>5A$mPuGTnCIMEfDRONamDEvzP^THyvrlZKmryki;a?exf1M8 z@U3v;-RKA+E03+fePX;hDbJaZhZTE=sd;wf-BS~d&FF6 z<&?pS{VBNTx8Sqif~$#++}t_twU6vOePG2j$#j_RlF3HwE67F^{{r^xsYwow{THz6 z*N+x4_!EN=xKCHtK#k(|b$&72Cq0mLKXePFt$j045z*mYgmruE@f!D=7iN3^f|+Lr;6(#-{ljYDs+pP@M4HX6D4F0Q_|7&jC3+~MZ_2@^p(ZKo5 z1-Nx=f-A}iD+choy8s`BVbr|O$3NND2?*^t&rRz!<|Ja8`hhwRC#1Xire90|UX+Zp z%5X#?*l;1zlEFDV4LjqLVUSf^6}xzew3ZPPfeL!5LH_Mk6Z+Ix2@gWP1wBCIefKIB5x)J*Gktmfu*o z{wu^#&yW^2@hLVjzGzR(CV$U4Yp?S{J@MEc3`Ea4-lT>T_>F%*s-)AZr_U993}4Z> zaksOfC1dybc3=W5Kbojw!lq}=X6xBKC(ICHj0a|nP^VDiqSB3nwlW>Raf8I~cl|Ok z&J_IXxc?2{tnwS+FyapYr(2Jp9he~y!q9OyY0Tn=r(k8KvQxWNa1@laV0Hvi$Y$&L z%>gtpmii8C1 z4RHT=I0N+1&fW7B9y&2?02Ed zS0SayV?7tQobhedri4PV_t}@C2~{;hf7kRp#^`6&vq)tZo{eZ=8V-fu@oK9ZKTmXL zS-(AKZKy%iyBWE{ge|0-V`YK~UkM^g_5Lgm&bvgZTC6D=j*jnI4Xab5c}z{W%?0(KqvI#&B173+YK~p&mpn;5JI|`H zm=dim2L_9Uwc$Ebt{%MZlBYcj z^9><^)vL6bCDu=#l2t=fBi4nnQ9^e1I?k-hz`@a{X@{}!8PfX;XCL;FkurU>!wXs+T&bs zx_7XwsMfkxDw4ZLB)cUgM?akpTjih++ZV`JDpGdrC1qq_v8EnbTA~ts(M?mH7dN-e zK3Z{&M*|%<)Q9eSah)5mSX&;V6fa_Z88Y3>3XJF>=OTc7Vx2OD$;A!n8K&d~yX-j_ zH~qZ}Xe#@a5H`s{peL(>QY?frsJG~vy1+vMuYR4{^W$Gs>|iQ_sNYoVkppI%byIxi zV4Iv@yx7US?ahY2YCRasXD8zdNnPr`X_w%xL=iMAGH!fN z;Zs}wmPWgngXyxP8+9>JwHeoXUpGzs7Z%eIJyXNriT!x>FelMBaCziv1a|j|L&kQ~ zZ%yX_re>DlLITiJj=V&DG&t=f?cLDlhl%d(>&L!onOR;`RxXlf4vlX5^+qI9G;l&H zQ%;S-Y*PNcqEKQ^zBeIh&u~@X%r?K1sH_yKv_FYig(ULkc*MZ|8>6?L9yA=Sc5x!l zH(fpU+e`rv7aW)|F&Xx9Aj(x)@JKr%Iij}yK$=z*H_{~Zd(GISW4=k2Xl~hg@kW!f zaM2K-UR7>O8DPr(=40>bcaZLERI)2yl7w)m(f$HRO?uLBS7+!eZAb`gyq+{>_+YNo z^}c<^0Qm#%xF+vQ4=*S3mtL}IqNXuNoX?2mLgFXwf2E5p$c#m@5y*9Fr^1pxJia4RHxgNLIBF-RrByw^FnzeU~mx_F*M0b$^E5eR9sa8zjX7VlMicB%Rv&>9}h)@7utN?HcK_Hutc4Zv73kyQ}X~`^Fyb+ z@u$5=TNn4&`AjBmp zIc_sy?U40=;Or$+Gq!i3WTxniO;qZDZ;MVc4xXN-9Mxy^d{tk$>_RZ?J#Z9d zh#Qaz@&dzTq!1g_4&-O)Vl<>VbjO{{q7O4P@|dAcx;T zv;N~9K)JjZ>v;r*sI@Z7NMU>YxIYktE5LJ$Gn+j&1Nglkr8@l*Vwx<{Syo&K4g$mM zXPl%Pq^2;OLosE2vBE!m;K&AYku-P|u=^MiMB@;8>b6rs+li4FO$D#w#!HUK4s)vq z079q>#pUvp3v-*bN=3kNm?aMse>yNlr<+WAZX$5y`aCTM&cuL0iRxoShc_u}WjM~e z8;Rn0C|@#a3Rp=bH%i#1EXiYVTKAqDJ)J3c1~Ym_V!sxb3*V5(aVW!ZjU zDqo?~{lYofEBZgr?VEZ9%?R*7K)BYxK@k4)+`f*@#}6`AR+i=;|2)F)XOvnXTYvm` zkK1%Oppu;eK`}DsH;Dx`Xgs!ao_2F5T2V1;lwO^1_>Qp!e2QN@Cje_WR&F@t82E)j z{7qaNm+KH(_}z>Di>FuTqhH%v74OmQ2Ffe%-JW9`a8bB=K4-)K^3-GpK)11ad=q)S zv+dPj-1)jUwR@8BdVl)*@N(nHHnV=(-kxUOvyfHkWR7CVqw@H8=jn z4)>{6K!5+&W+Q(O+ntp$zrwD2*0#V?pud->NqgDX8_$B0SAkcvG1tVQoREyLmegHu z|JDwVm0eetzKrV=n``f5zNPtuM3sG6Ml$}(S`(A7?B(3Bm4SsH{?(`#t1mm}Z`r1X zglZg}`8NsT8zaWpJRKGu0T?W2`003V=cVP4y|>bdpB#fC`_PI_4| zTJ2`q-Inii%jP^?F*h~r6!_G>ZjVovlPL7g`-xTN$Fu+I!kSUNu!tjR?{3M!$|W$B zRDgKprCx+Yh*XeF_|@%6Xua|l1ghC!aYwJ1s~LHwsp_i4k`f!A2hI7pShX!4TZ85( zeK-Y46sE+A@HzeOYgeq%;46maoTlBot~faEUx0PbH+{dBdv8xU*PI@x7StjFb+k7+@E#m*zk2GDI9i zOjY1;PcDkRp4YT|9LEDZD!s58H+aPJrI9kA9B#GUj!@ogwc^v@GmAYpdfnCgKGmuy zw|9x@s-V3*4w*DpOz`ThZfvNOlmwHduvL(0$HtCbKR#~V_g>E&I^Vx$ryTj8ro=An zyb_V^y_OAxO{{qP`{pXZi=2`ch>@n${LIfZtT!&~dvblK*uSC!Mb$|W0V^v@^=H3C_gULE`*1AK%O$VFcCIWC1*Uhz2`y zGSCz6o7x+r0T|M#OGHDO>WfN>b`p-LF{38&&8B<9M6~6Z5K)iWvL3$5h|Ah+a<{jw z>)1TSHca3bXd=9 z`q|14k6o@o6`6oqw+^;)gk|kj|D|&|3$f*{^^~){FwU8pQaFJ7(+QpS|84F%=r5__qUFNVOX`Yn~I3KRI5<@m6(o@6L)%0^Wn__-U|H& z5MdI%ECGFlTX@~?qn(g9&qm9dA<#55!5s|C;12R*a7P@tqgJ*R*6H66#PbL(5YOpE zT{PRj2mLGh_aM&+2T0=L(%&eJzv2Ht`TKysqx|nG2zXjxoxbERL-8w4J3baFFGbfAd@`+Xy>r zK)DVch6Nt>+ZvjkONIOc+Rf!f%wy;-#jXMEQ;mFLI|R^o)}KX;rDg0IdgzD+M|*0D z(KKZn^~$v2-eu@kKENP|n8T+ccB*1xtEf~AfD&c5VfwoNbP~3^n>E^diycKIFXlN0 zTzBVpe>f3r^L^d7`+jJ5!&5c1!-rhrF@}!+a_4!EaO~pq^LaI^6IVD3wEp;$wHm$| zWbrw>niOTbP0VfQ2$eKyc4KMRSXqSKVq@Z(sJY@fHqxT?>-r+r@8`(=+{4)Y zkEN?8o4N@@7n1PHP>r?|{>({V%(SO#%QoLP;;@W`7xuL&Fj9A*fEt1hwpyt zKLRFaJd#p*PMogy9CCot_cNzcsX}e5k|$K7s|!^dseUV8?^Fg_s(y}q2N<}5pI=wf zNhkeR(qqg|V!ckz$-X~tJ~3B|eJ+8AAzK#ug?oC6AEvbJ&A&!4Bk*QF%0e_J3rE>P zG&{?}=V(?6$<)2P=hp|A1}d1nrw40@VU-+s*C5|Tia4Kh3xW_!a<;%m6EvF~yzh=Y zg+|eF?vF4wC4ji%z!Du)6%{IB5eiRZc^hl;qh-`3trK*vP2uuSmvU5@Z~ej=tVJ_j zYd;F}iGH3T{^dzL12tCzS6+iz3fu@3@rC)Ek|tix#R%_^c&I_x z_WK^KgYf$G-K8{aKSH)9m1jO?PhuyPr@d&Eos>g1m7gR^ig-qWa(8N(RL&5 zRp-AF*vULgK~)b(aiZY{rfI~Kjg{Plp=gZXt0qL3BehF8pJ|Itiz@YKo^yxcC|%bT zgZkX&E|uN?A7O6+6xX(O3*+wY?(QBWxHazX?vP-?-QC^Y-QC>@?oRLog1pW-_uluN z`@i@8>S9w=HDiu3*50eIJCm^NA$Vs}E16c~8{Wt8-@WXRw(%X{pc*NJzT?xN0vl$@R<7n~WB-us!=uO40uKD$WnxC5{l7fbaXIs&=w(YN-x zNF#$z4WG7Mbzj5)TPyBoZCzwO&hf3-4BMAkskuDG@W*5GEr$A_`hxYR>J$3{)#)-T zRf&X=5){@gBr}b_v4cHAqzw*%e zmmVY!EZ#O%JMpfm2Bg>*o5%$M_klI8xj_kC9x*P*)Zj{_JJOnx9vPh3lkR$&(l4Kr zP?uyFyxdOa)rlH|9q7i%R@5z(U0IqJ~w!7B);2=PXTE@ z=MJ)4wmfnj-kzM$fQ&v)uVB*{{XrG=p*v$&HDrVcVNK^*oo)gCdE)6^w>me+gL_r{ z*{_>5!`_s}BxmOWG3nF(3^S_h+oO)s;TIR}vB#UQ;Bu5#$qCiRs$xZZOfG~%IY@0C zwwFySW|TH3`IBNP(Vh+b*Q+HC~38!5xmN!4? z8*O6LoGFza5mje=FD2r%3t4?A+t7}E_jWfcE)Z3~)?CgmOzCX2o*=HZ^qJsS*~v~p z&(0uv)VZFop!GeUA1Uq9j*Zc|nD{U3d&}Uu^HJIDUJ^ zJ23B2EafViG3Rf#J~!Z7ZW?D^Duyla(2T80vIbJS;op@5# zUBySI{V7{Ym3x}Y{>-AO~hS! zB7`Sx=c@bB%ew>G_s6u~lo6tX&G2!B308DMD4VzY{d+=Bp==#}zE{zAN_m6cPKq`! z-TYfwlZpeEXZK$1M9*IB`j23Vypt~|Lm8`Vg2(SHWQ}1Yd=ihRIPrxhOUSMq83)3S zn{O{pKgUP6evG!^C;t45f_~sB7d6hx3PqJ6OHK+CCjE(o>d-Ik0URa7%nU_rq=^Vu z#o1Kuw?BecB0(MD_49t*b4GMZ=%O@PY36Oik1{B1&xS9$W~%kb-ME@n&TL5<@kY;* z!=l5n5w$yDm#vu%wYLfI>m#E3ilouz3}+Vv~HV=er~Xxf8TGpo9t@&o_O9m;3EZhld;{yXfC$4 z^}U_$Sy9!8sn#NEp#y;FA;o5v3nMvV=U_U~p~;y%DRgq;sWRm=g;hj%B_+YetmNC3 z&5+T0##FlQbL7c=mT-IXz4R=;$x=@`wWJhT{A$9BBa^DWVn+f@#QNpcB{bx4krpcR z>cCmY9s4{EP(Lz_Yr2``y`M=gB1om9Y7?}2RAF_TRiad#yv&FD{Rmm?>a}EHhW4AO z(PhsMGoPuAa^JF6FS=2!ryPrtrMefeUHD&a8CZU=BO`AClh3>IU^!DU>MeZ)1h>9+ zJy5`vX6Uj(>I@-PYT96M`1*HvHwLZ51lZx*@5rNMMN6K&=1xe6y|&EN-r9Cwe?tJj zOo%ilmoUJ=8)@`>x$f;!!eSF~Um^_aAidYQ&%rOCgOr6FeEfvWZMY1#npyp|+p~wa z7I6-;D`{KUh?=qYur)yzsgLf<)$J~`$7S}MI%MAoge{Q6s1VOC34tN2_8c_QGdI>wfFH#G$iAg<-De9%L@RN{|| z@UN$rT)wT+du#^?l}ETi1SH>|Tm80bFZtc?La zq{=``D@EfZcA&f76$fTBb3rZ;;b#fio+0;UX1$QxCa)K_qu1rOTp$UK{N#)HR`;GQ z@ipQmzVn!MVT$orL)_*dFK~pGXpuJVx8r3Wj9_xA+Al7Wd)u0PKyK00yW6Jhv0oOt zafi2E1x$WGt>ytfHZ#ZjewqWcddoVwv#tia{k=qywCtAtlA7Y^@R!t|C97S0QG?PP zMt9cCUoozuiwA{wx1%67Gi|vR0Ug}ej{EZ9Pxg*(ioZ{`-TQ3?fByfo18_v%=YHLE z=4|7}LI(HuI)HEEUWZf4c6A_I%|(_e;9iw4@V%B7$a&EpXVPLIqi=+FX+i!8b&bet z+N>m7&tDg%J&j|M&sC8v`uvq<6#EcTdkGWT5&v)UYt&!dL11)1NUuC^ zO{)O4g>o8*1`J+W2jfM<)H$T(6=u{#Y(|6BHVf4ByNtQr==xgd`sv;&mV~@{_%m$s z-KPWmjSKvP1T3ydO;^RBIE>(;%Q}^Eec6vIGz|`^UN-lJ!1XQ$>dnfji%Fz{kSLqO zB;XUpQ%LJdQLB2Njvy{=S2I-?=X232pRzW07DuM%d~mCIacc;#;VFUTh7LH3HdIJO zt9rVEz(utZ1$t;}N_W+*>dyY+Y@FDBg9@_8#9lS$SvBTO%4{{9Lp7{}ykKZ+48j)T z2}r5F>t40iS+x-o4j=UQrxlQ>6#xA5YPAx{Sx*~`_W8YPGiDnBm-b%|>=eu$mrJ7G z-P~>DJ#Bz{r&NXqbZiE65*4It$oJd_X{XDv_1taLJ#Es!LuUM2x;a4#%?!&tZIaiw z8@KVqE55qhtWV-83^Co3HQ-upo0SqZj1B78Jaje-Y~Q6j04eTOk6UQ2#tU`tAzUp* zGIep%cXLjGik=8>Y~%UOv$3dlH%}ZsYB@xcxqRwszBG$INyg6g2{Els&GwXvKz68> zcBuAi^(Hd_QgpYugFSF73UuJv6L>6ucbJxOKy>MwLtFC$deDo3_Gn)~97$()RD)sl&cp z8^q?YC<`O0uzFcn>XDb@r>+d2K9cmuUXKRtb9o7>h%|;ttu~F$m3>b0*I^5^A~7Xt z^Pdt`b@DkM?Dh*LAdjmhl80l?#42vrZpYSMu5?6BA4xG{&xlB_g9fDTMP7aw)9MH_ zculPpWcBHFs+Nf47=zXkg5dX2?FtXDAPS=su+n?+O7dW31HqC0Y(^#g9srH$Y;c^eIw09Dx@GFqUjd=2Q(dP6RXwJL{|V75SXRUE_g>Q>V93*eIUa2LSt^BFm$pJ=AsZ7l;WslWBMTp z1tCcoX3u9G2rx`UG!Yp(zfj2P^w8@{EA*_w`m!3nXhV*CsbC@#o7=~bSk|9141z%+ z10k$)Vmwm~1L>PXKwy33h!EvA#daMhz5;~(&yXmf{|dMunzfEXRC z|4K1hIBXMhqJ&(YN4qw}0F+o`(k-rV7zimCKL_YFZlTw3gsTK6Qw?P{94ZJ-hCgXp4&OY(47F)*#su(e_@6_w ztPKIu{z$S)NOt2P3L*Fzf+_@N|90u8%-j+7E5t1>(?ZA8E0&dk@s~&rW=t{^Zjv^4 zN4)>$BO?l7Oy$a?qYWwX-i$~Z5F=;QgW~^51&6&Y7&i*Ve>fI_&+v!#LOBYkUp_95 z@wpX&gg#H(p8@mvKMxpyknGp!ozvsf9kA}3w)qOo3V8HgzIL2mlljv_KsO{Kpb+Fe z`xwT()9+jNzLKl>ytSo3I`tdHg+Wc=C&D34WG05APv|86eiEJ_8UQ&C2Bj1DG3Y<& zm)nm@{7#Sbdvtg(b#`M~XCU-GWy7mc!I_VvtBIqhjib9uY9cgP7N+ce_r}1VkNAf{ zIypWj8jD)eXw>Cv)DrDjD_Qs=ezGcKdusbL$=j&zal>d7X20ATo%WgN=jh_>@#^ED zT>Ym5*W=mR*ZxZGg-T-R#{RA%=VGW{{qd|R^;%O!<4TPN>Z7em?I2&|j~>(yeIFT) zp0TF7DURMb9MSDAcQ%BY*f_-a{zZq8#nH{n>CK?gosLoB4kH3_N_hPz8gHL_PgH&1 z?}IUEtGRDd$ojpk`X2&B&<6>|s(>RX%H}ir^u+bMWCR)8UouZcT|QcoH!pjS-20D{ z3gIKz=~yZ0$Jlr#ryJfZc<#2fJ4zPTH!r+hK2y`%Q}XU_)n0E(S?*PU@qpA%aJ4&K z`a!F?Pj&Rij~1W4xWA3Kzxng$D#)D6wk6{yEtS-o0?a2h*l6na=+_hPUd$K=E<#s# z!d97uDDezTwKdH%3@oGa9TrJoBs5NFWOsDkN}y_U2QU5>wz|`^`U7|c(`nr_NbWsm zt^%1Z5=so5(kXZ9rUrZXCh=M9C_nkr0Oq&CCU66^bt z>-WAUS$fA?8KqnKQMxD-KbGSpJr^kq=WKp`OTgND1mX={q~@YU zGqW)=uun5{jLfxujvw%LlXHIqx|WvNot}B~vhnk!y4J&PpvA~n$t<$_Jz=5SOkYSG z)WH31ebN%{7a*{|%{1_io|~pz-e5dS^&1jqAlnh2>g6~lXiC%nMbA0X5xjo?KlM2H z;>wb@AYNQhXrDgbo81;lZKpo&?;XPPJ`Xk^(kf_Je^s9OvMVwWNbyM0e(NPFs3l7S zIsgw+p;fH}UX2=dLgM}VV8xr(FDbC|NF$3}N)|f{YZDV4TY5zbR3nuylzRam3#}!d;7}dQhy#Oj%Abnp37S^k9x9P)3+QD44OP) zc|!CG$1_FswjkYR2!F&tv- zE<==I=8quY=^>U-7&w#}PCeQZS|nHnT2E|Y<|xx78ILZ(*d~6TDu!U^r}Wc4a|BwN zpWLm2O1XU=nCD+WnVv#TCCOL@M=-@Jz*RI%vK-McSkJGjMVM#s!WCoxgYnWn5Xss{ zgxL^mY0fN1njyl`=<<94Qp88PcS>j#W_}zdi!yx<3dM#vk3hpB!*M{baIKg^9cl>_ zQScYWzeJo1i*o!C0c7?677;xp)+pPp|F;0vJlJ^z`Ys~#jY76_lVt zsZvuAbdw{_PZ2l)bBs@Y!X=~`ppX*b<~?baUueGq`TU6w#X*{36uep_5mnkV`b7B( zHbt5dzK>CWi~F}2=l`o1OAU_SR?U^P>FN3+%2e#XwYB-rHHjK{Z?G%0bNh1XZL-0; zr?qu(zw^HMnXu6|Bk9%1rP4EPZMZjX|5)Iy_tLEPk?(wXdz;)B%Dh5uGCEOv@~esiC+%5L}|P{TZ`*vtb`aQGe!1#6!db9~6(KmTYnF+G0`y zEeTuLGU!giX#iz?edtc|D!&VlSUUSoJ=JJZMLz=1Hm@rfUcRs^7!Rl2Y?v~yE9)xo zF5r#}j6+dhyku}|HYJ*ZhS_fp;pnlDhJf`s--iBZ`KQ!*Qfo(;OwOIMsv_tSqpl_1 z5u<6{3?n@e=+TiaaT0dY9~F0WY=nQS@Bj@m*S8HDlvaIxzk5~uqWmu%DtRYB9q%sx z*6}{R*}z8j{~+O3pq1r2{P?1nqOAYzFDuZ~{#fy({BMY-GN2Xc{|_rhj1Gf`51~#% z8xrrVy(v5j(cOsw4TeDvgVbEYO=Fyhv@8`+4_NDFtz^1 zxl<3|k~&sPu;k0Z6L0{vwgwozdFzAy$_P0Jc;3o^FEc1WOghE z!;WGu)$k>vkwDZrU?Rb~h#**aFnmtgUxJ}MA2X@p0xfziPNc|Rst{814acp~3@>@9 zDeb&C5Gg<8wxf!3-J73rxrqe<#fFDuDM54a{tm%x#v+Up#YXB*KGKCyv_We!!G>Zo zMDq`7y#xbeEoM{0h4CNMDu2y?p$_9E7oGowS|1YMzmOsDkd0-djRO_NNq}N4UA0%H zzN@HC@23e~A5x?oz_ZF)gcQioE|Cr$#+e1fh-ou~HlZUz-^sKRhKM_a7sjdWw;Zd) zty85$3ms6d&v%MqgG1-fiK*JbxWXayAFfIkqxn^h;Pp_(h|>jTuk=vATOv;9%j1X4*{Xy2k)s5}Oz((O7&y28@aTVL{|Q97J~6#{CE z2py!2X2U}_#G8b$=`n+sPo}RvH&GMGX)Fo_ z3?7YT_-L{;jb)=M!(v>Kio`dB7b0UQzdT_d$vKS-K7@w^(@e4AxWwf~W0UzAXqu?9 zhFaDIj&ieFif$nd!w?=IC?$f^_=vhXFIf-UW+()~7;y-XvG07eER%7i3|u!p$dYpZtReZ%uLkO!Kj+%Tq# zwLDejaC&?Q>!=!2{VwG4Z6&B%u;LT)bF-w2-ta&LQ#IE&hKEh>QT5~`S6HpW4zXy` z=gWk3cX97m^N?z%!URF2pNAO;3%*&2Hk&!EbMN4^b;30nd6HaGTId)}EMB;81P-*H=IylGF?nQP!J-E@ccQWJ;lA6yr~YCyj1#K!Ws4 zorWl;bUQN!36px_F>V+#$SnEy@CF@Mgw;Y+Ls)vB-qMY2LiZGF6tyE7f zjtR>Er!1}&nHTX=DeXsRej_S@iFu4uRuHes8f9^iKKrTPHZS7O{6(j}Dmtzr9^pxo z7qLDmRc5?9bCQ@aC2RjkMk9)uJT_Mr-FNr9;U1Lt+aD#M1Lak?2p{Yr*?P8%jFD_E`25 zO6q;-1(8Nrb9hpln+8QUZNbF7_{UenJACZ=3btVx!VsF$Lt2lF_*k}6cm7dlj(&HSIt8ff7; zm{SF{*8D7cOa;MF?D*o}W~A1sqO#N8>Y;-0VYpue=wP@%3t!a#K-`1cjjzQZ6e~>N zp0Z1}zZ@5mq1$#$bng=L3rRyOkEqDGRqw;SZQp_AkL9wPd8-Sag+cJ zDGm&_^vAB#013jcXFo`^m`@)4(v$@DY)s61H}~Jb?CPKYiWxt?l|OZe1PhG@@K_iF zE;J}PId<~mgIl>R6UfdeX~Pz5RlC<=ndIr7CbZcD*hU?|9JYa2geQxHh; zq~>#PvW5nM7Xc~px-T%qlJbl7AA(~^@jNYEkR&^{jkk3L4bJ|A?YXe=!SEvAb5zxI zqM@%69`FxRIX_T<>PeM`Ox98D0y9BLbrjQ1jdv9Lo*L&UmXVs^ID`lz!;=L?vgcY5 z5gCsbgFej4k27@6{KqLKQHM4YAblzSphcG(u|k%ZwH&rYWKEL2H5JK7)qy>#gF7@N zp&boqbNIqFeAv*!yL3^lX9P4PimW?R+CPQd^~i~`J{$_?J(wn@WO&KEZ|S-`VAGRF z1E^di8StUAAQV{uRSkBff$)K~*wW26NT69WW~Yc>r%3leXyY6`k#ZcdfDdh-g=UCz zyexN+&V&z5jhd9@dG*dE!3Ny_9hR(IR4X3iudsaS2jxGK8R&fcS*4PcF)j5foGXNX zvjry9*lB_lJvzZ8m_HH-n&!YX#py4(`F zM)nnm@@g0M6qFM?1uZ`MwEB=KO}P1m721s<*9s86y#d33yJ9bcGg>J~Q#HGr^DwST z^!x-e+t_E{lW~Yoe$;^v#HEdPc}U2r_%YVq<_M+h-_27$`|Ul%oW_yQIr>OGyfl!J zA%*df?E8g@wvr*`bbuTq{JN(+gnJ7;M2zB_#}V)= z5cD>b25Bqqjg+vmOkf{**CI@)Nv`HNaK6vv_YRU!Y{fztiv_B0Uskil4B5NiuRuf| z@mJ7W=tb6uU%)8un`^hW0w$?HOxw4@gn)sB{thG%o-%U_ZL0ej_})s}^-MU`i>F$Y0?5$Z3sVrnUZXs{<_!6C!yx+vd3Awxcp1*Gq?lEeE~Jg!}gKVHa<((EJWVSFbg80u#s za0GhxKctZR{~Cn(+cDwS{K{Ks>Wty%B=?hGz7I8sza7I7sp&H0%54;4BD}pXql<=d z!McT>((*cH_(N>XPvws!7Q#ZHY~|D14;DB{RQ{lme`@je{}mYfA0_j@M1e&w={%m< z8=znz(bs+$XUy0?OSs-|K16E8s78NAgV$#EkDOa*d`IAD>?4<$0Ocscy`dl-Hzp{! zYua<~BlmIcBb!e#0|DFCe4eeEHyQ(x&el5zt&VsG-Q#$-09m98DTkICF|N2+oqq0F znP!25zQI~82JiK=h$ZI9ZIlT!dNl=F>t;s!&@Wnu{=2|OI2--#$t%?{ z1@~ah%3}Rd@-`_O0^-_vcJqj<4kWZ)792KpJ;z_wHG>dPy6(RSyrj5FJp^$O1zHv_ zO+(QE>{;eK)8E#@zm47!w3>?hEp9TGdYrfST-*kN0$jdk9|K`Z|G<>~4WkDreO8_% z{PTZ0S;tl=5QVfZ+wJRnK|p9+fD7>#W9GY1q|Sl*$?xHN9ADS0h<>Y#X5asx!9D>> zc`xP%tU?xTgBPb%6tVwBXFYstjWA~Ihqp&nHV(igH2YZTQht=(ho#Tzx@K_`3Tv0+ zs};!}#|C>`1i(c){~o_IJ#UQnj}%1T#VI97r2hbA_gn7A%Bn-~Ousp2Z0!wYLcJOS zMe3EdBQgNd7K8_^S}aH~vyT(bv$z55B4z-dX~&FAw+s)N)IK0Fgwl3q{#)0}XlOHf zu&iSr-s$*@S?EhmD0BqJjLr*=R)0vIX+1nCp6MrqqOwJAO=zKRLODu!+6@aq1J|!T zGFv7yB|BU*CQLUci~3F~abv0m>5zcigr(pntx^EZ;k2>bruV&BwTmmO%YsU)en0Fo zer;8eq;kyTmv%C4XKfR>ya2jE?X|ZD;>8~`MEomo1OU>dIcABcI==x7fq-Ifs0As` z0=0&tAX7W{$--f3Es^F4I|MH7?21?hS$A5bY9mn#s2z=+y;*47!gO{kxhq1rF4iW( zzUigt;f&8#uiu~cgaGIXm4kv3yi}+r6q| zh{vB#7>hdvHT2=ACJY3BQjvyx>~XGEIi(=GlBJ;}n---%OIJr50Zaj?p_+pn)I}Nn zwT*MN_oup_)3WEWJ;SY#7OUc=fgyR%Qk~Hh3RvhW zE!;a{KlA!KgB^(>IGEE>AJnsdUHgH^ZbK@<+n&Xx#!HJ}Wz@|}Y_G&?1@58|adh?*Uh|kMP%g;($!eLMW(8wTu=B3rO%yL$y zVUHt6)VKFYRRX{ze>hin2CtYUp~pW_0uRUeSr2l&xWkEIgo0zM!~V`>RauVAGEa&+ zG}L-Z0Ev0`L#&!>Z$>73TEd!;)<{CPxSSoigu!iuAxKJ`v{Fe<{1+!KcF!h1UK(oWI2-Ch zNqCU?ocTfI!LV%h=;1nBMSyvsBSt+W(+ar=FRLgoEp3f9kkXQ7@ZXfg#0XF{0AjAV zxJP0|-(Z0U4;tz>Wxzho6B(DrcyBoHEYalM(@(n0Z&3tv6l6iXj}h0weriM``6mmk z^jkTh*K%I25gs6s0Gg|Jp+CLZ;`ZTx2aOnyZLbX{EGeQulo+IY?PlBjIbz6 zTZt2pg2e>Ecx9r-i=y)POHV>XjuYk2EzE?Z_!i|wmN1FixR3Y@%2K!Hf`-GS0!555 ztG&;0i-K6!puCWOy_U@|4pqTwRoH0a}2d$`Vr4^%GrW3*%C2}*G)gojJ91&%}A`D?;} zLM;J=bugs+zX*8jHXbIC!3z9~0M!u`FDCA|6Gyfen7D!*MQO0bSo~t73Uo>GZk**#Mkc$S3j=@5>P~7gA;5J? z(%LWU{adGJ6=`v(>{5FfJX1z*TwG)WRmSz^3^fATmGfIy>eT!^2zyFC|0^*wA#kp> zjgSjlVo(-H&wbRh)LziP&Y_D^(^AN$@fGgFLYU;Vaa1@1bnxL8eehVoiu)*Ui79P> zm(PjK6amhPlcclz@ZqroxSxW#WvJ)svU#Brp9PF9=ApiFw4qm<#s2xGumC&aYkhLh z!ZgWW6_Q5g^*&NgK{U|Fs>z-tvv`d4)IKsGhWJykxQsdhi<*UIIs)? zhNYD{OEXDEdxz^U4m_J9FA*b?rU{MsBeP~t0uwZPwUCjptfZ*5C&?s%W$;E71eV0c zr*!d_c_5N03iM#Ytc9k_Fcen#Z9I&osos7*Lu8SZ00fp+8wx`MGlMeUc;FQS+s$Ad zMJB<22o>>XxvM;Nl27S^d^3-?dq{rzNhY~RW1Q-4_&?O)2K-Scit@kJ*&+bd@xXNZ zy`5wJ2h8;F#UYfv zmW!FItChXQU;C_@)wi6#^I-Jslp40}nZvd?$sN$1QPgeAQ`rI^5&+Wh4aDw&I{_hI zVTXJpVm!q>?dlTq?s=xS$7N_#fjJBDOCDmfu^=3Cz&wZ;Ej=CA{rqaF?W++7OG;P- z3$39bpC9hGj`ynrK~6(P>vT|06sn^m@3v<3;>2*;*1queI5>y^n{wXzU*+8BfCrcA zk>bM$O>ISqDW5w^?CvFExKvMb#vUdCn)XS-}^x>XzP&p!_sA9$T~5{nsZkOsI= zsqt`*NrKmv&APbX4Z2C&9syr|VAdZ@U0eH+( zd<`sIUBkxdq_1}hJ~o=mdYMAxr;f++%nPP^am<2bUhIsH%fLW57M(J8kB)kwq9ndt zBosM;#K~0R&*A}zjKA1KgNMO~jNz6Wgw1FzIkaN=`iKh@}JBz*(h z`;EBFg<9Y)SI%?^VLicj@_r7$z#&Bf#JH;y94vF7mbVvNcum6D@*M_Sbi(DiDHJ#N z-rb;dX0And8)5>5V6bWAp>>8^_Zi=SO6zZ;W+C1TM0cBdlCHTV1a*6UK$b*)u0#2a zJ7^p8F3$MHK;VHBJPrV7(oy#lO4D5gUUQI}i#dG(clQoJG&gDAy3O}djZ8uKqui`o z+qE{_`s_e$fajW_ybd|ZtGzsOQwMg_QBskyVwQjF0l4c|uvx0t9D!JBa7zMv=$FlP z81&E@zUa93FJ#;up)al$d|#`AF_kLJyz604L?yU&@cGyy4KRBurzPvd`53J0%7!zL zl{<`;I{6RGP35lhUn)m^ zQQRgs<$ucC6&s9iL2+G~Z=*p@e%T=>Hlsf!0%2b(zA>(!#uTImFSHyUhu618na;Wg zWO91_j;Vv>wU`e`c8NdTYfLSma99U|J+`As(qva0&GFm0{r>Y ze2xIe`s_uro=d1=*2+lC>GQ8EX3F zC%YCGPUiy^=^1JHwlCf^)2?*>pZ)f1Q0n`6mrJI^KSH-mMrdI8VWP1zF5!}{Hj4Bs zAYYI^heZ#O8JDv)NS~kpAC)|g8t)U@W zh`w#5;fawMV4r9N#b5Eb7Li0{oSvAEZP_efJcT|{0#oW5J$0CcG4oBodnYzcdXVA? z5g=-`Yf^UVVpthFO~Tdc24Hoca&lM&EpQnz_$XRNPj1`>J3RYIB4oGqp}RRDB0?9F zV%fZ(Y}nmF{?oDFym>Arz^0(T;Xpvp{_U7Kum`THk+JPxok6!!`t8575RClz7D1Dm zC1ab|jDbow64Eq@gzp7{PEd!n5q~AzzVLg7-!_)zs!qD|!7k48ihha$Gyn$IRa6R` zl=oxy+4$q(jZnMwD?NaBJV?f;+O8p5EI(yXB5c*^qq9nqs`E$lZ?7u1O;UYD&v7@9Juj1u2knkHU=T8TQd^PC{Dt;u=Dgt zkhTUFe2=h57*V`94KgX5J-+UpWD2&JfJ)ZrC>t6bB>H^iY!Yd6qAa;TbWEl>C{Sw(}REjyWEcYbj`BtbB52(_BIv=kuPrVOGlXvK9sPzo)#0V+_~wnJDAZIa)(Wk z2jjNmjoeHI5QXPJR?VVeKOj&(wX$~d6i`{IiCh#%hb@d{Q(M+CSZ3Qx&mmck^}>BO zes^L0Xm0B@nCi_Hw3kB&f1SOfLX!@!n!soA;E&s~x=Rsi(ce`ybUf@&xfe`P8Lg_@ zcYp+Ap059K^eueG?KQQB>Y~(BzDAIUI1TL$Z@h2bw3-ZJb7TaZo-aA?;fXq23fhvmOhLXVO?3wZY$DBmn!gc5=N4s()w zd(u8q_CO@rDM5M~y=wLfd>>xH+XZ_;qF9o=YNp+{S*_J;gR6zX_JEOUo2~6@If6sg zrA=;Q3?=Oq13#Q>M>QkDxQmaLMGAyYSRpUAZr^0^K>3YzlOOthWosU00|o)3*zF1o z#O0kRp15b%nt`AhcB6SPJ5h>016hN|EBRUF*HmejEY4bJk=^(kp(l%Q=l~dmGb#0V zb>7!T8CFSY@^}m}h61^{$3dZNCJ_`F&E>N-cbt2*m&eD+Oe?F33=YT}{o2(lwS`XV zy}6cRar$SBN1w_CY3VqyVGhUy*U4z-Evdxhk`#r;?K4-r3#tt5kdhpQMLO;ad^L3W zPoj%7b@CR48+I9%c(@tng7P1Co{jcJR#cX{0dL*jXqe4s!iywmECq+=tg^BVP0I7N zg-cRdU!2Hd%9ycC3!sUWS5hyUwqP;VppEhJP@5=g;9-f_yeUN5;QEIWma?YrPm(nK zHV~i-?7k5QYZ=F^^n80h*hro2uasog|MYUSd@x!|^rj2Z3;X7T_I~`E`Q7J*_SePp zSBD($W{|POz8&9}%T|M4T|X4*p^Mtwx7+>o3kSiE`%r4}HbkgU=}i!?ut5G(kV{1c zI)f%kyavjAaO`~w*Fj>JQ&C8!fXAT9{%bi>e{nyg1wzN%abumZHdc=^+UARfaH-Lh zkhUXFJmW~^h5V{Dkk%v|=?(eUTd?*u3fMJ&$6m!Md%7UcMB!sRrp=-YGWldXvO>6+ z_*e)<7gywbvRCjZ&JSCoOeKIMm_T11xKlkTv^&kzY35pDOb*rrlc-GN>B_gc{36Fe z`KDS?(~i%|ZLnk+*!F$le){$5bL7%vb~Kxx#lMtJtq_a`Bb2a`VLT8Fd652M%Cx52 zN@#WxF|~^?FBMJe^9qjJh+CjAO}uu~JB1wfG}@655Zw1-Qz2O^DbN(GIH~hYi3xt+ z59^4H*KGK_HE6O*5M^yX0Ox|K)Ey!>4pT7nrGnJlGxPlGnvi<$y=kZHhHdg2pe25F zNARtWZ!4t9$f%+8_r_=8j!HLLmz&V}C9b`p9SJu7S+DON3j9B;EXqn5t7IyFn0l^8 zT>IX4Zq2*R>bP#;8-4yVoRqhr>)@xGF>*G!UN~ou%-V<%#3q z{DS*$D*Gu(UF~#BODojH5?6OtJ3d>l^Q|Ep*6;yZ8d>;sKDBFry z;l^^^4-9N+-Y(-}FdWRYi#{Zj^mznpC)TJ&O{m{#vF%@&x4wiN{TXln+s&n*6ujD2 zJH_THs|I}mDk@TbY%7dMH@SuB7O|v)>wJQ;vRTb)S$j!4`KMas={U-sCCBF$76}hy zx@I>H6S_`UGL#LsY;YC|^cL`9w{s;vzO+ejEw}eRQ~&Z=HZ|s(W3UvT9}ZP(rCd!KEK@viT*Ah;Z3F9pS6`eRFk{hWi`~~GTLJc zY8jr|{;*$_S$5BZfnT#tlnb8v{#lELCCwu22^F`@cw5!J!H?eou-;L*=K{vXS+%;d z*Y?rdjkdCLRIaF!?~@R^>p8DR=Y*mo#Av6mKb5OkS*wk7A(aS4D-b)3`u{j8q)0tyR6WZ5{dZ2bs0v$Z0|2a|#)%4e!q# z+p6p!GWxLQ5Yi=t=Wkt7Dkdd9sQQ5Jp-CyuxM#C8K2Str8CdRl7=YCNiLpSOXn4+0 zpq;vm0CG9|vLsBbr4{Xs+8nEm9q$Tm=$jFxNqQ8}GC(hdc)AvIJwd5kFy1p-mFxG{4`i$S|WYSTPeZi>e7BBjYqkT)Gt z>W$Uq@Xc%PxPI|LzF{5z$6h)EtaB{STdm$N=zr#7IevVrrN9q7C}8%A4*YH6=HlvL zr)g))Y~^ZZ_t(c>byPjv01F1lPapB|gz*x-FpNcI6l&CbxEkq~?@$R{2}Q;q+hM)C z?q3~8kL~2&!H7Bd0IlNEE{%^Y}=%*R%gz3aZ}ggA<* zFHAL1JVsa5j5%AB!L@C0nWoM`%j^H8OK{?7xf`g58mNotAG-eT4*MTSB@J~(lmTdeuoCzG@|HPK73oP!ps*0^3T z^AiXi1=$-`&CyZMQ&GUER`TbEWOem&a*&Vl)$j>gLGrc-QjU`GxPIAj8m(T0VnU+0 zBRWc-zCGRSvY2Wim$K*fggP43#~;rYn(lMmiNvDYVnRzYal)ah((97-8G|MNfd$-E z>inw4?UZ4r^!dVNVUBJ6`cyVeox^TlPb*hJshP3Y36-P?@N(rHyj^n`UcEgW_JPzD zaY6B5_)B1$)r+H{bOQRJ8tgaU=LEd~1LWNUzo;$|MvUx3gWim})l`T{j!7hjP zWilGwcZc`g8}JJG>-8ouVH+tN!-eZQP^WZ9l;K!*YUSYlXX+`{Z`Zy{rAOKFM{|b_Jf!Sv-Xzr?+D(;DYtR#rd(93n zd?DO5)d=5Zl~EaH54MF?smv>UW#fW7xLa_`Qrt38cj~GQqYf+Ijev(M?!dGOMycI6 zlyIU_+=rynB;wFeoWC4dQLj_#cT!o-XC+tbvy_xhpSp0q{~Vbw7A6}pMaoX(Kx@oK zKZ_Ms7QidZ&BJ@Xk|YnwO(}g9qQKRu;I}jLknZQjNdU`C>zf`(GfrP?0Wkv^V;KSG zBn|7Z%0SQi?bp+E5ijP~Ex?8lNcrjzxvmX;%@G*3X}CmrnC&hvX~npY%K+s>}lF9F>{RZ zzu>=<-Z@JtrWayU(PYjnQpii;W_k9dD}3XQjmt(dcUiB6>LIH-N`g_d_)D>UXp8h2u}-POAEo=;0V5 ze|&^)X-Q-1**oEi|58o5xpEnFic^R`*d;uWR_Nvo^>u%`>)pCG-|Y$U=`pY;X208e9@w_m*5#R47}nroE%gbo zU)Df9U5`GY9*in34f2Cq|pm%INE23LrcF1>`YQ!26>fL)A6QNpU`aPgz`8 z5*h^_180QH`j%4w!vOqtbE^neF(}?(=5lNOttab#%Vn0=>%_ibw7_6+?hefhmIVRa z%w6Q6sb|u@xyF&FQsxqq%N69bwS8a@#0Ja~VWOaM$ymF?wq1G$o*^oLV=ROtRR<26 zmjKf*(0Z@K=?sPi16hH1^P`r08aNArP(gZ(k+*6qrnUaIQ^Pw$xL88 zc7Y5deYQRHEwYdmCA^j!>W6E2z9*8U&1)XE+=8#o*V4*?@WD7b|ZG-(J%ofH7cia_SswHpee z4e5a1*%zVg=t_hdB@G_@#ULpx)$s+PO7uUr1)?!VFa_bP!S=*WJg@fQdVlvNp44Ozb}(6x<|sHr z3lAU-B`+pk?5sY$kBLPQEx3K`J$$oMbZdOSv-suH1D)IbIvx}t)So+4i5X)EI zzU@PaOiLShh}UtO(jPo4xD=e=s!@H4SThT7x10XY)cGg4M~95GIjEaFXV(|jRm`{CZC>)z{*@}K@7`To^|?3KHK7hf%m zTmwQy{+Nh(;ZIfmqlN99au7ZmG+gVuTE+9KVLq(X`fTg zt#!9b-${oksH~jydd|8xR=dJqzEL}>-Uz&>*vK|x?ZOXP7vtYg_N`3&oD(cqw~A%5 z?TdMaXP%O_#XNN;-`YbbkbI*%p7vA<%u;IFD z!)+Nk)@!-*%&?Ogz6PEs$%ger?uwA;j^Br3t1MBYen=^QT9c~~(oA@dCL3-+WZ?Y*aUFY(4dxzry&b>jB4 z!_TI0PJ4S-c~1K|-!tolZ?`W=OY4=HYMc3K%ADQH&h4qb_NM7j^_rvGCS5YBt}OL^ z`$+Xi)m^!R(eFR6pYp^bxcKy|YwdD%PcCkKEmvLhc-iuKbpRen;yZ8Czz1rXQf8U%w9RF3uvTDuuiu*6~&(-|C`~7cvy+!@Q zN9*^;{`%W*|9?@b;Q`($b{VlZSlU!ul&hk|51R!yPWQYOzrIlbj)!Ba23 zk`4UJn%JZ=7Bpfd{u_6EJ7gc=&B!Fe3>qHiV7NHbJYsFo(uq@nE!0!MF*i`R0|pv^ zVhjw?&cMOo)Vz}TkjjG8;#g4Y4BdcAHE)L>K&AJ9m^nz3DCpYJCteWR&y_;8qfNu0n}9wMfiQug9BKl}v;?|-^igAk{>hb4{pe%J z=tiLTzY#|CG@y6h!2LFK1JFCV2m?|YkqyAs?L{{Wz3+%HE4B&QEKuhe(UU|s1-+|< tFr}m!8Y(CqFLeFr?LmZo{&u7+hT1v|@MZ<(AW*InWJm;N55`^)4*)hiusHw# literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/OptimizedPostingLists.java b/src/java/com/twitter/search/core/earlybird/index/inverted/OptimizedPostingLists.java deleted file mode 100644 index 3bec3505b..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/OptimizedPostingLists.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.io.IOException; - -import org.apache.lucene.index.PostingsEnum; - -import com.twitter.search.common.util.io.flushable.Flushable; - -public abstract class OptimizedPostingLists implements Flushable { - static final int MAX_DOC_ID_BIT = 24; - static final int MAX_DOC_ID = (1 << MAX_DOC_ID_BIT) - 1; - - static final int MAX_POSITION_BIT = 31; - - static final int MAX_FREQ_BIT = 31; - - /** - * Copies the given posting list into these posting lists. - * - * @param postingsEnum enumerator of the posting list that needs to be copied - * @param numPostings number of postings in the posting list that needs to be copied - * @return position index of the head of the copied posting list in these posting lists instance - */ - public abstract int copyPostingList(PostingsEnum postingsEnum, int numPostings) - throws IOException; - - /** - * Create and return a postings doc enumerator or doc-position enumerator based on input flag. - * - * @see org.apache.lucene.index.PostingsEnum - */ - public abstract EarlybirdPostingsEnum postings(int postingListPointer, int numPostings, int flags) - throws IOException; - - /** - * Returns the largest docID contained in the posting list pointed by {@code postingListPointer}. - */ - public final int getLargestDocID(int postingListPointer, int numPostings) throws IOException { - return postings(postingListPointer, numPostings, PostingsEnum.NONE).getLargestDocID(); - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/OptimizingPostingsEnumWrapper.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/OptimizingPostingsEnumWrapper.docx new file mode 100644 index 0000000000000000000000000000000000000000..7821d36155bc783e886aa7c6e11732245fae0e78 GIT binary patch literal 38185 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/OptimizingPostingsEnumWrapper.java b/src/java/com/twitter/search/core/earlybird/index/inverted/OptimizingPostingsEnumWrapper.java deleted file mode 100644 index a06637c1b..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/OptimizingPostingsEnumWrapper.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.io.IOException; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - -import org.apache.lucene.index.PostingsEnum; -import org.apache.lucene.util.BytesRef; - -import com.twitter.search.core.earlybird.index.DocIDToTweetIDMapper; - -/** - * A PostingsEnum that maps doc IDs in one DocIDToTweetIDMapper instance to doc IDs in another - * DocIDToTweetIDMapper. - * - * Unoptimized segments can use any DocIDToTweetIDMapper they want, which means that there are no - * guarantees on the distribution of the doc IDs in this mapper. However, optimized segments must - * use an OptimizedTweetIDMapper: we want to assign sequential doc IDs and use delta encondings in - * order to save space. So when an Earlybird segment needs to be optimized, we might need to convert - * the doc ID space of the unoptimized tweet ID mapper to the doc ID space of the optimized mapper. - * However, once we do this, the doc IDs stored in the posting lists in that segment will no longer - * be valid, unless we remap them too. So the goal of this class is to provide a way to do that. - * - * When we want to optimize a posting list, we need to traverse it and pack it. This class provides - * a wrapper around the original posting list that does the doc ID remapping at traversal time. - */ -public class OptimizingPostingsEnumWrapper extends PostingsEnum { - private final List docIds = Lists.newArrayList(); - private final Map> positions = Maps.newHashMap(); - - private int docIdIndex = -1; - private int positionIndex = -1; - - public OptimizingPostingsEnumWrapper(PostingsEnum source, - DocIDToTweetIDMapper originalTweetIdMapper, - DocIDToTweetIDMapper newTweetIdMapper) throws IOException { - int docId; - while ((docId = source.nextDoc()) != NO_MORE_DOCS) { - long tweetId = originalTweetIdMapper.getTweetID(docId); - int newDocId = newTweetIdMapper.getDocID(tweetId); - Preconditions.checkState(newDocId != DocIDToTweetIDMapper.ID_NOT_FOUND, - "Did not find a mapping in the new tweet ID mapper for tweet ID %s, doc ID %s", - tweetId, docId); - - docIds.add(newDocId); - List docPositions = Lists.newArrayListWithCapacity(source.freq()); - positions.put(newDocId, docPositions); - for (int i = 0; i < source.freq(); ++i) { - docPositions.add(source.nextPosition()); - } - } - Collections.sort(docIds); - } - - @Override - public int nextDoc() { - ++docIdIndex; - if (docIdIndex >= docIds.size()) { - return NO_MORE_DOCS; - } - - positionIndex = -1; - return docIds.get(docIdIndex); - } - - @Override - public int freq() { - Preconditions.checkState(docIdIndex >= 0, "freq() called before nextDoc()."); - Preconditions.checkState(docIdIndex < docIds.size(), - "freq() called after nextDoc() returned NO_MORE_DOCS."); - return positions.get(docIds.get(docIdIndex)).size(); - } - - @Override - public int nextPosition() { - Preconditions.checkState(docIdIndex >= 0, "nextPosition() called before nextDoc()."); - Preconditions.checkState(docIdIndex < docIds.size(), - "nextPosition() called after nextDoc() returned NO_MORE_DOCS."); - - ++positionIndex; - Preconditions.checkState(positionIndex < positions.get(docIds.get(docIdIndex)).size(), - "nextPosition() called more than freq() times."); - return positions.get(docIds.get(docIdIndex)).get(positionIndex); - } - - // All other methods are not supported. - - @Override - public int advance(int target) { - throw new UnsupportedOperationException( - "OptimizingPostingsEnumWrapper.advance() is not supported."); - } - - @Override - public long cost() { - throw new UnsupportedOperationException( - "OptimizingPostingsEnumWrapper.cost() is not supported."); - } - - @Override - public int docID() { - throw new UnsupportedOperationException( - "OptimizingPostingsEnumWrapper.docID() is not supported."); - } - - @Override - public int endOffset() { - throw new UnsupportedOperationException( - "OptimizingPostingsEnumWrapper.endOffset() is not supported."); - } - - @Override - public BytesRef getPayload() { - throw new UnsupportedOperationException( - "OptimizingPostingsEnumWrapper.getPayload() is not supported."); - } - - @Override - public int startOffset() { - throw new UnsupportedOperationException( - "OptimizingPostingsEnumWrapper.startOffset() is not supported."); - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/PackedLongsReaderPreComputedValues.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/PackedLongsReaderPreComputedValues.docx new file mode 100644 index 0000000000000000000000000000000000000000..90729041dcf222eab42b4b2e5cfe08b98b603af8 GIT binary patch literal 38747 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

    1RBp-vF-|EjZq1*qeI zYWI3QM*TOK!S1ttv_s)vKvrm&kT=U=(#`)O#YA&`?HQZ?^8R1NUvv3Hv^zn8fDWMl zqg0~3p@V~|mGPf-R`tqjcE31KIyMS*nzoFf8*HU^D33_0)}_fT06!7{RPz(a@|HaY zHd}UscqL>w!6@nM6!rRPqO-%kZ%~##4bCYGE?$ophTdlyNQjb}itT24vC!g0mxUoA zD1?DhhnLF>^JmN3*$ywO4y{=-uqz_j-ky6?y>fnRFlA#`aB~z4n2&ieXZ2$-`)8S3 z`|^SO-4IoEIgvA6WN-nd)77D;ss*Am%`i^ddKNp&baARhbM>zeJG8f)wi>bdH0JO< zY)Ir-82beN%L;~V>~GrbgiUucP8X=vJ7Xtjy_;cn4+<)kXa{)*uyF~b7{2Iz$+A%) zyf!bsxrM2jCc~^4w`0K%vnmtH__Au))JPUEw7mz|zlV!^v=x_ejH~!Oazze+z}IO6;vo zD3=M?iC-`RP|%7j?#lh)B+*U+?^B)E%fz)4LV7F%JgAHPhc!jRx&TX5b}?GD(xm4TnweI zVS2k1mN@z5yUCU@UVvMT^NYBfMW$z$BnE8Q!4?LZ-dD}t4JNoE=4k#Jg(*Dd^w9NOq=m z@uf3x6a6N}@JWyFj_oH58H`aI%`b>`*CAN-evbA=)H&?!8#02Kaoc81o_F7fWclBV z4a?OXDud0AcE0s+oYNFnA;h^g7l*EDK(E?}%F&iga)- zPeD*<(UWiGzO5M=jkqn)VmmXePV8?#of)NbQ`h?RlqBpI^^(31p;qmoypeZ@nb8mYcFi+um14{pVu$My{D(@RAwIykge-B74 z(FRlp5V5KWH_r5Z@smQay_FSBLVh-!gLT6 z1102qpM27LzkS73Z~Q@1LncH;)pXH?Wkb^g%9!WA%Z>lsJ{q7;8UBPQ>hpOc8EJ2| zfnI&qh@we3p*g*j?324&nd7R%choTG-V!pso^TA9;VQO7yIm$4KC&xA0@W~9+^L}B z#_;(OOV^+kr6FA!Vg5KK4I}yeL54kZ z?87q*Ml7*xp(1l5=BE$^YI|<5qafjiexLnRBy?m1qV1J|AuDZF<%x+DHcq30H;(}b zB8hyZFh=wc{#;p`-Ic6e{nnG^ZVXA`TURzJ6G9`FlyZ_Z6M01a65lI{R2}ieQkuh% zh_I9*;H9$e396~aEhq4^v0`f#pSi;7@815LN4^?X0|l^(nM^rljRt1zpJ8ua+oGPd zyt$l#d2R%acE4SM6mH)AI)!p{ZHKF@DAr`>Y3e;G2vKo`X3o@iab(0!5>~cVzaHkG zb;-W50Vx_9)=+M9-0RXbOtZ@9KRVi4ne9b5xwWjUf!4r-zi5+Aog|5;SA|*es{;TYDoB&bN00ac0+22NOd} zL;62k#y=I#)TOOg*f2UCR1jNs=bl#_Lt2DSm(CUn;E)>yBkP1TEGXm&jz~J-&TPB9 zbl0kSVNM%*tIGL5ozA?bSm8FnA8KPzE{9Oa+wJ#D|00DPBzod;@6=YfoIeS~1O6Rk zEA@J>zNg>qV!r{p7-W=1}pJiHNiTeUu}`!_J7mAc|21- zo;>}q&Ty{>8j9`O@O(aP)b7;uLKN>ismy%6+Fm}f=6$~jBo}Uig9sE~1#%1Wmm>5Q_JW_mwaFaT(+Fx}bSa{&KdA{8 z8%zjj+H=Ly3ssoOE?WX>jKdILk$$-XXB<7NttNzYrWiX+U5bs!KpUYGl&C#i_&JrG zXVWWPS1D-F@>QV;nkWU`sw>z_t6F)ASbWHmV)d)AQ{mVG&Y(YR0V5I0El!^c;UitD z8P!@$y{&+OWpr_&U{aTxf7D9U42ePPx#Rak@P1d_4QU_VZ8s)Gf~A5SRo;?=D%XSv z|F`X+mdI$;ny+iU`inSWW=1_Q_Nemh0aC+IIektgghsBZ$3K?%lsj(>S|wL3;$LMN zq8B%KU%R;00_t>iYYKm_eC2N`b)>Yv44j^0+v?j8Ve+1I`{g3bePL=`R7hJUQF>wE zx)^fqdDFT!?Kr97u!61o)u}%&Yem!AOEYEQXmmMu+Jt8}ls?Csy3_1eT$pMw4l@Qk zh)6%VYEvs6Y@QSZc`mM`QBXCjJ}^N9(_QAcC&0^-84vMg3A6Zss5#( zI~9E5rRiz^@T~7> z?_h1IYH2}l>R@R3=VPxttQw|=0R`y6LwGo5xPU7NWmW-^94Q;7Lj3s`L`+*up5FU< zQ0J!e51YY#OX)Wdd=@U5MqzP#8yL4U5gGi4n|=NpME?_i0m!rpL=#10Q8mXVXK+GU zP;{!{VU!(BMzlFFWj_#On_{@b@*wEfAsdW3pU)-zKA{#W32tQdELfuS`=+Fw%bv=( z7;;F@bQKUBx@YCI8Ed5el}#|I26le)%m1Z|cVutA9iWFCpbPIGy8fyT`)_rBO2dXv zRs-^LM2O9HS;9J#5<_E(Y}I>Ykmav7gr!lF4MF*zTO`HSJ8~33F`3qJ-yiHPJrPQq z1jr(%iwa8Oy$)?|ZP|{EmprZF2^wtcs6`l#f%BfvbH8+(H5-^*1q%rfVKy@qT9*&g zBGP7&v2|c*E60LhF>SHuw^zR|VF!@z@HueMET^Tlm3_Zp(7 zs%u5o=Loz@s%8o4-p5=Ln?!t5mi{JH+^Wp?y7&t6&kn6`m6F~92-X7#$M}cv56N3rTM(XcU)&LQVZf0q41J7H)$?b{lOm< z4(IdSIDC74Ryt)oXx(ZgG3w-P8+s^<+BiU z@FdrGd&%QhhpTPIV-3V&R_v}2d%arN!|8nET@D+eXjE%-$Z`6%7-VJN+ax`PpouTg z0IN#vUcRy0rWne9J+YseVp={wluS})vE2TymMJS=PuppWL{KO5eCF=IUa=cozTO}7 z4&N4XLUOC~$g|Gq#!^!_0{M88K=k-uqqL~0z+iL0oJ=qvyZiT;!^+W8&(IDqEAx@v zjjOI%ZF69>Zxr%Ji)hvd$FhL2)aCFie-9TSuD<~y!>BsW9AacxJ(oPwAEz!$=PL?f zmO^$K4gc)9!TIJc^8)_(a_Jkh4j+tS&vx#sQMe&UvoATeu=Dnicu02opa8v$j65;b zlgXe(y#y1)|tmcwf=E@?8|5nLn7(Q$d-M*g`|*V zOGI`W+4pTM)7Y1>?`uR|WG459pY>WAS9TI1`&frCBsInF+v z>-BxkcX^%jXlBPd|BjZAZrjP2GuceT;$3>mdW}VR_!0fMA>T7IcE&L?k~a)-(h<&d zh82$2_Bw*a?Z^w4oDMq-u)Sq_a$G5(dPQ_rT-lh@P5y*^fD47jpYv zpV!gk$_s4C)(w_VOv;B?$)?4X!G!IynTVoq)c8$xF6ze%orku9KkMU^A5J*#V}Unt z9R#*l@VT9g1|-oADUC|&GD5fr?#i-)(zNn@neoyrUHHrh`)&bOvJ18*#)xD7 z#Y^HiT38hvjVmDCQt-Zaa5Zk7RBc0W|7gx*a-F$Rm;==p1GZg zY1Z-|-DzWRY8se*-?VwtLLJ?-sWwg5YHn=afsa636Q^~}hboOXu{F2Gu*mpQGPT&P z>X^QGgv($#-!J@idn0uJ0P^B&j7_vcYS|rGbk%2$t)NHXTT;vF4?f?glrAf*g5Hh= zyxj;7KiK@c#r2+C-QuyJakR&V?tm@F<>_7}Vzs$EiN2W@X4$k@=|Q`wFGE;X%?Y|Z z&DF3~Z3O>9kAd98M54{}6;oS+dq{7gmj1>;(`SN}mdX=+51PR`*O|DvXCZVHdKULS z`kQZgR}*Jdl*~n?Q}g#-1LvLVu+Jaa!mTh|9K$V_q}MRCyYK(mWnCO?dEfK=$_Y`4 z_Qun1TbR6@tctj39j&fP_b5h;2_6(p9e|IoSjC+q@Fp4%D4Y)j;sjPKVB_w?WeSMA z0Q+>ce&Br3(cK=te#gn3&4^vO0U)m7t zgI;*DW#8K5*w^N~?MbhGMZ}V8@ju0u?E}P<2nGozDtrGcJ1?5MU8^zf3KcijpmN@z z<=VQoS&$Q@15;P=U&A)0_0Dx#(_qnfluT!&Or{wlry>s&8Rj@!@3BHJ!OpCE_T2%N zzZX~qK`@$tPX0RX#(-E&JsI zM|{G`W_QHO+&*0?bKRL<%)LW~G?@ZL(9S0p5*cf`@S2C9EYM-zy9AikIru1g--PH57=!KRKbX4h3$D1}R=S#2S zE|MI(hU@Gy;>GpzwKEW31$MKV#d!2~e_Om>6Uz#Bx#=|^Fn;5W0v^Tk42{EU1m45F zsFhCY55vWSsp+qrQJ!Q8@3x{8OheH~GW{0VI1>djrQTt5*pl{Br5dLlRb&UYLX8cy z_f^S9S1@7pjTN|Ghih_3rUo@GB{526vL~rYB!9vyOC_>Du1@OV$|7i*7GivS`TB&T zt!|f_F=c!hOU`>4xIV}DH>o9c36pcC{v!NbfvzW=Y8&Kb`s-A}^yuz>r+Pf^kk7&F zPOyuf&tLmQ_+CgeU18IgSK%m?*20$+oUszM$P|74sSp8XA)zq*>H4jV)`))P;fNG( z6yYs!KQ7F%8vVE?`)@>ryTdUaxOBD3%Ih?hLMmHuh!?3>DX#> z35&}3UEt}xA<$I8y^;9P4?E0_%?P9=RD&qOa1!GZt$NO+pkB^dNQl;{k}kAv1|>Cq3RuN@g9~(?77xbx zTdc@a-kV}U?@w}}Ev8Ugx|C}Wb&_gL^l-RLgWW_$YL@*w6_}{7|B0 zdUEak_Qf=YjP*(Wyr@2%9xU5LRLTAOXrA=T4~S`b4Nv+S5hH7;HpDYrP0ElIBEUyy zeNJF6aFVyxY-1anhSxOo>Rug*;tjzMRugy;LGw?Z7KAL0Efs_od3BFuT7=k7RA8Gv zjZFML6;SK6gh^DM+I}?^Oj7x}*4=LTfk!d$*+>8B6}P@1(&Wdl@KA-&**War=AXYN zsvH#iNVc3vQ+6v;L62qrH zFaFh+SIe^5;JZ3Xy4r@q4b^Sq2Zr`k5dy19kQE+R1%7z=C-;RL5bx*APf)a{9UeXW z<>5d&dbdqQPn&|0o$6b9oE|ioEpJk3P@0?$c&J@K&h1;+@#BXC+CU()t3Wc?-qqXk zc7VIRm-#pEj2sXE(^lOBE}a7M$lxDp;2%lR0U-YM@ef^la$$5N*zf^x$sizPJtkZN zTK;?X*t&ThW}?aEI};O}1VHXg4Fa(olZOH=|H-Z0-G6o0a|NU?a3Je#4=3+D3z&$* z$^n4zaRJ8uE4eF@`=k`mc{k7%&#}%g0z)~J|2y)ZA-|jjbOp!napEA5g%J&i`4}k& z@Qx2jUfu!D_J`$4@;M;?pyUrdlEOgkn3(MIlH?rnI_VLo-R}qIry>fuoV@UIB(Fkz zmy?xY$O+_yh$F&$(09VIvIM!FJZpTU_YM87C(j|1Bgo_LBZOPzFQajC0C}K$1ki~3 z8StyHmz+f&J07uscbmyl14of0IfXpbI-(fIe4mwLffu=++#fvB6XSm}vE$yMo;D3& SLEo&36=V&V2R`N7+5Z79F`eoF literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/PackedLongsReaderPreComputedValues.java b/src/java/com/twitter/search/core/earlybird/index/inverted/PackedLongsReaderPreComputedValues.java deleted file mode 100644 index 3ea8d3480..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/PackedLongsReaderPreComputedValues.java +++ /dev/null @@ -1,202 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -/** - * Pre-computed shifts, mask, and start int indices used by - * {@link IntBlockPoolPackedLongsReader} to decode packed values from - * {@link IntBlockPool}. - * - * The purpose of this class is for decoding efficiency and speed. This class is thread-safe since - * all its usages are read-only. - * - * Packed ints are stored from LOWEST bits for HIGHEST bits in an int. - * - * Here are 3 different situations when a packed value spans 1, 2, and 3 ints: - * - * - A packed value spans 1 int: - * [High Bits ................................. Low Bits] - * int[n] = [possible_other_data|packed_value|possible_other_data] - * - * To decode, 1 shift right and 1 mask are needed: - * * shift - {@link #allLowBitsRightShift} - * * mask - dynamically computed based on bitsPerValue (in decoded slice). - * - * - A packed value spans 2 ints: - * The data is stored as: - * [High Bits .................. Low Bits] - * int[n] = [low_bits_of_packed_value | other_data] - * int[n+1] = [other_data| high_bits_of_packed_value] - * - * To decode, 1 shift right, 1 shift left, and 2 masks are needed: - * * 1 shift right {@link #allLowBitsRightShift} and 1 mask (computed on the fly) to compute - * low_bits_of_packed_value - * * 1 mask {@link #allMiddleBitsMask} and 1 shift left {@link #allMiddleBitsLeftShift} to - * compute high_bits_of_packed_value - * * 1 OR to combine `high_bits_of_packed_value | low_bits_of_packed_value` - * - * - A packed value spans 3 ints: - * The data is stored as: - * [High Bits .................. Low Bits] - * int[n] = [low_bits_of_packed_value | other_data] - * int[n+1] = [ ... middle_bits_of_packed_value ... ] - * int[n+2] = [other_data| high_bits_of_packed_value] - * - * To decode, 1 shift right, 2 shift left, and 3 masks are needed: - * * 1 shift right {@link #allLowBitsRightShift} and 1 mask (computed on the fly) to compute - * low_bits_of_packed_value - * * 1 shift left {@link #allMiddleBitsLeftShift} and 1 mask {@link #allMiddleBitsMask} to - * compute middle_bits_of_data - * * 1 shift left {@link #allHighBitsLeftShift} and 1 mask {@link #allHighBitsMask} to compute - * high_bits_of_data - * * 1 OR to combine `low_bits_of_data | middle_bits_of_data | high_bits_of_data` - * - * Example usage: - * @see HighDFPackedIntsDocsEnum - * @see HighDFPackedIntsDocsAndPositionsEnum - */ -public final class PackedLongsReaderPreComputedValues { - private final int[][] allLowBitsRightShift; - private final int[][] allMiddleBitsLeftShift; - private final int[][] allMiddleBitsMask; - private final int[][] allHighBitsLeftShift; - private final int[][] allHighBitsMask; - - /** - * 2D int arrays containing pre-computed start int indices; the 2 dimensions are - * int[numBitsPerPackedValue][packedValueIndex]. - * - * For a given number bits per packed value and a given packed value index, this is the first - * int in the subsequent of ints that contains the packed value with the given packed value index. - */ - private final int[][] allStartIntIndices; - - /** - * Sole constructor. - * - * @param maxBitsPerValue max possible number of bits of packed values that will be decoded - * @param maxNumValues max number of values are encoded back to back - * @param maxNumInts max number of ints are used to store packed values - * @param needStartIntIndex for optimization: whether start int indices are needed - */ - PackedLongsReaderPreComputedValues( - int maxBitsPerValue, - int maxNumValues, - int maxNumInts, - boolean needStartIntIndex) { - assert maxBitsPerValue <= Long.SIZE; - - if (needStartIntIndex) { - this.allStartIntIndices = new int[maxBitsPerValue + 1][maxNumValues]; - } else { - this.allStartIntIndices = null; - } - - this.allLowBitsRightShift = new int[maxBitsPerValue + 1][maxNumValues]; - this.allMiddleBitsLeftShift = new int[maxBitsPerValue + 1][maxNumValues]; - this.allMiddleBitsMask = new int[maxBitsPerValue + 1][maxNumValues]; - - // Packed value could use up 2 ints. - if (maxBitsPerValue > Integer.SIZE) { - this.allHighBitsLeftShift = new int[maxBitsPerValue + 1][maxNumValues]; - this.allHighBitsMask = new int[maxBitsPerValue + 1][maxNumValues]; - } else { - this.allHighBitsLeftShift = null; - this.allHighBitsMask = null; - } - - compute(maxBitsPerValue, maxNumValues, maxNumInts); - } - - /** - * Compute masks, shifts and start indices. - */ - private void compute(int maxBitsPerValue, int maxNumValues, int maxNumInts) { - // For each possible bits per packed value. - for (int bitsPerPackedValue = 0; bitsPerPackedValue <= maxBitsPerValue; bitsPerPackedValue++) { - int[] startIntIndices = - allStartIntIndices != null ? allStartIntIndices[bitsPerPackedValue] : null; - int[] lowBitsRightShift = - allLowBitsRightShift[bitsPerPackedValue]; - int[] middleBitsLeftShift = - allMiddleBitsLeftShift[bitsPerPackedValue]; - int[] middleBitsMask = - allMiddleBitsMask[bitsPerPackedValue]; - int[] highBitsLeftShift = - allHighBitsLeftShift != null ? allHighBitsLeftShift[bitsPerPackedValue] : null; - int[] highBitsMask = - allHighBitsMask != null ? allHighBitsMask[bitsPerPackedValue] : null; - - int shift = 0; - int currentIntIndex = 0; - int bitsRead; - int bitsRemaining; - - // For each packed value. - for (int packedValueIndex = 0; packedValueIndex < maxNumValues; packedValueIndex++) { - if (startIntIndices != null) { - startIntIndices[packedValueIndex] = currentIntIndex; - } - // Packed value spans to the 1st int. - lowBitsRightShift[packedValueIndex] = shift; - bitsRead = Integer.SIZE - shift; - bitsRemaining = bitsPerPackedValue - bitsRead; - - if (bitsRemaining >= 0) { - // Packed value spans to the 2nd int. - currentIntIndex++; - if (currentIntIndex == maxNumInts) { - break; - } - middleBitsLeftShift[packedValueIndex] = bitsRead; - middleBitsMask[packedValueIndex] = - bitsRemaining >= Integer.SIZE ? 0xFFFFFFFF : (1 << bitsRemaining) - 1; - - // Packed value spans to the 3rd int. - bitsRead += Integer.SIZE; - bitsRemaining -= Integer.SIZE; - if (bitsRemaining >= 0) { - currentIntIndex++; - if (currentIntIndex == maxNumInts) { - break; - } - assert highBitsLeftShift != null; - assert highBitsMask != null; - highBitsLeftShift[packedValueIndex] = bitsRead; - highBitsMask[packedValueIndex] = - bitsRemaining >= Integer.SIZE ? 0xFFFFFFFF : (1 << bitsRemaining) - 1; - } - } - - shift += bitsPerPackedValue; - shift = shift % Integer.SIZE; - } - } - } - - /******************************************************************** - * Getters of Pre-computed Values: returns should NEVER be modified * - ********************************************************************/ - - int[] getStartIntIndices(int numBitsPerValue) { - return allStartIntIndices == null ? null : allStartIntIndices[numBitsPerValue]; - } - - int[] getLowBitsRightShift(int numBitsPerValue) { - return allLowBitsRightShift[numBitsPerValue]; - } - - int[] getMiddleBitsLeftShift(int numBitsPerValue) { - return allMiddleBitsLeftShift[numBitsPerValue]; - } - - int[] getMiddleBitsMask(int numBitsPerValue) { - return allMiddleBitsMask[numBitsPerValue]; - } - - int[] getHighBitsLeftShift(int numBitsPerValue) { - return allHighBitsLeftShift == null ? null : allHighBitsLeftShift[numBitsPerValue]; - } - - int[] getHighBitsMask(int numBitsPerValue) { - return allHighBitsMask == null ? null : allHighBitsMask[numBitsPerValue]; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/PayloadUtil.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/PayloadUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..a3d273b6a827c9d18f230c5a09356e18dedace73 GIT binary patch literal 37849 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%0DvYAC=UC*+_LpVD8x< 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 [0xDEADBEEF, 0xAB000000, 5] - * - * It's necessary to store the length at the end instead of the start so that we can know how far to - * jump backward from a skiplist entry. We can't store it after the skip list entry because there - * can be a variable number of pointers after the skip list entry. - * - * An example skip list entry, with labels on the following line: - * [0xDEADBEEF, 12, 654, 0x877, 0x78879] - * [ payload, position, docID, level0Pointer, level1Pointer] - */ -public final class PayloadUtil { - private PayloadUtil() { - } - - public static final int[] EMPTY_PAYLOAD = new int[]{0}; - - /** - * Encodes a {@link BytesRef} into an int array (to be inserted into a - * {@link IntBlockPool}. The encoder considers the input to be big-endian encoded ints. - */ - public static int[] encodePayload(BytesRef payload) { - if (payload == null) { - return EMPTY_PAYLOAD; - } - - int intsInPayload = intsForBytes(payload.length); - - int[] arr = new int[1 + intsInPayload]; - - for (int i = 0; i < intsInPayload; i++) { - int n = 0; - for (int j = 0; j < 4; j++) { - int index = i * 4 + j; - int b; - if (index < payload.length) { - // mask off the top bits in case b is negative. - b = payload.bytes[index] & 0xFF; - } else { - b = 0; - } - n = n << 8 | b; - } - - arr[i] = n; - } - - arr[intsInPayload] = payload.length; - - return arr; - } - - /** - * Decodes a {@link IntBlockPool} and position into a {@link BytesRef}. The ints are - * converted into big-endian encoded bytes. - */ - public static BytesRef decodePayload( - IntBlockPool b, - int pointer) { - int length = b.get(pointer); - BytesRef bytesRef = new BytesRef(length); - bytesRef.length = length; - - int numInts = intsForBytes(length); - - for (int i = 0; i < numInts; i++) { - int n = b.get(pointer - numInts + i); - for (int j = 0; j < 4; j++) { - int byteIndex = 4 * i + j; - if (byteIndex < length) { - bytesRef.bytes[byteIndex] = (byte) (n >> 8 * (3 - byteIndex % 4)); - } - } - } - - return bytesRef; - } - - private static int intsForBytes(int byteCount) { - return (byteCount + 3) / 4; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/PostingsBufferQueue.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/PostingsBufferQueue.docx new file mode 100644 index 0000000000000000000000000000000000000000..54bc3136698102ad2943002816bdf6c85a15be3f GIT binary patch literal 38074 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 32); - } - - /** - * Decode the second value from the given posting. - * @param posting a given posting encoded with {@link #encodePosting(int, int)} - * @return the second value of the given posting. - */ - static int getSecondValue(long posting) { - return (int) posting; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/QueryCostTracker.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/QueryCostTracker.docx new file mode 100644 index 0000000000000000000000000000000000000000..b5c74e5f7a3f84074f0c4a584bcb131f2e1d99ac GIT binary patch literal 37204 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 AAOHXW literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/QueryCostTracker.java b/src/java/com/twitter/search/core/earlybird/index/inverted/QueryCostTracker.java deleted file mode 100644 index 5918cd93b..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/QueryCostTracker.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import org.apache.lucene.util.CloseableThreadLocal; - -import com.twitter.search.common.search.QueryCostProvider; - -public class QueryCostTracker implements QueryCostProvider { - public static enum CostType { - // For the realtime segment we track how many posting list blocks - // are accessed during the lifetime of one query. - LOAD_REALTIME_POSTING_BLOCK(1), - - // Number of optimized posting list blocks - LOAD_OPTIMIZED_POSTING_BLOCK(1); - - private final double cost; - - private CostType(double cost) { - this.cost = cost; - } - } - - private static final CloseableThreadLocal TRACKERS - = new CloseableThreadLocal() { - @Override protected QueryCostTracker initialValue() { - return new QueryCostTracker(); - } - }; - - public static QueryCostTracker getTracker() { - return TRACKERS.get(); - } - - private double totalCost; - - public void track(CostType costType) { - totalCost += costType.cost; - } - - public void reset() { - totalCost = 0; - } - - @Override - public double getTotalCost() { - return totalCost; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/RealtimeIndexTerms.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/RealtimeIndexTerms.docx new file mode 100644 index 0000000000000000000000000000000000000000..5dd87c5a32b8e56b915b5372fcb5497d570d4de5 GIT binary patch literal 39650 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 aEQZ=T4Det>5Dx%lujyt0 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/TermDictionary.java b/src/java/com/twitter/search/core/earlybird/index/inverted/TermDictionary.java deleted file mode 100644 index 6a4360304..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/TermDictionary.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.io.IOException; - -import org.apache.lucene.index.TermsEnum; -import org.apache.lucene.util.BytesRef; - -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentAtomicReader; - -/** - * A two-way mapping between terms and their interned value (termID). - * - * Implementation of this interface must guarantee that termIDs are dense, starting at 0; - * so they are good to be used as indices in arrays. - */ -public interface TermDictionary extends Flushable { - int TERM_NOT_FOUND = EarlybirdIndexSegmentAtomicReader.TERM_NOT_FOUND; - - /** - * Returns the number of terms in this dictionary. - */ - int getNumTerms(); - - /** - * Create a TermsEnum object over this TermDictionary for a given index. - * @param index - */ - TermsEnum createTermsEnum(OptimizedMemoryIndex index); - - /** - * Lookup a term in this dictionary. - * @param term the term to lookup. - * @return the term id for this term, or TERM_NOT_FOUND - * @throws IOException - */ - int lookupTerm(BytesRef term) throws IOException; - - /** - * Get the term for given id and possibly its payload. - * @param termID the term that we want to get. - * @param text MUST be non-null. It will be filled with the term. - * @param termPayload if non-null, it will be filled with the payload if the term has any. - * @return Returns true, iff this term has a term payload. - */ - boolean getTerm(int termID, BytesRef text, BytesRef termPayload); -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/TermPointerEncoding.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/TermPointerEncoding.docx new file mode 100644 index 0000000000000000000000000000000000000000..bc9af624db49fb7d2e7a1d70de444ed7f9c87395 GIT binary patch literal 37103 zcmagEWmsIvwm*!!dvGVXyK5l9-63euMuJ1*!QFzpyG!Hlgy3#L0>Rz?otZi3%$$4g z`+nIxRIT-swRTrk@7~HEpkZ(zARrJRzNhkPSE?4qB|$I~%aL+u1fIDJZRoVSG7##!Y4wA@`C*$1U4-cf9 z5T-G$90JD@myvqwL%LEY-09s!t0yUSY+#U~l}`y>?47@s$8uu9yDJ?>A-5pALoz!6 zSJRT={bq^>l5MA^PrwK(_*5cCHy}y-9wM5qGDZ`NY%mx>Rd^IOv^sy9H@BV2L0$E5 zm~Myh)9$FU>+`s;8|A&EpLEvqA`7i%rcF9hn?K*zFyk`~nJ>l-@%_%Vt`m&)PL>*u zbt^rEXzqi^0F3WH?7CUp#2i^AF-qIJwP>b9zh8o_^&M4T8 zYxoVLf8o{;tyKky$0Uz%^7Fnr9!gUBT;~MoE%8e!`m{?K3BUCh>-V}lM|<4+2)j&h zhvHv#EBn+@wCl1GkY_5-luWPpoJ3N9*%kNk(dz-ZxcrTjNYB$k@!GEF=q+X5BaVV0 zgz`VS=t28I><-+$btni3Wbj`jCv#h8R+it_%J_-*(Cip~ry|nBG{yE!8d3#IhEfL# z1tQ&F$4`pvfwD!*ogFGt2HJQ%r2D5krWW(*`9zD1MYe%jCOUHgxeGno8}#Q5Afr`; zWW;uV3U~GGARXJZh-)e|F>~5m9t%x!5yo}w0X_QqlWFlP2`M86J6W`npwa})E9B2_ zwOo9dX8>>j8Tlse@Z!qWAGU7cccM+7WsUvB4r3iK)lwDB*zx%a(BvGkuO#L6r=rVZ zTQl(59ze>U^vcg!4gw{W)C}FJuiz%yvHJNe8-$9dTXx>058Ffsb^PvJ%{dL@2vtK4DGFw!Oat|cbFcp@*Xo|(ZZKFaZ-^HQ->F-Y(mOvF>k6GGW zL<*6CS&|DGmfZhQe$o(TX0aSG&}qvS#+9&2S84lTU5}k`r3rQAb4}ZW=>@wlkVF?X z=-0aeW7WM3^S3o{9K^@2_pm7Fkep&Fsj6-*njD+q$IecU8&j^(2IVNtAt-3cZ*r%P zODeDE~2;u|g#iu3L2y5aqnrBBT z-^anUvTp-@?n80;zp!413DyffHjF+lh+DunD1Oqw9lOsPR(4!NYOD?)+FO~}r*wuX zgDu6?9KbYiG@2T%oP%RV{G6(#Ts7)NS#L6aP73efti(9=c^OS?y}_#pr0C%N?a5qB z`j>0%UH@5QCh!B~!xO?{=;ab&``%(PW@LK6Ap1d6ZkdT?&=K zS0E>1H|{ta{{&-=?DhG&&g>^j$aLrJK-fYyc#zxeUEmsx|IC}u^x z)P_mzGdV3HT{~7&{(hUKfC+cKeC&8H45Aj(vag-bEPs&<&0c*iw&3nsSV2`#cgkM(W>U zyOEM4GNH9WEf|u4ui<5@6qnM!A}3m?^sb{lo%M;8^b9fm{*vf*?)n$mKW_{O+;#Ft zXb1>@ygxs%ZU84UR`93R#SXkV{k}7fwO5>0crbiUwQR33ma?=9%(NWes44o8Of`hj zx@HMtAjFl(`az53&CR~9!?IFl3PhWvM$sJy%ITv|o@5ye3kkK!nP{^Ww&DPrH=IG; zFiDX3xf{<8KAm3QVC_N?WSL+uK_7}h@AApeI9X#qXR&>Rzzn*nOMJ*2{yOVStU#5F zvG##aLv^h5r%EcHlfZ5wf2z7ar^BQD`un5;c^jdVpitQ9Oe~hTqgpOEBG)e0q6LF2HRaQ`$4K|nik$l@X8InUG0q7T>Qb?++q_P+}#g%vK4CJkv0xsR|0U(bLbJdNsc7P#W{z^)Fj#pDjzI z5-a1@7`e1uh6=-ew6wIW&vzyu!dJ>aKNwVJpO_7Bk*R^UykRjWJcIJ{!?nATgDU+2 zMbx&i{c{rAIOh93^&ZZ!6p?fZBq4U?7NH#hK5a(Q0*SZn6wW7Zc|U*8DHKh96vh5u zK9wlLR_pA)1~(DHc_CQ*x`%k#@j3Zu(@0oR1*2&)qY5Jdp(X)k zmQrF;S1mQizB*jUoeVS*W!C6-*a%*YB2eUe(GH_mql^k5DN((_PBI@|_Py80+CdkM z_YI$~#=NASeo5&q2QS3;EF>ahZFoUuXJx)#Y%LsZOs!|N3wC&WL5d(GuQh+R0nM!t zZcYe385FyBGh7(8i|NwBnDg*V1>xs<7(9#n_SN|McOP?N&k3{Z=4ZX?sVui))5aGN zWZT_M!{3S$6>1*aoBcFpusEu#!C_)%vbv_ZryQJ(T2Wd{Vz7zWLTGXl@zpW#t0vApgR9DBt-PN_z>}Doz)aKU(2^bsR2k=Egq2tU1 zE1P2pS)!*Lb=S*kh}%?>BMQ{?@N_H+NhnMo*Cu_c*ngj>@Pt&`O4DD5MBSKcFV>1% z6;*H`qZa?Aj#n2-M`}9$>&KAntk0ex%JYe;mWz%Gn@!QRH0Pd8#d^(vUQC$U#W`aG zDsCF%?bH2l*LP;bzR&Q6NEQuq#F9n3{!a?}QCLPWnztFyeVlj3R--!>^QI6|Ze5Zo zk{pFK8ERY57sZ?r;(Ro9X=*_>!EYvP_^hv{6Z<_C5kGsuLy7K)L>3co^OI=XsEld7 zI}+|a`-Z~1Dv8ixNq@H^{2SLLX3Ji!Q72na(BSP1lg)!O;9 zhpoBuA8WFKLBh67oljR+UcS-O54+ePh@nY)h8U?e6q&d*M-{Is&}gSSUhoZ z2?7A03A_dG_fFh(PqLC%p6#Dc(nS}B05A73ulJ7&r_sft%||;1clT@Opp-e#{qNlq< z=?i~oWZmnPRlTm)<9XNby1+uu+7x&l0$l zHRPpZ@4E2ui{i(el!?O{(G$_k7d#Ppr+4SdTSFm%cSfu$k6=-58@}tu=wn024{JVr z-=0M!CWMc**1_jQJ1+qlUs9k5wJ)vjz$@|%Xy*Ln$Zc%Ly8fQvJu1BWQjlp!_HlIj z<5|-6g?kza@7PrY(23denctJ@GNF8j-o>NSV|i6nN+QNLnDwP|wG-4_F_tvI?rR5H z_36~tJMDbFmVB^KO(E@b+*o5p-vEA8T!@qfM@V`m7rQ#7v_h z{0u_uI9n$KrHBGOBGf_Ng2&ht)nTz$HR!N~AtzV@Qz7-}A=Oo)&oxFqI-)*&!L03| z81rC!-{+V8J_}!j=c~2n&uRKkHNd6z4I$x5x6_l56yB38UZtZ~AH!3ia8d(@BR=vyV|?5bqF8e}FFBK=Z6q4eINGe8&D&a0tg zs{uMBL-qTxfEjgQ-X>L2_S+VzT{%N~g8$MMyraIOpPbmxg zyN=Ekcm*X7F_>qqj|(3!)#5pd42n z9!5|?JM1vC#06e#Kx{i~LC){VPvA+se@(({Q3D{w|BA0_B&1=1Vf8>B?v-1I`WN;w zS3EeC92`ggN2)FuEf|dZkJLY@U`pvutts69i{Mm+3Os`Jhl=EOShL*!A@M&@v7Q%I zcmXNksJ{zyB?9YF#Q=N7Y52iRj?DaD5}C;n=sb`S{!l%e;MR!I{yXa5Lj}%~4U?{* zPHe+00V&-%@=j7s7oXF6NM9XaU9x#lQuli#Y5x?u#MqLSCil(_-&SnBMLTC=Dec)k zN6^yHnC%Nwq%ezK^3&YsBWO8dKe zBY9hQQ5&KL&DT<7(e~RcOJYg-(Wl&Tgs+bdD3Z(`Q^puftED6v8w0E4Hzz>X#SAyp zft5}c-=S<-yCbLg{nlUo;ehIG|Ed^_Qd^(5LcN#wPE3c6ZJ4}mrci8V=cYRbwkxtp4E?s=R-A-E)sL>18 zokMHpubI_WNT^5KBDEG1@IcmeR1>W)J!^4;DmM)3eNIWM>xakg%U%7^$+tO)-!EwS zx<0$9eVRlY!3#YqYjB5#8Dh}D+bT7hPY-y0=|3w{+8^Us|4bUzE;pL4`hF~Z^C`ZJ z7nWXf{!~FufQ+Ml#=}ND>BI57Z-x|>7Io3=l3AU{wwclV(L%PwJvw;(L{RYc9)1|v zd6;>@uVaJPCF)` z(5ssxFi#_hj@8Wyly6K3vUr*%u=(;r8aTePi=g<96R7-knl^>8G-?!kPKRZ-dElBF zc_x7gQpv=u@*#t9$?g43W04b;!A@ov{@~%L!9|WUnng>gW5W+$uAdz9gK? z{w;y9z@OC7ehI6x=}jW0M~9s0m%b}!IhYH9GG9r#4!^+jKe#Ioeqb6xo7|8=*vxhG z+vH_g0O-qiIfAx$seGP_s28|SrA@2wqu4t>t)j9zMV(PvVm$A49N-*o?@5yJs=UkR z|AMU0!ot<_IaiKX|5HT_GQC3;WS}!DhPTz|bs>Ebs{&~21GbMhB0I@Pe%+#i(RBjWm}qpcRwA|ac0PxH%=*EU(#kl zQ*IAeLl-X>g9DzRXGagtWQ%zu%0gv=u7DyEg~>R z8=&Ttp=*kJ)woA)iOQ2dq|LB!7e|>Xg536kBz|2U zX0;1XYO&Y22&ulQAw`35o;rH^8QTMUu9sglHKJPBMM>=KmQ|1k&@pYyPNK~l9lHzW zpCk<(cZ#bp2r}PDUNPI7gG;bnwdO;k3kYDz6Krlt=+>ZV#?tLKK-0o+RX|(dWfxG6 zVOo81a^@=HET>IYmpb#&o@y{j8(0cETyEwDtREp0{5<5)wi*n`*^O1oc&%N+>vC5z zoTU;k@jlXUNZu;(<0gii$Iu^rn}*Dx`QtvqT4wlxWJBRf9*IydmE;w(u+wFGjEH-o zq?!R2r_x-|FK4}fH>SiLlX-wlUFo?FU3f$E`AxIrq$uF3w^hYyF2Bg&hJ$$YVsy#& zK%xC2zWduKlfGKauW@XLq&&i9twybb&|-{|)QF>5`xx~O)u?Nj-4EYu6nvxyN6H2T zjzpK}n5K!6InO@8aC=BPmM$Hamf@$@lID7A=tTMZW**sd_Q$F?6HqP?*G(DZDKL?3 zEs!vH!{~@V(I@gdL+yRQ1;{C--*}k!T{_+J3ltrS=;*}=M#)TRk5|ee-wC5Zg%fmb|e#Hm$3^u;5 zMR%?mjgQ>HasH=bGgs5wAgDf^`7&9noXwJ=LfFmEL?h^SEP+K#=Jc}tQ9Nt4ef<=`)5@@ zq|#R6DX!|zegFI;w3OzH>4E3HW2?Zg)a&w;gCxqBHXuZB2}eWEA_Or#dE1dY;Pg{Q z4a+*wm%cGAqE)v@R-=%!^^Z%?#oHvuBkm zrHX{;`c>3YS4iJ#@HUeiZYvmnJktSj3+LS~Rp<}1ZYp`^M$pOR< zw&O-kX5*LnGT+wx5DWwF9fmC7hpx?Zrq)VxE2^}cj1vgb<~QVfE-pG#JLHx7jx9Z@ zQi`t3g;_?e!db5?!+R2PjM48a`6TMLOOQ1yd~K2oj#pJzT4kG@LB^mW-X%F*Cw=P? z_IR2hl4j}`8D2R~#rG3@;v72#$QHJi^{EBI#f3K+luORbuwK?JTM-Jecq1OS9_3Z> zN6PX2+S*(u%StZ$o0Sz*EjxRM1UdvrG2IlV=))Lw@IRVtPd_hmHnGyA>{3SdR53x& zC@>;FXfH$;+{1%9bDln_+8n&0#v+uF`=ILDO5ruhB(p@pTvhR4ywF(OExxAKy}oFp zKybZON^*M;b<3aiT83sPOkmMtQD~nhkZM6(*DF{M(52#HfyV(@ScQo{t*uCV_hncE zG-4djbXk&iDIUpiYN{`c>nX`dr(enpk=8m>>B}{gZ4XeMOF*5TVIO~9!N_6fswaqq zLwm=Wa-G^bUU{PF?Sm`m#KHEaEj=-?}yA*PY>jqYO9}>W$5BCnw--;); z+>xTZraliK|D3$}4s}OU&Xu^jxCE;?lB7|Y6`KX+nr>%z68GU=OQlsm3-qFQ@*pWg zhK|oHT!1>le&i~rd7P!OV~l!w*x3u0M;gF2Yx?yjq^lBrKPdut&yo)Lvo1P4(a*ow|qJTA5iuI?MSE(jfn-t=&Cn@N3Go->Zo_-Akp{Dxw9 zxx95uxxA*`VPrvPKX?R-dgN}bji!mp0&u2@Y>GvoJ8F4<*+j1op3K(a|AH}dL+nu4 zzr6o6>ZR-eRZX1yEj`+~-H$hC;vA|Dp(D;5u_F~)QGerBM&7~1vg!t}<0FGCW(V%n zqD3C>jsHqoezVG^{1B%rR9n&y0l#%x=!I0Bc6eC2v(b-;9Y6Voklmq|iCM`bz7gqw zvDr8Kk=w&WKL%jaIX6}xplXPRAJ|cUS(l;B6*3Lm1-#`y&i!=+T{h-1)eCey5=-_;_sxr@FiuLKw+~_T)rO6Y6`B2Gpd-DKI4CX|m%GtQX=q|)1zJq%&}GQ)-sO_Ft) zNQb-EX>$37?)h(M4-LlQtB$U4uixK9d;=|^3?G#SE8wdD!0C7>J~ADDq?i1aKKt+V zgWu_aq!JxvK0H_U-=Qx&t)FM4XVdGgn_Q%`Rajx$mAkPI3;CtcQ_AqKR)DADaFB{}=N<&R1 zA`fyWDJE=omRz;UEIuX0sfhX9K48Hx4VFZWL0OgY+-^LFy~~eP+ijUutFud&o7KV( zJh&CGZ^O2K(B&kV9HElWv0r{jl?Ki$h)Pz@X>)+lEU3)0jL}dC82aeRc4W@ zzS;~QzY?#lnq;wTRcelv)L+vkU6m}c1xvaDzcup73f{b+J5E9N~9%bEyu)w3x9xg%pXz0EHC8 z_@;1{B|Dsy_8o6CLdggBat-0bUs8(FVgg?Ny%d6?2f9-El;p5R2|Z$Tk)Oa+0g+_x zO+zPHsU2ljn6dxnfua5vkK&FTKIB&MxiV&rvGd^|D;q-z!dtMV#P2`F)vwt2+ghc? z40`n{4^{SinABm^nV=2{&~ebzVP?->9@*bm;dw9PL5{e_Hzm*yw{)IHRZ&@@N6Q<{ zH6X}#PBYBSEbbpNLd8#6Z9BW*Kzf8=7lB>%A(kR&*YJ}lQvZkTWB7lu@w@zgvb`O4 z_vbyQTZpUQ|5RLUtqViF@hR!h>X-91F678Q*LkZzxLJh{6V5bk12lJPJHUj;h$SC|l=+k~mHQq~hs+9e&aCuc zs8{5c6^qDC@9W7|!j5?y9?FWO#V(>WOS1+=v`m%6F8GDLtD-4$7?ok#iGlLcVnLMT zBnHg?Hitygs36@PjW0YNWp9tEoN}gF?uigghYPtv|9@8V?J!K%se9nj@XvtA^w$5S zd2Hc+qE*>E09LZB6s0W^ycjrU8c#nMh^;yk-aeb;kiU$Szc{u&T-?|AB7dCq=|HA=OG*^= z&d`yn6>U%}@QyB|dh(VAxgd@Hfx7`AW>wGVR^+dW4@c+jH2 zOl^4zB9?%2?{TXJn_LA74EmgeNeCzMciE8r-O&yycv4J7j7(oB>obQds$*067udYE z&9ik-_}d_(6`5of*hmD5DfXAzH?vY%a=h7I7UQ!%?aOV z#y*gL>dpiQgdnZ`D#4Qhm#~zfHskoM2qP5dn|}fXe=PP}NE0z88AFWPuT?b!;p489 z^(+{%f;yC5d$NDiNL8Mut5UR(EBD*?lJIZeJt5lijy}g`>}SNTJj8$cmL35^f-mef zKJ4EELI*wv4=9^8VW&18M~pNLPVy+6{!Qhc%x{%yWDQ`Ieel0k!a&x3H5qFC>CLuh zCW&u{Q7=y&K#;OuceJ5Z6O$^gO4zLeKYRrbNnB~6|VMDm?Ete z>q>3;-74Un1+ciQAlOTHdiTaZgrqPltGiCcSf`un`?t+BoWxaXUh#bn)W-S=klY}< z>S-CGsO#cYYl%R5CxN>Aa7AfJCqsoZtz`6klkGsm2Q3^%7ySfa+8OOMKu%M(3k&j_ z%hj9DXn8BoC-a#4ssiUloM#e>jz-ntrW2bm$IG-Sd8jqa*KmvdJYjZNE5CH#$LrXd z8)BPmr)v+=by{VNeA`JPuw*WynUu?@Um*|VD+ab{?Pbgv*_Jgk(t!sP_$(Jxn7ybNU&RF}uslHaA+MX$7V2|DP^G9*M@odN1uaIv1 zJ?~0nhOs}ZbUT_+fAJRL!}D8+?TkOhnQ7$Y=i!=6=_bR>y|*(4Q&EHs!<^^ybbrr- zP&q=K4~xCbCv`j=0tvN@vx^Z2xarpC7*{m6IyayxzkMQL|Ff!glCw1 zvNZc7iQjUUohbQ%o#;Obb4m6{T*NZ4C;n9E`acz3WL$AX-am*MSE`CGp549Qv&xUOu&HBZD=uC#@ z?xamRiXXo2+7P_3PcXwx1JJ%?owE5kX zt#tj^W5CY@iP`5L8XF8km0pg_6zRi+zK({I6Iwy`&eoZmMNQ0EFC%2yx>23%#d4=I z51?tOpSqk0(Kg{@!mM*>{wSATJ7cMBlCwT-3_gn23wx@?z+7w2 z86!5YS>Ppid)Z+z^#s$j0u55N8@4D6`I&mK`aXvJrvC5;H5Ql}{=@In_jv32JZiG> zAJnd9V_<4Qo{M~+0Xa}@6 zQG<>|u_LJ5L$%O8)bu-OQ<`nr_r>#=7Ejgmi*@YuVEsO27rtrsnnn4G{KjP%Os)q1 z2YE9)7j^{8|3N-&EVp?dowBj&^cQ)rvE03?)*X^ovkK1l-p}9R57b)YSUZdiH#+=V zh3^_T+mJFzUfT{v-{)Q5Eo^`7D1s?2cx2K>3;!7fs7)O7S$ZU z(|0wEcLwVY;qyQvtO+^YXC%rrxI8Odqpzj6UntV%A=7BTt%?IrY|2ex5U#F3Zqedg z3iD5clEng6X=ba~3NxWah>Mfz6TFHu1;u62ZS7lJmCqsyX)_HExKdoGQZu7o<~oNR zb)iKrenp5}pt$VE<-;6kDB5T9v~O;uX1MaKpqe-}E~93+ewLQy zvj7AXY&rm$CtQ`Tu$T(a(+wBv{>h%FVtH01IaW{;T|f3an*_rB#gw|d7zw3j%q9Rr zpUV=8r`QHCceE*VXf?ZK2{{9(8YvMh5-{cIh=^_J_%zT$R_IgKaYn%l|U@LGQ4m zFzip0AxXbY@*)2=*^VR%dSiB3@qWYTqtm@R(E6JS zKa^yT&NRl1-Z;M=0yF}W*PEwk%B~o5J67#o zm>N$2eCpVQ4kd<=@C$|f2-89?mq^Z9LdPdwd2JRF2Q_Yrz{u8N%aaA4)soT}hNleB zKxK6R#aNs}wLiYy3N~S_Hx?pu<{8l&uYq@whyJ}y!VLR!%|M4jZoz`l+JB?Di&w(y zhMfOKV|BQJn;7KOS{z&MM=ohD`-0zMcUI>Pxega|CPDFQ|Hg!U>(_ik>PPe*WDI(Y zc8ECWZe$F0@^%P(>M;Btu-CAxZ@G7VvKjh$plre3G#g~?PvG?$&eIx-b!c$6cOMTW z4j`Wa<%96U748B?Y$tOO(KvsJSH3`~irHC1I*}WYgO3^RkSwxTti#BMh=$5XNYfwN zAub7ek>y#_;V&sH8>z?sBQ8q(w>W~JGl_GX;SrNf{$Dj@?0uvSKuB`f-xv5g@CB|3 z2+1Vt`W(=Z)42&-csxQfh|Cs4(cW!{!*(Gf@~Fp}oYL3^guK+8JA-ly@x){8b}PX) ze0$=SJ_&ECxCjCl@3;(Hyki9TVSn2en12?}E?fVv;?;E6c7B~$Okn#H?*~}8eLAQ`&$IhQerG94F-7F&G=DvadIgKb-8|(V{acn{3rlO{XJyOn?ARE zqaI6Q#lqqyB$S}r{(#Vt-eGxR`)H$zf0sssiTc`EYi%HZfZrulp!XeQ-`n6;p zHA@~d%UQi}dGL?Jhz{yCrn8l&H$*28KQq3$x_$5g37&({&IIYcqU^8wG>LtoV|!a7 ztaM!y3ly5m?bNEVf?Fa_GQonr!a5Y41i_M7{_;#oVCkERMnqJ>B&fXfJSCekY;S;fToIg~rx3V9e#fhiNUIn%$j~Bf~J) zC-G3E9)o0)Kq*jVtCd*h=+*nA`zhc%)Fm=)=e}33lHB+dgu{pN>IfO~y%1CUv2-uz z^M-ZGOPen7c!5hbY5GmatwR6h-#m-}ar4sV9Ll`~$UWZ7seP(RLsz2FCm1-`#+DLN zyzkR_p6c4r$kUGIj~ePxEBJd0-h$;kUpL{EO?q+}r>I6E6e<2M^6NjT@a9zk$lxMCk58pe;UTAxF9v103RQdS$BsG+@wy(u)Z}ipZlG$QqX@4J1ZL64i&k~}AW^X~73gc3;HiGx^ zxf@UE$nNCQrsJ8bS433$H&N$QwQFViGi^NRYP^_NbzG$TB95+$XP+}WpBanLER_a&o7Mgf=XqEax>|qnD>>Uw2*FrHZ<2G&29p(3 zDNS#K6dN7*dTHUm@a&$+&gzE4^!LX$6HA(8g%Dzz2lz{)0gI_1GS!ZLK9t!@&5*PL zU6}JUHmWD2KRn5DR}h-458o>pk%6B=Z|W)yQ6lG+mY315!5S1P36&`p%*FBi(5d8f zPpoYWkPan9t2jW+oHs4co|mK%d5@vKedHcioy6(*S^QxSUKsZtqv&dN1bc}fhaK(t>hkzE=raz$KHjjvpaKDVg;i__&n#f54@k&|k}I&;FUdNt&5#~QZlLUP&m zT5`E$^BsKv5|D)TuF(l6jm3TADW^DqthXRb(BUl+wEEf1!lOd!h3C$b`Wa{AW=IzF z^)(d3T`pld60k^7bd==ll|X;IcexACMn?cySxhv!nd1Tw^1uLpfrp0)d zL^fhuPBtR{7qELzby8r=zkrq7KAT13PYgofK3!b{)r#8J`9yJ_9!HS})!Qeg-RJ%R5dl{T{-is^2ibnESEU6XN zvx~us`gCk0(pU3Nf=AVmfd~A`Myxqt*R`damWNmQt9^hUQQod=Uk6A^HW$P<4n4ts zhUSofRoXpMg#lz>X$s(yn6|GQ_pqLMhg_n<9kn$3PXR2Yyw z_^)REueEW_zc(4wc{{p|2Ci=oz@=jo+))l#QGmzY1^87M2KDAE@(ig4&yJ`bGKSMaVcR^+&`5^%o+{=^aB;vD3fk2Ux^bvWXQ-X&4|8D500= z<=tL2qEC$#b0g%Ly#)w=?4GBt5^v-h(qAXGIt&|y*1)v|IzUuF?tVF(o>tI+DpBsz zKonmcxjm8;x#;w61|r%8Y{K-gPY%;yD3Z5Fkgq!Z>NaQPASYOdLup=9VKWC@Qj)Jr z_;DG>yoj9_B`zVeMVHIN@)-)%wLuK^3~68!pJEf^i}XZq^7Wjv^g1ro5s&S`K=hpB zO{zJ7pZNEqN;s^#dtJdt^A?U9c01~uGjyMC`^Urbp^3=HZ@Oo1ww&E_zziWqyJ1EP zb_zBuD%{v|lqMlWu- z3sht%I<#8^MnYK%WQ7q0ZMK}>9H0{e-lul>?X--l`|S+$5g<7bdt*TNoQw20Zmn1R zr9dxmx}U@u%5T#h*=8sN+fo3Z7oo>-=XjcoZ#|L23v$RYsT5);qB0)Yfq0cR^-ubJ zuD|GuO)Z5sVZrA2wpsw72uRT00M~z~(?bvK+&y36p%c^kK@oPf1Km8JaUzUj<&d?7 z;AP_zlVqrwa~%p#PFp+TN7M>=J|q{qt>@sDF}$nX6#r1%ibLUZyxQWz#~syK+HVV58>$!aY(g$KVh!qMUzuRUSAd9AzCX)_^DI^< z{@!MhdG;;R^9Wl1FrjDHM5daVcMzH&#nC?SXOms-3pHw?IJHu{3HB?3Vj#=eQwSCm zP3;BW18%#Dn1NMuv;*uyD=cJtY(X`*tSY(wYIL&4cH#PBJi%8)6sCnZ4$cxNcx(c^ z?p_!f8qy+8^h+p4<5K_)t&Ds{zWlf@Uj#cy4c?JmgC$wb-u``yepN~ox3TfIself2 zRNMqzL@=vU^|5o^k~^t;=UF8dV}hmmz+jP(Cfq6DeZ@G8CM|fsOd82kZcqtJvKk)^ z2s^!RXK5K2SFDKC)`8bva<^q>x*;U6c$G3S$NI@#ysB?(z_KtlO321m%aK{(KREg{ z?ag5c;4)JPwX5S`{TgNYOM0EzSjpYX|d+a*cC^Jh^LFl1pMz)YJK}MK=1dZN6NEJY~mT zVtP6jOUjYCIV!++V|F9l% zP6Eg$mMLSH9NeIuVM-pb%btUA`UI*ZOJ3*02|s@Ew! zKmJ9<2Bsp2{7uCcF<`P;JH=}Xw#o6;gN@A7)?~O%2UvyEs=ZhnZ&b z(L-{opZ;6MF&EcK6akY$!-kI(UNvR!Xf%u18817!Q5O@Gn{X}nwNu4@VKE-PWvm}O zu^q1(<{@R>+ zq$c%uwT9YggMwh=bfhpt2XiE^_ifV$$RBXW)p=fecsP*1_L5B#HICWigd>&_5fo23 z1-Y@(#(qPO{pS5nHvka^8-W%>KDMdE(hIVf%FkY`C;c(s_${#9MIt!9D$S|{0#GWa zoQtoV8_W|1gNwj`p-x^x?%QpH5deFmg;k+HN2`v&1UQ)(05mF=D1Sd>M#bIqSw~>F zf@a{_0F?ujDIy7cDQi#bT}xs?xhU#yZ53!s#FWMHOEw=md9fxn>?B})@lb?$piS4U zGnI1-id6|2x``Mt)eqp+KXu9}ZshbXX0s57(YiHC2Ct%;=SbwDQ;EX{Af<`HvYydq zWIBOGFsKuFKw65zUTPi%A<;yMd{>5C-wn)>V9k+0&Lnz(!-cZ3MPDpVWYZd6K*M$7 zRqqT7%z+YzHOL9TjdR)3pF7kIPCbQhx~rT=#C`9YU7QQ$eZ(&wY$z6t*MxnG%CI=u zpI&=ZG>%92ZxzVsf2s)Xz9dmBSJAApcBu^5SK>$2Pi+oI!+mjC6gsDncw)eLvlxUj zn)ZEmL3o#fwJbeW%KQ`qAvRILewz_%hpYz#XDgACzP$@2Jw;d5MGaS@J20j5hE<>)R_t2hO){i0vqeT(N75;RA!ibP7Zw44x8fq7plNYjl!v z@bWZeuR5dSt^CSq6NF*wh9fUcT#rnU>mMR5iCBLwM7`5%xJauA{*EeLpj?N~5rwnq zMS)0pR{7l+AsyoJXLKTq`w?5VFOO{R2U$9K5zTvf5(P zgP;3Rs=i%9OqD@8%Zv@eL7<-v$4R_FY7D_S6jjs}E%?I+j*LGiNxfS>o0mR86b_-g zb~_ccjVOu1RNyLZoWzLCFqf(yAc(p^Og2}sAg4*AL>QchS^Plprvqbjy2-@nMgnKf z@M&3aB?k10l^?@8JV{w9LUG>Th!@2{d6Q97z)B#wP{KB5N*sgpV%BEB4qnFzDPT8T z@i|CXB4vP>hWEOkzO|8jkIpr{3I&l$XyMq*cWq zzGr9#zr`<>?T0lSBRd>)4E#zj_9nKK(|HIj^zOy?#oeRx(WiB-lIQ4l1Lc+HZqL3I zxF}RLpS|IGd1|x+pxanIzKOWr+4iV6?0nsu+C52sy+3_@csX(dJ!emitr=WAUY~%f ztI3r=) z>ADty9$wEpR+lcdMn3w&)i=IHcK0b3Kwsb2CIeqL>z$P`pMtJ?mRA2$ps$CBQG03I zjeCCaEB~v>m~+BVc2IgqbIPu#Z%c>U%C56hU;6cl)wSm_@6vpHg3`VW0~z0Cjge7E z)^bkB%D}=8-zwCL)t8;~cdS!Gg4Onpe47Mu4Pj%f?)DUbOK&=zGoPfRG~0ck=Fv(Q zfEQ4`Ft2G{`P}m2WW}fhC$%gPrE)XvYR!AOWp$n=pOX@D3Vdo`x5X#RP7r+W`NSgq zAErbL@i~0&YgR1L;LC^RoTXl{uh`k|Ux2mGH+{dBdv8xU)*K$F7F5FgwKO+6 z@E+`M+uXHD?9I-ty5#4Z%)qmbQ%UJj4!2rw zM<{Q$TJUM`nM9u(JnrhepK6p8+q*=ymC#-uhm4xaCwO#LH#U@tiv!7$S9q(VWl8<~(lVcWkUWv%|UP}i;CRRLsy>mXm3!jqai;^Z+|IEwKuQM#@ zdvbm#-@l>*Mb=6Z0m_e({ng^GD@{nel&C`S4aW^3XKwu@T_|hG?vZ zsH`oeW}}s6C%=|tBB}_g4Y=N^v@^=G*~Y1IaqG*Sdqj zLkFASAp-Ca=gqaKmp1WB=lzx}3U^o4&D7ZPwViBjM%GO#$Ovy`VE=gg`X|dSEN{_a z+Wpy$H>y;n>Tshdw zIu#MJJF^FVRj}jH<$lPpEH0bZjVzkD1lWz}xm!H9U;J#)8$#y6^gsjMWB#Lf&fW-+ z`y;o7$pN*>2x^TG`Bht_YTa;Bc%UcFJEb>T4KSoun}CKi)fbr<nCpVjq_RK|YUDAJ*l*|e2E zTQBI;0v$a}aunKpZce*9@vx4`INZVqk4?5-8JU1uyB4-$gn8{%_oZ_=6S4WO<&>kn z`37$-9u3ok54Hl+whn3@ z$4w9TL29MSPdwmRtDCS#hRHa};oaV*kGdd72z?nzY9G#V^!UeE*LU`VAy_psoAQX- zRI5;Y6`1yr6L&gL^Px?Co*(-4AVS1@nf>|*xA3|@MmZpFo{g3^L7=IrgD2>h!4u@i z;E7o9M2$=fti!({i02WSA)eESx@fk42mLGicaZyp9VBs4$#0Z~-|&B+{5|0BDF3?( z0`6v5hp&0dP<-;!_K?JIR?QG-fk9v}?tf_gOVTpbAu}cb9EJ!Ev-vBm8(@#T$tK_8k&t$x!eQV&E-Y(WAHA;t{&}EwOm3w z1kiidmsym#dF&c`=!h9db83pgIC&fO%DDdCY3NqYPcML&-K#uis(fOrutXGq5^1wx z{JQ^i60*CSIof-R9Z4i7>OKZscja?^I1y;|e%-hEerR*UT{*PFi(KqBhK~Po=YEfH z?Bwauf$N*X!4v9xQbD9mQIF>y`QRQ?eID(tM@a1YnNNF zsc7Z=n8D5Fb>B$Lm{Pjkcc1kiev>n9i7DJC4%d5j*+8lLnbWBh!PZrY6ROeGh02W- zpOv;drGe(kpCjJ^dd}eQuPbS!lfEly(WWOc9w+By-=8<1n5sm>i{W9&mIZ&|o}S`| zC~SN3tr5)dzuAv86UolRQ8W|D$~5yjnw3N{b}j4q^$Dh)3TE%=!4hIvDI4B7zkqqaW&qBN+;WNa)+=*wP=BnY!sxeD|8~y?uWF@OMHs$1` zT7m8rnEgAQfs3aYp&jB6)d<@@-=nk;UfbSZO2PIcWT{iR=VA6FbW*w7iUiCBe-Yo3 zlKDjNO~OMLb+=UJtes{^s^*X)qo@i8m@n;T6F1H@l6Pd+W5V4d{h}y zyQJfprs%YYLXY}6R|t;6b!`!-&t>jX(RKS+RAfIV{poo}Ak)K0si$)%LFlD+7}dpT z$@~84DMnf(eHVDC`#iHVTKCi-YRE$@U&iv(vUJMJO3ZAJ4!D`+N{!Yy?^GIc-)seX z-M6e}nZy-3_DR|&$JYwc+UJtWq*ngepWxruT&m2Px}3ysgngn#KK$6A#IM{jM%K)) z%z0Gv{|I{r=*qUOTR66D+jhmqj&0khsAAhr#kOs$VpVLX;;N*Ax9gmH@4M&w-+O=C zEh{ap?ex)mpKHxM=2&~K(Z7Fp(<cr)@XA7jeMWisxB-H<_PHVjDKY_GM0b9#0AU z@%VhJkpZZIV8f}#nrtC^}G9e_Y4`J_NtOePzi^hyWVE>%jYE2rCEkAw^RA`BFlGdnZ0ma@%}_;3+!FApM0h@XLrQb zdEFd(1aSuMznk|mTQ(WU!}(K zlFEGyAox+h4W1W`@BZRfNLs+TgY2HGfLxEaCoeQ8Yk<=y*gQ^uP)&X4$=F>386`qk z+jUm2SBQU}e0tZT!OijDS)F+H>t@ZUFRdxX#idYO=5!#-oa*}asIzS3#Z_ng@#ZtQ zJmpntQq8fNc<~;SE1}R=r1nm`%jOkxO52lyDe<(K(k?rmjOG=~fsOn7MiZCqTqc&P zpAPPEhvV_-JL&L*Gj5j4o1YAfH!*6@l*^8YYO=nU5pmjwtv-}*=)}MKdYYFMiYa1i zE$0@cbv4;c64zPzP4cVm~)o1JQ^CQ|silj~#2f!%oL zoyr)YXLmZFQOv-r;v&|QcuLMw)lawMDOXyJdxr9ie`9r?WO13XO{98FwN`seY_dXp&&psUnk6_8XQ!gmPS*vV<$L}m; zO%Wt~l8>i2iAAPM$Zi~22f|L9Z!gY2C&spZjJ4w@{}e?*Kk$~1nP6pwqRNsZCxwZS z`9wl>7?AM*juK{Wjv_wVOoXfIVkZAP5Wy#zpq}vhc|YMfD>f~BQHHE6`?m2%ITW^c zqlcckS_5(qu2!`RTZ(3)@w3#3*hqX--457gTXtjJt>TH9CTtjcUaU%aBn>5D-5P#6 z9LV&0dk*C#YAQ2j#{<#`_QRb@q^02h{>x`D)Jb|4y{!M;M zEHqBcBk90!vMO^gX#!FDyg_y>&?PwpKNsU7msKqJcl)K6c25FURrg#?*$|f5%Y>1O zcUNQFdBr4zM6>44I|Xh0L3_C)AC;=WFE!b!p_doxZeOk!9-o=k?efsi4Yv#K2ds8e z-K^e|&)Ww5q~UI|wtE>Z#MidIchEg6srfP0S>`Ns0x-R#+064`q(%_cjwI8&#D zPENd4r~Rg}is`PTCE1vj{kwA+vf9p=%GUjkyt&VkZg0Mqoh3F~>C2>-mLW@AP5N+T zQ#DlXNP>yjyu7-GhaE1`LSt7Yj@{R`MG{4e(`tbo_i z(YK(f=UoM`uhVfFt^EW9xBm9MP{5UD__AU8H$trRjG@rT_3!ZR4BE*_up_tMk;ll2 zm%RHdoRJXw?3inOb?iU?h5&w<5NTXKX^?|A+W7f$-Pg60#Ww1`R2bG#X0L0XgI_=w zDF-?9_z9WYXc=xbyXJF`cQ0=p;v8gm%C@jEHDljlTap}7Kb^P=;Zpo%Z>7Sa6*8*3Ii5GD>>T&1nHndTd{r7;g5wI@Yi{eD6-m zmhVM&Wj^#12#Jx7*R{PbX-K=AjmJ{^H;hsI*6cn8Nlu9&Fn5kN)@252e;QxMrE8=f zT!*ofXV&%HUn5xNYkPlS!k7(}1j>oQY1e zjxX=VmOX| z-zVFi19pNx|Nq$mIHK?KK5x2kwsT`4g9rK?z_)X+!zt&wIg+jBAZF zeKD9|(qzmir|no|?884pq0E>P3& zGUoN58)%~&WcsFA5%T8ae`8bVIUVG0THqfdU~xlgzA6F5VFVXj)~%B7&wX5>X>?5Y zvAs6}u6Hp|Z&prSO`{cs#Mm6C0G}wH!rE4f+cf%h1#xM+Td2A@pNm)dRCKs=II_Lx zL)$D$+QN8^P6@0wbirA4pu#HKG%^(hE^3r1(8Jr(da7^LcJ>!%6U6r$Rgt|W_i8xL zYA|ooW^3RaYhWD}1jF0n5VjCcK*|i<_G+}xYK)O^_@KW(t$@U&1s0swsFzC3dfQ@j z%ivcLsyHy z_FbkUkm6p=gr(MMqEOEs!qrkVQ#U7l59c(f*opAQHeSFy8;e>`%jDsswqq=r>!bZlU*$St zxi8+B?0tUL>%3(lZU6qAKH|@{L2LnwvM`zstDkeF5q&vv>c;TtBgJ6+^=QZ;kC&jD zNOOeLdeit^#qYFW9kx(A8dHk4;3-*6w}A7(e!p-M^0-DabtLXgyz+MKc6{ySN>}9c zkrX5TjELkqWKjBE5d40soxze+->>I@GxwC` zT#_qGW-)hau}c1iZbyA6h;*c-vPnkYglGGok5{xTDs+$8s>b3~c547o0+@G3fH8*B z5JK1k@)@yP|7c6GDk%tv7(2@_#^M~}0Zr%H%^ z4&zW+&+fnvca@b2n-4t2w}Z5?a9v-ZW4Wudhe35SgS!ufxy&5Q7-0P40fV2}9H`G~ z5+D=?1YxEhMOAT#Cr3Ovx~AIu{3ycEnQw)N98)X27 z6bxMq!hj`vR?bEv9?maFoQ^ecr35V!wwXCuQa<0SLkD6IO1vrM7FRd|gcOXQ1N0iV z$Y-QdziHAI6()18!_FEL=XsSY1cr|-l-Cwji#?PzST|z;236~IJRkh2mNFL(6$B?M zkhJ_O-#o)NYO}tqN#NP=-$S#k0|Cz5b%i7SyBbtL5lMIEMq}|gA?|<@<6@xILa%0lffs}l2K_m@|lQ-@~3H+pr!`>c> z8-o%!5|6-V^h0N%0tGan02jyP+?qhrfT#V>fcgEO2Mj<+_G|3U`SIxvSoh7?d38&eTb2=br(j1u1I_ig%K$yNQ{+S4GN2aFRUpeFH?;SeXYlOxe5 zb(4QT2~QFYf*gl}(h2++3LFZ^8$cy~r$_odHZqhxyD_6X7=E9&;nSq(!pG6w%+cG< z(bFwG86GMJQ+~gDV;IOs{KGJl93K;nMLlIK=JGXWiFUk=EOHS)RgJMDz2lkWZA|aD zaV!RNKz@x*=S)mAwj_6==6E>I;OW5ac((3!po)8;iWs_Spu5Uq zO0$vrXlqI*#2@*i7xlxyPnM&1yt#gwqi+sJY`fc&4WTwZ0Woo4(Q$NfZ1ZwvGh}S1 zbBwstm_ULO-r$MG*YDmN)xiJzP+Z1p-kUVCK_9EZhX4`uL6V6Y;0TJc<%~WvdHpUG zLDue<>{D^KpLX=k%ibgR{^OKlj>M*>kz}RQ!~s(mFGM z#grx+O~W4jdh*?iIpg3(`07r?DzgwJo}rnJmPMAKRZM~7A_1AlUZzSk5h-$ZNUOl!Xa*05eoI=mA(>!AzB!T&_*TqPde zqsU5O@LVstd6~J8@O&F%6BRZ1C^<*z_Dk-5zcmwt`Sb+ES-F{C%=LxRRfYJm0w?9U zSaIa*=I6I0ti4Ad-ta|w9$G9j8zTez3^T{*T$^a(ps%~U=Nr(qjO?Dw?3+H$I%~Gj=UA|;(|iw^zq*Own%zA{c(Tq5T5sWs1cD?QPbwL z$~TW)k-=b!N0N?PA2C5~IU3MGc#ul%8fEYr)QA%j-`@u-zO(@;!Cgn1IporE*g066 znCRFtE7G8vu}pr1AZmmr-a_A!w*AX~^XC+Q(5+ltW-h_&mG)UHw6eT+tV}HpN@g6fX-a%F={g ziZV@-vEK3O4x*Bq;Pep3Ao&f#1>(JGDDK} z=o*S`8t|!d7>4CafBSo%sD6& z8{#|y4T~(t0lnh2QW|x*6;MRsUl{)qaV{*z@ka!Z)&E;W?67!~T#v!u0$B55=Mm_; zi7YmX*v?UAE<vMrE{n7GI z>GPDf&IsABcPeU1pht{)R(MB@X7%3~>4`v(j_in2uv7l1xT9ku{9A<=Xo!V@UBr-# z+Uxt>tCEMxzjUbPp8$2dyZ&3p`^07=8`=MZgnOZOj{nHxi&C13!I!_RK+pJN#godv zA)d;CR-pestQa*u3>`UyItgz~zO(VA@S2>uUB??)wdplRX#3;`;!%_E#*l3@mo;s} zD;v{nZ{GpY)%R`d2ZrJF`Wxp?1At5VSUt&#?<<~wBdCoH!1&E;7q?b6*iPB3e;CEo z9`DRU)>bN(NaGF1HB4%KJmCWHBi!16?{IwHf8(O{P@F{^0IaiDY&q}Cgbdy_d{>QZyYc}Xx*LD+3)HRrl7KjU&U3j&HQ56M!J*3kVOg84Vg z2u>7R={tpJS3(@F#)?l4{ir%u3fyfU|LwK6SqP=x{CDT*x)T_7i>S|{TQhtPkxDqD^fR5yV) zK$#%Q#1cE#no2{GYP-aONdU#5>d>u3q>45KX?W;YqvEsuQPd1lMO@_2s#T;i4yW4V zHb=U`(%aWi`lMMll7$rpYJvzIqJw73LpRKug1Jw!B3w;c0ieE}Xv1y!VK%`jdm&Q2 zCvN5S4X=RAKx1yQHk#8!3sI9v~zwiqqtXx+XtWAKP{~48a6( z7>}|4e5^d1aitssc~p&=&@F;9#-Ocq+vR_g#lx_D@74dLp&2M!M?(9~;h>*=mQ%Qg zxZrQ6e&Tz>^EsFYnx(=huA8+YUG;EgVi@bF223}nVd!<%x>?cJ`+Qx=p zIt%6^S|02_nOfhaI&+W;q@LQeOlq+zD~+nE^vFL^i(&tXN`e$dNxW1~m4T@CFAMbQ zffgjfWBsvUrYkD>ndD(DdbivgHN{&~c_e44D~b-vd|O?uf%<1{VW-6WXH3e!_#Qz1 zLEh?$x^qQPo0qQS!4EBpcngEJ4O$n*^wns zstKeFtOZZYn0o>#Cl^Zn56Wa<|D?>5F>7IGFp_1&r6ds>Poap(D`;8pE6RL@ z#FUpwiZ~|=i@N#MeyU#ceTA}|&i_EATdmnk1Z{Fz0LK#AGDOs><^vk?d483^}P!fD%AvqN~`ct;o%rktrC92r zd=8(KN;UF@PBjwY>o5q#i;}pf?Nc2tCxm3_ww;oly`IDJepG=sg(_dhh78?DA)1eB zN%JH)P2Oi9NrKmzDLcc(h>$JU2w$jV+CzR%mocNC>(<-WF$OQRws}Sn9y}A*&_Son z@k9$%9^W!da3a~$3)^-YBS1q+0D~?2vFkiYg7E7(01_?klh=R@C4mDQ6Z789{TDF% zhUdRxCQfV>Odle_LZbn^7RG@K4NBUFO)%4haeBJBPBlE`KT5;kfJ!OUfJy;Mg5U{G ze2I+P(y*2oin7}}CXd(@1kya|1>Bpg;UVC~KuWxx3k>n3{Ne+L;8@Z;PfHghsZQ+^ z?cE_mvp->bFKqoVe8~5l)U=#w=&OYX14C5L4-}z#(`6u2b=A7TOi|LE#C6gWoy5PV zCpd{`r6)NJBf`k?k(e*~Wh$U|A zD_b(M7Rlb4s#LVv;2zb%9U79*jwZAPe9;;{Y^kjKI z4u#7eOfyp|yj1>|Og$d3nW>{eR4$S%`0!Z}iX4ENCcE-rY&?4IiE!GbP9K>YGP`4Y>b1ELnw^b|S`KVfiu- zDt@Fg(D?ND>3{3 z`poY+Xoc4(h9NI#6c}QvxMi&Z8=n2IxF8ub@g^sf1aSmB7!{7CnTuC6Tw9C0cc;8F z0#v?cEl48pD&FDwh`2Lib0M25^ycDj4M*HyZ$?;rzHLmPwC@1!c+I;jG4Pnz-aPtc*v>U^2l^}e3 zgGNDjB|e5{w9=4f>h?G15nNU11xaLf@z4Gz6A+&QsDmGf%bM)-k&xB!<7|2?5X#oS zTcnEy>^;PtCXmlL`AI#zG?I}aMeva92SkXqks%e}k5X2wp}K8HcFVmXInQK|XwBfb1g`#Ok`2rb7FwFXWT>H#x5DnfAAwG|-WU zfE*|Mx~DRXdkZ~GjN+fq5%en<^fsIZX)EE4l(4E?U>|wcGD4_XzVr!H7H(ub{Wki>y(q;;i|Wr}>Q^yFED-ohjEg7W z&wu`T_gu*@F`V#Zt3kc;Potu-zrcUt?jtiMR{?K>$VT~ly$V#yk`Lwp>AS9c<^3xj z*Dl5%FXYE)_L1{3zLOFR53mq80X_RKDdd5_hG717O!&2+>K2+hYveh_^CXn-LmlF8 z$8bbyyN$T=nuM4LZ|}?LVqsjdZlR~OeU2Ia5L*jS{UeEmum~ty<+SdD1x^Z;KV`&n#oB(?i~J*aHgj|vI)C46>g+@%>(ZXH&B+Mi%C(yR`v zLeRvmZDeq&-U=t2js5cElkSv;d$4A0x&A11o01CwaqTj@dBjx@65b&P4x7IIHBikh zix5z@9=Hg+q`1nw1aS}rS{Eic z_sBht&ui91zg5R_@BhzWp8#dN7xRPGVT*R5i_@w~*#Dxl9=Wwf7`OJr*Q+`g2jCi> zd#rq^Fvjl3(rKAtqs%o9R! z`J%5Dv``PBJS9BshNYmP+vi@{Ez@tMJ6zvPnQl%N4V+aI#?=fnApy5ZOQFr$WdNGP z858+U-+S{KS2tGI1=Ti#0oY~yy6R#nmAFTb4l-^R9aFgcAi5!)wYLZ2#UI~@_*dWv z0HjNE%#u&_0fQIWxPsX7-*_MI+SOA}y2l2wdE`mGKO6p0r3c#$uLG zJDNLtv(UIjne5i`SA=lgtj&b|GfS}}S)$gj-=Fq`00u|D#gQqPd|-TOvfdATN#IKS zdgN)Df4&~MINvd`eAM{bziMDeB%V*2NH~Wy_T#7}4TgSFm4SQgb*WK3r69YKqoE|5 z5u-oL)Ib{rOarK)T0$H(#25p0O!9R0r+c0=a_6zVBdw7bc967j76t|V1vd*#7NCyv zGsi`0a}~eofJ8VfQ)En^pw6wq9f>12TF_A+G_ZeO`+>-AODe+Kk;A3V zON(G_+`~)kpv-Fx?y3YhBw3w&T7VLEqom(M!SU6RKo_#=94BVkCna4PYJFvZ(Xs1YXk*rFDc+$*5ptM) zBb>$(f)(<;D>(M;TAGR~?a~~jl+_RymG(KFqhci;aw)vm%{!*ld2+)mw$+z%V7e%Y z3``fKf;5NY!q$E#S ztEMLZixU^ScXI$Q4Yf;xEp?F;Jjndl`61+?h+OvAk$O8NfJKoLMgt_%3b_a`s~9gW zZLJQF(vnu_-;~6~2~acv;%>OON8-g_V1WlO8tOL{z&_0r8JFfnUnKA>(c;}RNVzO% zRRVMt=0LoU6W7CjYC%%qgWR+UAT z2+7-okHjp>GWV9k#>13CC5&*%jOt|YT&%F`ypQ&4MC0UX}A&= z*I&;~02L%11z5blOo4o8wzhg#i+hY}(j`k;30-&?l_-a9s``s9f>K zX~!#)loM1550~N#orZe~)`S5?+5!mcU`Y3W5%Ah=I!qyh75Encsv{^~Oxy`)j$9uw z2}OB|vQW$M#Kr6dF_JQpGFeFxfP2W}fs;y-On6IymIy$~ST9LD;8}VmX|YqSOWQ>@ z(GvTx*@<-An)v=}P)<|_uIXnM(>RLzDa*e|Ro){9`2P? z7@|zl|2AYD;SZlwAi`gUl%|0L`N*thhp>AH#AeQ|iM!|k$BDN`h91cU&ZW`}=#tdk z1k0VQY;FS=2L8D9o%CW-klVDBO+e23moD#W(vonwrH*oVrmVh%gy=@9tn1Bh)Cgo( zE^poG)AREn>}du3uf)uRz`52gNYm!W5^i zlj0emlMlD}gU1q9!cS#OTzLb$Vov;9G2pBuMJBf&A09i1`ze%LmU^x}mlrDeS-`|{ z9_lkkJ9>?I{GV?M3$P=;Hl+40%#i$5A!%Y>?cesHPz_U5}5-~buhR~QlI%oDII7zcl z8yN}9TAEsCicAVv25(YDU`cLz%9LoG2O^oFKo2F&T57qDKw(wfCcF*aXL>Eg7 zKwxRNqcAiwGpO)Q1Ya?*-3--JWE1>{P%(dwr|MG|`LrI$7mGyuht#K^WKw%HCh49= z|D_H$=#M%vl>e>H4gsi+2c{?B?HuzzU}lFeu8D4Ce*-yS;X>c9$0&6Cn-m+v-JO4O z?(4_@XvkM2Bx%?OY+rQ(`(N#=T+Q9wtQ{=>+Go|GvE}le2cvhV%&2|O0=Csz{($z3 zqJCR}$`1ID0FcHnAodU3NeBgsJLDTt6KNJ1SC^P~&)@obU5CdMnR5_5@)1)_1mT#2 z=0U`1>FK!c=U2<@UX3|e(juZ*XpIE<0&u@{zF!>(avCw(WP*C5P#qolwzp`MBuCP= z^+$Fjz(EArR`53bs^CTkJh;}3mK;WD=_pBF8KXgpuw8DBKi992UFpT}GPZEI*yqa7 zt=j5{{yboO;C0qbE@7}m8stKy#=|)#30+q)@8*6t>>+J`1bFJ&lmp4U z*cF?Qg@JG^Hf`Y<8}mX%Nqo6TC~^Xclda63!vhkXc(I8F4}%XG!|RPC2L+LPwHQl9 zkasw)d=oI68adW<_gzQ6W!l2DWw*loxnnxhR^4jpqU;?3l z&6@I>(89tBo{kh^>Q)6;!rQGdQe&%>^mZI9A6AHIgJXGL5@tJ?jlyhSe1Rg`#uI=f zQnkh!Qn7ZT;}gqx{b-I~FuwBE>Zr=Y8bUv_*^L1hiQeI?baYv85JJR7=5t;UCw3ZZ zrG}bq#Sih&9Mu*|{Q zzCLh~wMl2ocNlE3NtfqlP~6;mcSADSd6qrxh)EQJp=QyCHd*dHXMBUIZNG_Hgm|+M zJ#8CEy5~|5G#vN=Ig$l=jukhapzX}NI1?9x!3WOpH~^d}C%sQ7&393FEg|l%7W9SO zJv#ugyp(;LcK=6pGDYE!3iBErx4KB1vjg=(o@<7RdgK(Jj*93_UD!=0DJ90rS^ljD z;I3c67U@0<1Y+r-ElKR*U$)l~(8Fu^ViUf8jBTrNy8`DpK(M<&}l zzjD@ITIPuPyWO>z$zK<|RE_zgxKC{={8X?nF`U?f;<~cfMuVL4*dZr2r#~eEVP7k` zF=?2=6r=_(vKpCyH?TpO$+-t)bNc*_tsTl~^u8z{OZ)Y9GuoaR>3_7p4Xji6--9#1 zoE#N0Mk@zL%kRmVl{^7cORP~XH?Q!b@G?oF5fL;Mq07$k2k}#D^u`izdak2#(w_gk{R)j z@Ga9(8W?_6BOX1k|%Iu@(BpnvgI`*44-_;b@i}N=e2ngE09kT$oo>en8 zvHPnb=T_Q)!*>>f(H~!;Xwq|J?UGwCQ0Yd)nx~NPeL&C&>ajKwuY@}met+Y)i)Xp2 zm+5-2Pw>8?pQZo}g28nYlLjZ{{g{0=`FMCE)M@+7&`2dtN7w$NAJ2(l5S+Ex_mH3X zrDrP4ls5JmMJfn=ClmE(vz1wA(SoL3BdsI1iVEJ>r`mnfO&>D`cBqodWH1&7Zlazm z-Q|#tL5S+soJ1>zlW;ELJTn@kz0nolDL({H{^#L3?i3e{kIxA8Oj;tDr z94loM)5_pm*=!@3^eTqasJNJ{a?rKvfp2tkZF?S&SJM@ann6ot4f=thyl26>4x^}NjEEVdvoT$j;w!mIMY#Z+~C6L{i%u4dARhl;U3i~ak+N2Qi_Py zCKlf;u4_l5Omarii+JVSA7H#yKLmH#I#gdH41c-smgPX$igap-L%SYDqwI1#qVSy( zdW`H@z_-s(ZE8DXIBB0a_~BFssyPwHU1F>pQZRJV3VDf5$0map z%5SWjg7EJvTk|j*FbEhW?pI(SuJ1&N#J#&V3*6w1#%4hiKliJ-`8EuXD<;@qph zJU&ikTU%FVaX{V})U95rFLY7w&9#=Dks<2tTJC$v?QJ5;Y=1+&WvSN2u-ZAl77*=1&gr;ZGxAN+Duss z4@<=6OCiz@H!z&ElrwXGlA;x`fdE}-|AjzU+azwK_sjFaM*8ePl@znVr9XJAUIBY%}cB3qX+>zNpK4yWL;Ea1{Kw z52u!BM}!KO*#z;42QkzA zpbPO%7Cy#f+AO{xQ%JQZD}swljE7Kibwe&7dj*f-{IE05Rt89c3H0ZKJ2#L*d(upw zX0Ij3eZ`t&5|eE@UHLLsQ0z3M&|D{G)+wse4ojAW?a&_?V9=m3M=mpNPqQg1;ZZid zLNFGJP|8Y%@jx)_Mf!^=+lFo{sl{2u%s#QAOe~|{Cp2LrVS&Od`PyCo6mrDdct;^f zaNmbbm1M27P)o4#q~1F%F7$mrqBA~Gt5I}o$aIw;#>Qe0&J|O+Cro|BLP5As0*WU1sBwOID z&v!3H{vXzsH{qMWB=G|v?-8S%zMLkAR@;CGx1N5>+&!*Ok=B)${ zqnQf>>HBQHr^IMQ60qYSfk}=~YqfVVAr#AF(zgs{*ftIqk>u-b=P`bvGc14TJblAR zOGCoueE2EFM~tDn6uGiIc^q0$c>hIpKP{!ZgKlYQg}OxY>dv}CITA-vI$ri5!~5{p zmEjp`Z1JFc?#p4OVwyCqLKB`fbrTxeVL6KevAJQ*>KMVXQ4oE1ut!fA2R7 zte9m}XTCWGOY{5TSnj$fDh-DH4Guuxw=M3r9usk-=rfRiH}5nlS=Fe2MfjbmtTAWf z`oW&Nif~+tliCzU*8qS6QOVQHI2j^m-UY8`_cOD5F+(jy1Eev7792$M?M6uKcf}}g zI`#gno!p_i{N*mIkrtQn9$QH3$n^Gy!>a7EXFd%4nq9Jd==66{Z5oyg%ZMjb+;Wp` zHHXFken-H1XVso77#C;t>dIdGM_&)x%Fa=Rl4^lpQuwa-ygHpTimni&z2g3Ko>H;5 ze49Exq{MX}(J?rUUcTU=7aV&w34Kv7Umfyk+%!Lmp?W|y6}E2E0ueG&Nvw``&C<3_ z^v@q;HcF$Xg-y?CWT>{hKX>e^b3@4JBU-{pmk^%6bW5w6minO@0D6X}q&X9w%`^Bw z5s77Cx#wX3()%YS0tsS~Ux$P3HDm>lE7+H%VB)>CU1BVetcQ0*$OCf4#K?*Zjh_}P zE|1Jkq#M`fSZ(cjS8&7kgmKw5(@o>F-7=3V=q!+SD430?p)$$i%xEYOh;k)Nn8R8P zI~3EK=fU#QG>;c4O>aVc>5$TItS?7yUh^glN)8H)>iIwRG8tf9;(6Zc^nXGBGZ*_B zz_(fk{J?_(X0PbL-=^-aZjSa^_IAwHZszuXeeBi5G{6nAV1WGelbA@FDCLX5SX4ow zMlFD=m3jFNmDHV7Z1S-k(YNdQ*=g+9Uf~^#n1c_{CL!bM1m|-l2_XJ?e=K~D5_%CT z0-aNfVx?*+rS0DC2}!C5j!ic)fpMV6inRox5dvoERDpO}69M}+?u64EgkCuk6m6%O z=0nxOfhWa$Y)#p>?yo_JqlEgxR13vpd{x8vb&E2zt{pDh%q3)b{eS2ZoIG0Y0qUU! z>LU7wuD`p({zu(ktzlzl8-V#a3e;|oB5AW#rMV?dfz}fm*t)0_X;s2(YeWfpr=0Y5 zZ=otUF55QY$4^&#f8?rm5vut4^3uxGfK#UjXRdS0HGhXxl2+$tdP$aZ(BhZtqE7=h z9cEUyk>Vm`xE(BIjx`gEC=BWuBxzG2yjo1AU)>w8O)TfKJKq zafo2I8=SMcg9$rr1IC%@n!C_UdBPtv8aSc`j&awdXHniY6x8J_x-^8|R^Pz>IiM|F z@(O!E!6rcAIR6m-NAh2N@BbRr+=K>)U=|FC&%J|p`xC7B5LOrw(jc_9%d+}}o&l70 zuXKqh7yDg_%$)z2*y`heV4Dcs%g=YHQcA~N9wwTaT zOr3G4s`b0&{KjF)e_#Q3mAbsDb3135D~n#ZF3hp5U!TflXmHr?>ucvJDz`B9Iir#^ z175CtL$_-WBWt!tB0iA1qb?{OjD87hv-)r}mQ6zcx=$nf^*>f=33K6*w!oT9Brv=C z&zi%*-QL991z45&likf|Z8_}o;PmX22`5VGwL~U!KyWk{3Tx=cN|LwSgHYkrpXZIU zvTR<c#>j8eLr(jTYZ`>f5#N(wQ-K{IT2-gAZx@ zS~n?mhxXGIGn(`S*knbQ|8 z_oC4S;t_ID)1>S~j|m`VTxQ`iUB*{9x?-bI0;~x zY5g;UX(s6FEFr!@##u$dIm^I0t}@W`e);t@Q_PF`c?+;11i3>c#kCoC71^VqSBd_L zq`5bLwzA+cBH(CLh=dX=rD!_}sfVJTsM1}QCw*biLftN1643D4S<=J(S#hf2$c&a@ zL=JO9gsrvkl08GGHExbE@fZAe(mNMvrOYC1Dw^zXixdjdxH;banTlVy;}dd`j5t%G zE2!wqG7;_=mPN^R6quA_XelrU;9rzS1Oqp0-s^xnaIGls&knQ4;Z%MzjIv497*||` z(2t0m^6>2lT9}kl&WTHCZP}CPUc5VciDZ7g-B`a{_bfbN9)Y52u#6q~`WwLGruQKh zef7J=in7NVDtEDI$N=D-S>N} z^AE*2Q>;%rGkkX~`rN-^dZDNcdyZ?Ip^lX~E>4BBd_V2rcHOq9TfV~7BFWc=#p>ts zCij1t{=J52=&9+uL->X7q%zLqqZeL55&<874+$Dn$w2R?r~a*5%iW$3pFRV7a_+l> z_kmqUU46c(rBN*|)>6L!`(-WE)AiUB>hWs-^>n=mA_L1%H{M!5f~&1j0WOq{kr?|l zZ|FMpN5S?7{6A-`!toW$9!L<75E2j&Y~YLqY~20VGzDCF0k2O7V{1Dm8z*ziD-ByG zbaf2DE+1}M`xz7(Mhxh|F1G$+Mp1e&F6-~5DO|;jb3}tn_I=ON+F4c-!8Y--+FWIw_Im= zeNG$-#|jOH=I+pZU|A5r%{@gPntP`lT56qms$?%Qx!gcb+d2mKKy1OR5GD(omP~Xy z?K)(3;2C0qIL5;`(skjmc?mEBf^GIXozGxcFpw3AH$UpgXMnRH2o1K6` z`!-0E<20B-L8qUyt(XZ+#xIazWX`sSzeE?YqD0nlL;Y~8DDVa~L8{rJPUAK09=d8& zC(n!U_19`u`fYY7B!OoWouCM56z(;Wq@zB&y>VWp9VCF>F~+=MYx1;Wq;H_DX)(;oxpHYf zZ3!_VTWCl;35Sc@Be6s$)kErM&eIxSp6Z?0vNl z*Y~?W`J^_Bu#?G>^sAx^wD2I(aOz_6#m?%}`?z=v(SrNO-oqDrCHJQHJIh~wz0i3* zuM;6bLIZijRoGE1Z2?Kjmeh2* zf-gFQHi9zk(AcH1`Zw^>Zc-zgo?+k$@wY)oA33qqr}WnUZ%9zMA^I{l#Rslxve zANaX$3BNAQ8|tD31T=Vr6ebqC;!(p z`=2kL-L%iC=GMAfrSGIe6jWADdOc^|8>?O6FW;ygRc{2|Q*30Lv3B8ytc&sQC;L{W zea;CMtXsu0+4jXe!?RDgSbVy?jXIlDI((bb*)F_aP~{R|qIKU~?X$xnHGP&Dzq#i{ zvI}o}D%fycwPDRn&S<`Qoyu`6FJ?XM>+s!ZJU?+C!-PFQD_^ZI;hyKae9^`3iny2N zOfmNadjH*(?2WtE^wFQ`4WG+zhizMb>}B8y?F3wPUw=0!U;?N%jIQXP}nZr-1&|znX6l~s7EkD z`LN{77jhEaJ3p;b_?MU((f7fs_SA$cCL(VnxO5H|>O8ENmymge`2~B@llI=zx|ew4 zpIqvXpE_}S+TmwYIH$e6t30RuobQ?S!nfO(q^0%BOtsDYG-b~2W#{%(UwhMZsCv!O zZIdn;Rach!zI~+nqw22Q!RYs&*H3xk5nO!w)wOoHx+fR6zLu-5dAw}-yt-#MpUbCy#(UT`7-rP`G{e1%G&vV7fuZ}pcoGG0C&DYA`J6LP?)}cZ-&IBsC2-GNuqVYLU1YY+f=NExTqS3W~xqVywHBfsF3j>1yiuQV- z2wZz&K>;>bGl2F|sW{sj5 z?RZIabI|8W5$1#!!puRML_yb%KJkLk?pg}fjy4U0ZUXv51j2;!GN=hC(-P?V(MOFD z`nf8h`q9Ub(Tzawehbyql+-$Hi`k*y1nRTq4ymTW?gAScMPH@iEavd wR|{bZ@UAvUDn;pdq3cI)4>> 1; - } - - @Override public boolean hasPayload(int termPointer) { - return (termPointer & 1) != 0; - } - - @Override - public int encodeTermPointer(int textStart, boolean hasPayload) { - int code = textStart << 1; - return hasPayload ? (code | 1) : code; - } - }; -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/TermsArray.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/TermsArray.docx new file mode 100644 index 0000000000000000000000000000000000000000..ab2abfe076c65ab042f436128b5a48d1289d8efe GIT binary patch literal 38515 zcmagFb9^1$*EbxqF&o=xY@2zMtoP|C#eS zduDyH)|}aEX7*8(frP>Y0|SEt`;pG2S*=_gp9~HLHVy*@h5;JY5d+vco7p)VsCw9& zIq5OE+uAfI%PFi2qkg-1#Y$loB=HhM!K&D^r?F><#}lv31afPwFrUdnJl;?8hO5mf zhQct#XQki!5Un=|^mw;W>4=G+>FH%@6p}%fdKYdMFrAxo9Z1BJN-s<86D|zH)U{=K zf1Ke2|FmB>$ZLQeav_?h9hj{72o^(K9jlH`{5=FtSzsJGthR8DE5D1}URC*IlzN~3 z>%q99>+7VS8`-0nzeLXK3KNxjwsj^#M*w$PxZ$OmeG!ZdJ6m(5*s#o&l_bsp{sBA#*g|?fCLe*VXC2c4=$H zsQOr*1WDm}-isk;o%RLNQa6(7CBbB{cEwhE2j36g-_sVyQV2e-gz4We%*)wMs`-zi zeB)3Ps#oq5iA@<}y0;h_Ig4rt^6o1*#ELzx_KZpeot2Lj47uNrubh~ z^q`UvegIW(3jz!b5%g)`XlCQY%=BkloiOzUk_FZOLQrCqved3cO}uDTU;J3ENU$$$ z^1Q^(SE^*Kr&~!}PZPVJ=;&hK#C$2U5PyZf#3o3?SZgsbf4N_CoA#=y(_jNG1->hQ z)LnHiSj#3O5=f3LY({m@X|7HpNWXMslvcO@v~i1g5NdIjGV~WdiL*yjNtZWe!Qn1KmUh6n6_Y-iiK&Qd&%*9_ z>QwxyQ+dU793-ZoqVG;|3p3S)KE!R unsw*UE%k%D|m!*kl)Wh+R@&whsJ_ow>Q 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 { - private static final String SIZE_PROP_NAME = "size"; - private static final String HAS_OFFENSIVE_COUNTERS_PROP_NAME = "hasOffensiveCounters"; - - public FlushHandler(TermsArray objectToFlush) { - super(objectToFlush); - } - - public FlushHandler() { - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - TermsArray objectToFlush = getObjectToFlush(); - flushInfo.addIntProperty(SIZE_PROP_NAME, objectToFlush.size); - boolean hasOffensiveCounters = objectToFlush.offensiveCounters != null; - flushInfo.addBooleanProperty(HAS_OFFENSIVE_COUNTERS_PROP_NAME, hasOffensiveCounters); - - out.writeIntArray(objectToFlush.termPointers); - out.writeIntArray(objectToFlush.postingsPointers); - - out.writeIntArray(objectToFlush.largestPostings); - out.writeIntArray(objectToFlush.documentFrequency); - - if (hasOffensiveCounters) { - out.writeIntArray(objectToFlush.offensiveCounters); - } - } - - @Override - protected TermsArray doLoad( - FlushInfo flushInfo, DataDeserializer in) throws IOException { - int size = flushInfo.getIntProperty(SIZE_PROP_NAME); - boolean hasOffensiveCounters = flushInfo.getBooleanProperty(HAS_OFFENSIVE_COUNTERS_PROP_NAME); - - int[] termPointers = in.readIntArray(); - int[] postingsPointers = in.readIntArray(); - - int[] largestPostings = in.readIntArray(); - int[] documentFrequency = in.readIntArray(); - - int[] offensiveCounters = hasOffensiveCounters ? in.readIntArray() : null; - - return new TermsArray( - size, - termPointers, - postingsPointers, - largestPostings, - documentFrequency, - offensiveCounters); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/util/AllDocsIterator.docx b/src/java/com/twitter/search/core/earlybird/index/util/AllDocsIterator.docx new file mode 100644 index 0000000000000000000000000000000000000000..eb87f3ad7ba4f847818bef98fdbd4412ad1ae5a2 GIT binary patch literal 37625 zcmagEb9`Of);}EEZfx6j(%5#xhC66%HMVWrw%s(g8Z>Ea|8~zg_ug~v^E~hS&&nrr zj`779Yp*%?+)GIo90CIb1Ox`;dm5Kkl}b@u5-14BI1~s7I&f513}E-g%<$0#fi2uY!$y#xrxSeTg^{=_RQ>g83n++SW|3 z4>O#g%zL#1yoPAO=c2hf0ZCeqAkkD+F&bz@!@)2r0^^XOH3hR=d7WhTYAVO0RC{!v z_s5l7UMGEBNgu`hB(h(Z87VcgtTW)+{kc=aj4sqAzZx~h4?5MkOwlzsTBtkJuk{rn zxedbuP`>}L?PYYG&}2J?sxOPYQPtT*vkLxk3a}2Mterao&(?gmG|Lj);z#m@g1xDe zXT^3tQpKy?UCQG6T3CIAhv$1H=8G8xc*}IfHi4SP+6w`BOMO~fG?$GXhU+lNu$}%S zZfd(h+BWGCw`54dW|a4w<{HF;berfyx-<=Evm(`^;)b-gQb?siWeKP^@L#AkoxK_6 z08ju)xn_>=lB%{JHm>0hLd{>KjQoU;W9?B@(-cfuu(=D7q#e+2#H0^rqRV63GO^m9 zI+Q-^R$MY31&S%E8n}_)KuvX`4RTvF@|VoE?tMI9ASavB^q4kx-V9XswVxsU#ax$i zuG18=>Pzw4le~GEx}+%WZe;9P&03*_=~bdxf?-xpXdsTYMwe_JSK+O)cOi z!STUFA#vyars43~m~U&wSnJQ(60|&3NkRSRy-#yjloq@uamlOYoCW6=Ec_a_WXAd7E6Eo&(z1j$4# z%>xZf9{eOXZ2&R1Tmc*CxMKt1f?KVlxO=pz%YwVsjJWotw*ATEipAH5KnF4C*T*3v zm4i$(>RKpP{8N`lNCae1Heuy771ve`*6r|9Cr5{^85eN<3WSyr1f=8-d9$abmBIme zFzdQ5n}EThx{>+$-E{^h3O}JQrmbwX=&#Ka+*B!_d@?ukkVaeuEJ9$j67O#=Em<-W zr7=oGG9jefrM}a5Pvsvq_`ZL9`>>2p_rP@tfpctuWI!|LD)#o$e}(tYzTB*>VV?l| zVgmsJg7Wvie6qLyqb+I^c5BQiozHX-`d`8=p+%H&;sX{%X2mveYvVIp=Eq58;vm{s zc741bLos>2GTnypHSj$*jz2Gnm_s)zd{)Ptc+4MFa@c@tstF%CSerT|b%H2|EW^|o zLe+OLoEfiLfMS6ClBTItJ?=@`U_5zA2yO4ANH_Ck6-jur(X+Ti!QSiJivO&lT>aGXfkR_im51lammUB*8wtvO!F^S6EW7gi2z|6XUTM zbzMw;hOmP7{Bm1w`V%$R!d4fXe~wJ}gpl6;Y7XIH5bg)IN#VAz&$nAi`--eH>NODT z@Wzt{V%7RG&Csi;)7Ty@k&#>;4)9ko>d3M0WJy+^0DU*8Ia>bf4zaCw4P|_>NV0cG z5Knxf%P&~sw5wv!Is~x^&1vYqb>o2RUtHV>2~}6%TA<-qKb{Y=YS9ygE%8^{QOUih zX9XqdCTc5Wb{Q*41geLr$dd`4jfwE+OlZzD4-dtbbo3Q;qcC$ga8X?-c7lD{K=%Pu zkcrj;I7%N~basjEKjXflFkafS9Bw~43&0<{LUH@FHoy|5oWk0?jzvxo`nTF_r6dVX zX>O78g=Au@d)g?*r3|h~3l%AT?CQ*5dSN2GfX#Tk#(Q75{YCW88>8-i${Z57Cf!p1 z`GIu>IGQp6Kef)bz{TnJopGwOrMkwA;?vV(oPiCdnhC*uw2$k758E~QtsmuSlKPHP zBaR}5oT`xPzGq9OIiV4fGB}l0)xh|*RwKtns7m9c)7v!xCN-B+Z){qU?z0`pxRQik zG#_3Lqhj-xjbELdq#SivR@8^|DA$mluB>JgvKW2U*?xBo71}!tuXUh*f&@b(9NxaTg9s=89sf|Ubp1jQp%cW zi#$gy!=P}EPE<%ODkq$S@y;q*BWE*9MsC}7IWRq)8It2|lACZLG4YHZh_XcYyCX;4 zpE&Mzb;=zoz|YeJO+)^PMSFjNiwg;=@qLhA|L8RDdnp@Z@OsB~(U8L2;^toD=7Nn( zOmMII_Q%Iu@gJk-Da%&XMyOQAg2tFIhBMlv+LT*2pUSm0&K?}vy=&By84E8*q)#SJ z+UOl2gh(rDXRp3b?)4%VCx3^M>38v^Pcj!136 z3kp-PEe-t@HP8~}p7UN8LIYp3g5%E&;WAz&L4ae*8wr~{>=$m#`GXg(HS&UTlpfoc zmt_%tu5FYkz4g+Mg-0v9P)7G*l9GO#_9*ApPE;;S_F*OVa|A@>mk%by^(Yir$Gj4p z?ZQ}jKIHvL<{jc$sZ<%IR1JlzV{oMLTW24^8@)-X8p@5;dA~yY&d{gBsDwlF2?dXeKLghaaUzONSf(()n3io{%a=atuF#{;T5vGFTQl?y@4wbl&35#fHme6!6B8AYRKEB zoL)K`{tPff7xw)jX;zp_TZhe@w-p>zM031m!)!QWeH>6WE-uc^5G*Gv`$fkTDjAI(%2Vd-}93_mS_cy+F?l%k1!|mLKRRr3g zHLVcYOFdW;j7c1Bw1CV`8Up_9D2Wdr9u}_$dKMVq;lzJ%G6+cOv4VnE5DdjADAu%F zj09FpYz{#m37;N^S2|00u{7oE51i?JJwPA1_X6FrWES-|Irep_bvpGO2zny*qs<&E z-WpW}mz^~%YV>OxAH5iej3`|rx;cSNcgC-AoqE}FVpHy`G!F6lSQYG;9k}oSb6nF( zBNnTuGFu7z9-xdGnn<}`i35{pm!T)gVi8-5r()>cpz_8q1O@t#0j~AFR;G2T6w7om zw{Q*5~YDP~nt;R-qtE`QW36r9gv%p~ zS|{gUHy;)rv`fJg=BLZ|cbs&e4K2{;(?4pxa`?%foCUtxby@kOq|A_xBZO-k{?bX) zr`TY6oxQtJ{@F5|E#}VRYIa~g8#IP;Qf-q~EOqt)ryD{Y#Dm3`;s9GFnxyda&RCb5 z;LjS9ItJb#5OIJFxFSiOW~ zZ;@8TP`2r!cViVZ1N@2fWOeEb%{kRQrIwvExO&d@m<4G>hqYIz6$G7cbom=)18X9W zbA;7x8=Bt}GPO+2X~7*Fc8{hZ-N3#voRYq|wl~}MLFEsF1?=m?1Ls2-T$WFS84ER6 zotO2+r})tvn8NAu}Z3454yrYN$V@X*FLUd{7z_3*k=-_c9! z9tL)I-v7B~*!kh1u>v;}6Tr;`K5#Sf$C~lyR`~BL$DiBcL=nY6W}L6*Z*cv=2^ht8 z5g&f#Q+Ciw))aXKORmP>iS2LcZkW=G?fUQCb9(1c+0ISfsV;8v;m|e81aL=!A!E!1 zE19A3TOg;L^fpMTi&$3?!}8Ylads{9i^|WQ)+K$eJd{b4e}SuOqZq7*BX7#H6K=z- zjw(EoRE_^y&!q#VEj}Bc`Y9wQ`-?{h>E%>)>s42!^|sJPx>Mh_LW4#?KPp7s@`8~* z83%>Y?)l-j+Xqv8-&be@IP=B@e6iwv{}*|^C^SO|jr&aS0k#Jt%ke$)MH3Kl*B-GH zG1j8mOw}Fms}i;d5pIh5bk!j1;15&Q+*UWUiGv;ruwOi(!G!h%BTMjic?h(ul_xYm zo(S|`q@wu~Q`urUt(IyW7_G~4uinhoK=3>UerNh;t)nWi_#&7W@-aS3}1%@v_Y-58!MyBmR;$84Rd3I&jowLca&HeiJ4f}JRp9&Aw(uQFO-Z*#_4@4`O$l?zzTu$<*0( z2f*hQ$BXar;LJ_uEIWDa)$a8yLuhFP@b(z<{`kCf9$g~Ta> zwj(5D@7Vpdp8w7Ey?ry7$!C?wAi3mXX5cU+Wq)U4?WCpRb>ifz(S6;9t3-&Xvah#G z@heYgWc~Y%WrL3A^TOJMhikadyS)}*0QJ6O@A}}@?Zaus=x4+GkdmbVpC&=V0Slj% z>=93GJC~(TUll&(rc52z3Y`gMytcAZeMN8{|??Y_D$BrY1`8_e|9z24o?QaO<{#Nun) zvF_cir+eQ0dMoy1u98AH;IOs9guLaGDnaBWm3>O`K3MbEW87CWu|S#J@bX0`#0NE< z0{2S?Y}dsmZbyock9&k#hZo-|I!R4f>`g5)WKqZ&8t+U<19C`Bwa{y=p|`e>H+L{o zXGe@#Ft+dO+u?w@FU;%B#_N}Ky_Z^_mCh}GfhyPYvyc?7vurNKlXq`}b02}~9J{4= z^ug}r$kx@KQ-#B|7{KnskM}yA9?5LH?si>C&PST3UQUmD77D7jhqVJ2u0wd9vdf|O zj!=BcJ7Z~g1EvC;9y|@W^j(XJsaD+<0p*}hxQ^t$JfF@z+21?7j!55K3!R<|W-3cI z=`YM*3>;iv|2!LT%4DYtZo@CqjCvn9a4RRwyrxzUgkSl#|3Kk;LA0cp(UKBj1@SG^ znl8MyT!LE|H4apq@KYgcckgRQ?6VhSbuLMP%Fwg6HNH>Z9x8FKQ$)GE&M?rD!UNY!yND z`xta2vJ6WyF!2iQJ(a#&_)HHPB*zH_LG(@9Dx$HgUuZ~REH*KE4PmZ} z{V;;uRfXYJJ86jFZ8s~k3Z!6E$mq}l?BiSfh%{Aj=QCfL8Q zPub&vsl>oInmTXP0Y?2@mF7o`$mSK-Ss?Bv)NuAbe+2c__SGR;>`3aBfs^o0p-PM`ZEbez-tuij*Il-C!WY+? zKXB++8JVzoqmL9|)J=XlAKG}nb#BwQ8}bx+8CaTh$@{$QcCGs`JeO0m<5u%?K~V8< z|6nYC=OJoKNWbM)oG99EmvKcnNiX`GBM$fd*&acR!F|REg?_z^AaiSIo%rs|$7MOw z6>(^-o6&b9N6PlZG5)aa*I+oHX4k(u2Bpl#o0`A>`q7d8*x|$K#TMVMxtN1RHlKnlF$M=12<#D)kmX~X1UoY45)&z3o zqD`mJ+QnN2)inb0@%Bi~$k={~ zFXw`!5nDW$m*yp6ZJ2Yn7DdG`bHQyxwa3Z@R7|&DRq`Ig{~}W9DPBXalU2f zmK=UAfgV)R*tF^?lWxUAe_v0GEOP>ua-eO*sk)P{4MEcpRd4K|JwEEEOmkkfsq;V* zM%LgCZ&=_@@@T(=b*YSIL6ehXwv21vwToQTr9jD4LiXdY&^%9WO2e}BBS_O*k}%tO z4u0EQj7tDLxgLj(9WFBOmtyiI_Hzl7YV0VMuFva;OpZ|(q!uWz2VF-P$GZn&L|n=r z3wXZ5%eOMJ_kGEe=FU6a_&-)q$2U!JJrszRoY|&0pF?@o?p;= zdc2hVE;)2w)Wshgi60RG&zQAXbhq(P%`%8KBp;TK)BW)(l4aB97&%I!Ocgp@4}wI0 zT_0z63QTLV)H?I4e5fTv0&$u-dHEUJ2YIPmP&_lHQq)6=@8z0Zm=Dl4Y062W%pae4 z2dc(XVv)e7-1zj`b4lLeW0cNM5LzpT8}KSCG`5CMQmCKaMRzW?6^=+tbfOfKYlg7 zVsj+lc@^LLZJb_DHRjhOx_weU?y6>!=22(~N@-fe$-G^RT9-=HEyTX;_gZ;xiQ%#G zVcrv=6)O5!ykxcuSqKhyF^961)3S2xj5@+RFLmuGf8VSVJGQ}CWhWfcCH(ps{d{?P zqMaoIS}zD~kr$do9w)E^SxkVmV#b}j*}%2qJr8g3v7okY3}2MwjMik8H2fWI&PMaP z5ifNxLKMFzOTyrcL6-Qj=iQFc_iqC;Tg_`6YvE{k(Ynw$xj}C3TztV0iQjU^HW7>T{f=gK&`<6lQX^7iT+yLjF zGiw<)@xBgBXyUEAMlu z!B(b#i>y~oE`9^|trlxL$^O2Q?#C;Y4`$J#>$Nh?arRvm=fW6L=k+Y3dr?-6MiEh5 z&Dd_-xbb}aDt8uj?GL^%;M!rp7=G;1LS@!cdfL*d~zuzBYOwDoqzHQ^hS>zgr5gQR!=)TzI;!veqWm?9^e@QOva>t>dU? zHO3N8F+$Kn{wB#K&88qT#Vx|RR|s!zW6_XSC{R*#mr1(fv9)AW)nBn;J+Pew~kCA}gWs=b@b z*77*FD`f=tM^X1Y+3)2@wgNcjeda}W`Mhc7`1SpKg#kUv&gNLGfTeYa`188T^p9Uh z)jP(F;_0tT)2~G$Y0pjc1Ta0s=&1C{7(mk7=Bj+zM{?`{N(%{yvvVwyuWKl|EbI+9 zkx)n<*-~!P+9s>cG`zeq`5fu!!12h>^|%s5s@txU@xJNK`) zB4h`yI^n)gO=|Ow+I>tRCb?~7qTwV;D|QGI=8DKr$)}r5gOJD)uNfS{WLA&2^XhYd zQr^F(#bH4F!D})J{HAle^P>M{{X+qmEt1OT>*gu;pBbP}mDJN_zE9sBz;AY@7#jzl zx>iSg1HE7Ja(xok5;4GO1kI><>VoQkr=Iy}?3wE_FOld9ArtA0eKlN6*lcT>MAdtR z1#ITDJ->RUQ#wkJGkU6@J{at=`F!N&e<#2}72M&r9%^ab#oMBQ;$UI6D}H*kfBjZ6 zwc`dC$2v-FL7DiVF6`_2m^vjj<&4s_fWoFqaHl+p{>?M@{86z3h%R-Loe# zNg`xy27yAvF_se-X^qot^*tlR^W*M*sC>cz_IZ=kyO5qL9WJuw+qel1@K_=t?7721sd@V z{BOg87vfHpP)980lsf1Ss|fM!661bB%Z(Xpke#5mF4(aWrBU>GQZudc%lI&N> ze|Y`)dE8UU9;^mG`CCS`Q>PzS?$jk%Jxo`e8EjV?xPso+y`-GIu|@SAR@Wz5Dby~^ znPu~Qt~>v=^nw=UZMhLP7qIrEAH05>l;BHg+MUplR2So)V7q>DkHEWuui`TiM|{K6 z24b^p55jkb34IDcr*dklIYLwy2|uzW|GFtjna}0P?NICl#PL5w%H^^U)TP(k3=BYb z+pi7U{F1o`tP#Ljt%+U~V5%(&IPgQC$bnpe)EnYySUN&f1;R{WiUF#_j;2~RhWu1L zJNAo^a$Ah}oe30*op)e69koOOywjIpn|_=l@S~(RlF1Y|<_O%d{9Bh-c(m6}<~hGh zR5*)wxIH38w7y3qVWhJUyY%4g{NUs z@NAk(o``WoRhYT*JArQlB<3?3teTxAa+H}MJC%CTkBfN3kyFaCZ{ts6ZAt<> z+`FQ_mtt=&hbq-r`J#1Y;Q4oE>rgtQ-X2t@+dj@(%*%o@VO#`xSR&016dg-+nevgZ zmE{^3D3-Dx2Xh6H&R481Nt_oe)jA8zTa^cva#<|cR3r)(7{IyZ`BBZwI)xH4s$aJo z)DuLXswpwmq-fyY_TyQi9;=^*6u7c6#4f2uR5RvpW~w(Zm_J2&&};{TWh*gFk$AMK zb(N;rgqZSK&Og@-9E1hB?4{%q-`Dr22{Up~qkdppx<+=M-%|QWLCgqEjojzs$}1U& zubDA5B2{#LW|;iGL9{s|dM#d1DHh4XXP5jF`}K#;&6CrOxw zROC_KG|80p-inK6x%ua$IAvk)`zJIA`r*>32{6lY&ik#`u#W|?s{5_;s`a)R(({_w zfk*eecJ1hPPdaP_(_>_Expu2hX%aq*@p3SZD}YKf3<0( zimw*!r&Ronb>nQtohprq(uP~gq?^(e=3p@wpKndvl0yP;-IRg;I#$+Zd|{-K7M}j+ zh99R15o5c{E!$$e3e?L>>Sh)+pU86N1`m&^!LC+kN+SF&?yl7!=$A8BXW$~?Xu;rO z=spz9Gv{w1y;Ac~8aW*gGcnVa!cYS(C4T=YqISc~)7~Z_ ztlzI&b*y~YN3RB2ngo586|}BHDqLG~iZz z48DcHAkcJ~6U<_emp~3I$k;+xO1RLl3DDT9>jDydb1CV7e8Xl#MWC_6h;rIZVe3J;iIDooHdn*Xz!)T0pD=Wc-~qdx;8Gur-_ z<}ru+303EC0+@)hQxtayuwtMDd%RLQtL+&t%+5KI-t8#1L~b%#T<$(!IKibtZ?CpD zA}E#V>%bLWF)~0j`zWa(sK5N6#kcHEpnf&ZC4L*Lcynlbx_Yejh5t0~-33oUO^6ru z(ZGSM4QW_2@PR6%X8N82zA&BUiK7uFW?k3tUZc8;B)KnFOkG_h2;7Y&)F%xzvwIPN z0zhraaXHzaSc|0iH6h;AU6g~Tjb4Q~Ibc*}_Od!72!-M$lkEN~&8 zEG;<_JjQ@auSv^B>pXc96q?+GX%I)^k2#=&z0vk5SmN}>bo5_I8?r_#Yhu%QmY6+v z&2qF6c-ldu73d|mz!UIfjM52KDkvgovhgQOST3$j!iF&Fch(K)DKi!PIae{j;=s~G zi5)>yVZ;$aheqK^vF0$b#Nt*IOcx=+9HH6FVtyU7MUZ^t>YWW6I`Z5#QKgrxVS{cm zWf>|sccX{$0U@kQ73Iu?N?6HMopbnBj1r3R%|8KzCl;L=)L58a(g39{wYnB3eA0!q zfe|H^Pn*>9KAt=hu?yXlg((Wbu{%t!QBXOOaOXQFhv8iFILwcA+ z<-8nL$YuGat&}&T8%ND;w6d(Uo3_%4QY?D0*=DFwRuhBHSuepS{ep59Agv+Qg9iG| z`R2nHr2Mtlvqe-r72eBYwhK`O2g90hlc{Zp(^blpe8gIYTd3th&M;fFwO=|i@!B?K z2I$7S8Ct_s-IkeS-}aJlEEviurlm6*)`$bSOMKcj4>A`FZOU8dsDOhB+!jkJ@q?ze zMiZZRGl5CdeDSHW%`l=o1fvJW*^PJUY=1DD>Dvv4N*)Sn7n{-?sL%F1c9#+r_9509cI6|195=Jy{DEDIvdt?QYXOG;J@I6Uy7roa5EI~(Yi zK5LhV;(@NeH2^-?rx>7S0Z3o7&zZfeni~#QTa}3qO05!ohY64MuV90=17h_`Hh$!( zRJnZW)90ZFMIG=DjScQVlvs_-5*$DUzm0~H=3j&N%F$k!M@-D!EXSqaxl@_$M{^@H z3!rGNC0~kUL65-VAEXPR&@$$xN3FMS`6QiDH)o+`oVz(|1l)=@2zaVm-dR1@LfmRB z7{Rt|m}4dPdfKAV_XSh5`RJ!@>9X*2a{~(_=lHPudPT5*_{ENKbNcvGl^8rq?MH%CJ|CjI3N2+acOkIWsTV4Kb z0uPOB?QmHH@9jt9GWoX;OS`FE#SkTh&-7YI;Xk7Qb&12?%ef-7t2`QW1-|lKSyjiE zuFVIr^cLltb09j(r%iH-1kSDlYnn}6$cFXl-#Bgy+Xc$($!tmllQ%Si#|GUPV*O!n zMQi6hNl++GKq%0cC+USwnwrFLAzYp|==zDRD6M_=KB;E?kYhay%eEAsfv~YCKft5< z{9RT3qyDCS_@a*?+LW};D;#M$RK6vqVQSg^SCaHa&~(ag>moj9))giYFgG_HuF)dw z@{2FSVkNwm>89)G@^hiZu*=hGQ(Ovjg(c2r-wnBwe+;&bDkX4=PH z^`XVie#Nlt9dS9&tH-(EU;?ja6y_-M2^>9_-^vuyDL>qc&#~uQf;F?LUq{Wc|12vn zU5axKB8dVU;sH}i)33oG_`(&38FnN9)t zzmz8wOAiaovPXSR_dAta@Y-XS_b5LuoxoF=TRq<^{Ykj!|ij8tN$`7t9#s4 z6!xddkfh%xx#54C?6Up;Gs!J)-80j1z+UA8G>Kkp`Oa&T-AX`MfQ^aE7oG9RjM4!g zc%ob%wzj{!a(W2bx=zIaej}08h#`fkr6a`{vOssx;xU9XerI}JDYIqx$??(6$LgCh z513e=_AJVr?j(;c3^)v&=dvlvE1bu2>rkL83IGEJvOHZdhs57w&Y~YG*pFz&A`r4A zm>i22xa-&k55)%&^$P|41kp+?ok+}7O2sWwb!!?D2R3N}L&w}@!wKo(2{vYGFybe2;vCbRtc7-#1OL5DLX7&e&w+=6?mz<3I)9_NiBv)B zgk1hcW3s=4ni^))T%K4RgfDF=|BBsedr|KOx(O9?AxiS=@XnZJ=htFm+9%{bcoZ6x zPLMe8UU(E1;!Y53@-XZlkhhRb)Es+1nGO8h5q2Q&TJ*CIr?C1B7AXycyVN;4drwCa zhu|-K1GgD&po~&zOr!9}um(yeaI>E} zL9TK7;pLbzpsz_Rn#d>qBQ8qhw>X@j3(-sK(J|v~o?o>@ECYm%KA^;qzc0}BzzbBf z4=BBq%WFVmZud51(dih$Fg$Y%NoTJC2J@Aq;Il4Ma!OOX59qbV!UdRXhzAx^uWKo~ z0ri<{#x%5v!g2?&c&FvS;+?`kkNVrRLj1FMwmEu#6|c6-raN_NIf3~vg>VD#`zQE2 z6L?fpz2H_xs#LjUZqzUyW%y`d>a@_1+wtQpBE;hMYSM$sr(WKE*inEEH5t&_4+E|R zhJ6+FSFhQA6uN8KXpE{Q@7Jv=`cZq#!vg5t3co0?Wa)4#&L1OM1GGe#qMzs=2%jwO{m84x5 z5Pd3Ei-EIFAmy#L(M&9N@a%ul`5f>a>>8f3`_QvrQF?L)#9nr?CPI?92+PX(1p7&Z+f@a%cr^tWxHxC^^#H_3(m-Ju>^nfdC=8$aKzy)vo1p*4PskM|4 z>-%iJhnf~R{H%l7v$|T;8ur1G7heTu>K646pI>lPCp2M?X&`oCkIvs<249qZq1~cf zEEh4F>j2^&o3@S>vL4IwF)ms!Bzl{yH@+NbZpwXA0Z>X!)__j}Snads?dIfyc$E%- z#S40bMSwT*0V@bd&ADiepR93Q&t~qy!bNZHd!ZMCS;kaYR7JaH16fDAKFLQ7ecWO0 ziNk)dF`AJ(VPNgK%SbL~6H-qEBgFnieETOA)}jgk9#{nM$(ghnEcg_HJTmHQbR3Mv znHmqRQNf;L`Zgxo7Tu_v7mW)<=m5kVZO z2noKyt|7!+RM7jPw{o_lzIPY&*z}FQGwS^1rFSQ>SNp$PHIw7u?uuMc)PEkY_&)%lCuNZWjd2}Z;Fkeq8eoGh&}7fuPYL~%bN@nWUMC!4a4@z7U(7f=1Q*pTz+VE%r-Te7OZDXEQ@Ne^96_6p zGef@mR?U=z?28mfC9d)2=%b<`5%3gxTSsw(6h6PKqMT*}QomS{zg(ekA&&Ehb`_gj zVqH^!L?|IrSwqDe*0q8Nps42s(BiCb7r5}U&pk*5P_0nA5~;+yp`^c9?3)|~E5 zzgHs>d0XR;{;HnJ_NtSQ%;^^oH|E6AQJu~nN} zvDMP;k2C>rJ_Jk;O^z7pjBZ;mxg`Na{e{_l_SAUbY8P`$&+=(k9(ylp7i>-2A=%)! zw_vmndAJ#HKE(<`;{>TUyo2#x70#SnT>(VpF%_6Ew0CFaIaAV*LNcgo7bhNlHBsoy z&VA3n1;3zB-mddF0R;#AM{qz+8Klskg8P08zW6P;8t=r}h2>G>#HQO5Qb>(RlkOpj zXw0U9XiV-eV7I=Sq`;Ve0V}nCF^$Ha8V139xw-XGE$-ap7Q%dyV|d6r6!z}&gYzjJ zE(Q|K#gyY&x|j<512}3B&L<^dwru+&q!6Mi1m+7)jq7Wtr~XCvqlhA;P$Z}MifT~< zi!h{+ch^=TO%2yHa8woE=ZHtikSQ1Fx~^>7;`pXueE{$y%FAUVb%>yJdr4&L*aPTi zWC6~nTB~oSD1ZnkO&(Yhlg>?}KBfz=kZVM!lU66%ho6`?Y8PUu^MRN1&dV<&MFBa( z|7zy{S{s*wN8@2_>hWD9V107|&RyHUj4d1j)7118^;8X)kgcagkWq=|h*Zxi40IBXnT9n;3g9;6a<|LgJWth_o{sZx(R ztjPM<{fU_1Rkv4*53Fs#HbfuG^e6?20&!;q@w(%$UNa_EVw_DVgq96uW;4JwDe`vbuK-ZfwkVx$9RLC^180x#g#zApDcI+*vsw9< z0^PvbK>{Z*zil^o>yZ$23tnt4m_CQS(^(?!%|upD&=H5EGLVsos(5&N{B_E-Kj{zI z|DrE3vEbi^1e!nCX$5pdfOZ@VvHy2E4fx33!|M$eGCrjr7;aCekE=U4MucIkG`to+ zv{Zazk|a4po_*2Td0SWfm}(KHY;uw7W-ewq?Z>KZ5!qsoi`1eiC1qS+r}RA9s8^+n z2n9!uttg)~3=;3t^;TzYj;QXkL7R?^kp@AJX7~z2rl4MywJADmd5}n@$BR5Dj}rNk z@9pMU7vCa1PQdk!6Z-azC2JVChQV=C9P9#rHrwXCks}s~kSlf?qrbx_1TtQ{grI>@ z)Ln5uVRkAD>sz)&+e0q3L4tP17S?b`sSxX}M<=`Q7Huxa||Q?s#BskjEr_oc(uW! z;-;t~f|(p^PMzvk+z8#eFRIY!5-iMyhKu<%pw0m@m6H$}l)&{eX)IrTx+?q{O8Cr#W+| zChan8TP+YebetruwCPG4j4M``E`~LwTBk}mVwbQa=ftF_m&;M}9OO}(0_jRQ(yoKV zj0`l!loK;EM4VKuG=)WB6SM4-HK#bFj?;$v;6rz|OI-#FvtxwfWwg{0qwOsJus&io z9MBiW86${X%%HweQcj@DzN1N_-@AaOvS0Bb(=0gJl8Ok$dJld}QWFVcLgvlp%t@WW(guRZ{R3rK1 zDLKtgkD6}6*<~7m*SN@_@e_$>ZTUwEjbawM>#knJOp8OUG~r)pbSKnw4Z~+P zlhvcFc;A5Sk*eX@KPV2G*iXMVS^yXsn*kdMKu$h!7xYwRwHCE;MqV7nd$g&aXjeBj zyQ-{QCe9og-}degOCo7t1yvxO8Hd;={d-5jgzUZUg3?~0s(_VkmJz9}?KkZRYz-o(?uBAY(!jUblLGIFMp#l|H(rLi4(2x`1YyQLMja{HHa81cg>U7N&$*AdNfMe~r!L?8p;(uE90; z)SVPhVp08D1w8VfDuR2j2^1=nHL9(gs{#%cc@Xu|TEdYq-<+5EFG)mSXfZx42O*57 zf1h6x*e78s&xjQ_J4bg#~A5lzY1-3ODHp{nj73ArdZm>=_;hhUxB zr^;USR6V*b{TxL^8F-}m?H!~G<6AGtZj@-A@U8jik^XT82`nB8XDK>fsV%k@GQlM9 z@ib$nGN%zeZQOi-^k7lFAWjq#>w^_YZ0GNkb@BQG294EH$ zSt(#8hIC7mp2NC42pKCwF=XyUisQh%h{#DGMd6%DA)B&9Pl0(c8*@Mh?~}MBkXtU; ztOSgal5mLp^t=8k&N-xIhyE#Ch4zn2mqhQ#|9o%X$UR_=hXVw}sRjxJ_n+_WYg&H! zEMabLX7c6FSNOg4Qwk*OPoEz#n~sMRvy(wc#wNU{(ZGfcCiX7V?j8gyD(3amtK*Ml zXj_19@eAkpp^e5!jRu|iq|yj~h;3tY8bJzuc=LU8bMJokZriBhJh|UOc;|dLuxs;K z=C5AN+48+UH{1hIZLOc)McnS~x;GefzaPx(pJlv1p1(i6ow#gegJBy7&uIGB3_AZMhwW+>)pAWyg&a;=THP8)G^zw|7f z9(-zBqZmGjxIK^9cr9y7K{T{xiU_%WcZLd-zPh*aw%ogm=B$};cD$N1f39Dq^0gD9 z>RI-2_k88FymqcL^wtxox$`ZyeM~X;@%4Rg*7tR_+FP6OF6?<^Z1X?&@pTt8>?~`) zb1Nu$=Xp1ta7q}-3Caj*N!j=CZS8Vh+jnvt$hbYTy!ANcT3L)wP&|~RCE~uWH8c## zUd;_z8(R9|Ta9?N{Hd#&5i_c?M0=1;hl7nZgc3PakAC} z-~!YvEoxX*y|%tNTGDAliLdfTDc{YySaDtNSYD>f<)(z3`@D2++F%pqB=E_2yf8}q zc=df>+R(4(7qBDj-!B{#%2G;dozwdhzN^&_~ujhdN=TEwg3K{b;JINY)LuHUsGeN z3+u`5zTHiWz|Qp2vPW*Q+4MoRVx|IveR^5w{j#Rz%On=yS^kaDpushcD~*r_;drO* zevI^Prxlw5n_lR((fy&`>!nsvp|eLwOA+bqdBm`}Vv19HeQQgxq$H3inW=(EBPM3z z_W60|vHy1N*x~U#JNd--JUM1*?;Vfm;Js`pWNOXB*DF^RTHu_pK!`B8=4XDUUcEu# zz>CvU#o-NAM`WEC9-!icfdCmpjtJ@PyY7Y$ZKzIY_(L3=y(>yzg7+R zGtESV?9UwlUlr_nc77Z&D38nGawUq!FZJn#_1G_2I4pV9?++nzr+=aV?=$;RvS4Qj z$orAkN^g%?Z3wo33;(VqSiNa5Eilv<=ateQtqK@XtxG_Hn;D2qjI!qst1%`g@XDt8 zK!>;E79UoR+OiqCPK(LdZ1`}nt7X?b!!?s}TGC>1rfx>hb;#uMKqzUqY8Yu>#bDCL zlcO7SZjOu`CN>Ukwy>bpn|NGLZxn9sjm0e0pahRYu2lzFImWQ@uJhKtng!eP(0b0= z*>Z=q5s!pw%=-S^yt0&F8Y0^M;Lv4Q?K;6Hn7|0>IdxhH7N}TT1gAx|tP5F*YEuuk zh~cX1BP+gE?I#lOs@aR%CrNJeBu7LeC;ydH|(-$DP%{vG5tWebX5T>2ZO@i+V*D1Q(5JIepA z0*9jo(mpkR6^vVM)(#XO%CZFnDKH2K#_Hjq~?_zj>~eY=oTGCEWyup#j5wTSKyTtdM>}y1TxLeh%Iz+1I6fsgX|T z1o82j_hk@bXqmVLA30&b(3qK_HA>z^yfJEcbR4;t_R|f(XYs6vnW>oCDJm5LAVgYk z8NDCAoQ3S~XN~vYqetRN3%O1BY`So}Je~2jdA%Q6e?PXq`MRFfjme+YvHARyu^PI$!!$g*nh;^PO~`rg1d%XuersjlKtX`nbZhDsuesti zCc?Dxt&Op3=k_Yb`{&r zU=yLL|3}z6Kv%YH-NLadwr$%LRIDA_woy^Vwr$(CZKq;86;~w{yj|zqd*40Z|K9uC zZdqw*ZKsdk`&?`8F~{0-jg?8=r`^ZF@z_cEOxuNT+lPKLi(ivcIj$WZk8N{(M4uOb z%%<|SZ+^KZo7h~f-bwwo(eX=uxV8Fhe8FDZ8MuDk$RM2Y-N=YBzK->{z9m|C+kK_4 z5sWB>h9LURcZu=i2Ue)uz9;t<_973?NtB5|ZZI#Oq>71kS*%qW{tYqLB>Z z`1QpcWK2F6+Bv{`jU>+N)&x7ql$goCNgvTN7jwamqewS8&h0mZWvP8!iGQg&g1kH# z|7Q|+Jt<3b;*0MH>#EmCY`gpwA@`DGSrXqu8_fl>oa@h{!+7r~Zmp(<)o z%6xYGd0C0dHm$8Ii3!yM-K$WB4tfIDejtZ+3%}ID?0;K`R)_iMkiHj%9D>PFA#*Q4 z=}+t-bGH!)SPl*m-V+tKz@Gc!p@nc%E>11~8}TUoSz)CE+gj{R1gvIQgcT9PKV3Pd ze6sW@6kd7iSs@|10UO=v2<(54ZUGA~Iq;t@9`5xf5ea_0t{Q4RzCXjjLbFcNbcrelM+9asQi7#8h_}aGqgNq5D!4Ap( zX^A~OM)kHwe$;)p-N);>Z8OIxzSwb4#4aVFo}bb#pHMu#`tW3$=R|G2I%oEN2CEtJ zmGaZMVUs+MLiZ$5D~|%(MP1+i-A#*(gKHQHmIO1_or&8F(n;8bt|1rwWy@4?g_9S7 zlYKQuw)Kpii7SjUG8^Et8NSmL_vaDW-zdVuL2ZvPj^il%U?j^hiY}8ewaP5ekM7ce zf^HUVD>!&&JNL>PdHR8){EM9mje|cH@$XB&PP|KZ7j+(_mv1Wif_fD-@eRB&E+os zbUZfSVxR}ACs2Q?HnGoNoi4pnl}G@I;ziJN7;Q#+?4&kmtow=|S?q;%!s4BhQ*jK#EE0o~n5yNs! z4UTxa1C0sEk^Y$-$*!jf-SRmxRY`{a%k5-do$&GH=FQ&1bJE_1PVf zbsiVHZUO9p`|qYbOy-S-+_2BC4f%tfvDs$dCO(_H$}cb|q~;%7uiYW4_yflA&R3~0 zJtVRp{qTR}bAjhZ;<>)~6p-X|>>#;j%OTa_?#T)cNb6zu3N($;9aK>rx-)cDLq-S_ z)O4QJ=@j6dC!XGQt8uYExL3uW{kmB*=uK%%a&jsVl{)RuFr~b{J?bbOesR_sd%XDy zE=zHhoKStNB3iV^=u9A(gV@$#bJ?_FN@0DHKPj3rUD9d8oz}Es-oJ5w-(cjloz2Kx z`P0rd=5Q=Fbtm-`!L*C{^5$nf!%g&>GsV&)!s?9grGy-|A*&B%8(OjN-tMNw1tRiT z8q3**DV>d06GXKZJ`;S(JJ~5{*%^e7+Sl_HG`{EaBc)whu`${g^BxNiR&Q#kkUTDD zN2rY*O%tvr3y&f0i|w5i$8XQL2WCAArJO}GW_-<7=lZqVNbJjrX3balYK)jq4k zIC-eB3V&-0;s$ZdmPqj2MA(%hgn!alb@QNjA9n{O*?Qeoio?B1)L@Y$$<3Pw^^XkI^=~#GhY~(GEOiqsCcSpeQqB$Vgzq zq&^c<9{Qy{fFp;Pnj(viG!fz`JDJG-_J{XM#IGZ`e%_CJ&WKJ4U6dj%&Ae^+Q3i$O z+2E#Qs#1^CjiXWJ#G0fYZ}==REHWG$QM&_n*_zo<1P!pla#$Yv2q{M~lxq1hdWS=lvLT{?(q@-lAV z`?Qg~w;cb(>tYbN%i7`+kev zWEYF~#PikxA4#~IjO`uN;Edy|O{4UXhV z!IKkD!8)63d`fH z62uNBbIPyZ7Bm z>GHksuGEKa903vH@w%qxB{fN>qv2?B--aQw&zjB00P!gi1jf$M#=2C0%}>MYm{hgo zgX<7Bvh>>S`)hdfJWbCJ3>cHaVt*MCI8ECkrAtKm!ej?)zy1~$nAMWiDqfdC?g+T5 zj%P2PS4C-v*2fEKVYGZ&;3DeiqOi@3H9q6ui!G_t)T#yZf|5-x1XTY_YSug0i z$>YW4;B~nz8%T^TH~AvA)xBp!bd9iy=QL(jm}2zR0H-;~3mm>BTDXnt?ReP-J(!HL z*3DUBZ(D;G$Ss;`ciV(5)@`91XL#F%-}ndAY98QYGjqJ}rx`%Ax2%&Z>uRvu-%A8h z({|}EsVNTje@XpWvf9NPH7LbycxT1*75zH8cu;6}I|^bm(}r^q(7|=>urCMxWar?j z@cU%jz28RQ=l?%D0DI(p?$=Exjy5h#ByfMPgHLT->u`$MF7~9Wxk%ClT&r>gzSna6 zIWKzSjGFYMbd8^!TabQ2T_fOYMeELWnWe%ZCA_UFd7^EY<&x98ZGvZG4xpg*&4ae;3TpV8cnMn*m&8S-VoUFZ*$Yy1_ox z%lh5`xZXuaxmh`NHjb1R6k)ZW1bilc3Ta&_YE|pg7QmtDYNqVscrIGyRnp?hV$bxP z4{kLpZVllvIK{Wv&<1DLf(of8`p}+1X#5jT7B(P)72Y*sJC^ ztH!uVnXQJiuZFdk69{dMf!{(n0V&mU*{jw(t2RW$=7s+Lv;q>9;-7zBty&^6>uHVN zKEGFO%4E&&-2Ur{ib@KXl<2J5X#aDOh^+{a$A;w$M1{}+6(^A5Qu|aL?ht6jH z?Yne)AjQ4vadVB;c){*H_^YKz#x4%JZjLEXkrSbfZCt;3R%Vs%=83~cP5Wq4=g(cu zm!{Dt$ym8QAtu$S*`AUSNcPoI_SJr^-lY0Kitg5Tum`S1f%e>c{Er2n?5Cye5uE$x zc;;GKp$wYf;c4uzerzloC#Sk`*Is9tq9yk6i15CrEZ!2~GO3)*Exy|0W`xRE=E$^1 zb6vbK+Is!0(|XH5-2VMLb=a44gUAdPd0`|KRyXTPE%I{w)P?@@N0Q#y>(QWHE)RYc zq53e1<)-1elFw=WI&6VvB!&b{{!^lgc0R|0?S8=o&s!+_UY^$156UCECYKWkb7F^KFm75RywZ=|_MnFItxgpGL!eQ^%qfVyLCVzqjj@Cv{T0<-kR8TW`;&97^^4@AgL zaLhFnhE^uROaua*LJWm;OfMv%AS4Oh^!cm<9)^*SIwC{+7cyy`E?Qk_g|1~-Usi*g z7UYOq1tY2G+&;Savfh+I5DYRY2tl1A!8C*^0&*1ABw!F&bGoQaO!D z)L<5U1m4aNicHktmMjo)tuw`iRusg*0xBfW^ISra8>qIT)b85i>lX;2Jj{$m>d<Co2tDS^Ss5#}SU8^mQCb%Nm15Lz*e0e#aoIeNb}fhjDAC5GTO6S<5E3vxcF=2_ zLa*Tp-Np%P6qxk6b{k6!?B`X^AQ)cOU><7}4YpvGK<%`C7!-}yu{`jn8j5T<6cFqT zf0D8s-g){NDwE!f3EOZ1}QQZahtmX?*HT?EdpUg>B6Y31u6dCj6f0)BWu`$?EhIAo2@Mv zCkokrI2NAQ;D^>iIWnkUJ`T3gxh1~19(UWH0rUAk4;X-e^w;Q}XBcAQ?5`qM!`HzdO&du=iI=^riM^+d zy}L_tA~aYArtE(AM&F;8=!bqf86E~Ivue_4)a7f`63tjEY4{>uvI;|cYWp+s+o;ZQ z!)O#nzw8>V)|tqc=;G}0>f@nYy{7}00&7jep zj!~ixLwqrcPkK+(-ahx9D0;r%2V>G!bKfM9^mv{%>gbLi%|E-jzm2%R`Saz{JG|V#eEu!-67l~oS)laBpc63}zplWjm zFa8#`y3@1z19%0~YTh(R>^)|#0+}unJ`HufSIHpO?qJvY;>w!|htprF+9@by_9XD6 zGw6@!4TaR2$WL6PHpA2s>G_iB^}Z%qc*k2Brd#^tvxM|u(BhuRSPov;5Bw)e$12gt z9(hI*z59CM&CB$KnETr(>z6NjAI0a$T|S9j@3$rbFrS~GI4U;tia5VfI4co7mSZP9 z7s(IjY<_)9z}$NT;tgG-=AuS3u`_X&8zM#^>k+TY zaq95ks)hAxVRwKI(@u1y)Bg7PJP_pJN(4+JlKFhBd>1t zRcXd;S9lhCvG?zT6>l29q`=N2^(-<;8LTYK zO$;T9oZp(c)skhKzU6?RQ|AfE5ujB#oGGZa1?i-8!#m*|vW}U)>Ff<-8^lV(eqnCJ zDnXtiPFrt(bp=t%j&pd3VHag{9-;^{djtVb53ztk$EL_|?9md}B*rYzd}0kVL!Kti zcytcNGWPpiF$6n5rI+@FJ=u6O@=T(h3^Q=F+TSRm5^kBLW+l*^`u$2(R>B+ z`4bg>NQn=5J3)AfXvDA|5% zY4M$F5H|4KU{z@4_T|!9XM=Z7YiZ+r=XvonW~FIH)UAR6*Cj+Yk}C<`EKt2a_VwBChm!soiZQAfoZQTwV73 zc;Akm{wmu1ISwrMh!)cKusO+fSJ>ebR))C4Cs%IyZw|^~%AWoEHbmrDQYe z_}4xyHsr#tph4oNcBdhZ=q%uREvS0Yu|)un%1`abG)!U`>I&Nf!6k~@UofgS8}^YE z^k$xfJ%l~*Kyj&SNf-C7%_qfCldyy=g6_l}2awm-hwdb<^1E<}q_XeSQVl1S^&)U> z^16aQ$rW}5<6^g)4pZcHWnBf{1>A9hu`B3_l?-mprbLrdGx^QIA3YXQHThkpa z|CBsWYV8P<&bd=kQ2;$+(6PWhVlb(jVW1-fJvy=>O2SI|qvDR1mEdm`9-u*HdNyH$ zQYx?ScdrU=O8?TKoOc4$@$UR@9q;3t4XmX94-&2gnpwWXk1q--N_yY^vH~sbj}=c! z|Au%f16qOh|FB}j@GyAz5b7kfA@R=2o7`h!@^&3}c-5-M5We-Z4~ScJ+#7wS)m+Au z6_0dOldWw#L}%~J)(>?3sr5IGoq7PL6zdfjx6~OS#V;84JI?zVZq;Ck> z*cSK9P3Z%Vb=F!Uno#Wx+c`vHeJt(*@FUbxkN0qF-go1oRn<74Ztq zgUa#uK1hPnB)SXs`&2rj>9H&f8?u>XgIh!+zKB!6M1oZjez4GB_?(izIDLCQMpDBC zYV=y1aFM@cA*99|wris)Zt_x7+IevxVt&YNM-|7qHy^`t6Ei%rH8=56g2v$e9lYs` zc^C(>wd9>#q%(m?gXUy{HTh(S#vjyrae9VYjHZSQqd%xs{u=*69mY*AI{yo`J|w<> zA%p)R8`D|~8!C(gAK6N(YOhRfS3!-=PXoL@q(~`%dzGaKF_6ApJRLfWBMXKB!+HpH zLR*-wlW`>s0cQv|j6=(BIaZNNyGoG;I-p#S_Y~P0o7SHLL#2aZg!FMgq@sx&Ym6l!Ni?0J!Nh=KP_$@Q!jiw#2dKH}R-xdr{!!EfQb|;3*P>CVGzO>K z?J`HQ!raqaU-G10I-G$S0&0W+9i)Y7%}qPRlZ3HPydqRZQVyWH9dE^H{$VoCA$=iS zwI^!fF@u{=s;4$LQ4`5wBmxBt9*t@6XuLFyX{{p7Y*dko$UB4^B5feIJYg5fF^vR1 zgo_B%Oupi<#OX?Ho%sc5nuwCRYSsm|QnPA`P9Zh@5H27nC4$4~h^jg-Sr^NCC!&Tglhd6reM zhp^ylqk7_f!~Hdo8=AS?Af}6@JXQH{dVC1;s2W4np>@8C3b zLNytA5}cBnXy{GMUO2D}_fc7AHdCrSuTjS3oSB)C?0*)|-PS zX#^!`Lat~S<4=hzg=T(0jQC8Ih9IhVKvu3id>&!qQ6Z@q53j=Fg(F8$>y95K<3z-} z9GR!03y%j(hxVCJfsW&( zr|Lk;z*_K>l&L$Aa$TAxgi$A!`LWHRovtJqtem104gkw;Yx09>KEO#1!EzjbB$QnyzkTam43UK zLi)IM0#zrF8FN)bn3M*)M!U>SM%S4K0VT#G5|mM*r8{MPO+Uk*m~uh3B3??OT8gF` z%wzXTs!$X z3&ZtA=%W4y!XDIad@VYGXkh}^lx?!z<+z|U?Y2XrqsMbd?vG0F#$d(E=%B&-2n5p+ z4N2}ehl%?%L~-z16Gcb3C}Gm&YM~3IbX&;psZu6%b6q;yT87{SmR8U3LIY=_YFcO% zS?;L8iep>)aSp_LIw9K*qxh(ZabU2eKXx4lh~a-d`$3|{eD>&$3? zfj6FETN2hBU0!-y%jgk{9AA<g^fPawk`GGuCPpTATvbIVWm@#sygQ!+&yo2cX z)HnyxjMM~&Ap{s{?kp(cJ(q%r$avHkv|$!L?4fg}KTa`<*tZ!2=}YEj>;AwL~CAqW9Jgo|X&?M^BQHxFf zzdrN14_M$fh@i^~82ASn%WqjK!G>o3D=tXdbga<{1%3=ZH+s2!N&4ayHRskM&)q4{ zG(V-cNi(AGCne9&JOrF+k-4BvB|1}4m--_vu(v`wjy82u9gktDLP*8Jts|=RQaO6d z=E#hL`1JYi8YxdKUNsF@QVj?AMz$4*@@i+c6yy_Ic}-rrwEB=K4Y>J*6`GA9mkJQx zy#a%OyJ9c>Ga5-q6II)r^DxdzwEP58o7iXHlW~a8epG=EM5T?kd5B0VcrjMpX7Hu! z-_26L`0YK!oW_yOIrvCCyfl!KB8G7j@B4*`w2~s`)Z+x09g$aNMq?; zIzWmMdfihR!nuVWB0~1fV-NTh2znbzjkp!}MnX_o#=noWYaS-pBwKSFINxXddk0Z4 zwqhZS*&M~UFRR&nhV}>Of1w1c~1bc*RkCL5k;yzI+;V7-7^Ia_R*BU4!DwZ0u7$O2qH~ON5i# z@6Uh!dG}oLFA?m}M2i8Pvd<%5qJM$^!r4b+NUQ|j29b{N^?2p4kR}_*0@8P0$>I4c z9_KFlA1`D_srQlc(7%)55A`$SI{-cVFDYdHzXoCcc1-9szw#EEDr5LL$^9gl_d^xp zZ^y8OYq|_La~lO232yJpXrp1AF>j%#G`)`L{}5aAQ~o1~nV=9TTj{j+gBeZ&g)eC2 zpIW^Ae+9<=N6Gvz5n$0vDvx{i1}Ioig$F!^MnEfAWQvKK?lq9>-w0ju*Efde?2H|*Nq4Y^u~R4W!R-2RBRbieA*vpHc+n$ zsf1U@scE2hsM-o8n2rASf^)EDX}2GV{-$rloTTR6L7B`tnJ z{TBPNGHMXq({D~0TYE#9P_G6+k-DYr2=qX-1)%}U7IR{Z?Bj&uql9h+94y; zHN!(XwGT)PzORrd zK7eFtj!FEf&TjynKcLtfYC)2tK(*m0$i&utvT&G6Q@DA;7M_zUyCRle#+?SS+EBzC zYDax%Zx$M-FrCd(_KE-VQUL4e-TZ&4(2MlTp|>WudTZ(_J& zpKe(irk}4zPL6ks%pcX>wy$dFV)5q_Mq-XZ4Sm=u2?N2Om8IYwdz`A3PsvHIWT+`f zr$y+_($!E$08;=esOBJhH4z4XEu&nm{i*KfwCs5-&u~jb`W-|~?1cdVUxCd6qXnqr zy!0{Qnr!(QEs!v~W%9JC6O>uD^}@_4;3O@+84GbV1bQ6{2U`U>`R3}vV0%qDubN5czFFgKEU`L|x_GYwH2lZ@U*M1QSi5S?>4cc zB7`Ynp7=l=K1k?4RveK(ka6vn^IOC^u_6KI_zy|a3D{_H1tq0=S+cycDwyazhkQp| z|1doI8k8_{@J`5EVK)j}F(L>nnI~ zm3u8EFJkoW>zo#Qz(5@4)ARivCPx4#Gjy~NqEodElP!p7t2lG+EVLm@rUcJmgD@G) zz5#YaG5!kK-W43%b`5oTrDjQ%LegrGlTzCp_fe687MTR@>*gI}@;sUT73=Ct88BTG zM*^mcte!CJNJmBb6H@3SK2zJP_sw~ESuk`|n~@2hmoO)!)RWN6FK0(CVQ?B@@RJfJ zEtQiK|HX-u&9ljmhnmVM&YG%F;uFYx&io+KU|2R=^l+Vx0>G@$0lglQafM8nhed>k zhNeafNNGtU_-{(0qWH+_08tkloFmbqZ?M3F2Q}535@4VDiIh`)yf++pmT2(o=_Os} zwCMWzN>(G~h{2 zO=U|%C0OnD8@K(?A-qF0K`sj}JV=eyf6_{-T-kU{G`W-41^!m3B%aTCJ@Yf$w^eVu zoUfYhA^1l30&wyXRTO{q-Z7LLW zu09+-zhZy->%2oN8RlmN!!OFvRAL9DU@}55Tp6qKAS?g<(iIn$vrq5$SKC=cXcuVqv8LltnI=>4Fa27OQiTWZd@ z#WmPK=3U<+vvEsZo)~(b;<8~-C#^Q*!=~6~6d{0^IIAXBLAcNiHQKo49*)!D1En+G z7|mFDf?}L9!QoPDfx}RD{+bY=P?H~i9SrgQF9IIBjfY93u>AibKzRhkgMl;d$e!&5 zCMGXSUK(sZ7QdLeAVOS9Tq-Rt3~&v4JaAA-kP20Jg;s5YS1|s}rNJ$DfkdM@AW)Pbje{}lXny8Z&aGZF$rRWfy;G8N0Gw-WB4ops=#}`>b02jrv=;QPb7-SfHRZFZeTDik;U_t) z9pujd9lSV2AKd1!Vm?Y+qKX^f<#VDlMS!#7B&qB^yiZsGTu;GV(o}PG**s8*&-_N_ z^H5*e+t8{_WB+_pn4b;dwLZCLVVd}_3P~f=dLIdg04iu?)nreSX*~LRY9A>OL+mM7 zOxnDoE?Z2z&;T{6od}Q@U8oJP^qQ8G0~b)?CAR7z(reHXcU9M0Y=*KC(!X z9|BXe4Vk`yiC&3!Jn)L1^=7b+JQM#vgo^mG+?Ag?$){Ts**69@W!JxZ?q-=tXS@9umP zvtK{{M{CAHL2>-(rZEuU^~3qr@qTq6z+u2(l@98OOnG$V-PWvDoET2i z+85p)2L};gUCvYgtDFlB@ZelMQhXSpp`{>xWrzwX%zC*w_FT6@dZiP^!_ds`WScET zyK1fV<>vvz1COJ2Vllln;s7TK6)yHMaqzm5X&2YKem6tf6%IxCjA<*TBNnH7x8-x_ZapW5c`X+Q>W6ENDqtmI~UWAo)vH=Y2* z;mXyPkn%O-?Vp*)>PE7B0`U~LR!5W`*5Lb?Om6hRh;3A>t_cH9FiwMjJr6(!7>GE zdV9fz*Cd=R-=VWcCtRMJKyh*H-3>}*=9+i6AtaCs1e-)2T4lI)pYaYTxBez<7Uao5 zaJQ}}?wU)2SF_^-WQphJ+LzzBgSIj4Vvk=81Rgkk!UkYZI_P{xZn}%WZ4PpEHlr)x z>fQl}!SL?x&n>vHtiL6z7%MHY((#+YT9#Dcva{2-{lm zjZytHh5!|Kp~dj{Cp|0V>8yJ|CWqJW=$gT-2G5Ip(v)9sHzRH7;l4-v+rT=7?>#uv z%gIpzL!@G0r0kxIN%0dfwZt6JaPbH&3@sHW92Q1}l==nNDtyho-lsIL=ZFij<@eHS zvAP5L&+V0`T1Uztz!p?3z@I-&cK>QY_0`l!`M)ms=(&EYL1uW6Ij^39!vy66lPH!i z39Q%zok_wiNDlZEEX}~pP}46z*)%z^J0B=X&Pd9)eQ~E5cct?G?6+ryQrpkFTrwg0 z5xQkOLJh+Q6OEa1372%WQKVM^`GWW*EP9C4sGPMy>I511sN`{+s62dvH4XfEJQSmI zD!U-T>@7fnBWanQB}UC_4K?9H^ld9OcZ~D^+e9NM-ipVyumlRj^u&B@%Vq(?DfEdV zm}1xHsr@XBsc-t-JCRA!gCutdKVhS7lagZ>{mR&B5{_m!0JHm)gWWP{fzy!QN5LX` za^p7G{@G6gKD(_C&D9YB0lJt3)B62n!}bpHpN{?J$#XUac4hqy2LginZ^z7lO^8(t zjcopE&AOG+Z}*)Uf8@uv2w587}G>QBTEFJ?WCg|ZMHCJEt*lcsim}MS5kiR_NsE-bkW6#f*q`&G#ZG;h8wTr zOm#YBr5B{UH6_-F;vkp{J5P@UX=`xC^9YNC5y6d9CzZtB8KMD|z=Bfg+VIR*7Q4iV!N4cR1Y0J2dXRSntP{5qt3Dq_rS1W6!82 z&$3WNHm(S~mCiJfO0A?njfjcLC<9%q>Yt&VYu$5$yqYSvR}WY!t=IJr<~a-0wi_vd zSI%WEsA@H_>PCaVf9r~S*7N6e2j#yPF*{Vf0V~~o{C)}J>e-D@TT`yX#osn~Q4*o< z3Cosi?BU9SmnNp>sC75a&ES!L?*LXdHm$%A$_mBHK=C4$)$)7w)^!yEDs2b6c+BsRs#JK@1Rk>oU)+}E zU5a3f-mZ#)!(o5Qy+DfcXjR?5JtP>@bp4N`Z{ahpuc_O(N08;<;mWbk&v2`55bm;Nu&!F@)8)cjh8;l*;;BA1&3Xj2qSNuP+;F<2S=@G!JGcO44N@sdIZJKP&&5D(#ZN zUJEU<9e*S6WEKh?0E2KMq57`I^V%rQA|XWLG8SS(snV4LXBHy@u z=7M`cnV}U@k|V!J%XNXLiYE72WRbc~&b)BLHp2oJC&NrY?&Hq0(XPmn(n2TTt=k(F zqxno|kris^6>Qhb%R8QJedAyT5*6FYs|6 zN+s5Y02L~=3E~wN$ae~IsUT0Q-$a4iK#>oQwNLIcNaTDf0?8Qg7*yGRElc7r=7+dI z;E+3Rq#f4A;!#G^e9;gtIhqpEcI1g`6sfe3U$q9(nuIO2A@_O<*1kp#yXNoEt59V} z8|0ZNbd1ZmS#&`vmuyQ~2p1C{3!&ibf|O7C3LeGrVPlx72#^5d@5=*stS5nXr=B{^ zTuY3}!JJ?ek#0O)`8Jnd7AOlr)Qdh?5zTj|sa z{%A0K2@5Iu1OAW)$uGuCE84AuW=CNY+xYTQk+eRq;JA&r1#*+bYggS<$YD>z9k~F3 zeJ@sJ;IR%Qcm&KQc_A+qBz1w(EXBxatO z=U>+Z)q3wuI%PI&lHUL=@vA!mZ+*O5Ax(yc4W+*~z6fnWdqOfi`#Hg-iD67pH9Ze+2nfRyaoSZ zBvXMuU9Z*mq$rJWd^T)EF!5n3jkZok_##;hy5_+&>xQ91;yj)0T!wG7`ehFtr*G&f zDTr7c4?iV%iO{u|!dI3jj)U_H?!PJTrzCZ?(=IKoP!)?`-C33^hGWZ1#!4Tgc^>|{ z(mz9qE*g-{emP8+Pm!dNYs9srYD7gnEMt~~eCE%Zb&67V$|6MRm=hk=Os(@Nc55jt zV=hmf``J`b-9`O!++5v<0ZBNV&1CFm9dX7RFnIk_yiA35v>QRm)|q zC9UM2s*$JT$a@y-Us{;OJ&b6ZUD=IkJ6%YTH(ay9naR;wz>8ha6?u8nCc!mb-}_Ab z%V$|tnQo53Qha{cmpSi!kp#nZi~9CM}-~9d-dnt%{xqpS2pNg5qxJXZOGcV zez4`LBp8$6pfZNh)&pQeRB$&jOa#f8c7D>a`I+9en5L4X2GWp50}k@#?M6`KcliiU zD%Jk1jm)8{?By%)_2gaLSCf zRqPu4`0N4e9hG~|V4NIPt1EkLAHChED?3N!3d;FD38A~5^QyFt$l8Jow(|Q^xe7&| zvaPCkkYd-pgva32I(Y(z9&l`##B_x{ytPQDF;jfV`l^0alvvu03xr6B#nD=t)l1t} zkw1TsS}Ba27BoJmkfK=g{M@mr$_^r>3u_J`S%QE5)+MQIT;hYG2k0J}l;nteHcjIN zMIe%f<(h{9Nba8)@yCgT=L`kfs!8)Bm9s5Nz{GlLIz^cyS`O_9llf(fh>#W)7(OkQ zUmls9NH(m^u~^&ktl)(13E{A*ry9p-x}+bK)0!dfkTV%jL8X($m{60$6K0DUF@?0~ zx67wC&4cBps2?v<7~ceW(;}wcSY8g_yylMU6(8gq)bV}nrPISY#d5#Z>i&ZMXD*iG z$Gchz{J?_(X0K?#-^Q-aF7~z>wl++bE~d7Bee6|7)x!-iql5hP5gSh!FX0VCUsOV- zLdl1#k$U+KmC%(?Wc0Be*1PNe)nWA5R_+~)h@BVEDkkOZ0Oxfj4j}q@e=Ky59DETh z44qYjY@uu}q3PP@4oM;pjzv2@j((uSg1H2t76fMQP>yg~9R~Y0=78N4fL1Xa5NV^H z;zilajw``*Y)R3(?yE+Ct$^~vSOdjvcva1ivqceH+Xk0u;uN&J{y%gHOdKtD1NBe= zbrJqU*WcY?|D*1&*09mD^}zfb8EUs%o}|g5!ql8PU*icCZ2gM^NoCw@OIR^lhm7QQ zPk}Nx4(m3-$4_TlU!=-5VanL~vXY8qzf*??N6vHeHD9}A;ugmyI&tQ6(4v>?!q5Fy z?Isqt;iAH%IPJ`(_SNGI$n>gd#3_?OJQ|F~Ij#-YM&@&w9q$Xzy(FDf%J|}B_l7n_ z*o3g#^^O@`fdn1aeq&6uO`WL5+@X(Y_3RP-$2e<}v&ipia;mcBooa$_t8ZZc9MI-Y zS-Cx+U?ZS#?0*RVBU!=8-og2=QO%C4w+m!O7yH^XaJN6sk_Tad9wrGwW4$b`OW^KD zVMDed8eQ@3CCAHQJo>f9<$9S9U+^f%&Y)_JmTI1o97d&*FFz!!tCxeFY>c;tSHKdI zr#+Bjl$6`WZO3u6dJ&2dk^GMED1G|&bhFERs)bC_j>{A3XiyJtJX>(O&t)ePlXi;{ zHObf!o3cu`OU7pmmh1;6a963*t16dchNEAah>MyM0N=FrUD@~-Dq*L=6euI?7H*Z zF&5^{YndzKX}YRx!LkT8SyZ>lXf)p)o_BA+E99@&o4|x^#Bg+H&g($!(j5`{W0|Ry zgZH1Qr<9jJm0;IVQD^4be1$AO_TFP>f1_+HK%&ytmQri*ey6%!`!1OtWy2TE6*lmY zvafNIRC{PURX(jwhfn4;JG|gVuxp|ozRM!5Jj@ns1Fc+{SNO`x33qU};F_hdWvu4d zRU1YXR=ykY39h&U!#WtbcH>aoky2qFl2U_^U0q@Ra%4rVPO;xnc{!hjOtsHKLMnag z!s-4?WWH#aOvDrk8=*ao5i8v+W>{GOj|>+#&-qG{93&To)K!Q)XQ#a1&dfu)pBD!{ zEEA1ydLZ>UU9CC93}lQ&1e~K3toyJ!m z=!a!6HiTJQ3NG2wv|3{37~+3@`c87^B&m>Ih($@AIkQMECyA5g*_ST=jVm@T8_|Fx zDYBfB)+8PNj(+(InU)-*ViXNIM*pW5#bE*e4XgKB;0|01iu<#}%rQ8n-}ED_64i#~ z7eREx!l&H4I|61#B@}a_Vj5ev#M&3{_8!9NIky|@ckAv2Crraol=bG(!#TeJ+%7sF zB9T|Wn~g3Uej0UB)}KTV#}NAC!FNkZ7*WmM2~{Nb?y98L^hmj{J`BKGchBuzci+hB ziAHzdeA$8S*HzaYISlp^V}i2F#^C+ljn>m2j?C@`2H$6LE~nL$H=Ke@K1=&{|HJqF z1F?xH+$fAYv0RNKy8Z?8);sSLfb~?=^2H2{tvt6LLnQ*3?FKu3r99X?zM9IEFIe~f z9_{!;e$E*4^UgHyU9&FNZH6hWu z**uAT-===AVd%T7d+!i@<2|W}ar@}`Bqt7!hqs3a4XU80^V41T)}{GwPmouao-Hx^ z-OlsCroFZ<&)D3c1_yJgkDu+b2I}d0^aw{bb(GUE*jfuWNHR<=z&hwz9NP%bYPs8-%FA>ix_GhL!=Vr&@w0uzb>W#vg2Ps z9z*%PKkCs{T(TS$<^y<@#DpZEkw2khkC0m3a`2<;gWqm$6~QV5#p};pZmqxdWZiE$ z&+>Sk*cFTx=nu}_p?bkG!-Jc;3qLgVOxiWqIB-`=Ut(~&fSk6r5A1;yhQs2)$M6fZ+UsyUgJDKTk|)~ys3n^Q&VnG6kRD@X?RfF6 zAUB|2HIhJG%;)sx=tJW#eu(Cf7zKptPa@A5z zYUTH>5GTf{F#-Zkzh+u6;Tw%zAi+qTZ4Z5mEM!3rujPXJ;ZmOO32KB`y+xJ6W85`( z)u2k28|Lk+(W3C%m%eb#{B>yizlOAFX|qX~X(|E$Q2}gxJ)n zR@2|+aOf5sGx>dYl4v#Caem`6mFKf@+SvPz`=>t>kqpaOsftJ$=OzKmbSPglUs`fl+XNY3?!j8yv`pcg zR!2g}s%V~RUvEyFbEN9+Bd-0w4@`c(ZkFsWy>!KS{zdE#hxm?6y*&B#{p;WUop9-q zyHxuB;g{OnfYQzXKBfPt+s8hC@1K(`P4)-pA6YHlWw5c{I^u|gts^U zZn%B&?ISyO;q9|uKeK!C4On}>SKYf>`h9<6`T8r;>!($*z23^e*nHIBmchY*9Et21 zDJwjV7^g@U@us$EzL2#2aBtFe?{!D{Pk)en|LQ^Z%3Z*VuNFqGbO^GNX}Nm+&Ho!Y zMr}`oew*&z*6{A>4yW|XqOZFSESbGZ`^wW-r!@PYFQ47C&#C6tx?831q(c-`R!(|7 zXWbjCUEwd^s2x>r1m06@WSg;e;fJh?@$V=5R;GQ<2^Oqd#WLCU#XQ5aPqaV#%p zJ?-o8-Do^NaUa8kJwGd7tuNu8=evB-#qNr@m*z|{_XK+X-IeT(yVvy5pXm*s%WsEm zTYv0j;1<6WEFaWhaPz?Bn-%Ai-S|HUsj>4HoQiDNTBl%GotpD@(~W%5n|x;L66U>l z@Muoxl8eF#OaIH|WnWO(F5TSujxCw1TeGM~FhcpTSXd!K(Ju zgexW@ZzQ;M4j1Y?teBUOd4~A~d(xBk-qX65c;la3>W`l~aeLa~XHz(*y}heEr~RDo znf1cA+n1!J^~y}O&HOZF&hBOB_EcYc({!kM&CzX>E*Vuzet29|dbmsMW$fy<{`1k3Cnet8P+9$b0_V?j#mcXa zIIo;3oc_(%%HKO!YxmYexBdsGGPkO}vf_IwlV_ov-tx2HsTW_#2L5GDY*HBu8nF`p zjXS;_vJdcPWD;Qp4Ucm$T$*Vfu{LPw#Hqj*>M7uu8>rg>0}Vhi28L*7;9ziSUP*jN zWkG6jEU0ycZa}4)x5E#h(tE&hWNw&lAl<-t3}^(TjSp_xqigJF;||UQD!B;MD2Sr* zIZy;%_ax^Rfk&dzwST#NTl_UpdkzZ&g8+*5dY}kgdtyNWHdk-_em0F2=;f~(=$6j_ zih^ejfJT(&0{xCndtQUIkP*=G(?F|aP%J;g1Jw@kIkF*GL!o!In02>414CRWD+51@ zNfvxilZs0!b5g<6mFQuBexM{we*@zOTNKS`$4jD{gFa7+FekAXW)9LM3c7ami5G-+ z|8l5yv}qW06VN9j5GFKMKutiImO$5!K5C56FH#NFk3NQsZUlP&8({=*6V~21x&i1N zU4#KoQ4GM=?L{{Wz3+%H>s~XuV-P(_bW_l~S_o6Vwm?G#rQ?OJAH6+@&_AIADT|@D W4g0=A1Kg?!E8( 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 xe= z??RC}2kIxkhwpKGU9%$ktumT@|9=Mi1SsXbm>;kTS+osaoKjK5{uiC~@U1n%n6)3? z9#z>m0GH70W2H;^QFb4eKCA1R#Z4%zU5>9-Bzqhi>~RqQ7wPN&PB_ov2C$2m z0eGezGcw&WJY-V)fW#0=+nM=qT`!}d&FI0hj(vEi<1c2RFEydi5gao*FF0ELA$g|t z@T7RApAd@57QHp0g}MplDB)>0ECdZ)zxK#%naq^zaLt%7-JC4yJE_EtsT!n10&WwQ zf}6BT0W^ox#&Vn9_h!{DuB+hRYj7@F^^x`$+(@hP2lnZ=mxdd-X4e- zf6Nf^ufP!iNSEfAC7$a11~3EyioKy0q&N%I8jgZY?c65|hpDwhnkVcKxVW<`Vi{!J zX_2apL@l6pGYe-*{$TR2;sU|n+W@+m!gL=K3lzhf7%lQ=pX$SL#ANzg7K!w zct7wafh+dumZN3<`FiB+bjQT?iAF}hohP>5d29+8t$>jxmx9v zg6v9`hLUVrl>RJT9c=_K1)zp%4suWzW%SoJ&eh(Z>V8hkp2zkKw?bmrLDIrm7!dRo z+$=C&fI7}g9}}s`R+!NS3A10ONSiuAon>Dy%$x#F(h{4o5Jy7@M@2+cM9B!=K%PDg!E&;E7o2O_%- zsR(a-7MB_?ErOL%H!rch60a4wiz48VWOd?c0ZQ1Fo_d}p4dN0)j3LA<&>3x{@iyws zgXSVWFDorSD`^RbK?Oh~gZP=3R@XAiS(%1CjvP_n-Xm2B0GIsXT-_PGVwQv+|3nEq z9Oq{}$noM1Cx#IUj;#*+JCjvqIWo&UDeBNr>nQ;w=G_mmc3Nv_!XS?hoxiId6|ocr ze|z_C6F(|KoD$)U57gy{g#Kg25yb;J_inj>WvnwBGH{OnkRqFajh0YUR<4&L&nv5f ziOzG(cf#`z!)K^L4WmI}!}AB;gaIDz=U_ZbP$Y =)>-|t~@25_-JM++l4SKBh%frzzAu;k7{8?k0e z@(wnLki+a7;xrT!tdQ?r!Le`G(3Dqdm1HRuePP=7o+J^^i;} z{l^(+H0XTnI+y$goD{?fX@V&W z_7>*>PYN1pJ6dX?>My_X+7BJWJH!&?v*5ym)XDrOt)N=fhL!|C%Y_NTw@JG8PW+Bk7nG@qJD}Rzy3l$yXMW7>fHzi@!)!+#~yC1!U3TLh>$)0J2pr z54RO6;CCR&SmOB}l?0PN?{4uLLsl|i<*C|PBzpVFfot{;s#i6oG?Pc&x8NG3FkquNC z*PAoc2xM2zZ(XTV^Yb9=Df#@b#LR@ixz;v9E^LWGSs*?4QO{C)LH|03E=o;HA)Cfm zxDN|qlGDaf;SA8hhgrJG1gQ2 z$bcB)Pr>3c79Dlj;u3|1Xi@FN1PlvtfTk32z^B!(>rt8M)s?dh4beaxvO#yQocdlO zvuR9x&7u)WGQ)T`tAqxI1TuLvP1C*4bz?nsQfEmREsbMyv73Hx#`G8c{bYz|Vm4Zb zYq@+(3I_h-EejeQT89D%gSa2M_5R|(G6)!!R_ZLxBpK};uD>|&Y>vD{j7*v)G~$oU znmq|j(CF1dM#8d^qSl@ylLVH*8&wck5*we=#arfqNTw*zg9)=1nl8goSmn3zFq)=% z`}qu!MN$F~SXyl;3=PZ-%6#L2R}5@7gLM>{1pgsa#GmD^^3+K_r3>=SJl^gh`RON_ zGpd&$NUeN>EVk@yld&-K=xR;(D&<6^6md7 z#l~=V=bM=Q`td&+`4tLD81#aJfSkboSKBKWGgntDdyBvJSv9L~Ie+KD=-DYXY}+%3 zZE=!2pgp6g+m@%Y1wJGIq~RNg-2-<5LcYQd`9{Qeih0`ACFb4pOmC0N(5M1)7UGvY z#AIVZIOc$P5HVVMI3B0 z%^c2l+0t~YHrk(m9xy)eI_V@9GuR*vaG_G;;T)3$uPd8%aladMleRqqzWl(fKbX3> z8r+R?{;8}{i*-_Tf{>I#i4%xDl&%mLA?WxTSh%`|jnheA?-YD&G?(=g3v55u`gAWxm=_ z1(AKV7)?cxenc594{4*!{#z_!Q|4%ErXVkPl5xJMDbGb*=Ak8SzNop=P}O6U$iLNS03^zS7p}i1Nc4LLal~jXoHO?%}LdWNBakLfA$6 zb8Y}9b_#2Sx~fh253%6H=gNMn(bY)$2DbMbahVIXz+JAK=@PiTqrL@*8*1Hs)QN@r!}L11ESK0M4YN?kAL{y9m7I zAU79t`U39m9e`+V(!O<@@1q)-g78PVS+%xnZMgN>f!YAiHA8tFa*|hjdE}-J?53ln zB4foY|JDO=*RNo+RIfP#vDDy}1oqG`o9i&>p*4KbaqnNqxI02$TrK#%Rs~}!RhW6# z!=8vraO>dnu}2zU_Eb(w)`#;kSl5*eXCNzg7%O%1KQxR@#yphhb6uI$rw(^tE=)3c zY3-YZC)zo^a@Jg0WQqE^-Zh)bUFW}4j{2gwO>WBnl(#E37~g{8x-#EJgPi=bLr!c) ze@XHSz4BE1NCgDgf~p1h^QR^2UoEJKZ+Dn1wO(O}~35Hcfhv;t3HTYP4%ocIskS89PnF)#?Udb)Rx_SOqO` z88P@MT1HQ9+y*;5`$-~XxAmdBIUyoK7n5Syyq|2?-9i4-vERITE+)Vpp1L@o1%ggchqV!ZCEUL7 zdxqaOmgTBWy7R#<&hv_XiUKqM2G>g=i+*t9`#MPa&@5Xr;J@W4z!OF(Qb=14uj{0=Xvg~t)&(8KX76*|p zZtqJ+nGHUau(_TV6Rh01>99MP(HC-uO_2xVw&RW5Oa>5z=Rj7?qG3NEP(HP?cJdTZ zS*eL!6i0_GjAc_>)-hOS+e^eK&r0Vf|=s>ou6_%@wqlLkNGJy`w^t4zHTP zXYt^V+p@Y#5o*!jRW)=x>`%EDOi>xFs@r#f1Y@4A|8ev!e8%lHwTJ4W)Kk7jqT<`_ z|7c;FBtq6U0_>jLNe2Rg`R`NG)zZw)jQOu4>t7wtwB;Q(xNv%YYM^u+F1>8HMRbT? zu3fE^AfmO3#x{xR*wQGGoKf^3UODyo8Ew@K!dR9`UoO05*b}xOof_cKu1C-) zIUf(pf2V{VC3_a|?ln-pS-uD*0{tE4B=`2DeWdJxNU~Fc^fY?a>=pPvyn?q2_JTyQ zBze_LyKl2vtJels3xn+eBh@xr+t+dghpJ1P+{PG6+A9WrIN6SBMuc$}A1#X%2%WG( zUTodI$>4$V8|x-N^!v)zJj@0R0!Fdh6&Q%iJ5fAw&#pBCK{M<|^I&$O6nzG=29HhJ2juZ=RSlG5by7-9?sa&wP^LfK3rC^DMM zXKU^__i8VXkCT~JRuvf>kT?3Zt5<3Zoz#1CEyd#W&lrzBl?&3+abUw7kO{7n(au{^ ziOD4?3XR)mu6P$z8QLKwISPw(+!y$2=<=UL7isF`Eebd6GA!|MGt33$Kkhsm?Tf6a zEOi6ky1mgbo6m$7Nzhmd4$WC*WgD85=W7d>q_Vy^k;RlTW0@8}6DzNzUNmjNVyr|?QP#l260vzxh_u1=4<#&RP2Zm+Y5Hv-Ko{73BM{ayj#=sX_I$9BI@@0<$*lkB zIl=?B9%Z!67Y*T3qbVV6N1k}bk;)7CRcj!vNjTCQ@~^jG?Q0aU zYyOVCidFV>L7s`i$9PPeMHgi9$#!Iga53?*5Q;9Y$oXWi;8C0(wnmvs07)=`zC3WJ zdQxb2nyJ&wwZxbltO+Jjna0zVZ*%!Yj)U?|wW6jSpOxES$uh9*`@;S7>(%GTrN``O zHb0AhDV{l%1NO}CZM>?C4p7hhf~n%3tP9Jdj-Kw+AA?WT7M zIqYe)BOf5R@5QDYzRQ@paT#dN)z3<$bcbnC5-M}~c{AD;PZ$sC?Pd8)a zY;wJD-csN&lDWX2zSsJDQj}&m0Xq&7n8Yx(W?Lr{LXjLMee+k zgR+N?(>IKi6eMiUho6#s#27kD;Va7%$HDmp_uo|ZQ6VsOsEZ}8?ySm{!f_O& zVr34}JP&_e8JwX;7Y)c|zZ|A3q)5@qH{w}QH=>~(ma)h~J_}^cI!9?ZXAz-x%!!O@ zrPlcre`zT!V<}Ia``J`b-9__#Ai$w)D`JHk%XL36u%&ssjEli=FwZXfkWkX+5v-k9 zqZ&1#ey7E@e_`JG5_0rsy!~%Cmx5C8YFq6To2RTA^aZG>Ncpj?Fdp6H7N%Rok_xW# z3ChZ5HLGRqCGF&&YLTboD0`M1pIcZYJdEj@-8f9>I$g<7Hr%qoSt!t3z>D3^mH7D5 zCc(Ab-uq1b%V*itm~W23Qha_ml)3DEmIA|`fdkO@Zi~6DM}-|Jc=hMq%{xv=R5s{c z5q@VXZOGcVez4=NBpj3Eq&9)k(Ffo_RPZ!0P6WxCb;9e~{!H&$OjAu#2Wd#71qb>3 zb|WPEyL^N}%eh0vMN9CRi7#C;N>dIc*M{hUU%Fa=_qDsC`Lg=pNyc(SoijEMY zox=W9u40j=T&o&Br1*6&(J?rUZl2(w2ON7Q34LJ?UoG-!%oIP0ftp_x6}C>}0ueG& zakREp_0qO=Wl5s77Bx#wX3Qu`;y0&$|@IYWVV>M{bz|J zdcUCmnTzH4@vW8uKk%S{*(*Bmw~3pJtAm}Uoh`GKtC`(jAA8kN^>70$7$84=#K#lH zOZdVt7L`$`QS;$yq+h;6C3Gbe8Gmet_3pZVbsRmmlYa*z=HLUgic7mV!g*au0EmCy z9}C~31YZP;KxfsUSgKe^YPq$!Ly{_hW7Ca~V;tzRVl6?a2Z32QmLr~4hrzy$IpQ=0 zpjQkBMA~Ykcu_TT;7KwcTT%9|`>GS-D5AbF)j;tWT~#yYY*7Z+w!vkZItMMU{|{Y) z6GzM4Kt0qzT}1!T^>=sJ|ET+`HEi^3Jup8AZ@a&Fteb^*L*?)TmS4xS{XOn z5>|}fAuF}rQ=kHl%eGDU@zcf57rC-cgerEvtfV5@@6_?ZiR;{A&DTDeq{XR;UV`Nu zwCLr!@Ke8ayQ$@ExR?kTZaYhJx4_UG47hwEXupOyqa8jr@GMF z>KoWU2ei3UPJRz4*cd1r=O4oVNLF-qaCG@=RI}si?E_gb#J~0o-0hFE=0R9ugh_$W z+APcH5xV{eYqn@XtfKjdF&kxD!>gD7h zALFax6SRWlZ4aazCF61Zvg0&by$HpGL~%!SlsiZ^soCAvS0sWl@>P_ z8g2uu$%F&5yZ@{??A`2)&76T%nLpXxwC0xmJ`Ya!PN{Ibgl=wd|G2G<{XJP+0`K9NL%3XmsBl-gj@nE99@&o4|x^q;L!uuIoUZ z(j8HTW7(;dgZH1Qr&O0em0{P>&}Qb^e1)w(_TFP>f1_?JK%&vrmeOeQeW$)%`!1Cp zWy>GU9X9ZgvaflQRC{PQRX(jjPeAT9JG}6PaMx5Le3w;5WtctK7Fwk;uke+P3+~`< z!7WR1%S7F&t2T@}tb8{D9aOiAr%Fl1h_^Lql=?a%4rlPO0BXWjUXf zT&>SiQaXL=!ukGlWWHFKY{V2PJCOseF&q6XR#;g8uPiqY@A*oSJR~=z^i_xgSEqvC z&dfu)pBEeXRw=3}lRD1e}vJtivh;J@2<)Pt!%bm|wR58$ysfRFYhq zF<0T;>be!^uSgnu^JgmyUxo!73=5D@q9qkBCOUptDs zxxXq*)*qSDG7QUNZiuk86kM{WX}848F~H zjXO3j8_AF}DYBf3&NLn2j$!#Txwbr$QWPx(W<^9=V<`|sv zZ-x;z$!eqWiy-=8ky9SN9YJ&B63RI-am_6|5}k{82M>|-oZF4{yLI=16Xszks(Op) z;hf(99#`ED(a5Xc&BhmwKaD%7>QADFV~G6m5xS)%jj3nvge#JJcU4nsdZgV~9|mA; zy65(;yKm(5#iF}!KJP&H>uKnX90q%dGeg;DWAc6PM(^nlN8$JahR|nvF0b8`H=Ke( zF-!M$|HJqF1F4BP+&GLUv0R-qy8Z?0);kX#z;-HT^MLxnviI{Y~IAaZ&Sb5Fb&)_ymtt{@tst}eEH~smzO}m$KOMO236G8{pqfE>)L#` zC&Z`6z@C`>Ztr{a8LMDy#iAP$1SE(A1Oyv6V*wj?|20hkS6;yD)85F+ zmdV=D%;HMj#t~f&L$K3}o7Qd`g@zFWdZ3f7uZZz8Js6kO_mU*8BF0*$5a~pD^b9Ja zuZt;w?D!Xu$4~+9k9rJM*DNQ+`2ap;abZbl6nG4r5i;vrP5}%9@Y~I;B3Q+sc!QbC zt@XE_totpOSzfOb`-0H|gTc8wG%r{d1aLEVk%y+9N&Ds+N1jTVOH3|Tkki)ofjtl# zFiV7qg2p9d?GD>^=^c26r~r((*TJmY&EC@mc z=`lv$jvwC&as&ERGYQnyVoraKAvFHthgc4&alqJg(rRT_+8tjqvl<5{fZjPHvj57( zBd(P+S3T9VR$<>7X=029Ga%sfYo;YLf$`V{GK}=u_RzP;LROUUT5hNxuI2fjpvFkm zThuAMCS8M94Qk}MVcx!)EsDQQ4~4|>tRv$TAPqx3h7+{aX16!aE42ay(A!6uH*Acb zRt)vblKE1vY+)E3M>u|OC183%9mMC}!9Kxp5+ezGu8)3#f5tH=V!+C!PtB;XyXC1C zv?<05Mc3$8pd)#c` za1=ZQj0mCN7D~{hAsBU103<5{nP=B-D2O)11Dxe8`&VJ`?@+6}7{FGj5uRpWgtDV6 z5o(k)c<>j4q_9{My}M50;Mh_z;y$y)KOYLR#bOjT$4%j;T}Wx?*0_BknV}0aRISiK zNO@e3&l>W)+K21?-IsV$lR?vv;0!H1fHai6n0T?X`t&{~7Dcq+_ObWy%}&v+ z@%_%?mroCLZujeWP=HW>?ocIm1WT)5f)e?*4<#}!ZQvnZ$8Ab~@T}lcaDuBw^(kV_ zEWq88I;c50l`j9A_JFmZ_51p!$+qpb_4{oG6Y_UTd-T@8-+mk8SNnp{=&hL-$AX7X zz)$ZVl--s1KVtpA)-K`Krg%bKG=qQ!4zqk`=~uMHu}L#6lNw?-#dStB3!y#5{dBXP zuqyk%w(cnZ=?{|cUp>fPxeIvl)xyY?4nbBjEmyC<`F|tFsO^c+Z`0k|8s0tK;go(^ z^mW&PC9_v)UwQiKlxF|)<+GdiIn~@+cdPWBbclk=%1N*1tb1d%EBxgfwWI2dzyNz*+~Svl<%1dwZXURN zv*LWR8~+C(HFo}jQ;`i@>l6&DQ*+*Kx{)t>lh15j!n_v`9?c0|a#1*8>3_Mr>73RSN$SQzQC5Sk<1IaK%LAjRcp@;X<8<74s4@ z&oIAWPkPecds_DrZ~T)>{qa*LZcjV>YzpVJw|AB2w4d`mvtIai`;xS@UYV)3nV+W2 z*}d%Cp6Y9FnhsU3Il67qC8O%fQs1|aRDV?6l{*;y{`2}NPdtK)Prtg>E?4*D;?~!4 z)isZoEuUBS?B?@%^$UwnUz;9RmwJ2k`n^A|-L}40xjp;&x_-NRpHJSa{cZpE&FRDO zUu7(-)_kwH|1$qv&F{P4|EAYl)IWT*et+z*zy0?A7nK?w;GJTZ5qpEBO|?b2DoXsY zS#aaT508sV4|j>Zj9uN6Sozfv=an;s)4%yz`FjUz?cRFm z*8kvC=2q2LR(vmI@+_3oTYeTi_2Mhpz`v}CO)6tSBUa+SamTkq_5t3EOd`yn;c*Uz zOEb+Q)&?z|I2G7JJp~+d19dxKpaCexz!2>W91Kp)D~S)OEJ!Vm1+~u54X9M}cK88Q zdJi~`%nj2Gq#GEI0gZsP@xe`dbd4Qt+`*YZB^QAj1yM9U2a3S!p5*)@@JKYe_Aj?@ zi@yeH&tYL;5J1sh4-|oGPb?_F=IXuo*Pb#4s$&J7!-#763}8TjXAXcyl;#5cj!k=B zgS3zl(DKtjBV(A&`m&}h(MUIz6@#t z%CrQ!e)Lgegnp+=sDAV@WOO6Y``-v7tQ)ZQ#?cKx@8}{75N<>^09&^g-7NIJBf>16 zCS end) { - currentDocId = NO_MORE_DOCS; - } - return currentDocId; - } - - @Override - public long cost() { - return delegate.cost(); - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/util/RangeFilterDISI.docx b/src/java/com/twitter/search/core/earlybird/index/util/RangeFilterDISI.docx new file mode 100644 index 0000000000000000000000000000000000000000..0680ca1a32a20c7f9e1df232701049e416cd2b27 GIT binary patch literal 37259 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 DpzOJ- literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/util/RangeFilterDISI.java b/src/java/com/twitter/search/core/earlybird/index/util/RangeFilterDISI.java deleted file mode 100644 index 934355fc9..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/util/RangeFilterDISI.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.twitter.search.core.earlybird.index.util; - -import java.io.IOException; - -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.search.DocIdSetIterator; - -/** - * A doc id set iterator that iterates over a filtered set of ids from firstId inclusive to lastId - * inclusive. - */ -public class RangeFilterDISI extends DocIdSetIterator { - private final RangeDISI delegate; - - public RangeFilterDISI(LeafReader reader) throws IOException { - this(reader, 0, reader.maxDoc() - 1); - } - - public RangeFilterDISI(LeafReader reader, int smallestDocID, int largestDocID) - throws IOException { - this.delegate = new RangeDISI(reader, smallestDocID, largestDocID); - } - - @Override - public int docID() { - return delegate.docID(); - } - - @Override - public int nextDoc() throws IOException { - delegate.nextDoc(); - return nextValidDoc(); - } - - @Override - public int advance(int target) throws IOException { - delegate.advance(target); - return nextValidDoc(); - } - - private int nextValidDoc() throws IOException { - int doc = delegate.docID(); - while (doc != NO_MORE_DOCS && !shouldReturnDoc()) { - doc = delegate.nextDoc(); - } - return doc; - } - - @Override - public long cost() { - return delegate.cost(); - } - - // Override this method to add additional filters. Should return true if the current doc is OK. - protected boolean shouldReturnDoc() throws IOException { - return true; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/util/SearchSortUtils.docx b/src/java/com/twitter/search/core/earlybird/index/util/SearchSortUtils.docx new file mode 100644 index 0000000000000000000000000000000000000000..251e00756d159d40a791a9239ae5b94c346b404b GIT binary patch literal 37263 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%0D!d#pLAba9tyr$AZrGdEO)!)r@&_+ikipg;ZV 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 { - /** - * Compares the item represented by the given index with the provided value. - */ - int compare(int index, T value); - } - - /** - * Performs a binary search using the given comparator, and returns the index of the item that - * was found. If foundLow is true, the greatest item that's lower than the provided key - * is returned. Otherwise, the lowest item that's greater than the provided key is returned. - */ - public static int binarySearch(Comparator comparator, final int begin, final int end, - final T key, boolean findLow) { - int low = begin; - int high = end; - Preconditions.checkState(comparator.compare(low, key) <= comparator.compare(high, key)); - while (low <= high) { - int mid = (low + high) >>> 1; - int result = comparator.compare(mid, key); - if (result < 0) { - low = mid + 1; - } else if (result > 0) { - high = mid - 1; - } else { - return mid; - } // key found - } - - assert low > high; - if (findLow) { - return high < begin ? begin : high; - } else { - return low > end ? end : low; - } - } -} diff --git a/src/java/com/twitter/search/earlybird/BUILD b/src/java/com/twitter/search/earlybird/BUILD deleted file mode 100644 index 457cfe12a..000000000 --- a/src/java/com/twitter/search/earlybird/BUILD +++ /dev/null @@ -1,222 +0,0 @@ -COMMON_SOURCES = ["common/**/*.java"] - -CONFIG_SOURCES = ["config/**/*.java"] - -TOOLS_SOURCES = ["tools/**/*.java"] - -INDEX_SOURCES = ["index/facets/**/*.java"] - -SEGMENT_BUILDER_SOURCES = ["archive/segmentbuilder/**/*.java"] - -java_library( - name = "earlybird-lib", - sources = ["**/*.java"] + exclude_globs(COMMON_SOURCES + CONFIG_SOURCES + TOOLS_SOURCES + SEGMENT_BUILDER_SOURCES + INDEX_SOURCES), - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/code/gson", - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/com/twitter/distributedlog:distributedlog-core", - "3rdparty/jvm/com/twitter/elephantbird:core", - "3rdparty/jvm/commons-codec", - "3rdparty/jvm/commons-httpclient", - "3rdparty/jvm/commons-io", - "3rdparty/jvm/commons-lang", - "3rdparty/jvm/geo/google:geoGoogle", - "3rdparty/jvm/io/netty:netty4-tcnative-boringssl-static", - "3rdparty/jvm/it/unimi/dsi:fastutil", - "3rdparty/jvm/javax/servlet:servlet-api", - "3rdparty/jvm/net/java/dev/jets3t", - "3rdparty/jvm/org/apache/bookkeeper:bookkeeper-server", - "3rdparty/jvm/org/apache/bookkeeper:bookkeeper-twitter-science-provider", - "3rdparty/jvm/org/apache/commons:commons-lang3", - "3rdparty/jvm/org/apache/hadoop:hadoop-client-default", - "3rdparty/jvm/org/apache/httpcomponents:httpclient", - "3rdparty/jvm/org/apache/kafka:kafka-clients", - "3rdparty/jvm/org/apache/lucene:lucene-analyzers-common", - "3rdparty/jvm/org/apache/lucene:lucene-analyzers-smartcn", - "3rdparty/jvm/org/apache/lucene:lucene-core", - "3rdparty/jvm/org/apache/lucene:lucene-facet", - "3rdparty/jvm/org/apache/lucene:lucene-queries", - "3rdparty/jvm/org/apache/lucene:lucene-queryparser", - "3rdparty/jvm/org/apache/lucene:lucene-spatial-extras", - "3rdparty/jvm/org/apache/lucene:lucene-test-framework", - "3rdparty/jvm/org/apache/thrift", - "3rdparty/jvm/org/apache/zookeeper:zookeeper-client", - "3rdparty/jvm/org/json", - "3rdparty/jvm/org/slf4j:slf4j-api", - "3rdparty/jvm/org/tensorflow", - "3rdparty/jvm/org/tensorflow:tensorflow-hadoop", - "3rdparty/jvm/org/yaml:snakeyaml", - "cuad/projects/ner/thrift/src/main/thrift:thrift-java", - "decider/src/main/scala", - "finagle-internal/mtls/src/main/scala/com/twitter/finagle/mtls/authentication", - "finagle-internal/mtls/src/main/scala/com/twitter/finagle/mtls/client", - "finagle-internal/mtls/src/main/scala/com/twitter/finagle/mtls/server", - "finagle-internal/slo/src/main/scala/com/twitter/finagle/slo", - "finagle/finagle-base-http", - "finagle/finagle-core/src/main", - "finagle/finagle-http", - "finagle/finagle-serversets/src/main/scala", - "finagle/finagle-stats/src/main/scala", - "finagle/finagle-thrift/src/main/java", - "finagle/finagle-thrift/src/main/scala", - "finagle/finagle-thriftmux/src/main/scala", - "finagle/finagle-zipkin-core/src/main/scala", - "finagle/finagle-zipkin-scribe/src/main/scala", - "kafka/finagle-kafka/finatra-kafka/src/main/scala", - "periscope/api-proxy-thrift/thrift/src/main/thrift:thrift-java", - "servo/decider", - "snowflake/src/main/scala/com/twitter/snowflake/id", - "src/antlr/com/twitter/search/queryparser/antlr:queryparser-antlr", - "src/java/com/twitter/common/base", - "src/java/com/twitter/common/collections", - "src/java/com/twitter/common/net:dynamic-host-set", - "src/java/com/twitter/common/quantity", - "src/java/com/twitter/common/text/language:locale-util", - "src/java/com/twitter/common/text/token", - "src/java/com/twitter/common/text/util:token-util", - "src/java/com/twitter/common/util", - "src/java/com/twitter/common/util:system-mocks", - "src/java/com/twitter/common/zookeeper:client", - "src/java/com/twitter/common/zookeeper:group", - "src/java/com/twitter/common/zookeeper:server-set", - "src/java/com/twitter/common_internal/bloomfilter", - "src/java/com/twitter/common_internal/collections", - "src/java/com/twitter/common_internal/text:text-penguin7", - "src/java/com/twitter/common_internal/text/version", - "src/java/com/twitter/common_internal/zookeeper", - "src/java/com/twitter/ml/api:api-base", - "src/java/com/twitter/search/common/aurora", - "src/java/com/twitter/search/common/concurrent", - "src/java/com/twitter/search/common/config", - "src/java/com/twitter/search/common/constants", - "src/java/com/twitter/search/common/dark", - "src/java/com/twitter/search/common/database", - "src/java/com/twitter/search/common/decider", - "src/java/com/twitter/search/common/encoding/docvalues", - "src/java/com/twitter/search/common/encoding/features", - "src/java/com/twitter/search/common/features", - "src/java/com/twitter/search/common/file", - "src/java/com/twitter/search/common/logging", - "src/java/com/twitter/search/common/metrics", - "src/java/com/twitter/search/common/partitioning/base", - "src/java/com/twitter/search/common/partitioning/snowflakeparser", - "src/java/com/twitter/search/common/partitioning/zookeeper", - "src/java/com/twitter/search/common/query", - "src/java/com/twitter/search/common/relevance:feature-update-reader", - "src/java/com/twitter/search/common/relevance:scorers", - "src/java/com/twitter/search/common/relevance:text", - "src/java/com/twitter/search/common/relevance/features", - "src/java/com/twitter/search/common/schema", - "src/java/com/twitter/search/common/schema/base", - "src/java/com/twitter/search/common/schema/earlybird", - "src/java/com/twitter/search/common/search", - "src/java/com/twitter/search/common/search/termination", - "src/java/com/twitter/search/common/util:closeresourceutil", - "src/java/com/twitter/search/common/util:finagleutil", - "src/java/com/twitter/search/common/util:gcutil", - "src/java/com/twitter/search/common/util:kerberos", - "src/java/com/twitter/search/common/util:log_format_util", - "src/java/com/twitter/search/common/util:longintconverter", - "src/java/com/twitter/search/common/util:platform_stats_exporter", - "src/java/com/twitter/search/common/util:rule_based_converter", - "src/java/com/twitter/search/common/util/analysis", - "src/java/com/twitter/search/common/util/date", - "src/java/com/twitter/search/common/util/earlybird", - "src/java/com/twitter/search/common/util/hash", - "src/java/com/twitter/search/common/util/io", - "src/java/com/twitter/search/common/util/io:dl-reader-writer", - "src/java/com/twitter/search/common/util/io:flushable", - "src/java/com/twitter/search/common/util/io:record-reader-api", - "src/java/com/twitter/search/common/util/io/kafka", - "src/java/com/twitter/search/common/util/lang", - "src/java/com/twitter/search/common/util/ml/models_manager", - "src/java/com/twitter/search/common/util/ml/prediction_engine", - "src/java/com/twitter/search/common/util/ml/tensorflow_engine", - "src/java/com/twitter/search/common/util/spatial", - "src/java/com/twitter/search/common/util/text", - "src/java/com/twitter/search/common/util/text/regex", - "src/java/com/twitter/search/common/util/thrift:text-protocol", - "src/java/com/twitter/search/common/util/thrift:thrift-utils", - "src/java/com/twitter/search/common/util/url", - "src/java/com/twitter/search/common/util/zktrylock", - "src/java/com/twitter/search/common/util/zookeeper", - "src/java/com/twitter/search/core/earlybird", - "src/java/com/twitter/search/earlybird/common", - "src/java/com/twitter/search/earlybird/common/config", - "src/java/com/twitter/search/earlybird/common/userupdates", - "src/java/com/twitter/search/earlybird/config", - "src/java/com/twitter/search/earlybird/index/facets", - "src/java/com/twitter/search/ingester/pipeline/strato_fetchers", - "src/java/com/twitter/search/modeling/common", - "src/java/com/twitter/search/modeling/tweet_ranking", - "src/java/com/twitter/search/queryparser", - "src/java/com/twitter/search/queryparser/query:core-query-nodes", - "src/java/com/twitter/search/queryparser/query/search:search-query-nodes", - "src/resources/com/twitter/search/earlybird/com/twitter", - "src/resources/com/twitter/search/earlybird/ml", - "src/thrift/com/twitter/search:common", - "src/thrift/com/twitter/search:earlybird-java", - "src/thrift/com/twitter/search/common:features-java", - "src/thrift/com/twitter/search/common:indexing-java", - "src/thrift/com/twitter/search/common:query-java", - "src/thrift/com/twitter/service/spiderduck/gen:metadata-store-java", - "src/thrift/com/twitter/tweetypie:events-java", - "src/thrift/org/apache/aurora/gen:api", - "stitch/stitch-core/src/main/scala/com/twitter/stitch", - "strato/src/main/scala/com/twitter/strato/catalog", - "strato/src/main/scala/com/twitter/strato/client", - "strato/src/main/scala/com/twitter/strato/data", - "strato/src/main/scala/com/twitter/strato/thrift", - "tensorflow/tfcompute-java/src/main/java/com/twitter/tfcompute_java", - "thrift-web-forms/src/main/java/com/twitter/thriftwebforms", - "thrift-web-forms/src/main/scala/com/twitter/thriftwebforms", - "twitter-server-internal", - "twitter-server/server/src/main/scala", - "ubs/common/src/main/thrift/com/twitter/ubs:broadcast-thrift-java", - "ubs/common/src/main/thrift/com/twitter/ubs:events-java", - "util-internal/util-eval/src/main/scala", - "util/util-app", - "util/util-core:scala", - "util/util-function", - "util/util-lint", - "util/util-slf4j-api/src/main/scala", - "util/util-stats/src/main/scala", - ], -) - -jvm_binary( - name = "earlybird-binary", - basename = "earlybird", - main = "com.twitter.search.earlybird.EarlybirdMain", - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - ":earlybird-lib", - "loglens/loglens-log4j", - ], -) - -java_library( - name = "tools", - sources = TOOLS_SOURCES, - tags = [ - "bazel-compatible", - "bazel-only", - ], - dependencies = [ - ":earlybird-lib", - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/com/google/guava:guava-testlib", - "3rdparty/jvm/commons-codec", - "3rdparty/jvm/commons-httpclient", - "3rdparty/jvm/geo/google:geoGoogle", - "3rdparty/jvm/junit", - "3rdparty/jvm/net/java/dev/jets3t", - "3rdparty/jvm/org/apache/bookkeeper:bookkeeper-server", - "3rdparty/jvm/org/apache/hadoop:hadoop-client-default", - "3rdparty/jvm/org/apache/thrift:libthrift", - "src/thrift/com/twitter/search:earlybird-java", - ], -) diff --git a/src/java/com/twitter/search/earlybird/BUILD.docx b/src/java/com/twitter/search/earlybird/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..d6dcd68caccbc29eb1456ef6d6b20ff4c4b8287b GIT binary patch literal 38752 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 YdWZTtbifSyHmle{Ho){)O8$2C4^}>)761SM literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/CONFIG.docx b/src/java/com/twitter/search/earlybird/CONFIG.docx new file mode 100644 index 0000000000000000000000000000000000000000..3ff7275ac1c6514de1b9ea266765b0ffb4242f99 GIT binary patch literal 36688 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 xNTt?q7Ch$Hs2mbrq configFile = flag().create( - "config_file", - new File("earlybird-search.yml"), - "specify config file", - Flaggable.ofFile() - ); - - private final Flag logDir = flag().create( - "earlybird_log_dir", - "", - "override log dir from config file", - Flaggable.ofString() - ); - - private final Map> flagMap = Arrays.stream(EarlybirdProperty.values()) - .collect(Collectors.toMap( - property -> property.name(), - property -> property.createFlag(flag()))); - - private final UncaughtExceptionHandler uncaughtExceptionHandler = - new UncaughtExceptionHandler(); - - private EarlybirdServer earlybirdServer; - private EarlybirdAdminManager earlybirdAdminManager; - - public Earlybird() { - // Default health handler is added inside Lifecycle trait. To override that we need to set it - // in the constructor since HttpAdminServer is started before Earlybird.preMain() is called. - HttpMuxer.addHandler("/health", new EarlybirdHealthHandler()); - } - - /** - * Needs to be called from preMain and not from onInit() as flags / args parsing happens after - * onInit() is called. - */ - @VisibleForTesting - void configureFromFlagsAndSetupLogging() { - // Makes sure the EarlybirdStats is injected with a variable repository. - EarlybirdConfig.init(configFile.getWithDefault().get().getName()); - - if (logDir.isDefined()) { - EarlybirdConfig.overrideLogDir(logDir.get().get()); - } - new LoggerConfiguration(EarlybirdConfig.getLogPropertiesFile(), - EarlybirdConfig.getLogDir()).configure(); - - String instanceKey = System.getProperty("aurora.instanceKey"); - if (instanceKey != null) { - EarlybirdConfig.setAuroraInstanceKey(AuroraInstanceKey.fromInstanceKey(instanceKey)); - LOG.info("Earlybird is running on Aurora"); - checkRequiredProperties(EarlybirdProperty::isRequiredOnAurora, "Aurora"); - } else { - LOG.info("Earlybird is running on dedicated hardware"); - checkRequiredProperties(EarlybirdProperty::isRequiredOnDedicated, "dedicated hardware"); - } - LOG.info("Config environment: {}", Config.getEnvironment()); - - if (adminPort().isDefined() && adminPort().get().isDefined()) { - int adminPort = adminPort().get().get().getPort(); - LOG.info("Admin port is {}", adminPort); - EarlybirdConfig.setAdminPort(adminPort); - } - - EarlybirdConfig.setOverrideValues( - flagMap.values().stream() - .filter(Flag::isDefined) - .collect(Collectors.toMap(Flag::name, flag -> flag.get().get()))); - } - - private void checkRequiredProperties( - Predicate propertyPredicate, String location) { - Arrays.stream(EarlybirdProperty.values()) - .filter(propertyPredicate) - .map(property -> flagMap.get(property.name())) - .forEach(flag -> - Preconditions.checkState(flag.isDefined(), - "-%s is required on %s", flag.name(), location)); - } - - private void logEarlybirdInfo() { - try { - LOG.info("Hostname: {}", InetAddress.getLocalHost().getHostName()); - } catch (UnknownHostException e) { - LOG.info("Unable to be get local host: {}", e.getMessage()); - } - LOG.info("Earlybird info [Name: {}, Zone: {}, Env: {}]", - EarlybirdProperty.EARLYBIRD_NAME.get(), - EarlybirdProperty.ZONE.get(), - EarlybirdProperty.ENV.get()); - LOG.info("Earlybird scrubgen from Aurora: {}]", - EarlybirdProperty.EARLYBIRD_SCRUB_GEN.get()); - LOG.info("Find final partition config by searching the log for \"Partition config info\""); - } - - private EarlybirdServer makeEarlybirdServer() { - EarlybirdWireModule earlybirdWireModule = new EarlybirdWireModule(); - EarlybirdServerFactory earlybirdFactory = new EarlybirdServerFactory(); - try { - return earlybirdFactory.makeEarlybirdServer(earlybirdWireModule); - } catch (IOException e) { - LOG.error("Exception while constructing EarlybirdServer.", e); - throw new RuntimeException(e); - } - } - - private void setupThriftWebForms() { - TwitterServerThriftWebForms.addAdminRoutes(this, TwitterServerThriftWebForms.apply( - ThriftWebFormsSettings.apply( - DisplaySettingsConfig.DEFAULT, - ThriftServiceSettings.apply( - EarlybirdService.ServiceIface.class.getSimpleName(), - EarlybirdConfig.getThriftPort()), - ThriftClientSettingsConfig.makeCompactRequired( - EarlybirdProperty.getServiceIdentifier()), - ThriftMethodSettingsConfig.access( - MethodOptionsAccessConfig.byLdapGroup( - SearchThriftWebFormsAccess.READ_LDAP_GROUP))), - scala.reflect.ClassTag$.MODULE$.apply(EarlybirdService.ServiceIface.class))); - } - - private void setupDeciderWebForms() { - addAdminRoute( - DeciderHandler$.MODULE$.route( - "earlybird", - EarlybirdDecider.getMutableDecisionMaker(), - EarlybirdDecider.getDecider())); - } - - @Override - public Http.Server configureAdminHttpServer(Http.Server server) { - return server.withMonitor(uncaughtExceptionHandler); - } - - @Override - public void preMain() { - configureFromFlagsAndSetupLogging(); - logEarlybirdInfo(); - LOG.info("Starting preMain()"); - - BuildInfoStats.export(); - PlatformStatsExporter.exportPlatformStats(); - - // Use our own exception handler to monitor all unhandled exceptions. - Thread.setDefaultUncaughtExceptionHandler((thread, e) -> { - LOG.error("Invoked default uncaught exception handler."); - uncaughtExceptionHandler.handle(e); - }); - LOG.info("Registered unhandled exception monitor."); - - Kerberos.kinit( - EarlybirdConfig.getString("kerberos_user", ""), - EarlybirdConfig.getString("kerberos_keytab_path", "") - ); - - LOG.info("Creating earlybird server."); - earlybirdServer = makeEarlybirdServer(); - - uncaughtExceptionHandler.setShutdownHook(() -> { - earlybirdServer.shutdown(); - this.close(); - }); - - earlybirdAdminManager = EarlybirdAdminManager.create(earlybirdServer); - earlybirdAdminManager.start(); - LOG.info("Started admin interface."); - - setupThriftWebForms(); - setupDeciderWebForms(); - - LOG.info("Opened thrift serving form."); - - LOG.info("preMain() complete."); - } - - @Override - public void main() throws InterruptedException, TimeoutException, EarlybirdStartupException { - innerMain(); - } - - /** - * Setting up an innerMain() so that tests can mock out the contents of main without interfering - * with reflection being done in App.scala looking for a method named "main". - */ - @VisibleForTesting - void innerMain() throws TimeoutException, InterruptedException, EarlybirdStartupException { - LOG.info("Starting main()."); - - // If this method throws, TwitterServer will catch the exception and call close, so we don't - // catch it here. - try { - earlybirdServer.start(); - } catch (Throwable throwable) { - LOG.error("Exception while starting:", throwable); - throw throwable; - } - - Await.ready(adminHttpServer()); - LOG.info("main() complete."); - } - - @Override - public void onExit() { - LOG.info("Starting onExit()"); - earlybirdServer.shutdown(); - try { - earlybirdAdminManager.doShutdown(); - } catch (InterruptedException e) { - LOG.warn("earlybirdAdminManager shutdown was interrupted with " + e); - } - LOG.info("onExit() complete."); - } -} diff --git a/src/java/com/twitter/search/earlybird/EarlybirdCPUQualityFactor.docx b/src/java/com/twitter/search/earlybird/EarlybirdCPUQualityFactor.docx new file mode 100644 index 0000000000000000000000000000000000000000..312299647d138cf825f536f66039c9884415a674 GIT binary patch literal 38354 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/EarlybirdCPUQualityFactor.java b/src/java/com/twitter/search/earlybird/EarlybirdCPUQualityFactor.java deleted file mode 100644 index 0fdfbc1d5..000000000 --- a/src/java/com/twitter/search/earlybird/EarlybirdCPUQualityFactor.java +++ /dev/null @@ -1,181 +0,0 @@ -package com.twitter.search.earlybird; - -import com.google.common.annotations.VisibleForTesting; -import com.sun.management.OperatingSystemMXBean; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.decider.Decider; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.metrics.SearchStatsReceiver; - -/** - * Manages the quality factor for an Earlybird based on CPU usage. - */ -public class EarlybirdCPUQualityFactor implements QualityFactor { - public static final String ENABLE_QUALITY_FACTOR_DECIDER = "enable_quality_factor"; - public static final String OVERRIDE_QUALITY_FACTOR_DECIDER = "override_quality_factor"; - - @VisibleForTesting - protected static final double CPU_USAGE_THRESHOLD = 0.8; - @VisibleForTesting - protected static final double MAX_QF_INCREMENT = 0.5; - @VisibleForTesting - protected static final double MAX_QF_DECREMENT = 0.1; - @VisibleForTesting - protected static final double MAX_CPU_USAGE = 1.0; - - private static final Logger QUALITY_FACTOR_LOG = - LoggerFactory.getLogger(EarlybirdCPUQualityFactor.class); - private static final Logger EARLYBIRD_LOG = LoggerFactory.getLogger(Earlybird.class); - - /** - * Tracks the real, underlying CPU QF value, regardless of the decider enabling - * it. - */ - @VisibleForTesting - protected static final String UNDERLYING_CPU_QF_GUAGE = "underlying_cpu_quality_factor"; - - /** - * Reports the QF actually used to degrade Earlybirds. - */ - @VisibleForTesting - protected static final String CPU_QF_GUAGE = "cpu_quality_factor"; - - private static final int SAMPLING_WINDOW_MILLIS = 60 * 1000; // one minute - - - private double qualityFactor = 1; - private double previousQualityFactor = 1; - - private final SearchDecider decider; - private final OperatingSystemMXBean operatingSystemMXBean; - - public EarlybirdCPUQualityFactor( - Decider decider, - OperatingSystemMXBean operatingSystemMXBean, - SearchStatsReceiver searchStatsReceiver) { - this.decider = new SearchDecider(decider); - this.operatingSystemMXBean = operatingSystemMXBean; - - searchStatsReceiver.getCustomGauge(UNDERLYING_CPU_QF_GUAGE, () -> qualityFactor); - searchStatsReceiver.getCustomGauge(CPU_QF_GUAGE, this::get); - } - - /** - * Updates the current quality factor based on CPU usage. - */ - @VisibleForTesting - protected void update() { - previousQualityFactor = qualityFactor; - - double cpuUsage = operatingSystemMXBean.getSystemCpuLoad(); - - if (cpuUsage < CPU_USAGE_THRESHOLD) { - double increment = - ((CPU_USAGE_THRESHOLD - cpuUsage) / CPU_USAGE_THRESHOLD) * MAX_QF_INCREMENT; - qualityFactor = Math.min(1, qualityFactor + increment); - } else { - double decrement = - ((cpuUsage - CPU_USAGE_THRESHOLD) / (MAX_CPU_USAGE - CPU_USAGE_THRESHOLD)) - * MAX_QF_DECREMENT; - qualityFactor = Math.max(0, qualityFactor - decrement); - } - - if (!qualityFactorChanged()) { - return; - } - - QUALITY_FACTOR_LOG.info( - String.format("CPU: %.2f Quality Factor: %.2f", cpuUsage, qualityFactor)); - - if (!enabled()) { - return; - } - - if (degradationBegan()) { - EARLYBIRD_LOG.info("Service degradation began."); - } - - if (degradationEnded()) { - EARLYBIRD_LOG.info("Service degradation ended."); - } - } - - @Override - public double get() { - if (!enabled()) { - return 1; - } - - if (isOverridden()) { - return override(); - } - - return qualityFactor; - } - - @Override - public void startUpdates() { - new Thread(() -> { - while (true) { - update(); - try { - Thread.sleep(SAMPLING_WINDOW_MILLIS); - } catch (InterruptedException e) { - QUALITY_FACTOR_LOG.warn( - "Quality factoring thread interrupted during sleep between updates", e); - } - } - }).start(); - } - - /** - * Returns true if quality factoring is enabled by the decider. - * @return - */ - private boolean enabled() { - return decider != null && decider.isAvailable(ENABLE_QUALITY_FACTOR_DECIDER); - } - - /** - * Returns true if a decider has overridden the quality factor. - * @return - */ - private boolean isOverridden() { - return decider != null && decider.getAvailability(OVERRIDE_QUALITY_FACTOR_DECIDER) < 10000.0; - } - - /** - * Returns the override decider value. - * @return - */ - private double override() { - return decider == null ? 1 : decider.getAvailability(OVERRIDE_QUALITY_FACTOR_DECIDER) / 10000.0; - } - - /** - * Returns true if the quality factor has changed since the last update. - * @return - */ - private boolean qualityFactorChanged() { - return Math.abs(qualityFactor - previousQualityFactor) > 0.01; - } - - /** - * Returns true if we've entered a degraded state. - * @return - */ - private boolean degradationBegan() { - return Math.abs(previousQualityFactor - 1.0) < 0.01 && qualityFactor < previousQualityFactor; - } - - /** - * Returns true if we've left the degraded state. - * @return - */ - private boolean degradationEnded() { - return Math.abs(qualityFactor - 1.0) < 0.01 && previousQualityFactor < qualityFactor; - } -} diff --git a/src/java/com/twitter/search/earlybird/EarlybirdDarkProxy.docx b/src/java/com/twitter/search/earlybird/EarlybirdDarkProxy.docx new file mode 100644 index 0000000000000000000000000000000000000000..b1fbcd1b894c3b0d1cad1d516a265578b2aa9b91 GIT binary patch literal 38023 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 U<~-mG+MHElfXn9Gq->u3AEvA*9smFU literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/EarlybirdDarkProxy.java b/src/java/com/twitter/search/earlybird/EarlybirdDarkProxy.java deleted file mode 100644 index c0d2fea2e..000000000 --- a/src/java/com/twitter/search/earlybird/EarlybirdDarkProxy.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.twitter.search.earlybird; - -import java.util.concurrent.TimeUnit; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.Lists; - -import org.apache.thrift.protocol.TCompactProtocol; - -import com.twitter.finagle.ThriftMux; -import com.twitter.finagle.builder.ClientBuilder; -import com.twitter.finagle.builder.ClientConfig.Yes; -import com.twitter.finagle.mtls.client.MtlsThriftMuxClient; -import com.twitter.finagle.stats.StatsReceiver; -import com.twitter.finagle.thrift.ClientId; -import com.twitter.finagle.thrift.ThriftClientRequest; -import com.twitter.finagle.zipkin.thrift.ZipkinTracer; -import com.twitter.search.common.dark.DarkProxy; -import com.twitter.search.common.dark.ResolverProxy; -import com.twitter.search.common.dark.ServerSetResolver; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.util.thrift.BytesToThriftFilter; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; -import com.twitter.search.earlybird.common.config.EarlybirdProperty; -import com.twitter.util.Duration; - -public class EarlybirdDarkProxy { - private static final String WARM_UP_DECIDER_KEY_PREFIX = "warmup_"; - - private static final int DARK_REQUESTS_TOTAL_REQUEST_TIMEOUT_MS = - EarlybirdConfig.getInt("dark_requests_total_request_timeout_ms", 800); - private static final int DARK_REQUESTS_INDIVIDUAL_REQUEST_TIMEOUT_MS = - EarlybirdConfig.getInt("dark_requests_individual_request_timeout_ms", 800); - private static final int DARK_REQUESTS_CONNECT_TIMEOUT_MS = - EarlybirdConfig.getInt("dark_requests_connect_timeout_ms", 500); - private static final int DARK_REQUESTS_NUM_RETRIES = - EarlybirdConfig.getInt("dark_requests_num_retries", 1); - private static final String DARK_REQUESTS_FINAGLE_CLIENT_ID = - EarlybirdConfig.getString("dark_requests_finagle_client_id", "earlybird_warmup"); - - private final DarkProxy darkProxy; - - public EarlybirdDarkProxy(SearchDecider searchDecider, - StatsReceiver statsReceiver, - EarlybirdServerSetManager earlybirdServerSetManager, - EarlybirdWarmUpManager earlybirdWarmUpManager, - String clusterName) { - darkProxy = newDarkProxy(searchDecider, - statsReceiver, - earlybirdServerSetManager, - earlybirdWarmUpManager, - clusterName); - } - - public DarkProxy getDarkProxy() { - return darkProxy; - } - - @VisibleForTesting - protected DarkProxy newDarkProxy( - SearchDecider searchDecider, - StatsReceiver statsReceiver, - EarlybirdServerSetManager earlybirdServerSetManager, - final EarlybirdWarmUpManager earlybirdWarmUpManager, - String clusterName) { - ResolverProxy resolverProxy = new ResolverProxy(); - ServerSetResolver.SelfServerSetResolver selfServerSetResolver = - new ServerSetResolver.SelfServerSetResolver( - earlybirdServerSetManager.getServerSetIdentifier(), resolverProxy); - selfServerSetResolver.init(); - - final String clusterNameForDeciderKey = clusterName.toLowerCase().replaceAll("-", "_"); - final String warmUpServerSetIdentifier = earlybirdWarmUpManager.getServerSetIdentifier(); - DarkProxy newDarkProxy = new DarkProxy( - selfServerSetResolver, - newClientBuilder(statsReceiver), - resolverProxy, - searchDecider, - Lists.newArrayList(warmUpServerSetIdentifier), - new BytesToThriftFilter(), - statsReceiver) { - @Override - protected String getServicePathDeciderKey(String servicePath) { - if (warmUpServerSetIdentifier.equals(servicePath)) { - return WARM_UP_DECIDER_KEY_PREFIX + clusterNameForDeciderKey; - } - - return clusterNameForDeciderKey; - } - }; - - newDarkProxy.init(); - return newDarkProxy; - } - - private ClientBuilder newClientBuilder( - StatsReceiver statsReceiver) { - return ClientBuilder.get() - .daemon(true) - .timeout(Duration.apply(DARK_REQUESTS_TOTAL_REQUEST_TIMEOUT_MS, TimeUnit.MILLISECONDS)) - .requestTimeout( - Duration.apply(DARK_REQUESTS_INDIVIDUAL_REQUEST_TIMEOUT_MS, TimeUnit.MILLISECONDS)) - .tcpConnectTimeout(Duration.apply(DARK_REQUESTS_CONNECT_TIMEOUT_MS, TimeUnit.MILLISECONDS)) - .retries(DARK_REQUESTS_NUM_RETRIES) - .reportTo(statsReceiver) - .tracer(ZipkinTracer.mk(statsReceiver)) - .stack(new MtlsThriftMuxClient( - ThriftMux.client()) - .withMutualTls(EarlybirdProperty.getServiceIdentifier()) - .withProtocolFactory(new TCompactProtocol.Factory()) - .withClientId(new ClientId(DARK_REQUESTS_FINAGLE_CLIENT_ID))); - } -} diff --git a/src/java/com/twitter/search/earlybird/EarlybirdFinagleServerManager.docx b/src/java/com/twitter/search/earlybird/EarlybirdFinagleServerManager.docx new file mode 100644 index 0000000000000000000000000000000000000000..00d93b9669272e1302c65b6d886530eb7c785e4c GIT binary patch literal 37322 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 UtiT)u%2k34iNNd;+za9X01R2lq5uE@ literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/EarlybirdFinagleServerManager.java b/src/java/com/twitter/search/earlybird/EarlybirdFinagleServerManager.java deleted file mode 100644 index c84083475..000000000 --- a/src/java/com/twitter/search/earlybird/EarlybirdFinagleServerManager.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.twitter.search.earlybird; - -import com.twitter.finagle.thrift.ThriftClientRequest; -import com.twitter.search.common.dark.DarkProxy; -import com.twitter.search.earlybird.thrift.EarlybirdService; -import com.twitter.util.Duration; - -/** - * Manages a finagle server underneath, which can be recreated. - * - * This class is not thread-safe. It is up to the concrete implementations and their callers to - * correctly synchronize calls to these methods (for example, to make sure that there is no race - * condition if startProductionFinagleServer() and stopProductionFinagleServer() are called - * concurrently from two different threads). - */ -public interface EarlybirdFinagleServerManager { - /** - * Determines if the warm up finagle server is currently running - */ - boolean isWarmUpServerRunning(); - - /** - * Starts up the warm up finagle server on the given port. - */ - void startWarmUpFinagleServer( - EarlybirdService.ServiceIface serviceIface, - String serviceName, - int port); - - /** - * Stops the warm up finagle server, after waiting for at most the given amount of time. - */ - void stopWarmUpFinagleServer(Duration serverCloseWaitTime) throws InterruptedException; - - /** - * Determines if the production finagle server is currently running. - */ - boolean isProductionServerRunning(); - - /** - * Starts up the production finagle server on the given port. - */ - void startProductionFinagleServer( - DarkProxy darkProxy, - EarlybirdService.ServiceIface serviceIface, - String serviceName, - int port); - - /** - * Stops the production finagle server after waiting for at most the given amount of time. - */ - void stopProductionFinagleServer(Duration serverCloseWaitTime) throws InterruptedException; -} diff --git a/src/java/com/twitter/search/earlybird/EarlybirdFuturePoolManager.docx b/src/java/com/twitter/search/earlybird/EarlybirdFuturePoolManager.docx new file mode 100644 index 0000000000000000000000000000000000000000..0c28b9e4b8647dbb385dfab7c12954da410f291c GIT binary patch literal 37906 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 Jqac0l>>tI|{`&v` literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/EarlybirdFuturePoolManager.java b/src/java/com/twitter/search/earlybird/EarlybirdFuturePoolManager.java deleted file mode 100644 index 180b058f7..000000000 --- a/src/java/com/twitter/search/earlybird/EarlybirdFuturePoolManager.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.twitter.search.earlybird; - -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.RejectedExecutionException; -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.ThreadPoolExecutor; -import java.util.concurrent.TimeUnit; - -import scala.Function0; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; -import com.google.common.util.concurrent.ThreadFactoryBuilder; - -import com.twitter.search.common.concurrent.ThreadPoolExecutorStats; -import com.twitter.search.common.metrics.SearchRateCounter; -import com.twitter.search.earlybird.common.config.EarlybirdProperty; -import com.twitter.util.ExecutorServiceFuturePool; -import com.twitter.util.Future; -import com.twitter.util.FuturePool; - -/** - * A future pool that delegates all calls to an underlying futurePool, which can be recreated. - */ -public class EarlybirdFuturePoolManager implements FuturePool { - private volatile ExecutorServiceFuturePool pool = null; - - private final String threadName; - private final ThreadPoolExecutorStats threadPoolExecutorStats; - - public EarlybirdFuturePoolManager(String threadName) { - this.threadName = threadName; - this.threadPoolExecutorStats = new ThreadPoolExecutorStats(threadName); - } - - final synchronized void createUnderlyingFuturePool(int threadCount) { - Preconditions.checkState(pool == null, "Cannot create a new pool before stopping the old one"); - - ExecutorService executorService = - createExecutorService(threadCount, getMaxQueueSize()); - if (executorService instanceof ThreadPoolExecutor) { - threadPoolExecutorStats.setUnderlyingExecutorForStats((ThreadPoolExecutor) executorService); - } - - pool = new ExecutorServiceFuturePool(executorService); - } - - final synchronized void stopUnderlyingFuturePool(long timeout, TimeUnit timeunit) - throws InterruptedException { - Preconditions.checkNotNull(pool); - pool.executor().shutdown(); - pool.executor().awaitTermination(timeout, timeunit); - pool = null; - } - - boolean isPoolReady() { - return pool != null; - } - - @Override - public final Future apply(Function0 f) { - return Preconditions.checkNotNull(pool).apply(f); - } - - @VisibleForTesting - protected ExecutorService createExecutorService(int threadCount, int maxQueueSize) { - if (maxQueueSize <= 0) { - return Executors.newFixedThreadPool(threadCount, createThreadFactory(threadName)); - } - - SearchRateCounter rejectedTaskCounter = - SearchRateCounter.export(threadName + "_rejected_task_count"); - return new ThreadPoolExecutor( - threadCount, threadCount, 0, TimeUnit.MILLISECONDS, - new ArrayBlockingQueue<>(maxQueueSize), - createThreadFactory(threadName), - (runnable, executor) -> { - rejectedTaskCounter.increment(); - throw new RejectedExecutionException(threadName + " queue is full"); - }); - } - - @VisibleForTesting - protected int getMaxQueueSize() { - return EarlybirdProperty.MAX_QUEUE_SIZE.get(0); - } - - @VisibleForTesting - static ThreadFactory createThreadFactory(String threadName) { - return new ThreadFactoryBuilder() - .setNameFormat(threadName + "-%d") - .setDaemon(true) - .build(); - } - - @Override - public int poolSize() { - return Preconditions.checkNotNull(pool).poolSize(); - } - - @Override - public int numActiveTasks() { - return Preconditions.checkNotNull(pool).numActiveTasks(); - } - - @Override - public long numCompletedTasks() { - return Preconditions.checkNotNull(pool).numCompletedTasks(); - } - - -} diff --git a/src/java/com/twitter/search/earlybird/EarlybirdIndexConfig.docx b/src/java/com/twitter/search/earlybird/EarlybirdIndexConfig.docx new file mode 100644 index 0000000000000000000000000000000000000000..f16713c7f8702619befcf0f87518dfb0370523ec GIT binary patch literal 38554 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 A3jhEB literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/EarlybirdIndexConfig.java b/src/java/com/twitter/search/earlybird/EarlybirdIndexConfig.java deleted file mode 100644 index b5928c651..000000000 --- a/src/java/com/twitter/search/earlybird/EarlybirdIndexConfig.java +++ /dev/null @@ -1,190 +0,0 @@ -package com.twitter.search.earlybird; - -import java.io.IOException; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Predicate; -import com.google.common.base.Predicates; - -import org.apache.lucene.index.IndexWriterConfig; -import org.apache.lucene.store.Directory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.decider.Decider; -import com.twitter.search.common.schema.DynamicSchema; -import com.twitter.search.common.schema.base.Schema.SchemaValidationException; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.common.schema.earlybird.EarlybirdSchemaCreateTool; -import com.twitter.search.common.schema.thriftjava.ThriftIndexingEvent; -import com.twitter.search.common.util.CloseResourceUtil; -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentData; -import com.twitter.search.core.earlybird.index.extensions.EarlybirdIndexExtensionsFactory; -import com.twitter.search.earlybird.document.DocumentFactory; -import com.twitter.search.earlybird.document.ThriftIndexingEventDocumentFactory; -import com.twitter.search.earlybird.document.ThriftIndexingEventUpdateFactory; -import com.twitter.search.earlybird.exception.CriticalExceptionHandler; -import com.twitter.search.earlybird.partition.PartitionConfig; -import com.twitter.search.earlybird.partition.SearchIndexingMetricSet; -import com.twitter.search.earlybird.partition.SegmentSyncInfo; -import com.twitter.search.earlybird.partition.UserPartitionUtil; - -/** - * Collection of required indexing entities that differ in the various Earlybird clusters. - */ -public abstract class EarlybirdIndexConfig { - private static final Logger LOG = LoggerFactory.getLogger(EarlybirdIndexConfig.class); - - private final EarlybirdCluster cluster; - private final DynamicSchema schema; - private final Decider decider; - private final SearchIndexingMetricSet searchIndexingMetricSet; - protected final CriticalExceptionHandler criticalExceptionHandler; - - /** - * Creates a new index config using an applicable schema built for the provided cluster. - */ - protected EarlybirdIndexConfig( - EarlybirdCluster cluster, Decider decider, SearchIndexingMetricSet searchIndexingMetricSet, - CriticalExceptionHandler criticalExceptionHandler) { - this(cluster, buildSchema(cluster), decider, searchIndexingMetricSet, - criticalExceptionHandler); - } - - @VisibleForTesting - protected EarlybirdIndexConfig( - EarlybirdCluster cluster, - DynamicSchema schema, - Decider decider, - SearchIndexingMetricSet searchIndexingMetricSet, - CriticalExceptionHandler criticalExceptionHandler) { - this.cluster = cluster; - this.schema = schema; - this.decider = decider; - this.searchIndexingMetricSet = searchIndexingMetricSet; - this.criticalExceptionHandler = criticalExceptionHandler; - LOG.info("This Earlybird uses index config: " + this.getClass().getSimpleName()); - } - - private static DynamicSchema buildSchema(EarlybirdCluster cluster) { - try { - return EarlybirdSchemaCreateTool.buildSchema(cluster); - } catch (SchemaValidationException e) { - throw new RuntimeException(e); - } - } - - /** - * Creates the appropriate document factory for this earlybird. - */ - public final DocumentFactory createDocumentFactory() { - return new ThriftIndexingEventDocumentFactory( - getSchema(), getCluster(), decider, searchIndexingMetricSet, - criticalExceptionHandler); - } - - /** - * Creates a document factory for ThriftIndexingEvents that are updates to the index. - */ - public final DocumentFactory createUpdateFactory() { - return new ThriftIndexingEventUpdateFactory( - getSchema(), getCluster(), decider, criticalExceptionHandler); - } - - /** - * Return the EarlybirdCluster enum identifying the cluster this config is for. - */ - public final EarlybirdCluster getCluster() { - return cluster; - } - - /** - * Return the default filter for UserUpdatesTable - for the archive cluster keep - * users that belong to the current partition. - */ - public final Predicate getUserTableFilter(PartitionConfig partitionConfig) { - if (EarlybirdCluster.isArchive(getCluster())) { - return UserPartitionUtil.filterUsersByPartitionPredicate(partitionConfig); - } - - return Predicates.alwaysTrue(); - } - - /** - * Creates a new Lucene {@link Directory} to be used for indexing documents. - */ - public abstract Directory newLuceneDirectory(SegmentSyncInfo segmentSyncInfo) throws IOException; - - /** - * Creates a new Lucene IndexWriterConfig that can be used for creating a segment writer for a - * new segment. - */ - public abstract IndexWriterConfig newIndexWriterConfig(); - - /** - * Creates a new SegmentData object to add documents to. - */ - public abstract EarlybirdIndexSegmentData newSegmentData( - int maxSegmentSize, - long timeSliceID, - Directory dir, - EarlybirdIndexExtensionsFactory extensionsFactory); - - /** - * Loads a flushed index for the given segment. - */ - public abstract EarlybirdIndexSegmentData loadSegmentData( - FlushInfo flushInfo, - DataDeserializer dataInputStream, - Directory dir, - EarlybirdIndexExtensionsFactory extensionsFactory) throws IOException; - - /** - * Creates a new segment optimizer for the given segment data. - */ - public abstract EarlybirdIndexSegmentData optimize( - EarlybirdIndexSegmentData earlybirdIndexSegmentData) throws IOException; - - /** - * Whether the index is stored on disk or not. If an index is not on disk, it is presumed to be - * in memory. - */ - public abstract boolean isIndexStoredOnDisk(); - - /** - * Whether documents are search in LIFO ordering (RT mode), or default (Lucene) FIFO ordering - */ - public final boolean isUsingLIFODocumentOrdering() { - return !isIndexStoredOnDisk(); - } - - /** - * Whether this index supports out-of-order indexing - */ - public abstract boolean supportOutOfOrderIndexing(); - - /** - * Returns a CloseResourceUtil used for closing resources. - */ - public abstract CloseResourceUtil getResourceCloser(); - - /** - * Returns the schema for this index configuration. - */ - public final DynamicSchema getSchema() { - return schema; - } - - /** - * Returns the decider used by this EarlybirdIndexConfig instance. - */ - public Decider getDecider() { - return decider; - } - - public SearchIndexingMetricSet getSearchIndexingMetricSet() { - return searchIndexingMetricSet; - } -} diff --git a/src/java/com/twitter/search/earlybird/EarlybirdMain.docx b/src/java/com/twitter/search/earlybird/EarlybirdMain.docx new file mode 100644 index 0000000000000000000000000000000000000000..d390d0a0f979e6aef07d04e90d338b3ca7ee2788 GIT binary patch literal 36768 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 NL54(N_R#DG@c`srz_9=T literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/EarlybirdMain.java b/src/java/com/twitter/search/earlybird/EarlybirdMain.java deleted file mode 100644 index 809d1b7c9..000000000 --- a/src/java/com/twitter/search/earlybird/EarlybirdMain.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.twitter.search.earlybird; - -public final class EarlybirdMain { - private EarlybirdMain() { - } - - public static void main(String[] args) { - new Earlybird().main(args); - } -} diff --git a/src/java/com/twitter/search/earlybird/EarlybirdProductionFinagleServerManager.docx b/src/java/com/twitter/search/earlybird/EarlybirdProductionFinagleServerManager.docx new file mode 100644 index 0000000000000000000000000000000000000000..7f7d2f39ba98e08cefae4937b072dbd2244f547d GIT binary patch literal 38622 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 PYA?hN7#`@<&qx0O85CEe literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/EarlybirdProductionFinagleServerManager.java b/src/java/com/twitter/search/earlybird/EarlybirdProductionFinagleServerManager.java deleted file mode 100644 index 3bdfa78a9..000000000 --- a/src/java/com/twitter/search/earlybird/EarlybirdProductionFinagleServerManager.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.twitter.search.earlybird; - -import java.net.InetSocketAddress; -import java.util.concurrent.atomic.AtomicReference; - -import org.apache.thrift.protocol.TCompactProtocol; -import org.apache.thrift.protocol.TProtocolFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.finagle.ListeningServer; -import com.twitter.finagle.Service; -import com.twitter.finagle.SslException; -import com.twitter.finagle.ThriftMux; -import com.twitter.finagle.mtls.server.MtlsThriftMuxServer; -import com.twitter.finagle.mux.transport.OpportunisticTls; -import com.twitter.finagle.stats.MetricsStatsReceiver; -import com.twitter.finagle.thrift.ThriftClientRequest; -import com.twitter.finagle.util.ExitGuard; -import com.twitter.finagle.zipkin.thrift.ZipkinTracer; -import com.twitter.search.common.dark.DarkProxy; -import com.twitter.search.earlybird.common.config.EarlybirdProperty; -import com.twitter.search.earlybird.exception.CriticalExceptionHandler; -import com.twitter.search.earlybird.exception.EarlybirdFinagleServerMonitor; -import com.twitter.search.earlybird.thrift.EarlybirdService; -import com.twitter.server.filter.AdmissionControl; -import com.twitter.server.filter.cpuAdmissionControl; -import com.twitter.util.Await; -import com.twitter.util.Duration; -import com.twitter.util.TimeoutException; - -public class EarlybirdProductionFinagleServerManager implements EarlybirdFinagleServerManager { - private static final Logger LOG = - LoggerFactory.getLogger(EarlybirdProductionFinagleServerManager.class); - - private final AtomicReference warmUpFinagleServer = new AtomicReference<>(); - private final AtomicReference productionFinagleServer = new AtomicReference<>(); - private final EarlybirdFinagleServerMonitor unhandledExceptionMonitor; - - public EarlybirdProductionFinagleServerManager( - CriticalExceptionHandler criticalExceptionHandler) { - this.unhandledExceptionMonitor = - new EarlybirdFinagleServerMonitor(criticalExceptionHandler); - } - - @Override - public boolean isWarmUpServerRunning() { - return warmUpFinagleServer.get() != null; - } - - @Override - public void startWarmUpFinagleServer(EarlybirdService.ServiceIface serviceIface, - String serviceName, - int port) { - TProtocolFactory protocolFactory = new TCompactProtocol.Factory(); - startFinagleServer(warmUpFinagleServer, "warmup", - new EarlybirdService.Service(serviceIface, protocolFactory), - protocolFactory, serviceName, port); - } - - @Override - public void stopWarmUpFinagleServer(Duration serverCloseWaitTime) throws InterruptedException { - stopFinagleServer(warmUpFinagleServer, serverCloseWaitTime, "Warm up"); - } - - @Override - public boolean isProductionServerRunning() { - return productionFinagleServer.get() != null; - } - - @Override - public void startProductionFinagleServer(DarkProxy darkProxy, - EarlybirdService.ServiceIface serviceIface, - String serviceName, - int port) { - TProtocolFactory protocolFactory = new TCompactProtocol.Factory(); - startFinagleServer(productionFinagleServer, "production", - darkProxy.toFilter().andThen(new EarlybirdService.Service(serviceIface, protocolFactory)), - protocolFactory, serviceName, port); - } - - @Override - public void stopProductionFinagleServer(Duration serverCloseWaitTime) - throws InterruptedException { - stopFinagleServer(productionFinagleServer, serverCloseWaitTime, "Production"); - } - - private void startFinagleServer(AtomicReference target, String serverDescription, - Service service, TProtocolFactory protocolFactory, String serviceName, - int port) { - target.set(getServer(service, serviceName, port, protocolFactory)); - LOG.info("Started EarlybirdServer " + serverDescription + " finagle server on port " + port); - } - - private ListeningServer getServer( - Service service, String serviceName, int port, - TProtocolFactory protocolFactory) { - MetricsStatsReceiver statsReceiver = new MetricsStatsReceiver(); - ThriftMux.Server server = new MtlsThriftMuxServer(ThriftMux.server()) - .withMutualTls(EarlybirdProperty.getServiceIdentifier()) - .withServiceClass(EarlybirdService.class) - .withOpportunisticTls(OpportunisticTls.Required()) - .withLabel(serviceName) - .withStatsReceiver(statsReceiver) - .withTracer(ZipkinTracer.mk(statsReceiver)) - .withMonitor(unhandledExceptionMonitor) - .withProtocolFactory(protocolFactory); - - if (cpuAdmissionControl.isDefined()) { - LOG.info("cpuAdmissionControl flag is set, replacing AuroraThrottlingAdmissionFilter" - + " with LinuxCpuAdmissionFilter"); - server = server - .configured(AdmissionControl.auroraThrottling().off().mk()) - .configured(AdmissionControl.linuxCpu().useGlobalFlag().mk()); - } - - return server.serve(new InetSocketAddress(port), service); - } - - private void stopFinagleServer(AtomicReference finagleServer, - Duration serverCloseWaitTime, - String serverDescription) throws InterruptedException { - try { - LOG.info("Waiting for " + serverDescription + " finagle server to close. " - + "Current time is " + System.currentTimeMillis()); - Await.result(finagleServer.get().close(), serverCloseWaitTime); - LOG.info("Stopped " + serverDescription + " finagle server. Current time is " - + System.currentTimeMillis()); - finagleServer.set(null); - } catch (TimeoutException e) { - LOG.warn(serverDescription + " finagle server did not shutdown cleanly.", e); - } catch (SslException e) { - // Closing the Thrift port seems to throw an SSLException (SSLEngine closed already). - // See SEARCH-29449. Log the exception and reset finagleServer, so that future calls to - // startProductionFinagleServer() succeed. - LOG.warn("Got a SSLException while trying to close the Thrift port.", e); - finagleServer.set(null); - } catch (InterruptedException e) { - // If we catch an InterruptedException here, it means that we're probably shutting down. - // We should propagate this exception, and rely on EarlybirdServer.stopThriftService() - // to do the right thing. - throw e; - } catch (Exception e) { - LOG.error(e.getMessage(), e); - } finally { - // If the finagle server does not close cleanly, this line prints details about - // the ExitGuards. - LOG.info(serverDescription + " server ExitGuard explanation: " + ExitGuard.explainGuards()); - } - } -} diff --git a/src/java/com/twitter/search/earlybird/EarlybirdSearcher.docx b/src/java/com/twitter/search/earlybird/EarlybirdSearcher.docx new file mode 100644 index 0000000000000000000000000000000000000000..6342fc959e6a6ed3d9d6a547aa98a7b22519ce15 GIT binary patch literal 57862 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

    1XPp-v3t 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/EarlybirdSearcher.java b/src/java/com/twitter/search/earlybird/EarlybirdSearcher.java deleted file mode 100644 index 386c0bcb6..000000000 --- a/src/java/com/twitter/search/earlybird/EarlybirdSearcher.java +++ /dev/null @@ -1,1918 +0,0 @@ -package com.twitter.search.earlybird; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Joiner; -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Lists; - -import org.apache.commons.lang.StringUtils; -import org.apache.lucene.index.Term; -import org.apache.lucene.queryparser.classic.ParseException; -import org.apache.lucene.queryparser.classic.QueryParser; -import org.apache.lucene.search.BooleanClause.Occur; -import org.apache.lucene.search.BooleanQuery; -import org.apache.lucene.search.Query; -import org.apache.thrift.TException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.util.Clock; -import com.twitter.decider.Decider; -import com.twitter.search.common.database.DatabaseConfig; -import com.twitter.search.common.decider.DeciderUtil; -import com.twitter.search.common.features.thrift.ThriftSearchFeatureSchema; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.metrics.SearchRateCounter; -import com.twitter.search.common.metrics.SearchTimer; -import com.twitter.search.common.partitioning.base.Segment; -import com.twitter.search.common.query.MappableField; -import com.twitter.search.common.query.QueryHitAttributeHelper; -import com.twitter.search.common.query.thriftjava.CollectorParams; -import com.twitter.search.common.query.thriftjava.CollectorTerminationParams; -import com.twitter.search.common.query.thriftjava.EarlyTerminationInfo; -import com.twitter.search.common.ranking.thriftjava.ThriftRankingParams; -import com.twitter.search.common.ranking.thriftjava.ThriftScoringFunctionType; -import com.twitter.search.common.results.thriftjava.FieldHitList; -import com.twitter.search.common.schema.SchemaUtil; -import com.twitter.search.common.schema.SearchWhitespaceAnalyzer; -import com.twitter.search.common.schema.base.FieldWeightDefault; -import com.twitter.search.common.schema.base.ImmutableSchemaInterface; -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants.EarlybirdFieldConstant; -import com.twitter.search.common.search.TerminationTracker; -import com.twitter.search.common.search.TwitterEarlyTerminationCollector; -import com.twitter.search.common.search.termination.QueryTimeoutFactory; -import com.twitter.search.common.util.earlybird.EarlybirdResponseUtil; -import com.twitter.search.common.util.ml.tensorflow_engine.TensorflowModelsManager; -import com.twitter.search.common.util.thrift.ThriftUtils; -import com.twitter.search.core.earlybird.facets.FacetCountState; -import com.twitter.search.earlybird.common.ClientIdUtil; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; -import com.twitter.search.earlybird.exception.ClientException; -import com.twitter.search.earlybird.exception.TransientException; -import com.twitter.search.earlybird.index.facets.FacetSkipList; -import com.twitter.search.earlybird.ml.ScoringModelsManager; -import com.twitter.search.earlybird.partition.AudioSpaceTable; -import com.twitter.search.earlybird.partition.MultiSegmentTermDictionaryManager; -import com.twitter.search.earlybird.partition.PartitionConfig; -import com.twitter.search.earlybird.partition.SegmentInfo; -import com.twitter.search.earlybird.partition.SegmentManager; -import com.twitter.search.earlybird.querycache.QueryCacheConversionRules; -import com.twitter.search.earlybird.querycache.QueryCacheManager; -import com.twitter.search.earlybird.queryparser.DetectFieldAnnotationVisitor; -import com.twitter.search.earlybird.queryparser.EarlybirdLuceneQueryVisitor; -import com.twitter.search.earlybird.queryparser.HighFrequencyTermPairRewriteVisitor; -import com.twitter.search.earlybird.queryparser.LuceneRelevanceQueryVisitor; -import com.twitter.search.earlybird.queryparser.ProtectedOperatorQueryRewriter; -import com.twitter.search.earlybird.search.AbstractResultsCollector; -import com.twitter.search.earlybird.search.AntiGamingFilter; -import com.twitter.search.earlybird.search.queries.BadUserRepFilter; -import com.twitter.search.earlybird.search.EarlybirdLuceneSearcher; -import com.twitter.search.earlybird.search.EarlybirdMultiSegmentSearcher; -import com.twitter.search.earlybird.search.queries.MatchAllDocsQuery; -import com.twitter.search.earlybird.search.queries.RequiredStatusIDsFilter; -import com.twitter.search.earlybird.search.SearchRequestInfo; -import com.twitter.search.earlybird.search.SearchResultsCollector; -import com.twitter.search.earlybird.search.SearchResultsInfo; -import com.twitter.search.earlybird.search.SimpleSearchResults; -import com.twitter.search.earlybird.search.SocialFilter; -import com.twitter.search.earlybird.search.SocialSearchResultsCollector; -import com.twitter.search.earlybird.search.queries.UserFlagsExcludeFilter; -import com.twitter.search.earlybird.search.queries.UserIdMultiSegmentQuery; -import com.twitter.search.earlybird.search.facets.EntityAnnotationCollector; -import com.twitter.search.earlybird.search.facets.ExpandedUrlCollector; -import com.twitter.search.earlybird.search.facets.ExplainFacetResultsCollector; -import com.twitter.search.earlybird.search.facets.FacetRankingModule; -import com.twitter.search.earlybird.search.facets.FacetResultsCollector; -import com.twitter.search.earlybird.search.facets.FacetSearchRequestInfo; -import com.twitter.search.earlybird.search.facets.NamedEntityCollector; -import com.twitter.search.earlybird.search.facets.SpaceFacetCollector; -import com.twitter.search.earlybird.search.facets.TermStatisticsCollector; -import com.twitter.search.earlybird.search.facets.TermStatisticsRequestInfo; -import com.twitter.search.earlybird.search.relevance.RelevanceSearchRequestInfo; -import com.twitter.search.earlybird.search.relevance.RelevanceSearchResults; -import com.twitter.search.earlybird.search.relevance.collectors.AbstractRelevanceCollector; -import com.twitter.search.earlybird.search.relevance.collectors.BatchRelevanceTopCollector; -import com.twitter.search.earlybird.search.relevance.collectors.RelevanceAllCollector; -import com.twitter.search.earlybird.search.relevance.collectors.RelevanceTopCollector; -import com.twitter.search.earlybird.search.relevance.scoring.RelevanceQuery; -import com.twitter.search.earlybird.search.relevance.scoring.ScoringFunction; -import com.twitter.search.earlybird.search.relevance.scoring.ScoringFunctionProvider; -import com.twitter.search.earlybird.search.relevance.scoring.TensorflowBasedScoringFunction; -import com.twitter.search.earlybird.stats.EarlybirdRPCStats; -import com.twitter.search.earlybird.stats.EarlybirdSearcherStats; -import com.twitter.search.earlybird.thrift.EarlybirdDebugInfo; -import com.twitter.search.earlybird.thrift.EarlybirdRequest; -import com.twitter.search.earlybird.thrift.EarlybirdResponse; -import com.twitter.search.earlybird.thrift.EarlybirdResponseCode; -import com.twitter.search.earlybird.thrift.ThriftFacetCount; -import com.twitter.search.earlybird.thrift.ThriftFacetCountMetadata; -import com.twitter.search.earlybird.thrift.ThriftFacetFieldRequest; -import com.twitter.search.earlybird.thrift.ThriftFacetFieldResults; -import com.twitter.search.earlybird.thrift.ThriftFacetRequest; -import com.twitter.search.earlybird.thrift.ThriftFacetResults; -import com.twitter.search.earlybird.thrift.ThriftSearchQuery; -import com.twitter.search.earlybird.thrift.ThriftSearchRankingMode; -import com.twitter.search.earlybird.thrift.ThriftSearchRelevanceOptions; -import com.twitter.search.earlybird.thrift.ThriftSearchResult; -import com.twitter.search.earlybird.thrift.ThriftSearchResultExtraMetadata; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadataOptions; -import com.twitter.search.earlybird.thrift.ThriftSearchResults; -import com.twitter.search.earlybird.thrift.ThriftTermRequest; -import com.twitter.search.earlybird.thrift.ThriftTermStatisticsRequest; -import com.twitter.search.earlybird.thrift.ThriftTermStatisticsResults; -import com.twitter.search.earlybird.util.EarlybirdSearchResultUtil; -import com.twitter.search.queryparser.parser.SerializedQueryParser; -import com.twitter.search.queryparser.query.Conjunction; -import com.twitter.search.queryparser.query.Disjunction; -import com.twitter.search.queryparser.query.QueryNodeUtils; -import com.twitter.search.queryparser.query.QueryParserException; -import com.twitter.search.queryparser.query.annotation.Annotation; -import com.twitter.search.queryparser.query.search.SearchOperator; -import com.twitter.search.queryparser.query.search.SearchOperatorConstants; -import com.twitter.search.queryparser.util.IdTimeRanges; -import com.twitter.search.queryparser.visitors.ConversionVisitor; -import com.twitter.search.queryparser.visitors.DetectPositiveOperatorVisitor; -import com.twitter.search.queryparser.visitors.NamedDisjunctionVisitor; -import com.twitter.search.queryparser.visitors.ProximityGroupRewriteVisitor; -import com.twitter.search.queryparser.visitors.StripAnnotationsVisitor; - -import static com.twitter.search.queryparser.query.search.SearchOperator.Type.UNTIL_TIME; - -/** - * This class provides the basic search() method: - * - converts the thrift request object into what lucene expects. - * - gets the segment. - * - handles all errors, and prepares the response in case of error. - * - * We have one instance of this class per search received. - */ -public class EarlybirdSearcher { - public enum QueryMode { - // Please think before adding more query modes: can this be implemented in a general way? - RECENCY(new EarlybirdRPCStats("search_recency")), - FACETS(new EarlybirdRPCStats("search_facets")), - TERM_STATS(new EarlybirdRPCStats("search_termstats")), - RELEVANCE(new EarlybirdRPCStats("search_relevance")), - TOP_TWEETS(new EarlybirdRPCStats("search_toptweets")); - - private final EarlybirdRPCStats requestStats; - - QueryMode(EarlybirdRPCStats requestStats) { - this.requestStats = requestStats; - } - - public EarlybirdRPCStats getRequestStats() { - return requestStats; - } - } - - private static final Logger LOG = LoggerFactory.getLogger(EarlybirdSearcher.class); - private static final String MATCH_ALL_SERIALIZED_QUERY = "(* )"; - /** - * generic field annotations can be mapped to a concrete field in the index using this mapping - * via {@link com.twitter.search.queryparser.query.annotation.Annotation.Type#MAPPABLE_FIELD} - */ - private static final Map MAPPABLE_FIELD_MAP = - ImmutableMap.of( - MappableField.URL, - EarlybirdFieldConstant.RESOLVED_LINKS_TEXT_FIELD.getFieldName()); - - private static final String ALLOW_QUERY_SPECIFIC_SIGNAL_DECIDER_KEY - = "allow_query_specific_score_adjustments"; - - @VisibleForTesting - public static final String ALLOW_AUTHOR_SPECIFIC_SIGNAL_DECIDER_KEY - = "allow_author_specific_score_adjustments"; - - private static final String USE_MULTI_TERM_DISJUNCTION_FOR_LIKED_BY_USER_IDS_DECIDER_KEY - = "use_multi_term_disjunction_for_liked_by_user_ids"; - - private static final String ALLOW_CAMELCASE_USERNAME_FIELD_WEIGHT_OVERRIDE_DECIDER_KEY_PREFIX - = "allow_camelcase_username_field_weight_override_in_"; - - private static final String ALLOW_TOKENIZED_DISPLAY_NAME_FIELD_WEIGHT_OVERRIDE_DECIDER_KEY_PREFIX - = "allow_tokenized_display_name_field_weight_override_in_"; - - private static final boolean ALLOW_QUERY_SPECIFIC_SIGNAL_CONFIG - = EarlybirdConfig.getBool("allow_query_specific_score_adjustments", false); - - private static final boolean ALLOW_AUTHOR_SPECIFIC_SIGNAL_CONFIG - = EarlybirdConfig.getBool("allow_author_specific_score_adjustments", false); - - public static final int DEFAULT_NUM_FACET_RESULTS = 100; - - private final ImmutableSchemaInterface schemaSnapshot; - private final EarlybirdCluster cluster; - - private final Clock clock; - private final Decider decider; - - // The actual request thrift. - private final EarlybirdRequest request; - - // searchQuery from inside the request. - private final ThriftSearchQuery searchQuery; - - // CollectorParams from inside the searchQuery; - private final CollectorParams collectorParams; - - // Parsed query (parsed from serialized query string in request). - private com.twitter.search.queryparser.query.Query parsedQuery; - private boolean parsedQueryAllowNullcast; - private IdTimeRanges idTimeRanges; - - // Lucene version of the above. This is what we will actually be executing. - private org.apache.lucene.search.Query luceneQuery; - - // Used for queries where we want to collect per-field hit attribution - @Nullable - private QueryHitAttributeHelper hitAttributeHelper; - - // Debugging info can be appended to this buffer. - private final StringBuilder messageBuffer = new StringBuilder(1024); - private final EarlybirdDebugInfo debugInfo = new EarlybirdDebugInfo(); - - // The segment we are searching, or null for the multi-searcher. - private Segment segment = null; - - // True iff we are searching all segments (multi-searcher). - private final boolean searchAllSegments; - - // Tracking termination criteria for this query - private final TerminationTracker terminationTracker; - - private EarlybirdLuceneSearcher searcher = null; - - private final SegmentManager segmentManager; - private final QueryCacheManager queryCacheManager; - private final ScoringModelsManager scoringModelsManager; - private final TensorflowModelsManager tensorflowModelsManager; - - private AntiGamingFilter antiGamingFilter = null; - - private final boolean searchHighFrequencyTermPairs = - EarlybirdConfig.getBool("search_high_frequency_term_pairs", false); - - // How long to allow post-termination when enforcing query timeout - private final int enforceQueryTimeoutBufferMillis = - EarlybirdConfig.getInt("enforce_query_timeout_buffer_millis", 50); - - private EarlybirdRPCStats requestStats; - - private QueryTimeoutFactory queryTimeoutFactory; - - // Exported stats - private final EarlybirdSearcherStats searcherStats; - - @VisibleForTesting - public static final SearchCounter FIELD_WEIGHT_OVERRIDE_MAP_NON_NULL_COUNT = - SearchCounter.export("field_weight_override_map_non_null_count"); - @VisibleForTesting - public static final SearchCounter DROPPED_CAMELCASE_USERNAME_FIELD_WEIGHT_OVERRIDE = - SearchCounter.export("dropped_camelcase_username_field_weight_override"); - @VisibleForTesting - public static final SearchCounter DROPPED_TOKENIZED_DISPLAY_NAME_FIELD_WEIGHT_OVERRIDE = - SearchCounter.export("dropped_tokenized_display_name_field_weight_override"); - - private static final SearchCounter RESPONSE_HAS_NO_THRIFT_SEARCH_RESULTS = - SearchCounter.export("tweets_earlybird_searcher_response_has_no_thrift_search_results"); - private static final SearchCounter CLIENT_HAS_FEATURE_SCHEMA_COUNTER = - SearchCounter.export("tweets_earlybird_searcher_client_has_feature_schema"); - private static final SearchCounter CLIENT_DOESNT_HAVE_FEATURE_SCHEMA_COUNTER = - SearchCounter.export("tweet_earlybird_searcher_client_doesnt_have_feature_schema"); - private static final SearchCounter COLLECTOR_PARAMS_MAX_HITS_TO_PROCESS_NOT_SET_COUNTER = - SearchCounter.export("collector_params_max_hits_to_process_not_set"); - private static final SearchCounter POSITIVE_PROTECTED_OPERATOR_DETECTED_COUNTER = - SearchCounter.export("positive_protected_operator_detected_counter"); - - // Query mode we are executing. - private final QueryMode queryMode; - - // facetRequest from inside the request (or null). - private final ThriftFacetRequest facetRequest; - - // termStatisticsRequest from inside the request (or null). - private final ThriftTermStatisticsRequest termStatisticsRequest; - - // Results fields filled in during searchInternal(). - private ThriftSearchResults searchResults = null; - private ThriftFacetResults facetResults = null; - private ThriftTermStatisticsResults termStatisticsResults = null; - private EarlyTerminationInfo earlyTerminationInfo = null; - - // Partition config used to fill in debugging info. - // If null, no debug info is written into results. - @Nullable - private final PartitionConfig partitionConfig; - - private final MultiSegmentTermDictionaryManager multiSegmentTermDictionaryManager; - - private final QualityFactor qualityFactor; - - private Set queriedFields; - private final AudioSpaceTable audioSpaceTable; - - public EarlybirdSearcher( - EarlybirdRequest request, - SegmentManager segmentManager, - AudioSpaceTable audioSpaceTable, - QueryCacheManager queryCacheManager, - ImmutableSchemaInterface schema, - EarlybirdCluster cluster, - @Nullable PartitionConfig partitionConfig, - Decider decider, - EarlybirdSearcherStats searcherStats, - ScoringModelsManager scoringModelsManager, - TensorflowModelsManager tensorflowModelsManager, - Clock clock, - MultiSegmentTermDictionaryManager multiSegmentTermDictionaryManager, - QueryTimeoutFactory queryTimeoutFactory, - QualityFactor qualityFactor) { - this.queryMode = getQueryMode(request); - this.schemaSnapshot = schema.getSchemaSnapshot(); - // set the request stats as early as possible, so that we can track errors that happen - // early on in query processing. - this.requestStats = queryMode.getRequestStats(); - this.facetRequest = request.isSetFacetRequest() ? request.getFacetRequest() : null; - this.termStatisticsRequest = request.isSetTermStatisticsRequest() - ? request.getTermStatisticsRequest() : null; - this.partitionConfig = partitionConfig; - this.searcherStats = searcherStats; - this.multiSegmentTermDictionaryManager = multiSegmentTermDictionaryManager; - this.clock = clock; - this.decider = decider; - this.request = request; - this.segmentManager = segmentManager; - this.queryCacheManager = queryCacheManager; - this.cluster = cluster; - this.scoringModelsManager = scoringModelsManager; - this.tensorflowModelsManager = tensorflowModelsManager; - this.audioSpaceTable = audioSpaceTable; - // Note: we're deferring the validation/nullchecks until validateRequest() - // for more contained exception handling - this.searchQuery = request.getSearchQuery(); - this.collectorParams = this.searchQuery == null ? null : this.searchQuery.getCollectorParams(); - // Search all segments if searchSegmentId is unset. - this.searchAllSegments = !request.isSetSearchSegmentId(); - if (this.collectorParams == null - || !this.collectorParams.isSetTerminationParams()) { - this.terminationTracker = new TerminationTracker(clock); - } else if (request.isSetClientRequestTimeMs()) { - this.terminationTracker = new TerminationTracker(collectorParams.getTerminationParams(), - request.getClientRequestTimeMs(), clock, - getPostTerminationOverheadMillis(collectorParams.getTerminationParams())); - } else { - this.terminationTracker = new TerminationTracker( - collectorParams.getTerminationParams(), clock, - getPostTerminationOverheadMillis(collectorParams.getTerminationParams())); - } - this.queryTimeoutFactory = queryTimeoutFactory; - this.qualityFactor = qualityFactor; - } - - private int getPostTerminationOverheadMillis(CollectorTerminationParams terminationParams) { - // If enforcing timeouts, set the post-termination buffer to the smaller of the timeout or the - // configured buffer. This ensures that timeout >= buffer, and a request with a smaller timeout - // should just time out immediately (because timeout == buffer). - return (terminationParams.isEnforceQueryTimeout() && terminationParams.getTimeoutMs() > 0) - ? Math.min(enforceQueryTimeoutBufferMillis, terminationParams.getTimeoutMs()) : 0; - } - - // Appends a debug string to the buffer. - private void appendMessage(String message) { - messageBuffer.append(message).append("\n"); - } - - /** - * Processes an Earlybird search request. - * @return the earlybird response for this search request. - */ - public EarlybirdResponse search() { - try { - debugInfo.setHost(DatabaseConfig.getLocalHostname()); - - // Throws transient exception for invalid requests. - validateRequest(); - - // Throws client exception for bad queries, - parseEarlybirdRequest(); - - // Modify the Lucene query if necessary. - luceneQuery = postLuceneQueryProcess(luceneQuery); - - // Might return PARTITION_NOT_FOUND or PARTITION_DISABLED. - EarlybirdResponseCode code = initSearcher(); - if (code != EarlybirdResponseCode.SUCCESS) { - return respondError(code); - } - - return searchInternal(); - - } catch (TransientException e) { - LOG.error(String.format("Transient exception in search() for EarlybirdRequest:\n%s", request), - e); - appendMessage(e.getMessage()); - return respondError(EarlybirdResponseCode.TRANSIENT_ERROR); - } catch (ClientException e) { - LOG.warn(String.format("Client exception in search() %s for EarlybirdRequest:\n %s", - e, request)); - appendMessage(e.getMessage()); - return respondError(EarlybirdResponseCode.CLIENT_ERROR); - } catch (Exception e) { - LOG.warn(String.format("Uncaught exception in search() for EarlybirdRequest:\n%s", request), - e); - appendMessage(e.getMessage()); - return respondError(EarlybirdResponseCode.TRANSIENT_ERROR); - } catch (AssertionError e) { - LOG.warn(String.format("Assertion error in search() for EarlybirdRequest:\n%s", request), e); - appendMessage(e.getMessage()); - return respondError(EarlybirdResponseCode.TRANSIENT_ERROR); - } catch (Error e) { - // SEARCH-33166: If we got here, it means what was thrown was not an Exception, or anything - // we know how to handle. Log the Error for diagnostic purposes and propagate it. - LOG.error("Re-throwing uncaught error", e); - throw e; - } - } - - public EarlybirdRPCStats getRequestStats() { - return requestStats; - } - - /** - * Wraps the given query with the provided filter queries. - * - * @param query the query to wrap with filters. - * @param filters the filters to wrap the query with. - * @return a BooleanQuery wrapped with filters - */ - public static Query wrapFilters(Query query, Query... filters) { - boolean filtersEmpty = filters == null || filters.length == 0; - - if (!filtersEmpty) { - filtersEmpty = true; - for (Query f : filters) { - if (f != null) { - filtersEmpty = false; - break; - } - } - } - - if (filtersEmpty) { - if (query == null) { - return new MatchAllDocsQuery(); - } else { - return query; - } - } - - BooleanQuery.Builder bqBuilder = new BooleanQuery.Builder(); - if (query != null) { - bqBuilder.add(query, Occur.MUST); - } - for (Query f : filters) { - if (f != null) { - bqBuilder.add(f, Occur.FILTER); - } - } - return bqBuilder.build(); - } - - // Examine all fields in the request for sanity. - private void validateRequest() throws TransientException, ClientException { - // First try thrift's internal validate. Should always succeed. - try { - request.validate(); - } catch (TException e) { - throw new TransientException(e.getMessage(), e); - } - - if (searchQuery == null) { - throw new TransientException("No ThriftSearchQuery specified"); - } - - if (collectorParams == null) { - throw new TransientException("No CollectorParams specified"); - } - - validateTermStatsRequest(); - - if (!searchAllSegments) { - if (request.getSearchSegmentId() <= 0) { - String msg = "Bad time slice ID: " + request.getSearchSegmentId(); - throw new TransientException(msg); - } - - // Initialize the segment. - SegmentInfo segmentInfo = this.segmentManager.getSegmentInfo(request.getSearchSegmentId()); - segment = segmentInfo != null ? segmentInfo.getSegment() : null; - } - - if (collectorParams.getNumResultsToReturn() < 0) { - String msg = "Invalid numResults: " + collectorParams.getNumResultsToReturn(); - throw new TransientException(msg); - } - - if (searchQuery.getNamedDisjunctionMapSize() > 0 && searchQuery.isSetLuceneQuery()) { - throw new ClientException("namedMultiTermDisjunctionMap does not support with luceneQuery"); - } - } - - private void validateTermStatsRequest() throws ClientException { - // Validate the field names and values for all ThriftTermRequests. - if (request.isSetTermStatisticsRequest() - && request.getTermStatisticsRequest().isSetTermRequests()) { - for (ThriftTermRequest termRequest : request.getTermStatisticsRequest().getTermRequests()) { - // If termRequest.fieldName is not set, it defaults to 'text', which is a string field, - // so we don't need to check the term. - if (termRequest.isSetFieldName()) { - String fieldName = termRequest.getFieldName(); - Schema.FieldInfo facetFieldInfo = schemaSnapshot.getFacetFieldByFacetName(fieldName); - if (facetFieldInfo != null) { - // Facet fields are string fields, so we don't need to check the term. - continue; - } - - Schema.FieldInfo fieldInfo = schemaSnapshot.getFieldInfo(fieldName); - if (fieldInfo == null) { - throw new ClientException("Field " + fieldName + " is not present in the schema."); - } - - try { - SchemaUtil.toBytesRef(fieldInfo, termRequest.getTerm()); - } catch (UnsupportedOperationException e) { - throw new ClientException("Term " + termRequest.getTerm() + " is not compatible with " - + "the type of field " + fieldName); - } - } - } - } - } - - private void setQueriesInDebugInfo( - com.twitter.search.queryparser.query.Query parsedQ, - org.apache.lucene.search.Query luceneQ) { - debugInfo.setParsedQuery(parsedQ == null ? null : parsedQ.serialize()); - debugInfo.setLuceneQuery(luceneQ == null ? null : luceneQ.toString()); - } - - /** - * Takes the EarlybirdRequest that came into the service and after various parsing and processing - * steps ultimately produces a Lucene query. - */ - private void parseEarlybirdRequest() throws ClientException { - SerializedQueryParser parser = new SerializedQueryParser(EarlybirdConfig.getPenguinVersion()); - - try { - // if the deprecated iterativeQueries field is set, return an error to the client - // indicating that support for it has been removed. - if (searchQuery.isSetDeprecated_iterativeQueries()) { - throw new ClientException("Invalid request: iterativeQueries feature has been removed"); - } - - // we parse the actual query from the user, if any - luceneQuery = null; - parsedQuery = null; // this will be set by parseQueryHelper() - - if (searchQuery.getLikedByUserIDFilter64Size() > 0 - && searchQuery.isSetLuceneQuery()) { - throw new ClientException("likedByUserIDFilter64 does not support with luceneQuery"); - } - - if (!StringUtils.isBlank(request.getSearchQuery().getSerializedQuery())) { - searcherStats.thriftQueryWithSerializedQuery.increment(); - luceneQuery = parseSerializedQuery(searchQuery.getSerializedQuery(), parser, true); - } else if (!StringUtils.isBlank(request.getSearchQuery().getLuceneQuery())) { - searcherStats.thriftQueryWithLuceneQuery.increment(); - luceneQuery = parseLuceneQuery(searchQuery.getLuceneQuery()); - LOG.info("lucene query: {}", searchQuery.getLuceneQuery()); - if (luceneQuery != null) { - LOG.info("Using lucene query directly from the request: " + luceneQuery.toString()); - } - } else { - searcherStats.thriftQueryWithoutTextQuery.increment(); - luceneQuery = parseSerializedQuery( - MATCH_ALL_SERIALIZED_QUERY, - parser, - queryMode != QueryMode.TERM_STATS); - } - } catch (QueryParserException | BooleanQuery.TooManyClauses e) { - LOG.info("Exception parsing query during search", e); - appendMessage(e.getMessage()); - throw new ClientException(e); - } - } - - /** - * Parses a serialized query and creates a Lucene query out of it. - * - * To see how serialized queries look like, go to go/searchsyntax. - */ - private Query parseSerializedQuery( - String serializedQuery, - SerializedQueryParser parser, - boolean shouldAdjustQueryBasedOnRequestParameters) throws QueryParserException { - // Parse the serialized query. - parsedQuery = parser.parse(serializedQuery); - if (parsedQuery == null) { - return null; - } - - // rewrite query if positive 'protected' operator is detected - if (parsedQuery.accept(new DetectPositiveOperatorVisitor(SearchOperatorConstants.PROTECTED))) { - POSITIVE_PROTECTED_OPERATOR_DETECTED_COUNTER.increment(); - ProtectedOperatorQueryRewriter rewriter = new ProtectedOperatorQueryRewriter(); - parsedQuery = rewriter.rewrite( - parsedQuery, - request.followedUserIds, - segmentManager.getUserTable()); - } - - ThriftSearchRelevanceOptions options = searchQuery.getRelevanceOptions(); - if (shouldAdjustQueryBasedOnRequestParameters) { - // If likedByUserIDFilter64 is set, combine it with query - // Note: we deal with likedByUserIDFilter64 here instead of in postLuceneQueryProcess as we - // want annotate query with ranks. - if (searchQuery.isSetLikedByUserIDFilter64() - && searchQuery.getLikedByUserIDFilter64Size() > 0) { - parsedQuery = combineWithLikedByUserIdFilter64( - parsedQuery, searchQuery.getLikedByUserIDFilter64()); - } - - // If namedListMap field is set, replace the named lists in the serialized query. - if (searchQuery.getNamedDisjunctionMapSize() > 0) { - parsedQuery = parsedQuery.accept( - new NamedDisjunctionVisitor(searchQuery.getNamedDisjunctionMap())); - } - - if (searchQuery.isSetRelevanceOptions() - && searchQuery.getRelevanceOptions().isCollectFieldHitAttributions()) { - // NOTE: Before we do any modifications to the serialized query tree, annotate the query - // nodes with their node rank in the original query. - this.hitAttributeHelper = - QueryHitAttributeHelper.from(parsedQuery, schemaSnapshot); - parsedQuery = hitAttributeHelper.getAnnotatedQuery(); - } - - // Currently antisocial/nullcast tweets are dropped when we build index, but some tweets may - // become antisocial with realtime updates. For consistency, we should always filter out - // antisocial/nullcast tweets if the user is not explicitly including it. - final boolean allowAntisocial = - parsedQuery.accept(new DetectPositiveOperatorVisitor(SearchOperatorConstants.ANTISOCIAL)); - if (!allowAntisocial) { - parsedQuery = QueryNodeUtils.appendAsConjunction( - parsedQuery, - QueryCacheConversionRules.CACHED_EXCLUDE_ANTISOCIAL); - } - parsedQueryAllowNullcast = - parsedQuery.accept(new DetectPositiveOperatorVisitor(SearchOperatorConstants.NULLCAST)); - if (!parsedQueryAllowNullcast) { - parsedQuery = QueryNodeUtils.appendAsConjunction( - parsedQuery, new SearchOperator("filter", SearchOperatorConstants.NULLCAST).negate()); - } - - // Strip all annotations from the filters that will be converted to query cache filters. - // See SEARCH-15552. - parsedQuery = parsedQuery.accept( - new StripAnnotationsVisitor(QueryCacheConversionRules.STRIP_ANNOTATIONS_QUERIES)); - - // Convert certain filters into cached filters, also consolidate them. - parsedQuery = parsedQuery.accept( - new ConversionVisitor(QueryCacheConversionRules.DEFAULT_RULES)); - - // add proximity if needed - if (options != null - && options.isProximityScoring() - && searchQuery.getRankingMode() != ThriftSearchRankingMode.RECENCY) { - parsedQuery = parsedQuery.accept(new ProximityGroupRewriteVisitor()).simplify(); - } - } - - if (request.isSkipVeryRecentTweets()) { - parsedQuery = restrictQueryToFullyIndexedTweets(parsedQuery); - } - - parsedQuery = parsedQuery.simplify(); - debugInfo.setParsedQuery(parsedQuery.serialize()); - - // Extract top-level since-id for pagination optimizations. - idTimeRanges = IdTimeRanges.fromQuery(parsedQuery); - - // Does any final processing specific to EarlybirdSearch class. - parsedQuery = preLuceneQueryProcess(parsedQuery); - - // Convert to a lucene query. - EarlybirdLuceneQueryVisitor luceneVisitor = getLuceneVisitor( - options == null ? null : options.getFieldWeightMapOverride()); - - if (options != null) { - luceneVisitor - .setProximityPhraseWeight((float) options.getProximityPhraseWeight()) - .setProximityPhraseSlop(options.getProximityPhraseSlop()); - } - - // Propagate hit attribute helper to the lucene visitor if it has been setup. - luceneVisitor.setFieldHitAttributeHelper(this.hitAttributeHelper); - - org.apache.lucene.search.Query query = parsedQuery.accept(luceneVisitor); - if (query != null) { - debugInfo.setLuceneQuery(query.toString()); - } - - queriedFields = luceneVisitor.getQueriedFields(); - - return query; - } - - private Query parseLuceneQuery(String query) { - QueryParser parser = new QueryParser( - EarlybirdFieldConstant.TEXT_FIELD.getFieldName(), - new SearchWhitespaceAnalyzer()); - parser.setSplitOnWhitespace(true); - try { - return parser.parse(query); - } catch (ParseException e) { - LOG.error("Cannot parse raw lucene query: " + query, e); - } catch (NullPointerException e) { - LOG.error("NullPointerException while parsing raw lucene query: " + query - + ", probably your grammar is wrong.\n", e); - } - return null; - } - - private com.twitter.search.queryparser.query.Query combineWithLikedByUserIdFilter64( - com.twitter.search.queryparser.query.Query query, - List ids) throws QueryParserException { - return QueryNodeUtils.appendAsConjunction(query, getLikedByUserIdQuery(ids)); - } - - /** - * initSearcher initializes the segmentSearcher, and returns SUCCESS if OK - * or some other response code it not OK. - */ - private EarlybirdResponseCode initSearcher() throws IOException { - searcher = null; - if (searchAllSegments) { - return initMultiSegmentSearcher(); - } else { - return initSingleSegmentSearcher(); - } - } - - private EarlybirdResponseCode initSingleSegmentSearcher() throws IOException { - if (segment == null) { - String message = "Segment not found for time slice: " + request.getSearchSegmentId(); - LOG.warn(message); - appendMessage(message); - return EarlybirdResponseCode.PARTITION_NOT_FOUND; - } - - EarlybirdResponseCode code = this.segmentManager.checkSegment(segment); - if (code != EarlybirdResponseCode.SUCCESS) { - String message = "Segment " + segment + " either disabled or dropped"; - LOG.warn(message); - appendMessage(message); - return code; - } - - searcher = segmentManager.getSearcher(segment, schemaSnapshot); - if (searcher == null) { - String message = "Could not construct searcher for segment " + segment; - LOG.error(message); - appendMessage(message); - return EarlybirdResponseCode.PERSISTENT_ERROR; - } else { - appendMessage("Searching segment: " + segment); - return EarlybirdResponseCode.SUCCESS; - } - } - - private EarlybirdResponseCode initMultiSegmentSearcher() throws IOException { - EarlybirdMultiSegmentSearcher multiSearcher = - segmentManager.getMultiSearcher(schemaSnapshot); - searcher = multiSearcher; - Preconditions.checkNotNull(searcher); - - // Set a top level since id to skip entire segments when possible. - multiSearcher.setIdTimeRanges(idTimeRanges); - return EarlybirdResponseCode.SUCCESS; - } - - private com.twitter.search.queryparser.query.Query - restrictQueryToFullyIndexedTweets(com.twitter.search.queryparser.query.Query query) { - long untilTimeSeconds = - RecentTweetRestriction.recentTweetsUntilTime(decider, (int) (clock.nowMillis() / 1000)); - if (untilTimeSeconds == 0) { - return query; - } - - SearchOperator timeLimit = new SearchOperator(UNTIL_TIME, untilTimeSeconds); - return new Conjunction(query, timeLimit); - } - - private EarlybirdResponse newResponse(EarlybirdResponseCode code, boolean setDebugInfo) { - EarlybirdResponse response = new EarlybirdResponse(); - response.setResponseCode(code); - if (setDebugInfo) { - response.setDebugInfo(debugInfo); - if (messageBuffer.length() > 0) { - response.setDebugString(DatabaseConfig.getLocalHostname() - + ":\n" + messageBuffer.toString()); - } - } - return response; - } - - private EarlybirdResponse respondError(EarlybirdResponseCode code) { - appendMessage("Responding with error code " + code); - // Always respond with an error message, even when request.debug is false - return newResponse(code, true); - } - - @VisibleForTesting - public TerminationTracker getTerminationTracker() { - return terminationTracker; - } - - public void maybeSetCollectorDebugInfo(TwitterEarlyTerminationCollector collector) { - if (request.isSetDebugOptions() && request.getDebugOptions().isIncludeCollectorDebugInfo()) { - debugInfo.setCollectorDebugInfo(collector.getDebugInfo()); - } - } - - public void setTermStatisticsDebugInfo(List termStatisticsDebugInfo) { - debugInfo.setTermStatisticsDebugInfo(termStatisticsDebugInfo); - } - - private EarlybirdResponse searchInternal() throws TransientException, ClientException { - searchResults = new ThriftSearchResults(); - - SearchResultsInfo searchResultsInfo; - try { - switch (queryMode) { - case RECENCY: - searchResultsInfo = processRealtimeQuery(); - break; - case RELEVANCE: - // Relevance search and Model-based search differ only on the scoring function used. - SearchTimer timer = searcherStats.createTimer(); - timer.start(); - searchResultsInfo = processRelevanceQuery(); - timer.stop(); - searcherStats.recordRelevanceStats(timer, request); - break; - case FACETS: - searchResultsInfo = processFacetsQuery(); - break; - case TERM_STATS: - searchResultsInfo = processTermStatsQuery(); - break; - case TOP_TWEETS: - searchResultsInfo = processTopTweetsQuery(); - break; - default: - throw new TransientException("Unknown query mode " + queryMode); - } - - return respondSuccess(searchResults, facetResults, termStatisticsResults, - earlyTerminationInfo, searchResultsInfo); - } catch (IOException e) { - throw new TransientException(e.getMessage(), e); - } - } - - /** - * Helper method to process facets query. - */ - private SearchResultsInfo processFacetsQuery() throws ClientException, IOException { - // figure out which fields we need to count - FacetCountState facetCountState = newFacetCountState(); - - // Additionally wrap our query into a skip list boolean query for faster counting. - if (!facetRequest.isUsingQueryCache()) { - // Only if all fields to be counted use skip lists, then we can add a required clause - // that filters out all results that do not contain those fields - boolean cannotAddRequiredClause = facetCountState.hasFieldToCountWithoutSkipList(); - final Query facetSkipListFilter = - cannotAddRequiredClause ? null : FacetSkipList.getSkipListQuery(facetCountState); - final Query antisocialFilter = UserFlagsExcludeFilter.getUserFlagsExcludeFilter( - segmentManager.getUserTable(), true, true, false); - luceneQuery = wrapFilters(luceneQuery, - facetSkipListFilter, - antisocialFilter); - } - - facetResults = new ThriftFacetResults(new HashMap<>()); - - FacetSearchRequestInfo searchRequestInfo = - new FacetSearchRequestInfo(searchQuery, facetRequest.getFacetRankingOptions(), - luceneQuery, facetCountState, terminationTracker); - searchRequestInfo.setIdTimeRanges(idTimeRanges); - if (searchQuery.getMaxHitsPerUser() > 0) { - antiGamingFilter = new AntiGamingFilter( - searchQuery.getMaxHitsPerUser(), - searchQuery.getMaxTweepcredForAntiGaming(), - luceneQuery); - } - - AbstractResultsCollector< - FacetSearchRequestInfo, EarlybirdLuceneSearcher.FacetSearchResults> collector; - if (request.getDebugMode() > 2) { - collector = new ExplainFacetResultsCollector(schemaSnapshot, - searchRequestInfo, antiGamingFilter, searcherStats, clock, request.debugMode); - } else { - collector = new FacetResultsCollector(schemaSnapshot, - searchRequestInfo, antiGamingFilter, searcherStats, clock, request.debugMode); - } - - setQueriesInDebugInfo(parsedQuery, searchRequestInfo.getLuceneQuery()); - searcher.search(searchRequestInfo.getLuceneQuery(), collector); - EarlybirdLuceneSearcher.FacetSearchResults hits = collector.getResults(); - - EarlybirdSearchResultUtil.setResultStatistics(searchResults, hits); - earlyTerminationInfo = EarlybirdSearchResultUtil.prepareEarlyTerminationInfo(hits); - Set userIDWhitelist = - antiGamingFilter != null ? antiGamingFilter.getUserIDWhitelist() : null; - prepareFacetResults(facetResults, hits, facetCountState, userIDWhitelist, - request.getDebugMode()); - facetResults.setUserIDWhitelist(userIDWhitelist); - - maybeSetCollectorDebugInfo(collector); - - if (collector instanceof ExplainFacetResultsCollector) { - ((ExplainFacetResultsCollector) collector).setExplanations(facetResults); - } - - return hits; - } - - /** - * Helper method to process term-stats query. - */ - private SearchResultsInfo processTermStatsQuery() throws IOException { - // first extract the terms that we need to count - TermStatisticsRequestInfo searchRequestInfo = - new TermStatisticsRequestInfo(searchQuery, luceneQuery, termStatisticsRequest, - terminationTracker); - searchRequestInfo.setIdTimeRanges(idTimeRanges); - setQueriesInDebugInfo(parsedQuery, searchRequestInfo.getLuceneQuery()); - TermStatisticsCollector.TermStatisticsSearchResults hits = - searcher.collectTermStatistics(searchRequestInfo, this, request.getDebugMode()); - EarlybirdSearchResultUtil.setResultStatistics(searchResults, hits); - earlyTerminationInfo = EarlybirdSearchResultUtil.prepareEarlyTerminationInfo(hits); - if (hits.results != null) { - termStatisticsResults = new ThriftTermStatisticsResults(); - prepareTermStatisticsResults(termStatisticsResults, hits, request.getDebugMode()); - } - - return hits; - } - - /** - * Helper method to process realtime query. - */ - private SearchResultsInfo processRealtimeQuery() throws IOException, ClientException { - // Disable maxHitsToProcess. - if (!collectorParams.isSetTerminationParams()) { - collectorParams.setTerminationParams(new CollectorTerminationParams()); - collectorParams.getTerminationParams().setMaxHitsToProcess(-1); - COLLECTOR_PARAMS_MAX_HITS_TO_PROCESS_NOT_SET_COUNTER.increment(); - } - - SearchRequestInfo searchRequestInfo = new SearchRequestInfo( - searchQuery, luceneQuery, terminationTracker); - searchRequestInfo.setIdTimeRanges(idTimeRanges); - searchRequestInfo.setHitAttributeHelper(hitAttributeHelper); - searchRequestInfo.setTimestamp(getQueryTimestamp(searchQuery)); - - AbstractResultsCollector collector; - if (searchQuery.isSetSocialFilterType()) { - if (!searchRequestInfo.getSearchQuery().isSetDirectFollowFilter() - || !searchRequestInfo.getSearchQuery().isSetTrustedFilter()) { - searcherStats.unsetFiltersForSocialFilterTypeQuery.increment(); - throw new ClientException( - "SocialFilterType specified without a TrustedFilter or DirectFollowFilter"); - } - SocialFilter socialFilter = new SocialFilter( - searchQuery.getSocialFilterType(), - searchRequestInfo.getSearchQuery().getSearcherId(), - searchRequestInfo.getSearchQuery().getTrustedFilter(), - searchRequestInfo.getSearchQuery().getDirectFollowFilter()); - collector = new SocialSearchResultsCollector( - schemaSnapshot, - searchRequestInfo, - socialFilter, - searcherStats, - cluster, - segmentManager.getUserTable(), - request.getDebugMode()); - } else { - collector = new SearchResultsCollector( - schemaSnapshot, - searchRequestInfo, - clock, - searcherStats, - cluster, - segmentManager.getUserTable(), - request.getDebugMode()); - } - - setQueriesInDebugInfo(parsedQuery, luceneQuery); - searcher.search(luceneQuery, collector); - - SimpleSearchResults hits = collector.getResults(); - - EarlybirdSearchResultUtil.setResultStatistics(searchResults, hits); - earlyTerminationInfo = EarlybirdSearchResultUtil.prepareEarlyTerminationInfo(hits); - EarlybirdSearchResultUtil.prepareResultsArray( - searchResults.getResults(), hits, request.debugMode > 0 ? partitionConfig : null); - searchResults.setHitCounts(collector.getHitCountMap()); - - maybeSetCollectorDebugInfo(collector); - - addResultPayloads(); - - return hits; - } - - /** - * Helper method to process relevance query. - */ - private SearchResultsInfo processRelevanceQuery() throws IOException, ClientException { - if (!searchQuery.isSetRelevanceOptions()) { - LOG.warn("Relevance query with no relevance options!"); - searchQuery.setRelevanceOptions(new ThriftSearchRelevanceOptions()); - } - - // Note: today the assumption is that if you specify hasSpecifiedTweets, - // you really do want all tweets scored and returned. - final boolean hasSpecifiedTweets = searchQuery.getSearchStatusIdsSize() > 0; - if (hasSpecifiedTweets) { - collectorParams.setNumResultsToReturn(searchQuery.getSearchStatusIdsSize()); - } - // If we have explicit user ids, we will want to look at all results from those users, and will - // not need to use the AntiGamingFilter. - final boolean hasSpecifiedFromUserIds = searchQuery.getFromUserIDFilter64Size() > 0; - - createRelevanceAntiGamingFilter(hasSpecifiedTweets, hasSpecifiedFromUserIds); - - if (searchQuery.getRelevanceOptions().isSetRankingParams()) { - ThriftRankingParams rankingParams = searchQuery.getRelevanceOptions().getRankingParams(); - - // The score adjustment signals that are passed in the request are disabled for the archive - // cluster or when the features are decidered off. If the request provides those fields, - // we unset them since checking the hashmap when scoring can cause a slight bump in - // latency. - // - // Verify that the signal query specific scores for tweets signal is enabled - if (rankingParams.isSetQuerySpecificScoreAdjustments()) { - if (ALLOW_QUERY_SPECIFIC_SIGNAL_CONFIG - && DeciderUtil.isAvailableForRandomRecipient( - decider, ALLOW_QUERY_SPECIFIC_SIGNAL_DECIDER_KEY)) { - searcherStats.querySpecificSignalQueriesUsed.increment(); - searcherStats.querySpecificSignalMapTotalSize.add( - rankingParams.getQuerySpecificScoreAdjustmentsSize()); - } else { - searchQuery.getRelevanceOptions().getRankingParams().unsetQuerySpecificScoreAdjustments(); - searcherStats.querySpecificSignalQueriesErased.increment(); - } - } - - // Verify that the signal author specific scores signal is enabled - if (rankingParams.isSetAuthorSpecificScoreAdjustments()) { - if (ALLOW_AUTHOR_SPECIFIC_SIGNAL_CONFIG - && DeciderUtil.isAvailableForRandomRecipient( - decider, ALLOW_AUTHOR_SPECIFIC_SIGNAL_DECIDER_KEY)) { - searcherStats.authorSpecificSignalQueriesUsed.increment(); - searcherStats.authorSpecificSignalMapTotalSize.add( - rankingParams.getAuthorSpecificScoreAdjustmentsSize()); - } else { - searchQuery.getRelevanceOptions().getRankingParams() - .unsetAuthorSpecificScoreAdjustments(); - searcherStats.authorSpecificSignalQueriesErased.increment(); - } - } - } - - ScoringFunction scoringFunction = - new ScoringFunctionProvider.DefaultScoringFunctionProvider( - request, schemaSnapshot, searchQuery, antiGamingFilter, - segmentManager.getUserTable(), hitAttributeHelper, - parsedQuery, scoringModelsManager, tensorflowModelsManager) - .getScoringFunction(); - scoringFunction.setDebugMode(request.getDebugMode()); - - RelevanceQuery relevanceQuery = new RelevanceQuery(luceneQuery, scoringFunction); - RelevanceSearchRequestInfo searchRequestInfo = - new RelevanceSearchRequestInfo( - searchQuery, relevanceQuery, terminationTracker, qualityFactor); - searchRequestInfo.setIdTimeRanges(idTimeRanges); - searchRequestInfo.setHitAttributeHelper(hitAttributeHelper); - searchRequestInfo.setTimestamp(getQueryTimestamp(searchQuery)); - - if (shouldUseTensorFlowCollector() - && searchQuery.getRelevanceOptions().isUseRelevanceAllCollector()) { - throw new ClientException("Tensorflow scoring does not work with the RelevanceAllCollector"); - } - - final AbstractRelevanceCollector collector; - // First check if the Tensorflow results collector should be used, because the - // TensorflowBasedScoringFunction only works with the BatchRelevanceTopCollector - if (shouldUseTensorFlowCollector()) { - // Collect top numResults. - collector = new BatchRelevanceTopCollector( - schemaSnapshot, - searchRequestInfo, - scoringFunction, - searcherStats, - cluster, - segmentManager.getUserTable(), - clock, - request.getDebugMode()); - } else if (hasSpecifiedTweets - || searchQuery.getRelevanceOptions().isUseRelevanceAllCollector()) { - // Collect all. - collector = new RelevanceAllCollector( - schemaSnapshot, - searchRequestInfo, - scoringFunction, - searcherStats, - cluster, - segmentManager.getUserTable(), - clock, - request.getDebugMode()); - } else { - // Collect top numResults. - collector = new RelevanceTopCollector( - schemaSnapshot, - searchRequestInfo, - scoringFunction, - searcherStats, - cluster, - segmentManager.getUserTable(), - clock, - request.getDebugMode()); - } - - // Make sure that the Tensorflow scoring function and the Tensorflow results collector are - // always used together. If this fails it will result in a TRANSIENT_ERROR response. - Preconditions.checkState((collector instanceof BatchRelevanceTopCollector) - == (scoringFunction instanceof TensorflowBasedScoringFunction)); - - setQueriesInDebugInfo(parsedQuery, searchRequestInfo.getLuceneQuery()); - searcher.search(searchRequestInfo.getLuceneQuery(), collector); - - RelevanceSearchResults hits = collector.getResults(); - EarlybirdSearchResultUtil.setResultStatistics(searchResults, hits); - searchResults.setScoringTimeNanos(hits.getScoringTimeNanos()); - - earlyTerminationInfo = EarlybirdSearchResultUtil.prepareEarlyTerminationInfo(hits); - EarlybirdSearchResultUtil.setLanguageHistogram(searchResults, collector.getLanguageHistogram()); - EarlybirdSearchResultUtil.prepareRelevanceResultsArray( - searchResults.getResults(), - hits, - antiGamingFilter != null ? antiGamingFilter.getUserIDWhitelist() : null, - request.getDebugMode() > 0 ? partitionConfig : null); - - searchResults.setHitCounts(collector.getHitCountMap()); - searchResults.setRelevanceStats(hits.getRelevanceStats()); - - maybeSetCollectorDebugInfo(collector); - - if (explanationsEnabled(request.getDebugMode())) { - searcher.explainSearchResults(searchRequestInfo, hits, searchResults); - } - - addResultPayloads(); - - return hits; - } - - public static boolean explanationsEnabled(int debugLevel) { - return debugLevel > 1; - } - - private boolean shouldUseTensorFlowCollector() { - return tensorflowModelsManager.isEnabled() - && searchQuery.getRelevanceOptions().isSetRankingParams() - && searchQuery.getRelevanceOptions().getRankingParams().isSetType() - && searchQuery.getRelevanceOptions().getRankingParams().getType() - == ThriftScoringFunctionType.TENSORFLOW_BASED; - } - /** - * Optionally, if requested and needed, will create a new AntiGamingFilter. Otherwize, no - * AntiGamingFilter will be used for this query. - * @param hasSpecifiedTweets whether the request has searchStatusIds specified. - * @param hasSpecifiedFromUserIds whether the request has fromUserIDFilter64 specified. - */ - private void createRelevanceAntiGamingFilter( - boolean hasSpecifiedTweets, boolean hasSpecifiedFromUserIds) { - - // Anti-gaming filter (turned off for specified tweets mode, or when you're explicitly asking - // for specific users' tweets). - if (searchQuery.getMaxHitsPerUser() > 0 && !hasSpecifiedTweets && !hasSpecifiedFromUserIds) { - searcherStats.relevanceAntiGamingFilterUsed.increment(); - antiGamingFilter = new AntiGamingFilter( - searchQuery.getMaxHitsPerUser(), - searchQuery.getMaxTweepcredForAntiGaming(), - luceneQuery); - } else if (searchQuery.getMaxHitsPerUser() <= 0) { - searcherStats.relevanceAntiGamingFilterNotRequested.increment(); - } else if (hasSpecifiedTweets && hasSpecifiedFromUserIds) { - searcherStats.relevanceAntiGamingFilterSpecifiedTweetsAndFromUserIds.increment(); - } else if (hasSpecifiedTweets) { - searcherStats.relevanceAntiGamingFilterSpecifiedTweets.increment(); - } else if (hasSpecifiedFromUserIds) { - searcherStats.relevanceAntiGamingFilterSpecifiedFromUserIds.increment(); - } - } - - /** - * Check to make sure that there are no nullcast documents in results. If there exists nullcasts - * in results, we should log error and increment counters correspondingly. - */ - @VisibleForTesting - public void logAndIncrementStatsIfNullcastInResults(ThriftSearchResults thriftSearchResults) { - if (!thriftSearchResults.isSetResults()) { - return; - } - - Set unexpectedNullcastStatusIds = - EarlybirdResponseUtil.findUnexpectedNullcastStatusIds(thriftSearchResults, request); - - if (!unexpectedNullcastStatusIds.isEmpty()) { - searcherStats.nullcastUnexpectedQueries.increment(); - searcherStats.nullcastUnexpectedResults.add(unexpectedNullcastStatusIds.size()); - - String base64Request; - try { - base64Request = ThriftUtils.toBase64EncodedString(request); - } catch (TException e) { - base64Request = "Failed to parse base 64 request"; - } - LOG.error( - "Found unexpected nullcast tweets: {} | parsedQuery: {} | request: {} | response: {} | " - + "request base 64: {}", - Joiner.on(",").join(unexpectedNullcastStatusIds), - parsedQuery.serialize(), - request, - thriftSearchResults, - base64Request); - } - } - - private void addResultPayloads() throws IOException { - if (searchQuery.getResultMetadataOptions() != null) { - if (searchQuery.getResultMetadataOptions().isGetTweetUrls()) { - searcher.fillFacetResults(new ExpandedUrlCollector(), searchResults); - } - - if (searchQuery.getResultMetadataOptions().isGetNamedEntities()) { - searcher.fillFacetResults(new NamedEntityCollector(), searchResults); - } - - if (searchQuery.getResultMetadataOptions().isGetEntityAnnotations()) { - searcher.fillFacetResults(new EntityAnnotationCollector(), searchResults); - } - - if (searchQuery.getResultMetadataOptions().isGetSpaces()) { - searcher.fillFacetResults(new SpaceFacetCollector(audioSpaceTable), searchResults); - } - } - } - - /** - * Helper method to process top tweets query. - */ - private SearchResultsInfo processTopTweetsQuery() throws IOException, ClientException { - // set dummy relevance options if it's not available, but this shouldn't happen in prod - if (!searchQuery.isSetRelevanceOptions()) { - searchQuery.setRelevanceOptions(new ThriftSearchRelevanceOptions()); - } - if (!searchQuery.getRelevanceOptions().isSetRankingParams()) { - searchQuery.getRelevanceOptions().setRankingParams( - // this is important, or it's gonna pick DefaultScoringFunction which pretty much - // does nothing. - new ThriftRankingParams().setType(ThriftScoringFunctionType.TOPTWEETS)); - } - ScoringFunction scoringFunction = new ScoringFunctionProvider.DefaultScoringFunctionProvider( - request, schemaSnapshot, searchQuery, null, - segmentManager.getUserTable(), hitAttributeHelper, parsedQuery, - scoringModelsManager, tensorflowModelsManager) - .getScoringFunction(); - scoringFunction.setDebugMode(request.getDebugMode()); - - RelevanceQuery relevanceQuery = new RelevanceQuery(luceneQuery, scoringFunction); - RelevanceSearchRequestInfo searchRequestInfo = - new RelevanceSearchRequestInfo( - searchQuery, relevanceQuery, terminationTracker, qualityFactor); - searchRequestInfo.setIdTimeRanges(idTimeRanges); - searchRequestInfo.setTimestamp(getQueryTimestamp(searchQuery)); - - final AbstractRelevanceCollector collector = - new RelevanceTopCollector( - schemaSnapshot, - searchRequestInfo, - scoringFunction, - searcherStats, - cluster, - segmentManager.getUserTable(), - clock, - request.getDebugMode()); - - setQueriesInDebugInfo(parsedQuery, searchRequestInfo.getLuceneQuery()); - searcher.search(searchRequestInfo.getLuceneQuery(), collector); - - RelevanceSearchResults hits = collector.getResults(); - EarlybirdSearchResultUtil.setResultStatistics(searchResults, hits); - searchResults.setScoringTimeNanos(hits.getScoringTimeNanos()); - earlyTerminationInfo = EarlybirdSearchResultUtil.prepareEarlyTerminationInfo(hits); - EarlybirdSearchResultUtil.setLanguageHistogram( - searchResults, - collector.getLanguageHistogram()); - EarlybirdSearchResultUtil.prepareRelevanceResultsArray( - searchResults.getResults(), - hits, - null, - request.getDebugMode() > 0 ? partitionConfig : null); - - searchResults.setHitCounts(collector.getHitCountMap()); - searchResults.setRelevanceStats(hits.getRelevanceStats()); - - maybeSetCollectorDebugInfo(collector); - - if (explanationsEnabled(request.getDebugMode()) - && searchQuery.isSetRelevanceOptions() - && searchQuery.getRelevanceOptions().isSetRankingParams()) { - searcher.explainSearchResults(searchRequestInfo, hits, searchResults); - } - - addResultPayloads(); - - return hits; - } - - private FacetCountState newFacetCountState() throws ClientException { - int minNumFacetResults = DEFAULT_NUM_FACET_RESULTS; - if (facetRequest.isSetFacetRankingOptions() - && facetRequest.getFacetRankingOptions().isSetNumCandidatesFromEarlybird()) { - minNumFacetResults = facetRequest.getFacetRankingOptions().getNumCandidatesFromEarlybird(); - } - - // figure out which fields we need to count - FacetCountState facetCountState = new FacetCountState(schemaSnapshot, minNumFacetResults); - - // all categories if none! - if (facetRequest.getFacetFields() == null || facetRequest.getFacetFields().isEmpty()) { - for (Schema.FieldInfo facetField : schemaSnapshot.getFacetFields()) { - facetCountState.addFacet( - facetField.getFieldType().getFacetName(), DEFAULT_NUM_FACET_RESULTS); - } - } else { - Iterator it = facetRequest.getFacetFieldsIterator(); - while (it.hasNext()) { - ThriftFacetFieldRequest facetFieldRequest = it.next(); - Schema.FieldInfo facet = schemaSnapshot.getFacetFieldByFacetName( - facetFieldRequest.getFieldName()); - if (facet != null) { - facetCountState.addFacet( - facet.getFieldType().getFacetName(), facetFieldRequest.getNumResults()); - } else { - throw new ClientException("Unknown facet field: " + facetFieldRequest.getFieldName()); - } - } - } - return facetCountState; - } - - private com.twitter.search.queryparser.query.Query preLuceneQueryProcess( - com.twitter.search.queryparser.query.Query twitterQuery) throws QueryParserException { - - com.twitter.search.queryparser.query.Query query = twitterQuery; - if (searchHighFrequencyTermPairs && !includesCardField(searchQuery, query)) { - // Process high frequency term pairs. Works best when query is as flat as possible. - query = HighFrequencyTermPairRewriteVisitor.safeRewrite( - query, - DeciderUtil.isAvailableForRandomRecipient( - decider, "enable_hf_term_pair_negative_disjunction_rewrite")); - } - return query.simplify(); - } - - private Query postLuceneQueryProcess(final Query query) throws ClientException { - if (StringUtils.isBlank(request.getSearchQuery().getSerializedQuery()) - && StringUtils.isBlank(request.getSearchQuery().getLuceneQuery())) { - searcherStats.numRequestsWithBlankQuery.get(queryMode).increment(); - if (searchQuery.getSearchStatusIdsSize() == 0 - && searchQuery.getFromUserIDFilter64Size() == 0 - && searchQuery.getLikedByUserIDFilter64Size() == 0) { - // No query or ids to search. This is only allowed in some modes. - if (queryMode == QueryMode.RECENCY - || queryMode == QueryMode.RELEVANCE - || queryMode == QueryMode.TOP_TWEETS) { - throw new ClientException( - "No query or status ids for " + queryMode.toString().toLowerCase() + " query"); - } - } - } - - // Wrap the query as needed with additional query filters. - List filters = Lists.newArrayList(); - - // Min tweep cred filter. - if (searchQuery.isSetMinTweepCredFilter()) { - searcherStats.addedFilterBadUserRep.increment(); - filters.add(BadUserRepFilter.getBadUserRepFilter(searchQuery.getMinTweepCredFilter())); - } - - if (searchQuery.getFromUserIDFilter64Size() > 0) { - this.queriedFields.add(EarlybirdFieldConstant.FROM_USER_ID_FIELD.getFieldName()); - this.searcherStats.addedFilterFromUserIds.increment(); - try { - filters.add(UserIdMultiSegmentQuery.createIdDisjunctionQuery( - "from_user_id_filter", - searchQuery.getFromUserIDFilter64(), - EarlybirdFieldConstant.FROM_USER_ID_FIELD.getFieldName(), - schemaSnapshot, - multiSegmentTermDictionaryManager, - decider, - cluster, - Lists.newArrayList(), - null, - queryTimeoutFactory.createQueryTimeout(request, terminationTracker, clock))); - } catch (QueryParserException e) { - throw new ClientException(e); - } - } - - // Wrap the lucene query with these filters. - Query wrappedQuery = wrapFilters(query, filters.toArray(new Query[filters.size()])); - - // If searchStatusIds is set, additionally modify the query to search exactly these - // ids, using the luceneQuery only for scoring. - if (searchQuery.getSearchStatusIdsSize() > 0) { - this.searcherStats.addedFilterTweetIds.increment(); - - final Query queryForScoring = wrappedQuery; - final Query queryForRetrieval = - RequiredStatusIDsFilter.getRequiredStatusIDsQuery(searchQuery.getSearchStatusIds()); - - return new BooleanQuery.Builder() - .add(queryForRetrieval, Occur.MUST) - .add(queryForScoring, Occur.SHOULD) - .build(); - } - - return wrappedQuery; - } - - private com.twitter.search.queryparser.query.Query getLikedByUserIdQuery( - List ids) throws QueryParserException { - if (DeciderUtil.isAvailableForRandomRecipient( - decider, USE_MULTI_TERM_DISJUNCTION_FOR_LIKED_BY_USER_IDS_DECIDER_KEY)) { - // rewrite LikedByUserIdFilter64 to a multi_term_disjuntion query - return createMultiTermDisjunctionQueryForLikedByUserIds(ids); - } else { - // rewrite LikedByUserIdFilter64 to a disjunction of multiple liked_by_user_ids query - return createDisjunctionQueryForLikedByUserIds(ids); - } - } - - /** - * Returns the Lucene query visitor that should be applied to the original request. - * - * @param fieldWeightMapOverride The per-field weight overrides. - */ - @VisibleForTesting - public EarlybirdLuceneQueryVisitor getLuceneVisitor( - Map fieldWeightMapOverride) { - String clusterName = cluster.getNameForStats(); - // Iff in relevance mode _and_ intepreteSinceId is false, we turn off since_id - // operator by using LuceneRelevanceQueryVisitor. - - if (searchQuery.getRankingMode() == ThriftSearchRankingMode.RELEVANCE - && searchQuery.getRelevanceOptions() != null - && !searchQuery.getRelevanceOptions().isInterpretSinceId()) { - // hack! reset top level since id, which is the same thing LuceneRelevanceVisitor - // is doing. - idTimeRanges = null; - return new LuceneRelevanceQueryVisitor( - schemaSnapshot, - queryCacheManager, - segmentManager.getUserTable(), - segmentManager.getUserScrubGeoMap(), - terminationTracker, - FieldWeightDefault.overrideFieldWeightMap( - schemaSnapshot.getFieldWeightMap(), - dropBadFieldWeightOverrides(fieldWeightMapOverride, decider, clusterName)), - MAPPABLE_FIELD_MAP, - multiSegmentTermDictionaryManager, - decider, - cluster, - queryTimeoutFactory.createQueryTimeout( - request, terminationTracker, clock)); - } else { - return new EarlybirdLuceneQueryVisitor( - schemaSnapshot, - queryCacheManager, - segmentManager.getUserTable(), - segmentManager.getUserScrubGeoMap(), - terminationTracker, - FieldWeightDefault.overrideFieldWeightMap( - schemaSnapshot.getFieldWeightMap(), - dropBadFieldWeightOverrides(fieldWeightMapOverride, decider, clusterName)), - MAPPABLE_FIELD_MAP, - multiSegmentTermDictionaryManager, - decider, - cluster, - queryTimeoutFactory.createQueryTimeout( - request, terminationTracker, clock)); - } - } - - private void prepareFacetResults(ThriftFacetResults thriftFacetResults, - EarlybirdLuceneSearcher.FacetSearchResults hits, - FacetCountState facetCountState, - Set userIDWhitelist, - byte debugMode) throws IOException { - for (FacetRankingModule rankingModule : FacetRankingModule.REGISTERED_RANKING_MODULES) { - rankingModule.prepareResults(hits, facetCountState); - } - - Map allFacetResults = new HashMap<>(); - - Iterator> fieldResultsIterator = - facetCountState.getFacetFieldResultsIterator(); - while (fieldResultsIterator.hasNext()) { - - FacetCountState.FacetFieldResults facetFieldResults = - fieldResultsIterator.next(); - - if (facetFieldResults.results == null) { - // return empty resultset for this facet - List emptyList = new ArrayList<>(); - facetFieldResults.results = new ThriftFacetFieldResults(emptyList, 0); - } - thriftFacetResults.putToFacetFields(facetFieldResults.facetName, - facetFieldResults.results); - - Schema.FieldInfo field = schemaSnapshot.getFacetFieldByFacetName( - facetFieldResults.facetName); - - for (ThriftFacetCount result : facetFieldResults.results.topFacets) { - if (result.facetLabel != null) { - allFacetResults.put(new Term(field.getName(), result.facetLabel), result); - } else { - LOG.warn("Null facetLabel, field: {}, result: {}", field.getName(), result); - } - } - } - - searcher.fillFacetResultMetadata(allFacetResults, schemaSnapshot, debugMode); - - if (userIDWhitelist != null) { - for (ThriftFacetCount facetCount : allFacetResults.values()) { - ThriftFacetCountMetadata metadata = facetCount.getMetadata(); - if (metadata != null) { - metadata.setDontFilterUser(userIDWhitelist.contains(metadata.getTwitterUserId())); - } - } - } - } - - private void prepareTermStatisticsResults( - ThriftTermStatisticsResults termStatistics, - TermStatisticsCollector.TermStatisticsSearchResults hits, - byte debugMode) throws IOException { - - termStatistics.setBinIds(hits.binIds); - termStatistics.setHistogramSettings(termStatisticsRequest.getHistogramSettings()); - termStatistics.setTermResults(hits.results); - setTermStatisticsDebugInfo(hits.getTermStatisticsDebugInfo()); - - if (hits.lastCompleteBinId != -1) { - termStatistics.setMinCompleteBinId(hits.lastCompleteBinId); - } else { - SearchRateCounter.export(String.format( - "term_stats_%s_unset_min_complete_bin_id", request.getClientId())).increment(); - } - - if (idTimeRanges != null - && idTimeRanges.getUntilTimeExclusive().isPresent() - && hits.getMinSearchedTime() > idTimeRanges.getUntilTimeExclusive().get()) { - SearchRateCounter.export(String.format( - "term_stats_%s_min_searched_time_after_until_time", request.getClientId())).increment(); - } - - searcher.fillTermStatsMetadata(termStatistics, schemaSnapshot, debugMode); - } - - private EarlybirdResponse respondSuccess( - ThriftSearchResults thriftSearchResults, - ThriftFacetResults thriftFacetResults, - ThriftTermStatisticsResults termStatisticResults, - @Nonnull EarlyTerminationInfo earlyTerminationState, - @Nonnull SearchResultsInfo searchResultsInfo) { - - Preconditions.checkNotNull(earlyTerminationState); - Preconditions.checkNotNull(searchResultsInfo); - - exportEarlyTerminationStats(earlyTerminationState); - - EarlybirdResponse response = - newResponse(EarlybirdResponseCode.SUCCESS, request.getDebugMode() > 0); - response.setEarlyTerminationInfo(earlyTerminationState); - response.setNumSearchedSegments(searchResultsInfo.getNumSearchedSegments()); - - if (thriftSearchResults != null) { - // Nullcast check is only used when parsed query is available: if there is no parsed query, - // we would not add possible exclude nullcast filter. - if (parsedQuery != null && !parsedQueryAllowNullcast) { - logAndIncrementStatsIfNullcastInResults(thriftSearchResults); - } - response.setSearchResults(thriftSearchResults); - } else { - RESPONSE_HAS_NO_THRIFT_SEARCH_RESULTS.increment(); - } - if (thriftFacetResults != null) { - response.setFacetResults(thriftFacetResults); - } - if (termStatisticResults != null) { - response.setTermStatisticsResults(termStatisticResults); - } - - appendFeatureSchemaIfNeeded(response); - - appendLikedByUserIdsIfNeeded(response); - - return response; - } - - private void exportEarlyTerminationStats(@Nonnull EarlyTerminationInfo earlyTerminationState) { - if (earlyTerminationState.isSetEarlyTerminationReason()) { - SearchRateCounter.export(String.format("early_termination_%s_%s", - ClientIdUtil.formatClientId(request.getClientId()), - earlyTerminationState.getEarlyTerminationReason())).increment(); - SearchRateCounter.export(String.format("early_termination_%s_%s", - ClientIdUtil.formatClientIdAndRequestType( - request.getClientId(), queryMode.name().toLowerCase()), - earlyTerminationState.getEarlyTerminationReason())).increment(); - } - } - - /** - * Builds a rank -> userId map for liked_by_user_id queries that request hit attribution, and - * appends the resulting map to the response. - */ - private void appendLikedByUserIdsIfNeeded(EarlybirdResponse response) { - // Check if user asked for likedByUserIds list in response - ThriftSearchRelevanceOptions resultRelevanceOptions = - request.getSearchQuery().getRelevanceOptions(); - if ((resultRelevanceOptions == null) - || !resultRelevanceOptions.isCollectFieldHitAttributions()) { - return; - } - - // Make sure we have results in response and hit attribution helper is set up correctly - if (!response.isSetSearchResults() || hitAttributeHelper == null) { - return; - } - - // Get rank to node map - Map nodeToRankMap = - Preconditions.checkNotNull(hitAttributeHelper.getNodeToRankMap()); - - Map> expandedNodeToRankMap = - Preconditions.checkNotNull(hitAttributeHelper.getExpandedNodeToRankMap()); - - // Build a rank to id map - ImmutableMap.Builder builder = ImmutableMap.builder(); - for (com.twitter.search.queryparser.query.Query query : nodeToRankMap.keySet()) { - if (query instanceof SearchOperator) { - SearchOperator op = (SearchOperator) query; - if (expandedNodeToRankMap.containsKey(query)) { - // for multi_term_disjunction case - List ranks = expandedNodeToRankMap.get(op); - Preconditions.checkArgument(op.getNumOperands() == ranks.size() + 1); - for (int i = 0; i < ranks.size(); ++i) { - builder.put(ranks.get(i), Long.valueOf(op.getOperands().get(i + 1))); - } - } else if (op.getOperatorType() == SearchOperator.Type.LIKED_BY_USER_ID) { - // for liked_by_user_id case - Preconditions.checkArgument(op.getAnnotationOf(Annotation.Type.NODE_RANK).isPresent()); - builder.put( - (Integer) op.getAnnotationOf(Annotation.Type.NODE_RANK).get().getValue(), - Long.valueOf(op.getOperands().get(0))); - } - } - } - Map rankToIdMap = builder.build(); - - // Append liked_by_user_id filed into result - for (ThriftSearchResult result : response.getSearchResults().getResults()) { - if (result.isSetMetadata() - && result.getMetadata().isSetFieldHitAttribution() - && result.getMetadata().getFieldHitAttribution().isSetHitMap()) { - - List likedByUserIdList = Lists.newArrayList(); - - Map hitMap = - result.getMetadata().getFieldHitAttribution().getHitMap(); - // iterate hit attributions - for (int rank : hitMap.keySet()) { - if (rankToIdMap.containsKey(rank)) { - likedByUserIdList.add(rankToIdMap.get(rank)); - } - } - if (!result.getMetadata().isSetExtraMetadata()) { - result.getMetadata().setExtraMetadata(new ThriftSearchResultExtraMetadata()); - } - result.getMetadata().getExtraMetadata().setLikedByUserIds(likedByUserIdList); - } - } - } - - private void appendFeatureSchemaIfNeeded(EarlybirdResponse response) { - // Do not append the schema if the client didn't request it. - ThriftSearchResultMetadataOptions resultMetadataOptions = - request.getSearchQuery().getResultMetadataOptions(); - if ((resultMetadataOptions == null) || !resultMetadataOptions.isReturnSearchResultFeatures()) { - return; - } - - if (!response.isSetSearchResults()) { - return; - } - - ThriftSearchFeatureSchema featureSchema = schemaSnapshot.getSearchFeatureSchema(); - Preconditions.checkState( - featureSchema.isSetSchemaSpecifier(), - "The feature schema doesn't have a schema specifier set: {}", featureSchema); - - // If the client has this schema, we only need to return the schema version. - // If the client doesn't have this schema, we need to return the schema entries too. - if (resultMetadataOptions.isSetFeatureSchemasAvailableInClient() - && resultMetadataOptions.getFeatureSchemasAvailableInClient().contains( - featureSchema.getSchemaSpecifier())) { - CLIENT_HAS_FEATURE_SCHEMA_COUNTER.increment(); - ThriftSearchFeatureSchema responseFeatureSchema = new ThriftSearchFeatureSchema(); - responseFeatureSchema.setSchemaSpecifier(featureSchema.getSchemaSpecifier()); - response.getSearchResults().setFeatureSchema(responseFeatureSchema); - } else { - CLIENT_DOESNT_HAVE_FEATURE_SCHEMA_COUNTER.increment(); - Preconditions.checkState(featureSchema.isSetEntries(), - "Entries are not set in the feature schema: " + featureSchema); - response.getSearchResults().setFeatureSchema(featureSchema); - } - } - - private static long getQueryTimestamp(ThriftSearchQuery query) { - return query != null && query.isSetTimestampMsecs() ? query.getTimestampMsecs() : 0; - } - - private static boolean includesCardField(ThriftSearchQuery searchQuery, - com.twitter.search.queryparser.query.Query query) - throws QueryParserException { - - if (searchQuery.isSetRelevanceOptions()) { - ThriftSearchRelevanceOptions options = searchQuery.getRelevanceOptions(); - if (options.isSetFieldWeightMapOverride() - && (options.getFieldWeightMapOverride().containsKey( - EarlybirdFieldConstant.CARD_TITLE_FIELD.getFieldName()) - || options.getFieldWeightMapOverride() - .containsKey(EarlybirdFieldConstant.CARD_DESCRIPTION_FIELD.getFieldName()))) { - - return true; - } - } - - return query.accept(new DetectFieldAnnotationVisitor(ImmutableSet.of( - EarlybirdFieldConstant.CARD_TITLE_FIELD.getFieldName(), - EarlybirdFieldConstant.CARD_DESCRIPTION_FIELD.getFieldName()))); - } - - private static QueryMode getQueryMode(EarlybirdRequest request) { - if (request.isSetFacetRequest()) { - return QueryMode.FACETS; - } else if (request.isSetTermStatisticsRequest()) { - return QueryMode.TERM_STATS; - } - - // Recency mode until we determine otherwise. - QueryMode queryMode = QueryMode.RECENCY; - ThriftSearchQuery searchQuery = request.getSearchQuery(); - if (searchQuery != null) { - switch (searchQuery.getRankingMode()) { - case RECENCY: - queryMode = QueryMode.RECENCY; - break; - case RELEVANCE: - queryMode = QueryMode.RELEVANCE; - break; - case TOPTWEETS: - queryMode = QueryMode.TOP_TWEETS; - break; - default: - break; - } - } - - if (searchQuery == null - || !searchQuery.isSetSerializedQuery() - || searchQuery.getSerializedQuery().isEmpty()) { - LOG.debug("Search query was empty, query mode was " + queryMode); - } - - return queryMode; - } - - private static ImmutableMap dropBadFieldWeightOverrides( - Map map, Decider decider, String clusterName) { - - if (map == null) { - return null; - } - - FIELD_WEIGHT_OVERRIDE_MAP_NON_NULL_COUNT.increment(); - ImmutableMap.Builder builder = ImmutableMap.builder(); - - for (Map.Entry entry : map.entrySet()) { - if (EarlybirdFieldConstant.CAMELCASE_USER_HANDLE_FIELD.getFieldName().equals(entry.getKey()) - && !isAllowedCamelcaseUsernameFieldWeightOverride(decider, clusterName)) { - DROPPED_CAMELCASE_USERNAME_FIELD_WEIGHT_OVERRIDE.increment(); - } else if (EarlybirdFieldConstant.TOKENIZED_USER_NAME_FIELD.getFieldName().equals( - entry.getKey()) - && !isAllowedTokenizedScreenNameFieldWeightOverride(decider, clusterName)) { - DROPPED_TOKENIZED_DISPLAY_NAME_FIELD_WEIGHT_OVERRIDE.increment(); - } else { - builder.put(entry.getKey(), entry.getValue()); - } - } - - return builder.build(); - } - - private static boolean isAllowedCamelcaseUsernameFieldWeightOverride( - Decider decider, String clusterName) { - return DeciderUtil.isAvailableForRandomRecipient(decider, - ALLOW_CAMELCASE_USERNAME_FIELD_WEIGHT_OVERRIDE_DECIDER_KEY_PREFIX + clusterName); - } - - private static boolean isAllowedTokenizedScreenNameFieldWeightOverride( - Decider decider, String clusterName) { - return DeciderUtil.isAvailableForRandomRecipient(decider, - ALLOW_TOKENIZED_DISPLAY_NAME_FIELD_WEIGHT_OVERRIDE_DECIDER_KEY_PREFIX + clusterName); - } - - private static com.twitter.search.queryparser.query.Query - createMultiTermDisjunctionQueryForLikedByUserIds(List ids) throws QueryParserException { - List operands = new ArrayList<>(ids.size() + 1); - operands.add(EarlybirdFieldConstant.LIKED_BY_USER_ID_FIELD.getFieldName()); - for (long id : ids) { - operands.add(String.valueOf(id)); - } - return new SearchOperator(SearchOperator.Type.MULTI_TERM_DISJUNCTION, operands) - .simplify(); - } - - private static com.twitter.search.queryparser.query.Query createDisjunctionQueryForLikedByUserIds( - List ids) throws QueryParserException { - return new Disjunction( - ids.stream() - .map(id -> new SearchOperator(SearchOperator.Type.LIKED_BY_USER_ID, id)) - .collect(Collectors.toList())) - .simplify(); - } - - public com.twitter.search.queryparser.query.Query getParsedQuery() { - return parsedQuery; - } - - /** - * Get the index fields that were queried after this searcher completed its job. - * @return - */ - public Set getQueriedFields() { - return queriedFields; - } - - public Query getLuceneQuery() { - return luceneQuery; - } -} diff --git a/src/java/com/twitter/search/earlybird/EarlybirdServer.docx b/src/java/com/twitter/search/earlybird/EarlybirdServer.docx new file mode 100644 index 0000000000000000000000000000000000000000..48028d4fd1ec51df2d1d2aeade9d4d615c8c7d86 GIT binary patch literal 49649 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 requestCountersByFinagleClientId = - CacheBuilder.newBuilder().build( - new CacheLoader() { - @Override - public SearchTimerStats load(String finagleClientId) { - return earlybirdServerStatsReceiver.getTimerStats( - String.format( - REQUESTS_RECEIVED_BY_FINAGLE_ID_COUNTER_NAME_PATTERN, - finagleClientId), TimeUnit.MICROSECONDS, false, true, false); - } - }); - - // Counters per client and response code. - private final LoadingCache responseByClientIdAndResponseCode = - CacheBuilder.newBuilder().build( - new CacheLoader() { - @Override - public SearchCounter load(String key) { - return earlybirdServerStatsReceiver.getCounter(key); - } - }); - - private final LoadingCache resultsAgeCounter = - CacheBuilder.newBuilder().build( - new CacheLoader() { - @Override - public SearchCounter load(String key) { - return earlybirdServerStatsReceiver.getCounter(key); - } - } - ); - - // Loading cache for per finagle client id and client id stats. These are stored separate - // from the other stats because they are key-ed by the pair of finagle client id and client id - // in order to make sure the stats are only exported once. - // In the key-pair the first element is the finagle client id while the second element is the - // client id. - private final LoadingCache, SearchRateCounter> - requestCountersByFinagleIdAndClientId = CacheBuilder.newBuilder().build( - new CacheLoader, SearchRateCounter>() { - @Override - public SearchRateCounter load(Pair clientKey) { - return earlybirdServerStatsReceiver.getRateCounter( - String.format( - REQUESTS_RECEIVED_BY_FINAGLE_ID_AND_CLIENT_ID_COUNTER_NAME_PATTERN, - clientKey.getFirst(), - clientKey.getSecond())); - } - }); - - // Loading cache for per-client-id latency stats. Stored in a loading cache here mainly because - // the tests assert the mock stats receiver that each stat is only exported once. - private final LoadingCache clientIdSearchStats = - CacheBuilder.newBuilder().build( - new CacheLoader() { - @Override - public SearchTimerStats load(String clientId) { - String formattedClientId = ClientIdUtil.formatClientId(clientId); - return earlybirdServerStatsReceiver.getTimerStats(formattedClientId, - TimeUnit.MICROSECONDS, false, true, true); - } - }); - - private final LoadingCache clientIdScoringPerQueryStats = - CacheBuilder.newBuilder().build( - new CacheLoader() { - @Override - public SearchTimerStats load(String clientId) { - String statName = - String.format("scoring_time_per_query_for_client_id_%s", clientId); - return earlybirdServerStatsReceiver.getTimerStats(statName, - TimeUnit.NANOSECONDS, false, true, false); - } - }); - - private final LoadingCache clientIdScoringPerHitStats = - CacheBuilder.newBuilder().build( - new CacheLoader() { - @Override - public SearchTimerStats load(String clientId) { - String statName = - String.format("scoring_time_per_hit_for_client_id_%s", clientId); - return earlybirdServerStatsReceiver.getTimerStats(statName, - TimeUnit.NANOSECONDS, false, true, false); - } - }); - - private final LoadingCache> clientIdScoringNumHitsProcessedStats = - CacheBuilder.newBuilder().build( - new CacheLoader>() { - @Override - public Percentile load(String clientId) { - String statName = - String.format("scoring_num_hits_processed_for_client_id_%s", clientId); - return PercentileUtil.createPercentile(statName); - } - }); - - private final LoadingCache> lastRequestPerClientId = - CacheBuilder.newBuilder().build( - new CacheLoader>() { - @Override - public AtomicReference load(String key) throws Exception { - return new AtomicReference<>(null); - } - }); - - - private final SearchTimerStats overallScoringTimePerQueryStats; - private final SearchTimerStats overallScoringTimePerHitStats; - private final Percentile overallScoringNumHitsProcessedStats; - - private final EarlybirdIndexConfig earlybirdIndexConfig; - private final DynamicPartitionConfig dynamicPartitionConfig; - private final SegmentManager segmentManager; - private final UpdateableEarlybirdStateManager stateManager; - private final AudioSpaceTable audioSpaceTable; - - private final SearchLongGauge startupTimeGauge; - - // Time spent in an internal thread pool queue, between the time we get the search request - // from finagle until it actually starts being executed. - private final SearchTimerStats internalQueueWaitTimeStats; - - // Tracking request that have exceeded their allocated timeout prior to us actually being able - // to start executing the search. - private final SearchCounter requestTimeoutExceededBeforeSearchCounter; - // Current number of running searcher threads. - private final SearchLongGauge numSearcherThreadsGauge; - private final QueryTimeoutFactory queryTimeoutFactory; - - private PartitionManager partitionManager; - private QueryCacheManager queryCacheManager; - - private final ScoringModelsManager scoringModelsManager; - - private final TensorflowModelsManager tensorflowModelsManager; - - private final EarlybirdRequestPreLogger requestPreLogger; - private final EarlybirdRequestPostLogger requestLogger; - - private final TweetCountMonitor tweetCountMonitor; - private final TermCountMonitor termCountMonitor; - - private final EarlybirdServerSetManager serverSetManager; - private final EarlybirdWarmUpManager warmUpManager; - private final MultiSegmentTermDictionaryManager multiSegmentTermDictionaryManager; - - private final Object shutdownLock = new Object(); - @GuardedBy("shutdownLock") - private final EarlybirdFuturePoolManager futurePoolManager; - @GuardedBy("shutdownLock") - private final EarlybirdFinagleServerManager finagleServerManager; - - // If a search request comes in with a client-side start time, and we see that based on that - // the timeout has expired, whether we should drop that query immediately. - private final boolean skipTimedOutRequests = - EarlybirdConfig.getBool("skip_timedout_requests", false); - - // client of szookeeper.local.twitter.com. - // This is used to perform distributed locking and layout reading etc. - private final ZooKeeperProxy sZooKeeperClient; - - private final Decider decider; - - private final Clock clock; - - private final List toClose = new ArrayList<>(); - - private final SearchIndexingMetricSet searchIndexingMetricSet; - - private final EarlybirdDarkProxy earlybirdDarkProxy; - - private final ImmutableMap responseCodeCounters; - private final SegmentSyncConfig segmentSyncConfig; - private final EarlybirdStartup earlybirdStartup; - private final QualityFactor qualityFactor; - - private boolean isShutdown = false; - private boolean isShuttingDown = false; - - private final AtomicLongMap queriedFieldsCounts = AtomicLongMap.create(); - - public EarlybirdServer(QueryCacheManager queryCacheManager, - ZooKeeperProxy sZkClient, - Decider decider, - EarlybirdIndexConfig earlybirdIndexConfig, - DynamicPartitionConfig dynamicPartitionConfig, - PartitionManager partitionManager, - SegmentManager segmentManager, - AudioSpaceTable audioSpaceTable, - TermCountMonitor termCountMonitor, - TweetCountMonitor tweetCountMonitor, - UpdateableEarlybirdStateManager earlybirdStateManager, - EarlybirdFuturePoolManager futurePoolManager, - EarlybirdFinagleServerManager finagleServerManager, - EarlybirdServerSetManager serverSetManager, - EarlybirdWarmUpManager warmUpManager, - SearchStatsReceiver earlybirdServerStatsReceiver, - EarlybirdSearcherStats tweetsSearcherStats, - ScoringModelsManager scoringModelsManager, - TensorflowModelsManager tensorflowModelsManager, - Clock clock, - MultiSegmentTermDictionaryManager multiSegmentTermDictionaryManager, - EarlybirdDarkProxy earlybirdDarkProxy, - SegmentSyncConfig segmentSyncConfig, - QueryTimeoutFactory queryTimeoutFactory, - EarlybirdStartup earlybirdStartup, - QualityFactor qualityFactor, - SearchIndexingMetricSet searchIndexingMetricSet) { - LOG.info("Creating EarlybirdServer"); - this.decider = decider; - this.clock = clock; - this.sZooKeeperClient = sZkClient; - this.earlybirdIndexConfig = earlybirdIndexConfig; - this.dynamicPartitionConfig = dynamicPartitionConfig; - this.segmentManager = segmentManager; - this.queryCacheManager = queryCacheManager; - this.termCountMonitor = termCountMonitor; - this.tweetCountMonitor = tweetCountMonitor; - this.stateManager = earlybirdStateManager; - this.partitionManager = partitionManager; - this.futurePoolManager = futurePoolManager; - this.finagleServerManager = finagleServerManager; - this.serverSetManager = serverSetManager; - this.warmUpManager = warmUpManager; - this.earlybirdServerStatsReceiver = earlybirdServerStatsReceiver; - this.tweetsSearcherStats = tweetsSearcherStats; - this.scoringModelsManager = scoringModelsManager; - this.tensorflowModelsManager = tensorflowModelsManager; - this.multiSegmentTermDictionaryManager = multiSegmentTermDictionaryManager; - this.searchIndexingMetricSet = searchIndexingMetricSet; - this.earlybirdDarkProxy = earlybirdDarkProxy; - this.segmentSyncConfig = segmentSyncConfig; - this.queryTimeoutFactory = queryTimeoutFactory; - this.earlybirdStartup = earlybirdStartup; - this.qualityFactor = qualityFactor; - this.audioSpaceTable = audioSpaceTable; - - EarlybirdStatus.setStartTime(System.currentTimeMillis()); - - // Our initial status code is STARTING. - EarlybirdStatus.setStatus(EarlybirdStatusCode.STARTING); - EarlybirdStatus.THRIFT_SERVICE_STARTED.set(false); - - PartitionConfig partitionConfig = dynamicPartitionConfig.getCurrentPartitionConfig(); - earlybirdServerStatsReceiver.getLongGauge( - "search_cluster_" + partitionConfig.getClusterName()).set(1); - earlybirdServerStatsReceiver.getLongGauge( - "tier_name_" + partitionConfig.getTierName()).set(1); - - earlybirdServerStatsReceiver.getLongGauge("partition").set( - partitionConfig.getIndexingHashPartitionID()); - earlybirdServerStatsReceiver.getLongGauge("replica").set( - partitionConfig.getHostPositionWithinHashPartition()); - earlybirdServerStatsReceiver.getLongGauge("penguin_version").set( - EarlybirdConfig.getPenguinVersionByte()); - - earlybirdServerStatsReceiver.getLongGauge("flush_version").set( - FlushVersion.CURRENT_FLUSH_VERSION.ordinal()); - String buildGen = EarlybirdConfig.getString("offline_segment_build_gen", "unknown"); - earlybirdServerStatsReceiver.getLongGauge("build_gen_" + buildGen).set(1); - - this.startupTimeGauge = earlybirdServerStatsReceiver.getLongGauge("startup_time_millis"); - this.internalQueueWaitTimeStats = earlybirdServerStatsReceiver.getTimerStats( - "internal_queue_wait_time", TimeUnit.MILLISECONDS, false, true, false); - this.requestTimeoutExceededBeforeSearchCounter = earlybirdServerStatsReceiver.getCounter( - "request_timeout_exceeded_before_search"); - this.numSearcherThreadsGauge = - earlybirdServerStatsReceiver.getLongGauge("num_searcher_threads"); - this.overallScoringTimePerQueryStats = earlybirdServerStatsReceiver.getTimerStats( - "overall_scoring_time_per_query", TimeUnit.NANOSECONDS, false, true, false); - - // For most of our scoring functions the scoring_time_per_hit records the actual time to score a - // single hit. However, the tensorflow based scoring function uses batch scoring, so we do not - // know the actual time it takes to score a single hit. We are now including batch scoring time - // in all scoring time stats (SEARCH-26014), which means that the scoring_time_per_hit stat may - // be a bit misleading for tensorflow based queries. For these queries the scoring_time_per_hit - // represents the ratio between total_scoring_time and the number_of_hits, instead of the actual - // time to score a single hit. - this.overallScoringTimePerHitStats = earlybirdServerStatsReceiver.getTimerStats( - "overall_scoring_time_per_hit", TimeUnit.NANOSECONDS, false, true, false); - this.overallScoringNumHitsProcessedStats = PercentileUtil.createPercentile( - "overall_scoring_num_hits_processed"); - - ImmutableMap.Builder responseCodeCountersBuilder = - new ImmutableMap.Builder<>(); - for (EarlybirdResponseCode responseCode : EarlybirdResponseCode.values()) { - responseCodeCountersBuilder.put( - responseCode, - earlybirdServerStatsReceiver.getCounter( - "responses_with_response_code_" + responseCode.name().toLowerCase())); - } - responseCodeCounters = responseCodeCountersBuilder.build(); - - disableLuceneQueryCache(); - initManagers(); - - requestPreLogger = EarlybirdRequestPreLogger.buildForShard( - EarlybirdConfig.getInt("latency_warn_threshold", 100), decider); - requestLogger = EarlybirdRequestPostLogger.buildForShard( - EarlybirdConfig.getInt("latency_warn_threshold", 100), decider); - - this.qualityFactor.startUpdates(); - - LOG.info("Created EarlybirdServer"); - } - - public boolean isShutdown() { - return this.isShutdown; - } - - private void initManagers() { - LOG.info("Created EarlybirdIndexConfig: " + earlybirdIndexConfig.getClass().getSimpleName()); - - segmentManager.addUpdateListener(queryCacheManager); - } - - public PartitionManager getPartitionManager() { - return partitionManager; - } - - public QueryCacheManager getQueryCacheManager() { - return queryCacheManager; - } - - public SegmentManager getSegmentManager() { - return segmentManager; - } - - public MultiSegmentTermDictionaryManager getMultiSegmentTermDictionaryManager() { - return this.multiSegmentTermDictionaryManager; - } - - @VisibleForTesting - public int getPort() { - return port; - } - - private void disableLuceneQueryCache() { - // SEARCH-30046: Look into possibly re-enabling the query -> weight cache. - // We can't use this cache until we upgrade to Lucene 6.0.0, because we have queries with a - // boost of 0.0, and they don't play nicely with Lucene's LRUQueryCache.get() method. - // - // Lucene 6.0.0 changes how boosts are handled: "real" boosts should be wrapped into BoostQuery - // instances, and queries with a boost of 0.0 should be rewritten as "filters" - // (BooleanQuery.add(query, BooleanClause.Occur.FILTER)). So when we upgrade to Lucene 6.0.0 we - // will be forced to refactor how we handle our current queries with a boost of 0.0, which might - // allow us to re-enable this cache. - // - // Note that disabling this cache is not a regression: it should give us the behavior that we - // had with Lucene 5.2.1 (and it's unclear if this cache is useful at all). - // - // WARNING: The default 'DefaultQueryCache' maintains a static reference to the weight forever, - // causing a memory leak. Our weights hold references to an entire segment so the memory leak is - // significant. - IndexSearcher.setDefaultQueryCache(null); - } - - /** - * Starts the earlybird server. - */ - public void start() throws EarlybirdStartupException { - // Make sure this is at the top of the function before other parts of the system start running - new EarlybirdBlacklistHandler(Clock.SYSTEM_CLOCK, sZooKeeperClient) - .blockThenExitIfBlacklisted(); - - Stopwatch startupWatch = Stopwatch.createStarted(); - EarlybirdStatus.beginEvent(EARLYBIRD_STARTUP, searchIndexingMetricSet.startupInProgress); - - LOG.info("java.library.path is: " + System.getProperty("java.library.path")); - - PartitionConfig partitionConfig = dynamicPartitionConfig.getCurrentPartitionConfig(); - - SegmentVulture.removeUnusedSegments(partitionManager, partitionConfig, - earlybirdIndexConfig.getSchema().getMajorVersionNumber(), segmentSyncConfig); - - // Start the schema manager - schedule(stateManager); - - Closeable closeable = earlybirdStartup.start(); - toClose.add(closeable); - if (EarlybirdStatus.getStatusCode() == EarlybirdStatusCode.STOPPING) { - LOG.info("Server is shutdown. Exiting..."); - return; - } - - startupTimeGauge.set(startupWatch.elapsed(TimeUnit.MILLISECONDS)); - - EarlybirdStatus.endEvent(EARLYBIRD_STARTUP, searchIndexingMetricSet.startupInProgress); - - GCUtil.runGC(); // Attempt to force a full GC before joining the serverset - - try { - startThriftService(null, true); - } catch (InterruptedException e) { - LOG.info("Interrupted while starting thrift server, quitting earlybird"); - throw new EarlybirdStartupException("Interrupted while starting thrift server"); - } - - EarlybirdStatus.THRIFT_SERVICE_STARTED.set(true); - - // only once we're current, kick off daily tweet count monitors only for archive cluster - if (EarlybirdConfig.getInt(TweetCountMonitor.RUN_INTERVAL_MINUTES_CONFIG_NAME, -1) > 0) { - schedule(tweetCountMonitor); - } - - // only once we're current, kick off per-field term count monitors - if (EarlybirdConfig.getInt(TermCountMonitor.RUN_INTERVAL_MINUTES_CONFIG_NAME, -1) > 0) { - schedule(termCountMonitor); - } - - startupTimeGauge.set(startupWatch.elapsed(TimeUnit.MILLISECONDS)); - LOG.info("EarlybirdServer start up time: {}", startupWatch); - } - - /** - * Starts the thrift server if the server is not running. - * If searcherThreads is null, it uses the value specified by EarlybirdConfig. - */ - public void startThriftService(@Nullable Integer searcherThreads, boolean isStartingUp) - throws InterruptedException { - synchronized (shutdownLock) { - if (!finagleServerManager.isWarmUpServerRunning() - && !finagleServerManager.isProductionServerRunning()) { - int threadCount = searcherThreads != null - ? searcherThreads : this.numSearcherThreads; - LOG.info("Starting searcher pool with " + threadCount + " threads"); - futurePoolManager.createUnderlyingFuturePool(threadCount); - numSearcherThreadsGauge.set(threadCount); - - // If the server is not shutting down, go through the warm up stage. If the server is - // instructed to shut down during warm up, warmUpManager.warmUp() should return within a - // second, and should leave the warm up server set. We should still shut down the warm up - // Finagle server. - if (isStartingUp && (EarlybirdStatus.getStatusCode() != EarlybirdStatusCode.STOPPING)) { - LOG.info("Opening warmup thrift port..."); - finagleServerManager.startWarmUpFinagleServer(this, SERVICE_NAME, warmUpPort); - EarlybirdStatus.WARMUP_THRIFT_PORT_OPEN.set(true); - - try { - warmUpManager.warmUp(); - } catch (UpdateException e) { - LOG.warn("Could not join or leave the warm up server set.", e); - } finally { - finagleServerManager.stopWarmUpFinagleServer(SERVER_CLOSE_WAIT_TIME); - EarlybirdStatus.WARMUP_THRIFT_PORT_OPEN.set(false); - } - } - - // If the server is not shutting down, we can start the production Finagle server and join - // the production server set. - if (EarlybirdStatus.getStatusCode() != EarlybirdStatusCode.STOPPING) { - LOG.info("Opening production thrift port..."); - finagleServerManager.startProductionFinagleServer( - earlybirdDarkProxy.getDarkProxy(), this, SERVICE_NAME, port); - EarlybirdStatus.THRIFT_PORT_OPEN.set(true); - - if (REGISTER_WITH_ZK_ON_STARTUP) { - // After the earlybird starts up, register with ZooKeeper. - try { - joinServerSet("internal start-up"); - - // Join separate server set for ServiceProxy on Archive Earlybirds - if (!EarlybirdConfig.isAurora()) { - joinServerSetForServiceProxy(); - } - } catch (UpdateException e) { - throw new RuntimeException("Unable to join ServerSet during startup.", e); - } - } - } - } - } - } - - /** - * Stops the thrift server if the server is already running. - */ - public void stopThriftService(boolean shouldShutDown) { - synchronized (shutdownLock) { - try { - leaveServerSet(shouldShutDown ? "internal shutdown" : "admin stopThriftService"); - } catch (UpdateException e) { - LOG.warn("Leaving production ServerSet failed.", e); - } - - if (finagleServerManager.isProductionServerRunning()) { - try { - finagleServerManager.stopProductionFinagleServer(SERVER_CLOSE_WAIT_TIME); - futurePoolManager.stopUnderlyingFuturePool( - SERVER_CLOSE_WAIT_TIME.inSeconds(), TimeUnit.SECONDS); - numSearcherThreadsGauge.set(0); - } catch (InterruptedException e) { - LOG.error("Interrupted while stopping thrift service", e); - Thread.currentThread().interrupt(); - } - EarlybirdStatus.THRIFT_PORT_OPEN.set(false); - } - } - } - - /** - * Gets a string with information about the last request we've seen from each client. - */ - public Future getLastSearchesByClient(boolean includeResults) { - LastSearchesSummary summary = new LastSearchesSummary( - lastRequestPerClientId, clientIdSearchStats, includeResults); - return Future.value(summary.getSummary()); - } - - /** - * The following are all the Thrift RPC methods inherited from EarlybirdService.Iface - */ - - // Thrift getName RPC. - @Override - public Future getName() { - return Future.value(SERVICE_NAME); - } - - // Thrift getStatus RPC. - @Override - public Future getStatus() { - EarlybirdStatusResponse response = new EarlybirdStatusResponse(); - response.setCode(EarlybirdStatus.getStatusCode()); - response.setAliveSince(EarlybirdStatus.getStartTime()); - response.setMessage(EarlybirdStatus.getStatusMessage()); - return Future.value(response); - } - - public Future> getSegmentMetadata() { - return Future.value(segmentManager.getSegmentMetadata()); - } - - public Future getQueryCachesData() { - return Future.value(segmentManager.getQueryCachesData()); - } - - /** - * Get a text summary for which fields did we use in a schema. - */ - public Future getQueriedFieldsAndSchemaStats() { - ImmutableSchemaInterface schema = this.earlybirdIndexConfig.getSchema().getSchemaSnapshot(); - - QueriedFieldsAndSchemaStats summary = new QueriedFieldsAndSchemaStats(schema, - queriedFieldsCounts); - return Future.value(summary.getSummary()); - } - - /** - * Shuts down the earlybird server. - */ - public void shutdown() { - LOG.info("shutdown(): status set to STOPPING"); - EarlybirdStatus.setStatus(EarlybirdStatusCode.STOPPING); - try { - LOG.info("Stopping Finagle server."); - stopThriftService(true); - EarlybirdStatus.THRIFT_SERVICE_STARTED.set(false); - - if (queryCacheManager != null) { - queryCacheManager.shutdown(); - } else { - LOG.info("No queryCacheManager to shut down"); - } - - earlybirdIndexConfig.getResourceCloser().shutdownExecutor(); - - isShuttingDown = true; - LOG.info("Closing {} closeables.", toClose.size()); - for (Closeable closeable : toClose) { - closeable.close(); - } - } catch (InterruptedException | IOException e) { - EarlybirdStatus.setStatus(EarlybirdStatusCode.UNHEALTHY, e.getMessage()); - LOG.error("Interrupted during shutdown, status set to UNHEALTHY"); - } - LOG.info("Earlybird server stopped!"); - isShutdown = true; - } - - @Override - public Future search(final EarlybirdRequest request) { - final long requestReceivedTimeMillis = System.currentTimeMillis(); - // Record clock diff as early as possible. - EarlybirdRequestUtil.recordClientClockDiff(request); - - if (!futurePoolManager.isPoolReady()) { - return Future.exception(new TransientException("Earlybird not yet able to handle requests.")); - } - - return futurePoolManager.apply(new Function0() { - @Override - public EarlybirdResponse apply() { - return doSearch(request, requestReceivedTimeMillis); - } - }).rescue(Function.func( - // respond with Nack when the queue is full - t -> Future.exception((t instanceof RejectedExecutionException) ? QUEUE_FULL_FAILURE : t))); - } - - private EarlybirdResponse doSearch(EarlybirdRequest request, long requestReceivedTimeMillis) { - final long queueWaitTime = System.currentTimeMillis() - requestReceivedTimeMillis; - internalQueueWaitTimeStats.timerIncrement(queueWaitTime); - - // request restart time, not to be confused with startTime which is server restart time - Timer timer = new Timer(TimeUnit.MICROSECONDS); - - requestPreLogger.logRequest(request); - - String clientId = ClientIdUtil.getClientIdFromRequest(request); - String finagleClientId = FinagleUtil.getFinagleClientName(); - requestCountersByFinagleIdAndClientId.getUnchecked(new Pair<>(finagleClientId, clientId)) - .increment(); - - EarlybirdRequestUtil.checkAndSetCollectorParams(request); - - // If the thrift logger is busy logging, queue the thrift request for logging. - if (EarlybirdThriftRequestLoggingUtil.thriftLoggerBusy) { - EarlybirdThriftRequestLoggingUtil.REQUEST_BUFFER.offer(request); - } - - EarlybirdRequestUtil.logAndFixExcessiveValues(request); - - final EarlybirdSearcher searcher = new EarlybirdSearcher( - request, - segmentManager, - audioSpaceTable, - queryCacheManager, - earlybirdIndexConfig.getSchema().getSchemaSnapshot(), - earlybirdIndexConfig.getCluster(), - dynamicPartitionConfig.getCurrentPartitionConfig(), - decider, - tweetsSearcherStats, - scoringModelsManager, - tensorflowModelsManager, - clock, - multiSegmentTermDictionaryManager, - queryTimeoutFactory, - qualityFactor); - - QueryCostTracker queryCostTracker = QueryCostTracker.getTracker(); - EarlybirdResponse response = null; - try { - if (skipTimedOutRequests - && searcher.getTerminationTracker().getTimeoutEndTimeWithReservation() - <= clock.nowMillis()) { - requestTimeoutExceededBeforeSearchCounter.increment(); - response = new EarlybirdResponse(); - response.setResponseCode(EarlybirdResponseCode.SERVER_TIMEOUT_ERROR); - } else { - queryCostTracker.reset(); - response = searcher.search(); - } - } finally { - if (response == null) { - // This can only happen if we failed to catch an exception in the searcher. - LOG.error("Response was null: " + request.toString()); - response = new EarlybirdResponse(); - response.setResponseCode(EarlybirdResponseCode.TRANSIENT_ERROR); - } - - if (response.getSearchResults() == null) { - List emptyResultSet = Lists.newArrayList(); - response.setSearchResults(new ThriftSearchResults(emptyResultSet)); - } - - long reqLatency = timer.stop(); - response.setResponseTime(reqLatency / 1000); - response.setResponseTimeMicros(reqLatency); - response.getSearchResults().setQueryCost(queryCostTracker.getTotalCost()); - - requestLogger.logRequest(request, response, timer); - - int numResults = EarlybirdRequestLogger.numResultsForLog(response); - boolean success = response.getResponseCode() == EarlybirdResponseCode.SUCCESS; - boolean clientError = response.getResponseCode() == EarlybirdResponseCode.CLIENT_ERROR; - boolean earlyTerminated = (response.getSearchResults().isSetNumPartitionsEarlyTerminated() - && response.getSearchResults().getNumPartitionsEarlyTerminated() > 0) - || searcher.getTerminationTracker().isEarlyTerminated(); - // Update termination stats. - searcher.getTerminationTracker().getEarlyTerminationState().incrementCount(); - - searchStats.requestComplete(reqLatency, numResults, success, earlyTerminated, clientError); - if (searcher.getRequestStats() != null) { - searcher.getRequestStats().requestComplete(reqLatency, numResults, success, - earlyTerminated, clientError); - } - - getResponseCodeCounter(response.getResponseCode()).increment(); - // Adding this counter to make it easier to debug cases where we see a spike in - // bad client request errors but don't know where they're coming from. (The - // alternative is to ssh to a machine in the cluster and sample - // /var/log/earlybird/earlybird.failed_requests). - getClientIdResponseCodeCounter(clientId, response.getResponseCode()).increment(); - - // Export request latency as a stat. - clientIdSearchStats.getUnchecked(clientId).timerIncrement(reqLatency); - requestCountersByFinagleClientId.getUnchecked(finagleClientId).timerIncrement(reqLatency); - addEarlybirdServerStats(response, queueWaitTime); - // Export scoring stats for the request. - exportScoringTimeStats(response, clientId); - } - - Set queriedFields = searcher.getQueriedFields(); - if (queriedFields != null) { - for (String queriedField : queriedFields) { - queriedFieldsCounts.incrementAndGet(queriedField); - } - } - - // Increment counters for age of the returned results. - if (response.getSearchResults() != null && response.getSearchResults().getResults() != null) { - long currentTime = System.currentTimeMillis(); - for (ThriftSearchResult result : response.getSearchResults().getResults()) { - long tweetId = result.getId(); - if (SnowflakeId.isSnowflakeId(tweetId)) { - long ageMillis = Math.max(0L, - currentTime - SnowflakeId.unixTimeMillisFromId(tweetId)); - int ageDays = Duration.fromMilliseconds(ageMillis).inDays(); - - if (EarlybirdConfig.isRealtimeOrProtected()) { - String key = "result_age_in_days_" + ageDays; - resultsAgeCounter.getUnchecked(key).increment(); - } else { - int ageYears = ageDays / 365; - String key = "result_age_in_years_" + ageYears; - resultsAgeCounter.getUnchecked(key).increment(); - } - } - } - } - - try { - lastRequestPerClientId.get(clientId).set( - new RequestResponsePair(request, searcher.getParsedQuery(), - searcher.getLuceneQuery(), response)); - } catch (ExecutionException ex) { - // Not a big problem, we'll just notice that the admin page doesn't work, and it - // probably won't happen. - } - - - return response; - } - - private void exportScoringTimeStats(EarlybirdResponse response, String clientId) { - if (response.isSetSearchResults() - && response.getSearchResults().isSetScoringTimeNanos() - && response.getSearchResults().isSetNumHitsProcessed()) { - int numHitsProcessed = response.getSearchResults().getNumHitsProcessed(); - long scoringTimeNanos = response.getSearchResults().getScoringTimeNanos(); - - if (numHitsProcessed > 0) { - // Only compute and report scoring time per hit when we have hits. (i.e. we don't just want - // to report 0's for cases where there were no hits, and only want to report legit per-hit - // times. - long scoringTimePerHit = scoringTimeNanos / numHitsProcessed; - - this.clientIdScoringPerHitStats.getUnchecked(clientId).timerIncrement(scoringTimePerHit); - this.overallScoringTimePerHitStats.timerIncrement(scoringTimePerHit); - } - - this.clientIdScoringPerQueryStats.getUnchecked(clientId).timerIncrement(scoringTimeNanos); - this.overallScoringTimePerQueryStats.timerIncrement(scoringTimeNanos); - - // The num hits processed stats here are scoped only to queries that were actually scored. - // This would exclude queries like term stats (that would otherwise have huge num hits - // processed). - this.clientIdScoringNumHitsProcessedStats.getUnchecked(clientId).record(numHitsProcessed); - this.overallScoringNumHitsProcessedStats.record(numHitsProcessed); - } - } - - private void addEarlybirdServerStats(EarlybirdResponse response, long queueWaitTime) { - PartitionConfig curPartitionConfig = dynamicPartitionConfig.getCurrentPartitionConfig(); - EarlybirdServerStats earlybirdServerStats = new EarlybirdServerStats(); - response.setEarlybirdServerStats(earlybirdServerStats); - earlybirdServerStats.setHostname(DatabaseConfig.getLocalHostname()); - earlybirdServerStats.setPartition(curPartitionConfig.getIndexingHashPartitionID()); - earlybirdServerStats.setTierName(curPartitionConfig.getTierName()); - earlybirdServerStats.setCurrentQps(searchStats.getRequestRate()); - earlybirdServerStats.setQueueTimeMillis(queueWaitTime); - earlybirdServerStats.setAverageQueueTimeMillis( - (long) (double) internalQueueWaitTimeStats.read()); - earlybirdServerStats.setAverageLatencyMicros(searchStats.getAverageLatency()); - } - - @Override - public void joinServerSet(String username) throws UpdateException { - serverSetManager.joinServerSet(username); - } - - - @Override - public int getNumberOfServerSetMembers() throws InterruptedException, - ZooKeeperClient.ZooKeeperConnectionException, KeeperException { - return serverSetManager.getNumberOfServerSetMembers(); - } - - @Override - public void leaveServerSet(String username) throws UpdateException { - serverSetManager.leaveServerSet(username); - } - - @Override - public void joinServerSetForServiceProxy() { - serverSetManager.joinServerSetForServiceProxy(); - } - - @VisibleForTesting - protected static class EarlybirdThriftRequestLoggingUtil { - private static final int DEFAULT_MAX_ENTRIES_TO_LOG = 50000; - private static final int DEFAULT_BUFFER_SIZE = 10000; - private static final int DEFAULT_LOGGING_SLEEP_MS = 100; - - @VisibleForTesting - protected static volatile boolean thriftLoggerBusy = false; - private static final ExecutorService LOGGING_EXECUTOR = Executors.newCachedThreadPool(); - - // Synchronized circular buffer used for buffering requests. - // If buffer is full, the oldest requests are replaced. This should not be a problem for - // logging purpose. - @VisibleForTesting - protected static final ArrayBlockingQueue REQUEST_BUFFER = - new ArrayBlockingQueue<>(DEFAULT_BUFFER_SIZE); - - - /** - * Create a separate thread to log thrift request to the given file. If a thread is already - * logging thrift requests, this does nothing and throws an IOException indicating that the - * logging thread is busy. - * - * @param logFile File to log to. - * @param maxEntriesToLog Number of entries to log. - * @param postLoggingHook Code to run after logging finishes. Only used for testing as of now. - */ - @VisibleForTesting - protected static synchronized void startThriftLogging(final File logFile, - final int maxEntriesToLog, - final Runnable postLoggingHook) - throws IOException { - if (thriftLoggerBusy) { - throw new IOException("Already busy logging thrift request. No action taken."); - } - - if (!logFile.canWrite()) { - throw new IOException("Unable to open log file for writing: " + logFile); - } - - final BufferedWriter thriftLogWriter = - Files.newBufferedWriter(logFile.toPath(), Charsets.UTF_8); - - // TSerializer used by the writer thread. - final TSerializer serializer = new TSerializer(); - - REQUEST_BUFFER.clear(); - thriftLoggerBusy = true; - LOG.info("Started to log thrift requests into file " + logFile.getAbsolutePath()); - LOGGING_EXECUTOR.submit(() -> { - try { - int count = 0; - while (count < maxEntriesToLog) { - if (REQUEST_BUFFER.isEmpty()) { - Thread.sleep(DEFAULT_LOGGING_SLEEP_MS); - continue; - } - - try { - EarlybirdRequest ebRequest = REQUEST_BUFFER.poll(); - String logLine = serializeThriftObject(ebRequest, serializer); - thriftLogWriter.write(logLine); - count++; - } catch (TException e) { - LOG.warn("Unable to serialize EarlybirdRequest for logging.", e); - } - } - return count; - } finally { - thriftLogWriter.close(); - thriftLoggerBusy = false; - LOG.info("Finished logging thrift requests into file " + logFile.getAbsolutePath()); - REQUEST_BUFFER.clear(); - if (postLoggingHook != null) { - postLoggingHook.run(); - } - } - }); - } - - /** - * Serialize a thrift object to a base 64 encoded string. - */ - private static String serializeThriftObject(TBase tObject, TSerializer serializer) - throws TException { - return new Base64().encodeToString(serializer.serialize(tObject)) + "\n"; - } - } - - /** - * Start to log thrift EarlybirdRequests. - * - * @param logFile Log file to write to. - * @param numRequestsToLog Number of requests to collect. Default value of 50000 used if - * 0 or negative numbers are pass in. - */ - public void startThriftLogging(File logFile, int numRequestsToLog) throws IOException { - int requestToLog = numRequestsToLog <= 0 - ? EarlybirdThriftRequestLoggingUtil.DEFAULT_MAX_ENTRIES_TO_LOG : numRequestsToLog; - EarlybirdThriftRequestLoggingUtil.startThriftLogging(logFile, requestToLog, null); - } - - @VisibleForTesting - @Override - public boolean isInServerSet() { - return serverSetManager.isInServerSet(); - } - - @VisibleForTesting - SearchCounter getResponseCodeCounter(EarlybirdResponseCode responseCode) { - return responseCodeCounters.get(responseCode); - } - - @VisibleForTesting - SearchCounter getClientIdResponseCodeCounter( - String clientId, EarlybirdResponseCode responseCode) { - String key = String.format(RESPONSES_PER_CLIENT_ID_STAT_TEMPLATE, - clientId, responseCode.name().toLowerCase()); - return responseByClientIdAndResponseCode.getUnchecked(key); - } - - public void setNoShutdownWhenNotInLayout(boolean noShutdown) { - stateManager.setNoShutdownWhenNotInLayout(noShutdown); - } - - private void schedule(OneTaskScheduledExecutorManager manager) { - if (!isShuttingDown) { - manager.schedule(); - toClose.add(manager); - } - } - - public DynamicSchema getSchema() { - return earlybirdIndexConfig.getSchema(); - } - - public AudioSpaceTable getAudioSpaceTable() { - return audioSpaceTable; - } -} diff --git a/src/java/com/twitter/search/earlybird/EarlybirdServerSetManager.docx b/src/java/com/twitter/search/earlybird/EarlybirdServerSetManager.docx new file mode 100644 index 0000000000000000000000000000000000000000..35c414b7a5f78349b1b6f91e9241fb936f4d847c GIT binary patch literal 39976 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 JJmcrT{{gKM^U44K literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/EarlybirdServerSetManager.java b/src/java/com/twitter/search/earlybird/EarlybirdServerSetManager.java deleted file mode 100644 index cd490992c..000000000 --- a/src/java/com/twitter/search/earlybird/EarlybirdServerSetManager.java +++ /dev/null @@ -1,275 +0,0 @@ -package com.twitter.search.earlybird; - -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.util.concurrent.atomic.AtomicLong; - -import javax.annotation.concurrent.GuardedBy; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; - -import org.apache.zookeeper.KeeperException; -import org.apache.zookeeper.Watcher; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.zookeeper.ServerSet; -import com.twitter.common.zookeeper.ZooKeeperClient; -import com.twitter.common_internal.zookeeper.TwitterServerSet; -import com.twitter.search.common.config.Config; -import com.twitter.search.common.database.DatabaseConfig; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.metrics.SearchLongGauge; -import com.twitter.search.common.metrics.SearchStatsReceiver; -import com.twitter.search.common.util.zookeeper.ZooKeeperProxy; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; -import com.twitter.search.earlybird.common.config.EarlybirdProperty; -import com.twitter.search.earlybird.config.TierConfig; -import com.twitter.search.earlybird.exception.AlreadyInServerSetUpdateException; -import com.twitter.search.earlybird.exception.NotInServerSetUpdateException; -import com.twitter.search.earlybird.partition.PartitionConfig; - -public class EarlybirdServerSetManager implements ServerSetMember { - private static final Logger LOG = LoggerFactory.getLogger(EarlybirdServerSetManager.class); - - // How many times this earlybird joined/left its partition's server set - @VisibleForTesting - protected final SearchCounter leaveServerSetCounter; - @VisibleForTesting - protected final SearchCounter joinServerSetCounter; - private final ZooKeeperProxy discoveryZKClient; - private final SearchLongGauge inServerSetGauge; - private final PartitionConfig partitionConfig; - private final int port; - private final String serverSetNamePrefix; - - @VisibleForTesting - protected final SearchLongGauge connectedToZooKeeper; - - private final Object endpointStatusLock = new Object(); - @GuardedBy("endpointStatusLock") - private ServerSet.EndpointStatus endpointStatus = null; - - private boolean inServerSetForServiceProxy = false; - - public EarlybirdServerSetManager( - SearchStatsReceiver searchStatsReceiver, - ZooKeeperProxy discoveryZKClient, - final PartitionConfig partitionConfig, - int port, - String serverSetNamePrefix) { - this.discoveryZKClient = discoveryZKClient; - this.partitionConfig = partitionConfig; - this.port = port; - this.serverSetNamePrefix = serverSetNamePrefix; - - // Export serverset related stats - Preconditions.checkNotNull(searchStatsReceiver); - this.joinServerSetCounter = searchStatsReceiver.getCounter( - serverSetNamePrefix + "join_server_set_count"); - this.leaveServerSetCounter = searchStatsReceiver.getCounter( - serverSetNamePrefix + "leave_server_set_count"); - - // Create a new stat based on the partition number for hosts-in-partition aggregation. - // The value of the stat is dependent on whether the server is in the serverset so that the - // aggregate stat reflects the number serving traffic instead of the live process count. - AtomicLong sharedInServerSetStatus = new AtomicLong(); - this.inServerSetGauge = searchStatsReceiver.getLongGauge( - serverSetNamePrefix + "is_in_server_set", sharedInServerSetStatus); - this.connectedToZooKeeper = searchStatsReceiver.getLongGauge( - serverSetNamePrefix + "connected_to_zookeeper"); - - searchStatsReceiver.getLongGauge( - serverSetNamePrefix + "member_of_partition_" + partitionConfig.getIndexingHashPartitionID(), - sharedInServerSetStatus); - - this.discoveryZKClient.registerExpirationHandler(() -> connectedToZooKeeper.set(0)); - - this.discoveryZKClient.register(event -> { - if (event.getType() == Watcher.Event.EventType.None - && event.getState() == Watcher.Event.KeeperState.SyncConnected) { - connectedToZooKeeper.set(1); - } - }); - } - - /** - * Join ServerSet and update endpointStatus. - * This will allow Earlybird consumers, e.g. Blender, to detect when an - * Earlybird goes online and offline. - * @param username - */ - @Override - public void joinServerSet(String username) throws ServerSet.UpdateException { - joinServerSetCounter.increment(); - - synchronized (endpointStatusLock) { - LOG.info("Joining {} ServerSet (instructed by: {}) ...", serverSetNamePrefix, username); - if (endpointStatus != null) { - LOG.warn("Already in ServerSet. Nothing done."); - throw new AlreadyInServerSetUpdateException("Already in ServerSet. Nothing done."); - } - - try { - TwitterServerSet.Service service = getServerSetService(); - - ServerSet serverSet = discoveryZKClient.createServerSet(service); - endpointStatus = serverSet.join( - new InetSocketAddress(InetAddress.getLocalHost().getHostName(), port), - Maps.newHashMap(), - partitionConfig.getHostPositionWithinHashPartition()); - - inServerSetGauge.set(1); - - String path = service.getPath(); - EarlybirdStatus.recordEarlybirdEvent("Joined " + serverSetNamePrefix + " ServerSet " + path - + " (instructed by: " + username + ")"); - LOG.info("Successfully joined {} ServerSet {} (instructed by: {})", - serverSetNamePrefix, path, username); - } catch (Exception e) { - endpointStatus = null; - String message = "Failed to join " + serverSetNamePrefix + " ServerSet of partition " - + partitionConfig.getIndexingHashPartitionID(); - LOG.error(message, e); - throw new ServerSet.UpdateException(message, e); - } - } - } - - /** - * Takes this Earlybird out of its registered ServerSet. - * - * @throws ServerSet.UpdateException if there was a problem leaving the ServerSet, - * or if this Earlybird is already not in a ServerSet. - * @param username - */ - @Override - public void leaveServerSet(String username) throws ServerSet.UpdateException { - leaveServerSetCounter.increment(); - synchronized (endpointStatusLock) { - LOG.info("Leaving {} ServerSet (instructed by: {}) ...", serverSetNamePrefix, username); - if (endpointStatus == null) { - String message = "Not in a ServerSet. Nothing done."; - LOG.warn(message); - throw new NotInServerSetUpdateException(message); - } - - endpointStatus.leave(); - endpointStatus = null; - inServerSetGauge.set(0); - EarlybirdStatus.recordEarlybirdEvent("Left " + serverSetNamePrefix - + " ServerSet (instructed by: " + username + ")"); - LOG.info("Successfully left {} ServerSet. (instructed by: {})", - serverSetNamePrefix, username); - } - } - - @Override - public int getNumberOfServerSetMembers() - throws InterruptedException, ZooKeeperClient.ZooKeeperConnectionException, KeeperException { - String path = getServerSetService().getPath(); - return discoveryZKClient.getNumberOfServerSetMembers(path); - } - - /** - * Determines if this earlybird is in the server set. - */ - @Override - public boolean isInServerSet() { - synchronized (endpointStatusLock) { - return endpointStatus != null; - } - } - - /** - * Returns the server set that this earlybird should join. - */ - public String getServerSetIdentifier() { - TwitterServerSet.Service service = getServerSetService(); - return String.format("/cluster/local/%s/%s/%s", - service.getRole(), - service.getEnv(), - service.getName()); - } - - private TwitterServerSet.Service getServerSetService() { - // If the tier name is 'all' then it treat it as an untiered EB cluster - // and do not add the tier component into the ZK path it registers under. - String tierZKPathComponent = ""; - if (!TierConfig.DEFAULT_TIER_NAME.equalsIgnoreCase(partitionConfig.getTierName())) { - tierZKPathComponent = "/" + partitionConfig.getTierName(); - } - if (EarlybirdConfig.isAurora()) { - // ROLE, EARYLBIRD_NAME, and ENV properties are required on Aurora, thus will be set here - return new TwitterServerSet.Service( - EarlybirdProperty.ROLE.get(), - EarlybirdProperty.ENV.get(), - getServerSetPath(EarlybirdProperty.EARLYBIRD_NAME.get() + tierZKPathComponent)); - } else { - return new TwitterServerSet.Service( - DatabaseConfig.getZooKeeperRole(), - Config.getEnvironment(), - getServerSetPath("earlybird" + tierZKPathComponent)); - } - } - - private String getServerSetPath(String earlybirdName) { - return String.format("%s%s/hash_partition_%d", serverSetNamePrefix, earlybirdName, - partitionConfig.getIndexingHashPartitionID()); - } - - /** - * Join ServerSet for ServiceProxy with a named admin port and with a zookeeper path that Service - * Proxy can translate to a domain name label that is less than 64 characters (due to the size - * limit for domain name labels described here: https://tools.ietf.org/html/rfc1035) - * This will allow us to access Earlybirds that are not on mesos via ServiceProxy. - */ - @Override - public void joinServerSetForServiceProxy() { - // This additional Zookeeper server set is only necessary for Archive Earlybirds which are - // running on bare metal hardware, so ensure that this method is never called for services - // on Aurora. - Preconditions.checkArgument(!EarlybirdConfig.isAurora(), - "Attempting to join server set for ServiceProxy on Earlybird running on Aurora"); - - LOG.info("Attempting to join ServerSet for ServiceProxy"); - try { - TwitterServerSet.Service service = getServerSetForServiceProxyOnArchive(); - - ServerSet serverSet = discoveryZKClient.createServerSet(service); - String hostName = InetAddress.getLocalHost().getHostName(); - int adminPort = EarlybirdConfig.getAdminPort(); - serverSet.join( - new InetSocketAddress(hostName, port), - ImmutableMap.of("admin", new InetSocketAddress(hostName, adminPort)), - partitionConfig.getHostPositionWithinHashPartition()); - - String path = service.getPath(); - LOG.info("Successfully joined ServerSet for ServiceProxy {}", path); - inServerSetForServiceProxy = true; - } catch (Exception e) { - String message = "Failed to join ServerSet for ServiceProxy of partition " - + partitionConfig.getIndexingHashPartitionID(); - LOG.warn(message, e); - } - } - - @VisibleForTesting - protected TwitterServerSet.Service getServerSetForServiceProxyOnArchive() { - String serverSetPath = String.format("proxy/%s/p_%d", - partitionConfig.getTierName(), - partitionConfig.getIndexingHashPartitionID()); - return new TwitterServerSet.Service( - DatabaseConfig.getZooKeeperRole(), - Config.getEnvironment(), - serverSetPath); - } - - @VisibleForTesting - protected boolean isInServerSetForServiceProxy() { - return inServerSetForServiceProxy; - } -} diff --git a/src/java/com/twitter/search/earlybird/EarlybirdStatus.docx b/src/java/com/twitter/search/earlybird/EarlybirdStatus.docx new file mode 100644 index 0000000000000000000000000000000000000000..27175d3015730792c29e5127490d69123157f7cb GIT binary patch literal 38669 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/EarlybirdStatus.java b/src/java/com/twitter/search/earlybird/EarlybirdStatus.java deleted file mode 100644 index 49ee768e7..000000000 --- a/src/java/com/twitter/search/earlybird/EarlybirdStatus.java +++ /dev/null @@ -1,204 +0,0 @@ -package com.twitter.search.earlybird; - -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; -import java.util.Optional; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicBoolean; - -import com.google.common.collect.Lists; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.util.BuildInfo; -import com.twitter.search.earlybird.partition.SearchIndexingMetricSet; -import com.twitter.search.earlybird.thrift.EarlybirdStatusCode; -import com.twitter.util.Duration; - -/** - * High level status of an Earlybird server. SEARCH-28016 - */ -public final class EarlybirdStatus { - private static final Logger LOG = LoggerFactory.getLogger(EarlybirdStatus.class); - - private static final String BUILD_SHA = getBuildShaFromVars(); - - protected static long startTime; - protected static EarlybirdStatusCode statusCode; - protected static String statusMessage; - protected static final AtomicBoolean THRIFT_PORT_OPEN = new AtomicBoolean(false); - protected static final AtomicBoolean WARMUP_THRIFT_PORT_OPEN = new AtomicBoolean(false); - protected static final AtomicBoolean THRIFT_SERVICE_STARTED = new AtomicBoolean(false); - - private static final List EARLYBIRD_SERVER_EVENTS = Lists.newArrayList(); - private static class EarlybirdEvent { - private final String eventName; - private final long timestampMillis; - private final long timeSinceServerStartMillis; - private final long durationMillis; - - public EarlybirdEvent(String eventName, long timestampMillis) { - this(eventName, timestampMillis, -1); - } - - public EarlybirdEvent( - String eventName, - long timestampMillis, - long eventDurationMillis) { - this.eventName = eventName; - this.timestampMillis = timestampMillis; - this.timeSinceServerStartMillis = timestampMillis - startTime; - this.durationMillis = eventDurationMillis; - } - - public String getEventLogString() { - String result = String.format( - "%s %s", - new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date(timestampMillis)), - eventName); - - if (durationMillis > 0) { - result += String.format( - ", took: %s", Duration.apply(durationMillis, TimeUnit.MILLISECONDS).toString()); - } - - result += String.format( - ", time since server start: %s", - Duration.apply(timeSinceServerStartMillis, TimeUnit.MILLISECONDS).toString() - ); - - return result; - } - } - - private EarlybirdStatus() { - } - - public static synchronized void setStartTime(long time) { - startTime = time; - LOG.info("startTime set to " + time); - } - - public static synchronized void setStatus(EarlybirdStatusCode code) { - setStatus(code, null); - } - - public static synchronized void setStatus(EarlybirdStatusCode code, String message) { - statusCode = code; - statusMessage = message; - LOG.info("status set to " + code + (message != null ? " with message " + message : "")); - } - - public static synchronized long getStartTime() { - return startTime; - } - - public static synchronized boolean isStarting() { - return statusCode == EarlybirdStatusCode.STARTING; - } - - public static synchronized boolean hasStarted() { - return statusCode == EarlybirdStatusCode.CURRENT; - } - - public static boolean isThriftServiceStarted() { - return THRIFT_SERVICE_STARTED.get(); - } - - public static synchronized EarlybirdStatusCode getStatusCode() { - return statusCode; - } - - public static synchronized String getStatusMessage() { - return (statusMessage == null ? "" : statusMessage + ", ") - + "warmup thrift port is " + (WARMUP_THRIFT_PORT_OPEN.get() ? "OPEN" : "CLOSED") - + ", production thrift port is " + (THRIFT_PORT_OPEN.get() ? "OPEN" : "CLOSED"); - } - - public static synchronized void recordEarlybirdEvent(String eventName) { - long timeMillis = System.currentTimeMillis(); - EARLYBIRD_SERVER_EVENTS.add(new EarlybirdEvent(eventName, timeMillis)); - } - - private static String getBeginEventMessage(String eventName) { - return "[Begin Event] " + eventName; - } - - private static String getEndEventMessage(String eventName) { - return "[ End Event ] " + eventName; - } - - /** - * Records the beginning of the given event. - * - * @param eventName The event name. - * @param startupMetric The metric that will be used to keep track of the time for this event. - */ - public static synchronized void beginEvent(String eventName, - SearchIndexingMetricSet.StartupMetric startupMetric) { - long timeMillis = System.currentTimeMillis(); - String eventMessage = getBeginEventMessage(eventName); - LOG.info(eventMessage); - EARLYBIRD_SERVER_EVENTS.add(new EarlybirdEvent(eventMessage, timeMillis)); - - startupMetric.begin(); - } - - /** - * Records the end of the given event. - * - * @param eventName The event name. - * @param startupMetric The metric used to keep track of the time for this event. - */ - public static synchronized void endEvent(String eventName, - SearchIndexingMetricSet.StartupMetric startupMetric) { - long timeMillis = System.currentTimeMillis(); - - String beginEventMessage = getBeginEventMessage(eventName); - Optional beginEventOpt = EARLYBIRD_SERVER_EVENTS.stream() - .filter(event -> event.eventName.equals(beginEventMessage)) - .findFirst(); - - String eventMessage = getEndEventMessage(eventName); - LOG.info(eventMessage); - EarlybirdEvent endEvent = new EarlybirdEvent( - eventMessage, - timeMillis, - beginEventOpt.map(e -> timeMillis - e.timestampMillis).orElse(-1L)); - - EARLYBIRD_SERVER_EVENTS.add(endEvent); - - startupMetric.end(endEvent.durationMillis); - } - - public static synchronized void clearAllEvents() { - EARLYBIRD_SERVER_EVENTS.clear(); - } - - public static String getBuildSha() { - return BUILD_SHA; - } - - /** - * Returns the list of all earlybird events that happened since the server started. - */ - public static synchronized Iterable getEarlybirdEvents() { - List eventLog = Lists.newArrayListWithCapacity(EARLYBIRD_SERVER_EVENTS.size()); - for (EarlybirdEvent event : EARLYBIRD_SERVER_EVENTS) { - eventLog.add(event.getEventLogString()); - } - return eventLog; - } - - private static String getBuildShaFromVars() { - BuildInfo buildInfo = new BuildInfo(); - String buildSha = buildInfo.getProperties().getProperty(BuildInfo.Key.GIT_REVISION.value); - if (buildSha != null) { - return buildSha; - } else { - return "UNKNOWN"; - } - } -} diff --git a/src/java/com/twitter/search/earlybird/EarlybirdWarmUpManager.docx b/src/java/com/twitter/search/earlybird/EarlybirdWarmUpManager.docx new file mode 100644 index 0000000000000000000000000000000000000000..7c28d0374b470f0c6168ef26146eb3c458a3b213 GIT binary patch literal 38017 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

    * zu6!_LM-C~&Knc)7#4dp!ze8XvOF;F|tnscsCv-;-%^^b((D-{7ksi5kG!6wo1KnMK zZ`5AEeqk?^1&tkdSsu}QS?rM{lmZR4b}3;oJF~(TctQ10e{feX8NbKG*u6tbGak@_ Qwya7FZ~@IjfV_40e{J^=!vFvP literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/EarlybirdWarmUpManager.java b/src/java/com/twitter/search/earlybird/EarlybirdWarmUpManager.java deleted file mode 100644 index 446bd9171..000000000 --- a/src/java/com/twitter/search/earlybird/EarlybirdWarmUpManager.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.twitter.search.earlybird; - -import com.google.common.annotations.VisibleForTesting; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.util.Clock; -import com.twitter.common.zookeeper.ServerSet; -import com.twitter.decider.Decider; -import com.twitter.search.common.decider.DeciderUtil; -import com.twitter.search.earlybird.partition.PartitionConfig; -import com.twitter.search.earlybird.partition.SearchIndexingMetricSet; -import com.twitter.search.earlybird.thrift.EarlybirdStatusCode; - -public class EarlybirdWarmUpManager { - private static final Logger LOG = LoggerFactory.getLogger(EarlybirdWarmUpManager.class); - private static final String WARM_UP_ON_DURATION_DECIDER_KEY_PATTERN = - "%s_warm_up_duration_seconds"; - - private final EarlybirdServerSetManager earlybirdServerSetManager; - private final String clusterName; - private final SearchIndexingMetricSet.StartupMetric startUpInWarmUpMetric; - private final Decider decider; - private final Clock clock; - - public EarlybirdWarmUpManager(EarlybirdServerSetManager earlybirdServerSetManager, - PartitionConfig partitionConfig, - SearchIndexingMetricSet searchIndexingMetricSet, - Decider decider, - Clock clock) { - this.earlybirdServerSetManager = earlybirdServerSetManager; - this.clusterName = partitionConfig.getClusterName(); - this.startUpInWarmUpMetric = searchIndexingMetricSet.startupInWarmUp; - this.decider = decider; - this.clock = clock; - } - - public String getServerSetIdentifier() { - return earlybirdServerSetManager.getServerSetIdentifier(); - } - - /** - * Warms up the earlybird. The earlybird joins a special server set that gets production dark - * reads, and leaves this server set after a specified period of time. - */ - public void warmUp() throws InterruptedException, ServerSet.UpdateException { - int warmUpDurationSeconds = DeciderUtil.getAvailability( - decider, - String.format(WARM_UP_ON_DURATION_DECIDER_KEY_PATTERN, clusterName.replaceAll("-", "_"))); - if (warmUpDurationSeconds == 0) { - LOG.info(String.format("Warm up stage duration for cluster %s set to 0. Skipping.", - clusterName)); - return; - } - - earlybirdServerSetManager.joinServerSet("internal warm up"); - - // If doWarmUp() is interrupted, try to leave the server set, and propagate the - // InterruptedException. Otherwise, try to leave the server set, and propagate any exception - // that it might throw. - InterruptedException warmUpInterruptedException = null; - try { - doWarmUp(warmUpDurationSeconds); - } catch (InterruptedException e) { - warmUpInterruptedException = e; - throw e; - } finally { - if (warmUpInterruptedException != null) { - try { - earlybirdServerSetManager.leaveServerSet("internal warm up"); - } catch (Exception e) { - warmUpInterruptedException.addSuppressed(e); - } - } else { - earlybirdServerSetManager.leaveServerSet("internal warm up"); - } - } - } - - @VisibleForTesting - protected void doWarmUp(int warmUpDurationSeconds) throws InterruptedException { - long warmUpStartTimeMillis = clock.nowMillis(); - LOG.info(String.format("Warming up for %d seconds.", warmUpDurationSeconds)); - EarlybirdStatus.beginEvent("warm_up", startUpInWarmUpMetric); - - // Sleep for warmUpDurationSeconds seconds, but check if the server is going down every second. - int count = 0; - try { - while ((count++ < warmUpDurationSeconds) - && (EarlybirdStatus.getStatusCode() != EarlybirdStatusCode.STOPPING)) { - clock.waitFor(1000); - } - } finally { - LOG.info(String.format("Done warming up after %d milliseconds.", - clock.nowMillis() - warmUpStartTimeMillis)); - EarlybirdStatus.endEvent("warm_up", startUpInWarmUpMetric); - } - } -} diff --git a/src/java/com/twitter/search/earlybird/QualityFactor.docx b/src/java/com/twitter/search/earlybird/QualityFactor.docx new file mode 100644 index 0000000000000000000000000000000000000000..fab730256230e7f9f97b3181970eeda1a660501f GIT binary patch literal 36865 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�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 DAVc2v literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/QualityFactor.java b/src/java/com/twitter/search/earlybird/QualityFactor.java deleted file mode 100644 index 601426cdf..000000000 --- a/src/java/com/twitter/search/earlybird/QualityFactor.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.twitter.search.earlybird; - -/** - * Interface defining a quality factor. - */ -public interface QualityFactor { - /** - * Returns the current quality factor. - * @return The quality factor; a number between 0.0 and 1.0. - */ - double get(); - - /** - * Starts a thread to update the quality factor periodically. - */ - void startUpdates(); -} diff --git a/src/java/com/twitter/search/earlybird/README.docx b/src/java/com/twitter/search/earlybird/README.docx new file mode 100644 index 0000000000000000000000000000000000000000..c7513c5d4e17e630008117c4e96190f5272d148f GIT binary patch literal 39786 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 TM$nH@MGG **TL;DR** Earlybird (Search Index) find tweets from people you follow, rank them, and serve them to Home. - -## What is Earlybird (Search Index) - -[Earlybird](http://notes.stephenholiday.com/Earlybird.pdf) is a **real-time search system** based on [Apache Lucene](https://lucene.apache.org/) to support the high volume of queries and content updates. The major use cases are Relevance Search (specifically, Text search) and Timeline In-network Tweet retrieval (or UserID based search). It is designed to enable the efficient indexing and querying of billions of tweets, and to provide low-latency search results, even with heavy query loads. - -## High-level architecture -We split our entire tweet search index into three clusters: a **realtime** cluster indexing all public tweets posted in about the last 7 days, a **protected** cluster indexing all protected tweets for the same timeframe; and an **archive** cluster indexing all tweets ever posted, up to about two days ago. - -Earlybird addresses the challenges of scaling real-time search by splitting each cluster across multiple **partitions**, each responsible for a portion of the index. The architecture uses a distributed *inverted index* that is sharded and replicated. This design allows for efficient index updates and query processing. - -The system also employs an incremental indexing approach, enabling it to process and index new tweets in real-time as they arrive. With single writer, multiple reader structure, Earlybird can handle a large number of real-time updates and queries concurrently while maintaining low query latency. The system can achieve high query throughput and low query latency while maintaining a high degree of index freshness. - -## Main Components - -**Partition Manager**: Responsible for managing the configuration of partitions, as well as the mapping between users and partitions. It also handles index loading and flushing. - -**Real-time Indexer**: Continuously reads from a kafka stream of incoming tweets and updates the index (tweet creation, tweet updates, user updates). It also supports tweet deletion events. - -**Query Engine**: Handles the execution of search queries against the distributed index. It employs various optimization techniques, such as term-based pruning and caching. - -**Document Preprocessor**: Converts raw tweets into a document representation suitable for indexing. It handles tokenization, normalization, and analysis of tweet text and metadata. See our ingestion pipeline `src/java/com/twitter/search/ingester` for more write-path processing. - -**Index Writer**: Writes tweet documents to the index and maintains the index structure, including **posting lists** and **term dictionaries**. - -**Segment Manager**: Manages index segments within a partition. It is responsible for merging, optimizing, and flushing index segments to disk, or flush to HDFS to snapshot live segments. - -**Searcher**: Executes queries against the index, using techniques like caching and parallel query execution to minimize query latency. It also incorporates scoring models and ranking algorithms to provide relevant search results. - -The most important two data structures for Earlybird (or Information Retrieval in general) including: - -* **Inverted Index** which stores a mapping between a Term to a list of Doc IDs. Essentially, we build a hash map: each key in the map is a distinct Term (e.g., `cat`, `dog`) in a tweet, and each value is the list of tweets (aka., Document) in which the word appears. We keep one inverted index per field (text, UserID, user name, links, etc.) -* **Postings List** which optimize the storage a the list of Doc IDs mentioned above. - -See more at: https://blog.twitter.com/engineering/en_us/topics/infrastructure/2016/omnisearch-index-formats - -## Advanced features - -Earlybird incorporates several advanced features such as facet search, which allows users to refine search results based on specific attributes such as user mentions, hashtags, and URLs. Furthermore, the system supports various ranking models, including machine learning-based scoring models, to provide relevant search results. - -## Directory Structure -The project consists of several packages and files, which can be summarized as follows: - -* At the root level, the primary focus is on the Earlybird server implementation and its associated classes. These include classes for search, CPU quality factors, server management, index config, main classes, server startup, etc. -* `archive/`: Directory deals with the management and configuration of archived data, specifically for Earlybird Index Configurations. It also contains a `segmentbuilder/` subdirectory, which includes classes for building and updating archive index segments. -* `common/`: Directory holds utility classes for logging, handling requests, and Thrift backend functionality. It also has two subdirectories: `config/` for Earlybird configuration and `userupdates/` for user-related data handling. -* `config/`: Directory is dedicated to managing tier configurations specifically for archive cluster, which relate to server and search query distribution. -* `document/`: Handles document creation and processing, including various factories and token stream writers. -* `exception/`: Contains custom exceptions and exception handling classes related to the system. -* `factory/`: Provides utilities and factories for configurations, Kafka consumers, and server instances. -* `index/`: Contains index-related classes, including in-memory time mappers, tweet ID mappers, and facets. -* `ml/`: Houses the `ScoringModelsManager` for managing machine learning models. -* `partition/`: Manages partitions and index segments, including index loaders, segment writers, and startup indexers. -* `querycache/`: Implements caching for queries and query results, including cache configuration and update tasks. -* `queryparser/`: Provides query parsing functionality, including files that cover query rewriters and lhigh-frequency term extraction. -* `search/`: Contains read path related classes, such as search request processing, result collectors, and facet collectors. -* `segment/`: Provides classes for managing segment data providers and data reader sets. -* `stats/`: Contains classes for tracking and reporting statistics related to the system. -* `tools/`: Houses utility classes for deserializing thrift requests. -* `util/`: Includes utility classes for various tasks, such as action logging, scheduled tasks, and JSON viewers. - -## Related Services - -* The Earlybirds sit behind Earlybird Root servers that fan out queries to them. See `src/java/com/twitter/search/earlybird_root/` -* The Earlybirds are powered by multiple ingestion pipelines. See `src/java/com/twitter/search/ingester/` -* Earlybird segments for the Archives are built offline by segment builders -* Also, Earlybird light ranking is defined in `timelines/data_processing/ad_hoc/earlybird_ranking` - and `src/python/twitter/deepbird/projects/timelines/scripts/models/earlybird`. -* Search common library/packages - -## References - -See more: - -* "Earlybird: Real-Time Search at Twitter" (http://notes.stephenholiday.com/Earlybird.pdf) -* "Reducing search indexing latency to one second" (https://blog.twitter.com/engineering/en_us/topics/infrastructure/2020/reducing-search-indexing-latency-to-one-second) -* "Omnisearch index formats" (https://blog.twitter.com/engineering/en_us/topics/infrastructure/2016/omnisearch-index-formats) - - - - diff --git a/src/java/com/twitter/search/earlybird/RealtimeEarlybirdIndexConfig.docx b/src/java/com/twitter/search/earlybird/RealtimeEarlybirdIndexConfig.docx new file mode 100644 index 0000000000000000000000000000000000000000..7f5133548321fc35ec8d221c2be38cb76762c98e GIT binary patch literal 37888 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 deciderValue = decider.getAvailability(deciderKey); - if (deciderValue.isDefined()) { - return (int) deciderValue.get(); - } - return DEFAULT_RECENT_TWEET_SECONDS; - } -} diff --git a/src/java/com/twitter/search/earlybird/ServerSetMember.docx b/src/java/com/twitter/search/earlybird/ServerSetMember.docx new file mode 100644 index 0000000000000000000000000000000000000000..42be61be55c4dc3c33408db5d5d1124c7fe6f6e9 GIT binary patch literal 37355 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 BQ;Z>%$b>U?z#6*zR$ZO_FikR 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

    )DhE^@y?B8 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ⅇ=4uCBnj#~Ii;sbuEG}yFB%RbV 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

    Y8I#zf{u@%|&0g(D1~_^|6mN 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 KJg#$o9sLhx^BYG1 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/UpdateableEarlybirdStateManager.java b/src/java/com/twitter/search/earlybird/UpdateableEarlybirdStateManager.java deleted file mode 100644 index 24b1cbce3..000000000 --- a/src/java/com/twitter/search/earlybird/UpdateableEarlybirdStateManager.java +++ /dev/null @@ -1,437 +0,0 @@ -package com.twitter.search.earlybird; - -import java.io.File; -import java.io.IOException; -import java.util.Random; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicLong; -import javax.annotation.Nullable; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Charsets; - -import org.apache.thrift.TException; -import org.apache.zookeeper.KeeperException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.util.Clock; -import com.twitter.common.zookeeper.ZooKeeperClient; -import com.twitter.search.common.aurora.AuroraSchedulerClient; -import com.twitter.search.common.concurrent.ScheduledExecutorServiceFactory; -import com.twitter.search.common.decider.SearchDecider; -import com.twitter.search.common.file.LocalFile; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.metrics.SearchLongGauge; -import com.twitter.search.common.metrics.SearchStatsReceiver; -import com.twitter.search.common.schema.AnalyzerFactory; -import com.twitter.search.common.schema.DynamicSchema; -import com.twitter.search.common.schema.ImmutableSchema; -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.common.schema.thriftjava.ThriftSchema; -import com.twitter.search.common.util.ml.tensorflow_engine.TensorflowModelsManager; -import com.twitter.search.common.util.thrift.ThriftUtils; -import com.twitter.search.common.util.zookeeper.ZooKeeperProxy; -import com.twitter.search.earlybird.common.NonPagingAssert; -import com.twitter.search.earlybird.exception.CriticalExceptionHandler; -import com.twitter.search.earlybird.ml.ScoringModelsManager; -import com.twitter.search.earlybird.partition.DynamicPartitionConfig; -import com.twitter.search.earlybird.partition.PartitionConfig; -import com.twitter.search.earlybird.partition.PartitionConfigLoader; -import com.twitter.search.earlybird.partition.PartitionConfigLoadingException; -import com.twitter.search.earlybird.util.OneTaskScheduledExecutorManager; -import com.twitter.search.earlybird.util.PeriodicActionParams; -import com.twitter.search.earlybird.util.ShutdownWaitTimeParams; - -/** - * A class that keeps track of Earlybird state that may change while an Earlybird runs, and keeps - * that state up to date. Currently keeps track of the current Earlybird schema and partition - * configuration, and periodically updates them from Zookeeper. It also reloads periodically the - * scoring models from HDFS. - */ -public class UpdateableEarlybirdStateManager extends OneTaskScheduledExecutorManager { - private static final Logger LOG = LoggerFactory.getLogger(UpdateableEarlybirdStateManager.class); - public static final String SCHEMA_SUFFIX = ".schema.v"; - - private static final String THREAD_NAME_PATTERN = "state_update-%d"; - private static final boolean THREAD_IS_DAEMON = true; - private static final long EXECUTOR_SHUTDOWN_WAIT_SEC = 5; - - private static final String DEFAULT_ZK_SCHEMA_LOCATION = - "/twitter/search/production/earlybird/schema"; - private static final String DEFAULT_LOCAL_SCHEMA_LOCATION = - "/home/search/earlybird_schema_canary"; - private static final long DEFAULT_UPDATE_PERIOD_MILLIS = - TimeUnit.MINUTES.toMillis(30); - - private static final String SCHEMA_MAJOR_VERSION_NAME = - "schema_major_version"; - private static final String SCHEMA_MINOR_VERSION_NAME = - "schema_minor_version"; - private static final String LAST_SUCCESSFUL_SCHEMA_RELOAD_TIME_MILLIS_NAME = - "last_successful_schema_reload_timestamp_millis"; - @VisibleForTesting - static final String FAIL_TO_LOAD_SCHEMA_COUNT_NAME = - "fail_to_load_schema_count"; - @VisibleForTesting - static final String HOST_IS_CANARY_SCHEME = "host_is_canary_schema"; - @VisibleForTesting - static final String DID_NOT_FIND_SCHEMA_COUNT_NAME = - "did_not_find_schema_count"; - private static final String LAST_SUCCESSFUL_PARTITION_CONFIG_RELOAD_TIME_MILLIS_NAME = - "last_successful_partition_config_reload_timestamp_millis"; - @VisibleForTesting - static final String FAIL_TO_LOAD_PARTITION_CONFIG_COUNT_NAME = - "fail_to_load_partition_config_count"; - @VisibleForTesting - static final String HOST_IS_IN_LAYOUT_STAT_NAME = "host_is_in_layout"; - private static final String NOT_IN_LAYOUT_SHUT_DOWN_ATTEMPTED_NAME = - "not_in_layout_shut_down_attempted"; - - private static final String SHUT_DOWN_EARLYBIRD_WHEN_NOT_IN_LAYOUT_DECIDER_KEY = - "shut_down_earlybird_when_not_in_layout"; - - private static final String NO_SHUTDOWN_WHEN_NOT_IN_LAYOUT_NAME = - "no_shutdown_when_not_in_layout"; - - private final SearchLongGauge schemaMajorVersion; - private final SearchLongGauge schemaMinorVersion; - private final SearchLongGauge lastSuccessfulSchemaReloadTimeMillis; - private final SearchCounter failToLoadSchemaCount; - private final SearchLongGauge hostIsCanarySchema; - private final SearchCounter didNotFindSchemaCount; - private final SearchLongGauge lastSuccessfulPartitionConfigReloadTimeMillis; - private final SearchCounter failToLoadPartitionConfigCount; - private final SearchLongGauge hostIsInLayout; - private final SearchCounter notInLayoutShutDownAttemptedCount; - private final SearchLongGauge noShutdownWhenNotInLayoutGauge; - - private final EarlybirdIndexConfig indexConfig; - private final DynamicPartitionConfig partitionConfig; - private final String schemaLocationOnLocal; - private final String schemaLocationOnZK; - private final ZooKeeperProxy zkClient; - private final AuroraSchedulerClient schedulerClient; - private final ScoringModelsManager scoringModelsManager; - private final TensorflowModelsManager tensorflowModelsManager; - private final SearchDecider searchDecider; - private final AtomicLong noShutdownWhenNotInLayout; - private EarlybirdServer earlybirdServer; - private Clock clock; - - public UpdateableEarlybirdStateManager( - EarlybirdIndexConfig indexConfig, - DynamicPartitionConfig partitionConfig, - ZooKeeperProxy zooKeeperClient, - @Nullable AuroraSchedulerClient schedulerClient, - ScheduledExecutorServiceFactory executorServiceFactory, - ScoringModelsManager scoringModelsManager, - TensorflowModelsManager tensorflowModelsManager, - SearchStatsReceiver searchStatsReceiver, - SearchDecider searchDecider, - CriticalExceptionHandler criticalExceptionHandler, - Clock clock) { - this( - indexConfig, - partitionConfig, - DEFAULT_LOCAL_SCHEMA_LOCATION, - DEFAULT_ZK_SCHEMA_LOCATION, - DEFAULT_UPDATE_PERIOD_MILLIS, - zooKeeperClient, - schedulerClient, - executorServiceFactory, - scoringModelsManager, - tensorflowModelsManager, - searchStatsReceiver, - searchDecider, - criticalExceptionHandler, - clock); - } - - protected UpdateableEarlybirdStateManager( - EarlybirdIndexConfig indexConfig, - DynamicPartitionConfig partitionConfig, - String schemaLocationOnLocal, - String schemaLocationOnZK, - long updatePeriodMillis, - ZooKeeperProxy zkClient, - @Nullable AuroraSchedulerClient schedulerClient, - ScheduledExecutorServiceFactory executorServiceFactory, - ScoringModelsManager scoringModelsManager, - TensorflowModelsManager tensorflowModelsManager, - SearchStatsReceiver searchStatsReceiver, - SearchDecider searchDecider, - CriticalExceptionHandler criticalExceptionHandler, - Clock clock) { - super( - executorServiceFactory, - THREAD_NAME_PATTERN, - THREAD_IS_DAEMON, - PeriodicActionParams.withFixedDelay( - updatePeriodMillis, - TimeUnit.MILLISECONDS - ), - new ShutdownWaitTimeParams( - EXECUTOR_SHUTDOWN_WAIT_SEC, - TimeUnit.SECONDS - ), - searchStatsReceiver, - criticalExceptionHandler); - this.indexConfig = indexConfig; - this.partitionConfig = partitionConfig; - this.schemaLocationOnLocal = schemaLocationOnLocal; - this.schemaLocationOnZK = schemaLocationOnZK; - this.zkClient = zkClient; - this.schedulerClient = schedulerClient; - this.scoringModelsManager = scoringModelsManager; - this.searchDecider = searchDecider; - this.noShutdownWhenNotInLayout = new AtomicLong(0); - this.tensorflowModelsManager = tensorflowModelsManager; - this.clock = clock; - this.schemaMajorVersion = getSearchStatsReceiver().getLongGauge( - SCHEMA_MAJOR_VERSION_NAME); - this.schemaMinorVersion = getSearchStatsReceiver().getLongGauge( - SCHEMA_MINOR_VERSION_NAME); - this.lastSuccessfulSchemaReloadTimeMillis = getSearchStatsReceiver().getLongGauge( - LAST_SUCCESSFUL_SCHEMA_RELOAD_TIME_MILLIS_NAME); - this.failToLoadSchemaCount = getSearchStatsReceiver().getCounter( - FAIL_TO_LOAD_SCHEMA_COUNT_NAME); - this.hostIsCanarySchema = getSearchStatsReceiver().getLongGauge(HOST_IS_CANARY_SCHEME); - this.didNotFindSchemaCount = getSearchStatsReceiver().getCounter( - DID_NOT_FIND_SCHEMA_COUNT_NAME); - this.lastSuccessfulPartitionConfigReloadTimeMillis = getSearchStatsReceiver().getLongGauge( - LAST_SUCCESSFUL_PARTITION_CONFIG_RELOAD_TIME_MILLIS_NAME); - this.failToLoadPartitionConfigCount = getSearchStatsReceiver().getCounter( - FAIL_TO_LOAD_PARTITION_CONFIG_COUNT_NAME); - this.hostIsInLayout = getSearchStatsReceiver().getLongGauge( - HOST_IS_IN_LAYOUT_STAT_NAME); - this.notInLayoutShutDownAttemptedCount = getSearchStatsReceiver().getCounter( - NOT_IN_LAYOUT_SHUT_DOWN_ATTEMPTED_NAME); - this.noShutdownWhenNotInLayoutGauge = getSearchStatsReceiver().getLongGauge( - NO_SHUTDOWN_WHEN_NOT_IN_LAYOUT_NAME, noShutdownWhenNotInLayout); - - updateSchemaVersionStats(indexConfig.getSchema()); - } - - private void updateSchemaVersionStats(Schema schema) { - schemaMajorVersion.set(schema.getMajorVersionNumber()); - schemaMinorVersion.set(schema.getMinorVersionNumber()); - lastSuccessfulSchemaReloadTimeMillis.set(System.currentTimeMillis()); - lastSuccessfulPartitionConfigReloadTimeMillis.set(System.currentTimeMillis()); - hostIsInLayout.set(1); - } - - private void updateSchemaVersionWithThriftSchema(ThriftSchema thriftSchema) - throws Schema.SchemaValidationException, DynamicSchema.SchemaUpdateException { - - ImmutableSchema newSchema = new ImmutableSchema( - thriftSchema, new AnalyzerFactory(), indexConfig.getCluster().getNameForStats()); - indexConfig.getSchema().updateSchema(newSchema); - tensorflowModelsManager.updateFeatureSchemaIdToMlIdMap(newSchema.getSearchFeatureSchema()); - updateSchemaVersionStats(indexConfig.getSchema()); - LOG.info("Schema updated. New Schema is: \n" + ThriftUtils.toTextFormatSafe(thriftSchema)); - } - - protected void updateSchema(ZooKeeperProxy zkClientToUse) { - // There are 3 cases: - // 1. Try to locate local schema file to canary, it might fail either because file not exist or - // ineligible versions. - // 2. Canary local schema failed, lookup schema file from zookeeper. - // 3. Both local and zookeeper updates failed, we do not update schema. Either schema not exists - // in zookeeper, or this would happened after canary schema: we updated current schema but did - // not rollback after finished. - if (updateSchemaFromLocal()) { - LOG.info("Host is used for schema canary"); - hostIsCanarySchema.set(1); - } else if (updateSchemaFromZooKeeper(zkClientToUse)) { - // Host is using schema file from zookeeper - hostIsCanarySchema.set(0); - } else { - // Schema update failed. Please check schema file exists on zookeeper and make sure - // rollback after canary. Current version: {}.{} - return; - } - } - - private boolean updateSchemaFromLocal() { - ThriftSchema thriftSchema = - loadCanaryThriftSchemaFromLocal(getCanarySchemaFileOnLocal()); - if (thriftSchema == null) { - // It is expected to not find a local schema file. The schema file only exists when the host - // is used as canary for schema updates - return false; - } - return updateSchemaFromThriftSchema(thriftSchema); - } - - private boolean updateSchemaFromZooKeeper(ZooKeeperProxy zkClientToUse) { - ThriftSchema thriftSchema = loadThriftSchemaFromZooKeeper(zkClientToUse); - if (thriftSchema == null) { - // It is expected to usually not find a schema file on ZooKeeper; one is only uploaded if the - // schema changes after the package has been compiled. All the relevant error handling and - // logging is expected to be handled by loadThriftSchemaFromZooKeeper(). - failToLoadSchemaCount.increment(); - return false; - } - return updateSchemaFromThriftSchema(thriftSchema); - } - - private boolean updateSchemaFromThriftSchema(ThriftSchema thriftSchema) { - Schema currentSchema = indexConfig.getSchema(); - if (thriftSchema.getMajorVersionNumber() != currentSchema.getMajorVersionNumber()) { - LOG.warn( - "Major version updates are not allowed. Current major version {}, try to update to {}", - currentSchema.getMajorVersionNumber(), thriftSchema.getMajorVersionNumber()); - return false; - } - if (thriftSchema.getMinorVersionNumber() > currentSchema.getMinorVersionNumber()) { - try { - updateSchemaVersionWithThriftSchema(thriftSchema); - } catch (Schema.SchemaValidationException | DynamicSchema.SchemaUpdateException e) { - LOG.warn("Exception while updating schema: ", e); - return false; - } - return true; - } else if (thriftSchema.getMinorVersionNumber() == currentSchema.getMinorVersionNumber()) { - LOG.info("Schema version to update is same as current one: {}.{}", - currentSchema.getMajorVersionNumber(), currentSchema.getMinorVersionNumber()); - return true; - } else { - LOG.info("Found schema to update, but not eligible for dynamic update. " - + "Current Version: {}.{}; Schema Version for updates: {}.{}", - currentSchema.getMajorVersionNumber(), - currentSchema.getMinorVersionNumber(), - thriftSchema.getMajorVersionNumber(), - thriftSchema.getMinorVersionNumber()); - return false; - } - } - - void updatePartitionConfig(@Nullable AuroraSchedulerClient schedulerClientToUse) { - try { - if (schedulerClientToUse == null) { - NonPagingAssert.assertFailed("aurora_scheduler_client_is_null"); - throw new PartitionConfigLoadingException("AuroraSchedulerClient can not be null."); - } - - PartitionConfig newPartitionConfig = - PartitionConfigLoader.getPartitionInfoForMesosConfig(schedulerClientToUse); - partitionConfig.setCurrentPartitionConfig(newPartitionConfig); - lastSuccessfulPartitionConfigReloadTimeMillis.set(System.currentTimeMillis()); - hostIsInLayout.set(1); - } catch (PartitionConfigLoadingException e) { - // Do not change hostIsInLayout's value if we could not load the layout. - LOG.warn("Failed to load partition config from ZooKeeper.", e); - failToLoadPartitionConfigCount.increment(); - } - } - - @Nullable - private ThriftSchema loadCanaryThriftSchemaFromLocal(LocalFile schemaFile) { - String schemaString; - if (!schemaFile.getFile().exists()) { - return null; - } - try { - schemaString = schemaFile.getCharSource().read(); - } catch (IOException e) { - LOG.warn("Fail to read from local schema file."); - return null; - } - ThriftSchema thriftSchema = new ThriftSchema(); - try { - ThriftUtils.fromTextFormat(schemaString, thriftSchema); - return thriftSchema; - } catch (TException e) { - LOG.warn("Unable to deserialize ThriftSchema loaded locally from {}.\n{}", - schemaFile.getName(), e); - return null; - } - } - - @Nullable - private ThriftSchema loadThriftSchemaFromZooKeeper(ZooKeeperProxy zkClientToUse) { - String schemaPathOnZk = getFullSchemaPathOnZK(); - byte[] rawBytes; - try { - rawBytes = zkClientToUse.getData(schemaPathOnZk, false, null); - } catch (KeeperException.NoNodeException e) { - didNotFindSchemaCount.increment(); - return null; - } catch (KeeperException e) { - LOG.warn("Exception while loading schema from ZK at {}.\n{}", schemaPathOnZk, e); - return null; - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - LOG.warn("Interrupted while loading schema from ZK at {}.\n{}", schemaPathOnZk, e); - return null; - } catch (ZooKeeperClient.ZooKeeperConnectionException e) { - LOG.warn("Exception while loading schema from ZK at {}.\n{}", schemaPathOnZk, e); - return null; - } - if (rawBytes == null) { - LOG.warn("Got null schema from ZooKeeper at {}.", schemaPathOnZk); - return null; - } - String schemaString = new String(rawBytes, Charsets.UTF_8); - ThriftSchema thriftSchema = new ThriftSchema(); - try { - ThriftUtils.fromTextFormat(schemaString, thriftSchema); - return thriftSchema; - } catch (TException e) { - LOG.warn("Unable to deserialize ThriftSchema loaded from ZK at {}.\n{}", schemaPathOnZk, e); - return null; - } - } - - @VisibleForTesting - protected String getSchemaFileName() { - return indexConfig.getCluster().name().toLowerCase() - + UpdateableEarlybirdStateManager.SCHEMA_SUFFIX - + indexConfig.getSchema().getMajorVersionNumber(); - } - - @VisibleForTesting - protected String getFullSchemaPathOnZK() { - return String.format("%s/%s", schemaLocationOnZK, getSchemaFileName()); - } - - LocalFile getCanarySchemaFileOnLocal() { - String canarySchemaFilePath = - String.format("%s/%s", schemaLocationOnLocal, getSchemaFileName()); - return new LocalFile(new File(canarySchemaFilePath)); - } - - void setNoShutdownWhenNotInLayout(boolean noShutdown) { - noShutdownWhenNotInLayout.set(noShutdown ? 1 : 0); - } - - @Override - protected void runOneIteration() { - updateSchema(zkClient); - updatePartitionConfig(schedulerClient); - - LOG.info("Reloading models."); - scoringModelsManager.reload(); - tensorflowModelsManager.run(); - - Random random = new Random(); - - try { - // We had an issue where HDFS operations were blocking, so reloading these models - // was finishing at the same time on each instance and after that every time an instance - // was reloading models, it was happening at the same time. This caused issues with HDFS - // load. We now place a "guard" waiting time after each reload so that the execution time - // on every instance is different and these calls can't easily sync to the same point in time. - int sleepSeconds = random.nextInt(30 * 60); - LOG.info("Sleeping for {} seconds", sleepSeconds); - clock.waitFor(sleepSeconds * 1000); - } catch (InterruptedException ex) { - LOG.info("Interrupted while sleeping"); - } - } - - public void setEarlybirdServer(EarlybirdServer earlybirdServer) { - this.earlybirdServer = earlybirdServer; - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/ArchiveEarlybirdIndexConfig.docx b/src/java/com/twitter/search/earlybird/archive/ArchiveEarlybirdIndexConfig.docx new file mode 100644 index 0000000000000000000000000000000000000000..dd564d3e1340084dffc2933cce20dd65516fc13c GIT binary patch literal 37678 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.getPerFieldMap()), - data.getFacetCountingArray(), - data.getDocValuesManager(), - data.getDocIDToTweetIDMapper(), - data.getTimeMapper(), - data.getIndexExtensionsData()); - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/ArchiveHDFSUtils.docx b/src/java/com/twitter/search/earlybird/archive/ArchiveHDFSUtils.docx new file mode 100644 index 0000000000000000000000000000000000000000..72f11121db9f05149b48f15e08d2a56aaf82588c GIT binary patch literal 38644 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 0; - } catch (IOException ex) { - LOG.error("Failed checking segment on hdfs: " + segment, ex); - return false; - } finally { - IOUtils.closeQuietly(fs); - } - } - - /** - * Delete the segment index directories on the HDFS. If 'deleteCurrentDir' is true, the - * index directory with the end date matching 'segment' will be deleted. If 'deleteOlderDirs', - * the index directories with the end date earlier than the the segment enddate will be deleted. - * - */ - public static void deleteHdfsSegmentDir(SegmentSyncConfig sync, SegmentInfo segment, - boolean deleteCurrentDir, boolean deleteOlderDirs) { - FileSystem fs = null; - try { - fs = HdfsUtil.getHdfsFileSystem(); - String hdfsFlushDir = segment.getSyncInfo().getHdfsFlushDir(); - String hdfsBaseDirPrefix = segment.getSyncInfo() - .getHdfsSyncDirPrefix(); - String endDateStr = extractEndDate(hdfsBaseDirPrefix); - if (endDateStr != null) { - hdfsBaseDirPrefix = hdfsBaseDirPrefix.replace(endDateStr, "*"); - } - String[] hdfsDirs = {segment.getSyncInfo().getHdfsTempFlushDir(), - hdfsBaseDirPrefix}; - for (String hdfsDir : hdfsDirs) { - FileStatus[] statuses = fs.globStatus(new Path(hdfsDir)); - if (statuses != null && statuses.length > 0) { - for (FileStatus status : statuses) { - if (status.getPath().toString().endsWith(hdfsFlushDir)) { - if (deleteCurrentDir) { - fs.delete(status.getPath(), true); - LOG.info("Deleted segment: " + status.getPath()); - } - } else { - if (deleteOlderDirs) { - fs.delete(status.getPath(), true); - LOG.info("Deleted segment: " + status.getPath()); - } - } - } - } - } - } catch (IOException e) { - LOG.error("Error delete Segment Dir :" + segment, e); - } finally { - IOUtils.closeQuietly(fs); - } - } - - /** - * Given a segment, check if there is any indices built on HDFS; if yes, return the end date - * of the index built on HDFS; otherwise, return null. - */ - public static Date getSegmentEndDateOnHdfs(SegmentSyncConfig sync, SegmentInfo segment) { - if (sync.isSegmentLoadFromHdfsEnabled()) { - LOG.info("About to check segment on hdfs: " + segment - + " enabled: " + sync.isSegmentLoadFromHdfsEnabled()); - - FileSystem fs = null; - try { - String hdfsBaseDirPrefix = segment.getSyncInfo() - .getHdfsSyncDirPrefix(); - String endDateStr = extractEndDate(hdfsBaseDirPrefix); - if (endDateStr == null) { - return null; - } - hdfsBaseDirPrefix = hdfsBaseDirPrefix.replace(endDateStr, "*"); - - fs = HdfsUtil.getHdfsFileSystem(); - FileStatus[] statuses = fs.globStatus(new Path(hdfsBaseDirPrefix)); - if (statuses != null && statuses.length > 0) { - Path hdfsSyncPath = statuses[statuses.length - 1].getPath(); - String hdfsSyncPathName = hdfsSyncPath.getName(); - endDateStr = extractEndDate(hdfsSyncPathName); - return Segment.getSegmentEndDate(endDateStr); - } - } catch (Exception ex) { - LOG.error("Failed getting segment from hdfs: " + segment, ex); - return null; - } finally { - IOUtils.closeQuietly(fs); - } - } - return null; - } - - private static String extractEndDate(String segmentDirPattern) { - Matcher matcher = SEGMENT_NAME_PATTERN.matcher(segmentDirPattern); - if (!matcher.find()) { - return null; - } - - try { - return matcher.group(MATCHER_GROUP_END_DATE); - } catch (IllegalStateException e) { - LOG.error("Match operation failed: " + segmentDirPattern, e); - return null; - } catch (IndexOutOfBoundsException e) { - LOG.error(" No group in the pattern with the given index : " + segmentDirPattern, e); - return null; - } - } - - /** - * Converts the given date to a path, using the given separator. For example, if the sate is - * January 5, 2019, and the separator is "/", this method will return "2019/01/05". - */ - public static String dateToPath(Date date, String separator) { - StringBuilder builder = new StringBuilder(); - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - builder.append(cal.get(Calendar.YEAR)) - .append(separator) - .append(padding(cal.get(Calendar.MONTH) + 1, 2)) - .append(separator) - .append(padding(cal.get(Calendar.DAY_OF_MONTH), 2)); - return builder.toString(); - } - - private static String padding(int value, int len) { - return String.format("%0" + len + "d", value); - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/ArchiveOnDiskEarlybirdIndexConfig.docx b/src/java/com/twitter/search/earlybird/archive/ArchiveOnDiskEarlybirdIndexConfig.docx new file mode 100644 index 0000000000000000000000000000000000000000..70c40707d04bdf1ccb7d752e741a1fd212bb172b GIT binary patch literal 37497 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%0Dyt%CJnzyI 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/ArchiveOnDiskEarlybirdIndexConfig.java b/src/java/com/twitter/search/earlybird/archive/ArchiveOnDiskEarlybirdIndexConfig.java deleted file mode 100644 index ad6f3981c..000000000 --- a/src/java/com/twitter/search/earlybird/archive/ArchiveOnDiskEarlybirdIndexConfig.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.twitter.search.earlybird.archive; - -import java.io.File; -import java.io.IOException; - -import org.apache.lucene.store.Directory; -import org.apache.lucene.store.FSDirectory; - -import com.twitter.decider.Decider; -import com.twitter.search.common.schema.earlybird.EarlybirdCluster; -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.core.earlybird.index.EarlybirdIndexSegmentData; -import com.twitter.search.core.earlybird.index.EarlybirdLuceneIndexSegmentData; -import com.twitter.search.core.earlybird.index.extensions.EarlybirdIndexExtensionsFactory; -import com.twitter.search.earlybird.exception.CriticalExceptionHandler; -import com.twitter.search.earlybird.index.DocValuesBasedTimeMapper; -import com.twitter.search.earlybird.index.DocValuesBasedTweetIDMapper; -import com.twitter.search.earlybird.partition.SearchIndexingMetricSet; -import com.twitter.search.earlybird.partition.SegmentSyncInfo; - -/** - * Index config for the on-disk Tweet clusters. - */ -public class ArchiveOnDiskEarlybirdIndexConfig extends ArchiveEarlybirdIndexConfig { - public ArchiveOnDiskEarlybirdIndexConfig( - Decider decider, SearchIndexingMetricSet searchIndexingMetricSet, - CriticalExceptionHandler criticalExceptionHandler) { - super(EarlybirdCluster.FULL_ARCHIVE, decider, searchIndexingMetricSet, - criticalExceptionHandler); - } - - @Override - public boolean isIndexStoredOnDisk() { - return true; - } - - @Override - public Directory newLuceneDirectory(SegmentSyncInfo segmentSyncInfo) throws IOException { - File dirPath = new File(segmentSyncInfo.getLocalLuceneSyncDir()); - return FSDirectory.open(dirPath.toPath()); - } - - @Override - public EarlybirdIndexSegmentData newSegmentData( - int maxSegmentSize, - long timeSliceID, - Directory dir, - EarlybirdIndexExtensionsFactory extensionsFactory) { - return new EarlybirdLuceneIndexSegmentData( - dir, - maxSegmentSize, - timeSliceID, - getSchema(), - new DocValuesBasedTweetIDMapper(), - new DocValuesBasedTimeMapper(), - extensionsFactory); - } - - @Override - public EarlybirdIndexSegmentData loadSegmentData( - FlushInfo flushInfo, - DataDeserializer dataInputStream, - Directory dir, - EarlybirdIndexExtensionsFactory extensionsFactory) throws IOException { - // IO Exception will be thrown if there's an error during load - return (new EarlybirdLuceneIndexSegmentData.OnDiskSegmentDataFlushHandler( - getSchema(), - dir, - extensionsFactory, - new DocValuesBasedTweetIDMapper.FlushHandler(), - new DocValuesBasedTimeMapper.FlushHandler())).load(flushInfo, dataInputStream); - } - - @Override - public boolean supportOutOfOrderIndexing() { - return false; - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/ArchiveSearchPartitionManager.docx b/src/java/com/twitter/search/earlybird/archive/ArchiveSearchPartitionManager.docx new file mode 100644 index 0000000000000000000000000000000000000000..6235bfe3a769813935c30d134465f49201fbc82b GIT binary patch literal 42004 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 z segmentManager.getSegmentInfos(Filter.NeedsIndexing, Order.OLD_TO_NEW)); - - // In the archive cluster, the current segment needs to be loaded too. - List allSegments = - Lists.newArrayList(segmentManager.getSegmentInfos(Filter.All, Order.OLD_TO_NEW)); - completeSegmentManager.loadCompleteSegments(allSegments); - - completeSegmentManager.buildMultiSegmentTermDictionary(); - - completeSegmentManager.warmSegments(allSegments); - - LOG.info("Starting to run UserUpdatesKafkaConsumer"); - new Thread(userUpdatesStreamIndexer::run, "userupdates-stream-indexer").start(); - - if (EarlybirdConfig.consumeUserScrubGeoEvents()) { - LOG.info("Starting to run UserScrubGeoEventKafkaConsumer"); - new Thread(userScrubGeoEventStreamIndexer::run, - "userScrubGeoEvent-stream-indexer").start(); - } - } - - private static List truncateSegmentList(List segmentList, - int maxNumSegments) { - // Maybe cut-off the beginning of the sorted list of IDs. - if (maxNumSegments > 0 && maxNumSegments < segmentList.size()) { - return segmentList.subList(segmentList.size() - maxNumSegments, segmentList.size()); - } else { - return segmentList; - } - } - - - @Override - protected void indexingLoop(boolean firstLoop) throws Exception { - if (firstLoop) { - EarlybirdStatus.beginEvent( - INDEX_CURRENT_SEGMENT, getSearchIndexingMetricSet().startupInCurrentSegment); - } - - List timeSlices = timeSlicer.getTimeSlicesInTierRange(); - PartitionConfig curPartitionConfig = dynamicPartitionConfig.getCurrentPartitionConfig(); - timeSlices = truncateSegmentList(timeSlices, curPartitionConfig.getMaxEnabledLocalSegments()); - - for (final ArchiveTimeSlice timeSlice : timeSlices) { - // If any timeslice build failed, do not try to build timeslice after that to prevent - // possible holes between timeslices. - try { - if (!processArchiveTimeSlice(timeSlice)) { - LOG.warn("Building timeslice {} has failed, stopping future builds.", - timeSlice.getDescription()); - indexingMetricSet.archiveTimeSliceBuildFailedCounter.increment(); - return; - } - } catch (CoordinatedEarlybirdActionLockFailed e) { - // If the timeslice build failed because of lock coordination, we can wait for the next - // iteration to build again. - return; - } - } - - if (firstLoop) { - EarlybirdStatus.endEvent( - INDEX_CURRENT_SEGMENT, getSearchIndexingMetricSet().startupInCurrentSegment); - LOG.info("First indexing loop complete. Setting up query cache..."); - EarlybirdStatus.beginEvent( - SETUP_QUERY_CACHE, getSearchIndexingMetricSet().startupInQueryCacheUpdates); - } - setupQueryCacheIfNeeded(); - - if (EarlybirdStatus.isStarting() && queryCacheManager.allTasksRan()) { - LOG.info("Query cache setup complete. Becoming current now..."); - EarlybirdStatus.endEvent( - SETUP_QUERY_CACHE, getSearchIndexingMetricSet().startupInQueryCacheUpdates); - - becomeCurrent(); - EarlybirdStatus.recordEarlybirdEvent("Archive Earlybird is current"); - } - - updateIndexFreshnessStats(timeSlices); - } - - @VisibleForTesting - protected boolean processArchiveTimeSlice(final ArchiveTimeSlice timeSlice) - throws CoordinatedEarlybirdActionLockFailed, IOException { - PartitionConfig curPartitionConfig = dynamicPartitionConfig.getCurrentPartitionConfig(); - long minStatusID = timeSlice.getMinStatusID(curPartitionConfig.getIndexingHashPartitionID()); - SegmentInfo segmentInfo = segmentManager.getSegmentInfo(minStatusID); - if (segmentInfo == null) { - return indexSegmentFromScratch(timeSlice); - } else if (existingSegmentNeedsUpdating(timeSlice, segmentInfo)) { - return indexNewDayAndAppendExistingSegment(timeSlice, segmentInfo); - } - return true; - } - - - @VisibleForTesting - SegmentInfo newSegmentInfo(ArchiveTimeSlice timeSlice) throws IOException { - return new SegmentInfo(segmentDataProvider.newArchiveSegment(timeSlice), - segmentManager.getEarlybirdSegmentFactory(), segmentSyncConfig); - } - - private boolean indexNewDayAndAppendExistingSegment(final ArchiveTimeSlice timeSlice, - SegmentInfo segmentInfo) - throws CoordinatedEarlybirdActionLockFailed, IOException { - - LOG.info("Updating segment: {}; new endDate will be {} segmentInfo: {}", - segmentInfo.getSegment().getTimeSliceID(), timeSlice.getEndDate(), segmentInfo); - - // Create another new SegmentInfo for indexing - final SegmentInfo newSegmentInfoForIndexing = newSegmentInfo(timeSlice); - // make a final reference of the old segment info to be passed into closure. - final SegmentInfo oldSegmentInfo = segmentInfo; - - // Sanity check: the old and new segment should not share the same lucene directory. - Preconditions.checkState( - !newSegmentInfoForIndexing.getSyncInfo().getLocalLuceneSyncDir().equals( - oldSegmentInfo.getSyncInfo().getLocalLuceneSyncDir())); - - Preconditions.checkState( - !newSegmentInfoForIndexing.getSyncInfo().getLocalSyncDir().equals( - oldSegmentInfo.getSyncInfo().getLocalSyncDir())); - - final ArchiveSegment oldSegment = (ArchiveSegment) segmentInfo.getSegment(); - - return indexSegment(newSegmentInfoForIndexing, oldSegmentInfo, input -> { - // we're updating the segment - only index days after the old end date, but only if - // we're in the on-disk archive, and we're sure that the previous days have already - // been indexed. - return !earlybirdIndexConfig.isIndexStoredOnDisk() - // First time around, and the segment has not been indexed and optimized yet, - // we will want to add all the days - || !oldSegmentInfo.isOptimized() - || oldSegmentInfo.getIndexSegment().getIndexStats().getStatusCount() == 0 - || !oldSegment.getDataEndDate().before(timeSlice.getEndDate()) - // Index any new days - || input.after(oldSegment.getDataEndDate()); - }); - } - - private boolean existingSegmentNeedsUpdating(ArchiveTimeSlice timeSlice, - SegmentInfo segmentInfo) { - return ((ArchiveSegment) segmentInfo.getSegment()) - .getDataEndDate().before(timeSlice.getEndDate()) - // First time around, the end date is the same as the timeSlice end date, but - // the segment has not been indexed and optimized yet - || (!segmentInfo.isOptimized() && !segmentInfo.wasIndexed()) - // If indexing failed, this index will not be marked as complete, and we will want - // to reindex - || !segmentInfo.isComplete(); - } - - private boolean indexSegmentFromScratch(ArchiveTimeSlice timeSlice) throws - CoordinatedEarlybirdActionLockFailed, IOException { - - SegmentInfo segmentInfo = newSegmentInfo(timeSlice); - LOG.info("Creating segment: " + segmentInfo.getSegment().getTimeSliceID() - + "; new endDate will be " + timeSlice.getEndDate() + " segmentInfo: " + segmentInfo); - - return indexSegment(segmentInfo, null, ArchiveSegment.MATCH_ALL_DATE_PREDICATE); - } - - private void updateIndexFreshnessStats(List timeSlices) { - if (!timeSlices.isEmpty()) { - ArchiveTimeSlice lastTimeslice = timeSlices.get(timeSlices.size() - 1); - - // Add ~24 hours to start of end date to estimate freshest tweet time. - indexingMetricSet.freshestTweetTimeMillis.set( - lastTimeslice.getEndDate().getTime() + ONE_DAY_MILLIS); - - PartitionConfig curPartitionConfig = dynamicPartitionConfig.getCurrentPartitionConfig(); - long maxStatusId = lastTimeslice.getMaxStatusID( - curPartitionConfig.getIndexingHashPartitionID()); - if (maxStatusId > indexingMetricSet.highestStatusId.get()) { - indexingMetricSet.highestStatusId.set(maxStatusId); - } - } - } - - @Override - public void shutDownIndexing() { - LOG.info("Shutting down."); - userUpdatesStreamIndexer.close(); - userScrubGeoEventStreamIndexer.close(); - LOG.info("Closed User Event Kafka Consumers. Now Shutting down reader set."); - getSegmentDataProvider().getSegmentDataReaderSet().stopAll(); - } - - /** - * Attempts to index new days of data into the provided segment, indexing only the days that - * match the "dateFilter" predicate. - * @return true iff indexing succeeded, false otherwise. - */ - @VisibleForTesting - protected boolean indexSegment(final SegmentInfo segmentInfo, - @Nullable final SegmentInfo segmentToAppend, - final Predicate dateFilter) - throws CoordinatedEarlybirdActionLockFailed, IOException { - // Don't coordinate while we're starting up - if (!EarlybirdStatus.isStarting()) { - return coordinatedDailyUpdate.execute(segmentInfo.getSegmentName(), - isCoordinated -> innerIndexSegment(segmentInfo, segmentToAppend, dateFilter)); - } else { - return innerIndexSegment(segmentInfo, segmentToAppend, dateFilter); - } - } - - private boolean innerIndexSegment(SegmentInfo segmentInfo, - @Nullable SegmentInfo segmentToAppend, - Predicate dateFilter) - throws IOException { - - // First try to load the new day from HDFS / Local disk - if (new SegmentLoader(segmentSyncConfig, criticalExceptionHandler).load(segmentInfo)) { - LOG.info("Successful loaded segment for new day: " + segmentInfo); - segmentManager.putSegmentInfo(segmentInfo); - gcAfterIndexing.increment(); - GCUtil.runGC(); - return true; - } - - LOG.info("Failed to load segment for new day. Will index segment: " + segmentInfo); - RecordReader tweetReader = ((ArchiveSegment) segmentInfo.getSegment()) - .getStatusRecordReader(earlybirdIndexConfig.createDocumentFactory(), dateFilter); - try { - // Read and index the statuses - boolean success = newSimpleSegmentIndexer(tweetReader, segmentToAppend) - .indexSegment(segmentInfo); - if (!success) { - return false; - } - } finally { - tweetReader.stop(); - } - - if (!SegmentOptimizer.optimize(segmentInfo)) { - // We consider the whole indexing event as failed if we fail to optimize. - LOG.error("Failed to optimize segment: " + segmentInfo); - segmentInfo.deleteLocalIndexedSegmentDirectoryImmediately(); - return false; - } - - if (!segmentWarmer.warmSegmentIfNecessary(segmentInfo)) { - // We consider the whole indexing event as failed if we failed to warm (because we open - // index readers in the warmer). - LOG.error("Failed to warm segment: " + segmentInfo); - segmentInfo.deleteLocalIndexedSegmentDirectoryImmediately(); - return false; - } - - // Flush and upload segment to HDFS. If this fails, we just log a warning and return true. - boolean success = new SegmentHdfsFlusher(zkTryLockFactory, segmentSyncConfig) - .flushSegmentToDiskAndHDFS(segmentInfo); - if (!success) { - LOG.warn("Failed to flush segment to HDFS: " + segmentInfo); - } - - segmentManager.putSegmentInfo(segmentInfo); - gcAfterIndexing.increment(); - GCUtil.runGC(); - return true; - } - - @VisibleForTesting - protected SimpleSegmentIndexer newSimpleSegmentIndexer( - RecordReader tweetReader, SegmentInfo segmentToAppend) { - return new SimpleSegmentIndexer(tweetReader, indexingMetricSet, segmentToAppend); - } - - @Override - public boolean isCaughtUpForTests() { - return EarlybirdStatus.getStatusCode() == EarlybirdStatusCode.CURRENT; - } - - public CoordinatedEarlybirdActionInterface getCoordinatedOptimizer() { - return this.coordinatedDailyUpdate; - } - - public ArchiveTimeSlicer getTimeSlicer() { - return timeSlicer; - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/ArchiveSegment.docx b/src/java/com/twitter/search/earlybird/archive/ArchiveSegment.docx new file mode 100644 index 0000000000000000000000000000000000000000..6c1acebfb27cf40a1ca53943cd275e18eac7b20c GIT binary patch literal 37715 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 L2+SUL`anDYFsqgj literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/ArchiveSegment.java b/src/java/com/twitter/search/earlybird/archive/ArchiveSegment.java deleted file mode 100644 index 9d18a48e4..000000000 --- a/src/java/com/twitter/search/earlybird/archive/ArchiveSegment.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.twitter.search.earlybird.archive; - -import java.io.IOException; -import java.util.Date; - -import com.google.common.base.Predicate; -import com.google.common.base.Predicates; - -import com.twitter.search.common.partitioning.base.Segment; -import com.twitter.search.common.partitioning.base.TimeSlice; -import com.twitter.search.common.schema.thriftjava.ThriftIndexingEvent; -import com.twitter.search.common.util.io.recordreader.RecordReader; -import com.twitter.search.earlybird.archive.ArchiveTimeSlicer.ArchiveTimeSlice; -import com.twitter.search.earlybird.document.DocumentFactory; -import com.twitter.search.earlybird.document.TweetDocument; - -public class ArchiveSegment extends Segment { - private final ArchiveTimeSlice archiveTimeSlice; - - public static final Predicate MATCH_ALL_DATE_PREDICATE = input -> true; - - // Constructor used for indexing an archive segment - public ArchiveSegment(ArchiveTimeSlice archiveTimeSlice, - int hashPartitionID, - int maxSegmentSize) { - super(new TimeSlice(archiveTimeSlice.getMinStatusID(hashPartitionID), - maxSegmentSize, hashPartitionID, - archiveTimeSlice.getNumHashPartitions()), - archiveTimeSlice.getEndDate().getTime()); - this.archiveTimeSlice = archiveTimeSlice; - } - - /** - * Constructor used for loading a flushed segment. Only be used by SegmentBuilder; Earlybird - * does not use this. - */ - ArchiveSegment(long timeSliceId, - int maxSegmentSize, - int partitions, - int hashPartitionID, - Date dataEndDate) { - super(new TimeSlice(timeSliceId, maxSegmentSize, hashPartitionID, partitions), - dataEndDate.getTime()); - // No archive timeslice is needed for loading. - this.archiveTimeSlice = null; - } - - /** - * Returns the tweets reader for this segment. - * - * @param documentFactory The factory that converts ThriftDocuments to Lucene documents. - */ - public RecordReader getStatusRecordReader( - DocumentFactory documentFactory) throws IOException { - return getStatusRecordReader(documentFactory, Predicates.alwaysTrue()); - } - - /** - * Returns the tweets reader for this segment. - * - * @param documentFactory The factory that converts ThriftDocuments to Lucene documents. - * @param filter A predicate that filters tweets based on the date they were created on. - */ - public RecordReader getStatusRecordReader( - DocumentFactory documentFactory, - Predicate filter) throws IOException { - if (archiveTimeSlice != null) { - return archiveTimeSlice.getStatusReader(this, documentFactory, filter); - } else { - throw new IllegalStateException("ArchiveSegment has no associated ArchiveTimeslice." - + "This ArchiveSegment can only be used for loading flushed segments."); - } - } - - public Date getDataEndDate() { - return archiveTimeSlice == null - ? new Date(getDataEndDateInclusiveMillis()) : archiveTimeSlice.getEndDate(); - } - - public ArchiveTimeSlice getArchiveTimeSlice() { - return archiveTimeSlice; - } - - @Override - public String toString() { - return super.toString() + " " + archiveTimeSlice.getDescription(); - } -} diff --git a/src/java/com/twitter/search/earlybird/archive/ArchiveSegmentDataProvider.docx b/src/java/com/twitter/search/earlybird/archive/ArchiveSegmentDataProvider.docx new file mode 100644 index 0000000000000000000000000000000000000000..8a8cd531de490423dca705471dcd8edcf6e7e501 GIT binary patch literal 37649 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/earlybird/archive/ArchiveSegmentDataProvider.java b/src/java/com/twitter/search/earlybird/archive/ArchiveSegmentDataProvider.java deleted file mode 100644 index 07b44df5c..000000000 --- a/src/java/com/twitter/search/earlybird/archive/ArchiveSegmentDataProvider.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.twitter.search.earlybird.archive; - -import java.io.IOException; -import java.util.List; - -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; - -import com.twitter.search.common.partitioning.base.Segment; -import com.twitter.search.common.schema.thriftjava.ThriftIndexingEvent; -import com.twitter.search.common.util.io.recordreader.RecordReader; -import com.twitter.search.earlybird.EarlybirdIndexConfig; -import com.twitter.search.earlybird.archive.ArchiveTimeSlicer.ArchiveTimeSlice; -import com.twitter.search.earlybird.common.config.EarlybirdConfig; -import com.twitter.search.earlybird.document.DocumentFactory; -import com.twitter.search.earlybird.document.TweetDocument; -import com.twitter.search.earlybird.partition.DynamicPartitionConfig; -import com.twitter.search.earlybird.partition.SegmentInfo; -import com.twitter.search.earlybird.segment.EmptySegmentDataReaderSet; -import com.twitter.search.earlybird.segment.SegmentDataProvider; -import com.twitter.search.earlybird.segment.SegmentDataReaderSet; - -public class ArchiveSegmentDataProvider implements SegmentDataProvider { - private static final org.slf4j.Logger LOG = - org.slf4j.LoggerFactory.getLogger(ArchiveSegmentDataProvider.class); - - private DynamicPartitionConfig dynamicPartitionConfig; - private final ArchiveTimeSlicer timeSlicer; - - private final DocumentFactory documentFactory; - - private final SegmentDataReaderSet readerSet; - - public ArchiveSegmentDataProvider( - DynamicPartitionConfig dynamicPartitionConfig, - ArchiveTimeSlicer timeSlicer, - EarlybirdIndexConfig earlybirdIndexConfig) throws IOException { - this.dynamicPartitionConfig = dynamicPartitionConfig; - this.timeSlicer = timeSlicer; - this.readerSet = createSegmentDataReaderSet(); - this.documentFactory = earlybirdIndexConfig.createDocumentFactory(); - } - - @Override - public List newSegmentList() throws IOException { - List timeSlices = timeSlicer.getTimeSlicesInTierRange(); - if (timeSlices == null || timeSlices.isEmpty()) { - return Lists.newArrayList(); - } - List segments = Lists.newArrayListWithCapacity(timeSlices.size()); - for (ArchiveTimeSlice timeSlice : timeSlices) { - segments.add(newArchiveSegment(timeSlice)); - } - return segments; - } - - /** - * Creates a new Segment instance for the given timeslice. - */ - public ArchiveSegment newArchiveSegment(ArchiveTimeSlice archiveTimeSlice) { - return new ArchiveSegment( - archiveTimeSlice, - dynamicPartitionConfig.getCurrentPartitionConfig().getIndexingHashPartitionID(), - EarlybirdConfig.getMaxSegmentSize()); - } - - @Override - public SegmentDataReaderSet getSegmentDataReaderSet() { - return readerSet; - } - - private EmptySegmentDataReaderSet createSegmentDataReaderSet() throws IOException { - return new EmptySegmentDataReaderSet() { - - @Override - public RecordReader newDocumentReader(SegmentInfo segmentInfo) - throws IOException { - Segment segment = segmentInfo.getSegment(); - Preconditions.checkArgument(segment instanceof ArchiveSegment); - return ((ArchiveSegment) segment).getStatusRecordReader(documentFactory); - } - }; - } -}

    5um=cj4IV2qY|vDMx>$xj!$3R7>_!Wub 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/RealtimeIndexTerms.java b/src/java/com/twitter/search/core/earlybird/index/inverted/RealtimeIndexTerms.java deleted file mode 100644 index 7f6c60b97..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/RealtimeIndexTerms.java +++ /dev/null @@ -1,365 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.util.Iterator; -import java.util.TreeSet; - -import com.google.common.base.Preconditions; - -import org.apache.lucene.index.BaseTermsEnum; -import org.apache.lucene.index.ImpactsEnum; -import org.apache.lucene.index.PostingsEnum; -import org.apache.lucene.index.SlowImpactsEnum; -import org.apache.lucene.index.Terms; -import org.apache.lucene.index.TermsEnum; -import org.apache.lucene.util.BytesRef; - -import com.twitter.search.common.hashtable.HashTable; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.util.hash.KeysSource; - -public class RealtimeIndexTerms extends Terms { - // Calling InMemoryTermsEnum.next() creates a full copy of the entire term dictionary, and can - // be quite expensive. We don't expect these calls to happen, and they shpould not happen on the - // regular read path. We stat them here just in case to see if there is any unexpected usage. - private static final SearchCounter TERMS_ENUM_NEXT_CALLS = - SearchCounter.export("in_memory_terms_enum_next_calls"); - private static final SearchCounter TERMS_ENUM_CREATE_TERM_SET = - SearchCounter.export("in_memory_terms_enum_next_create_term_set"); - private static final SearchCounter TERMS_ENUM_CREATE_TERM_SET_SIZE = - SearchCounter.export("in_memory_terms_enum_next_create_term_set_size"); - - private final InvertedRealtimeIndex index; - private final int maxPublishedPointer; - - public RealtimeIndexTerms(InvertedRealtimeIndex index, int maxPublishedPointer) { - this.index = index; - this.maxPublishedPointer = maxPublishedPointer; - } - - @Override - public long size() { - return index.getNumTerms(); - } - - @Override - public TermsEnum iterator() { - return index.createTermsEnum(maxPublishedPointer); - } - - /** - * This TermsEnum use a tree set to support {@link TermsEnum#next()} method. However, this is not - * efficient enough to support realtime operation. {@link TermsEnum#seekCeil} is not fully - * supported in this termEnum. - */ - public static class InMemoryTermsEnum extends BaseTermsEnum { - private final InvertedRealtimeIndex index; - private final int maxPublishedPointer; - private int termID = -1; - private BytesRef bytesRef = new BytesRef(); - private Iterator termIter; - private TreeSet termSet; - - public InMemoryTermsEnum(InvertedRealtimeIndex index, int maxPublishedPointer) { - this.index = index; - this.maxPublishedPointer = maxPublishedPointer; - termIter = null; - } - - @Override - public int docFreq() { - return index.getDF(termID); - } - - @Override - public PostingsEnum postings(PostingsEnum reuse, int flags) { - int postingsPointer = index.getPostingListPointer(termID); - return index.getPostingList().postings(postingsPointer, docFreq(), maxPublishedPointer); - } - - @Override - public ImpactsEnum impacts(int flags) { - return new SlowImpactsEnum(postings(null, flags)); - } - - @Override - public SeekStatus seekCeil(BytesRef text) { - // Nullify termIter. - termIter = null; - - termID = index.lookupTerm(text); - - if (termID == -1) { - return SeekStatus.END; - } else { - index.getTerm(termID, bytesRef); - return SeekStatus.FOUND; - } - } - - @Override - public BytesRef next() { - TERMS_ENUM_NEXT_CALLS.increment(); - if (termSet == null) { - termSet = new TreeSet<>(); - KeysSource keysource = index.getKeysSource(); - keysource.rewind(); - int numTerms = keysource.getNumberOfKeys(); - for (int i = 0; i < numTerms; ++i) { - BytesRef ref = keysource.nextKey(); - // we need to clone the ref since the keysource is reusing the returned BytesRef - // instance and we are storing it - termSet.add(ref.clone()); - } - TERMS_ENUM_CREATE_TERM_SET.increment(); - TERMS_ENUM_CREATE_TERM_SET_SIZE.add(numTerms); - } - - // Construct termIter from the subset. - if (termIter == null) { - termIter = termSet.tailSet(bytesRef, true).iterator(); - } - - if (termIter.hasNext()) { - bytesRef = termIter.next(); - termID = index.lookupTerm(bytesRef); - } else { - termID = -1; - bytesRef = null; - } - return bytesRef; - } - - @Override - public long ord() { - return termID; - } - - @Override - public void seekExact(long ord) { - // Nullify termIter. - termIter = null; - - if (ord < index.getNumTerms()) { - termID = (int) ord; - index.getTerm(termID, bytesRef); - } - } - - @Override - public BytesRef term() { - return bytesRef; - } - - @Override - public long totalTermFreq() { - return docFreq(); - } - } - - /** - * This TermsEnum use a {@link SkipListContainer} backed termsSkipList provided by - * {@link InvertedRealtimeIndex} to supported ordered terms operations like - * {@link TermsEnum#next()} and {@link TermsEnum#seekCeil}. - */ - public static class SkipListInMemoryTermsEnum extends BaseTermsEnum { - private final InvertedRealtimeIndex index; - - private int termID = -1; - private BytesRef bytesRef = new BytesRef(); - private int nextTermIDPointer; - - /** - * {@link #nextTermIDPointer} is used to record pointer to next termsID to accelerate - * {@link #next}. However, {@link #seekCeil} and {@link #seekExact} may jump to an arbitrary - * term so the {@link #nextTermIDPointer} may not be correct, and this flag is used to check if - * this happens. If this flag is false, {@link #correctNextTermIDPointer} should be called to - * correct the value. - */ - private boolean isNextTermIDPointerCorrect; - - private final SkipListContainer termsSkipList; - private final InvertedRealtimeIndex.TermsSkipListComparator termsSkipListComparator; - private final int maxPublishedPointer; - - /** - * Creates a new {@link TermsEnum} for a skip list-based sorted real-time term dictionary. - */ - public SkipListInMemoryTermsEnum(InvertedRealtimeIndex index, int maxPublishedPointer) { - Preconditions.checkNotNull(index.getTermsSkipList()); - - this.index = index; - this.termsSkipList = index.getTermsSkipList(); - - // Each Terms Enum shall have their own comparators to be thread safe. - this.termsSkipListComparator = - new InvertedRealtimeIndex.TermsSkipListComparator(index); - this.nextTermIDPointer = - termsSkipList.getNextPointer(SkipListContainer.FIRST_LIST_HEAD); - this.isNextTermIDPointerCorrect = true; - this.maxPublishedPointer = maxPublishedPointer; - } - - @Override - public int docFreq() { - return index.getDF(termID); - } - - @Override - public PostingsEnum postings(PostingsEnum reuse, int flags) { - int postingsPointer = index.getPostingListPointer(termID); - return index.getPostingList().postings(postingsPointer, docFreq(), maxPublishedPointer); - } - - @Override - public ImpactsEnum impacts(int flags) { - return new SlowImpactsEnum(postings(null, flags)); - } - - @Override - public SeekStatus seekCeil(BytesRef text) { - // Next term pointer is not correct anymore since seek ceil - // will jump to an arbitrary term. - isNextTermIDPointerCorrect = false; - - // Doing precise lookup first. - termID = index.lookupTerm(text); - - // Doing ceil lookup if not found, otherwise we are good. - if (termID == -1) { - return seekCeilWithSkipList(text); - } else { - index.getTerm(termID, bytesRef); - return SeekStatus.FOUND; - } - } - - /** - * Doing ceil terms search with terms skip list. - */ - private SeekStatus seekCeilWithSkipList(BytesRef text) { - int termIDPointer = termsSkipList.searchCeil(text, - SkipListContainer.FIRST_LIST_HEAD, - termsSkipListComparator, - null); - - // End reached but still cannot found a ceil term. - if (termIDPointer == SkipListContainer.FIRST_LIST_HEAD) { - termID = HashTable.EMPTY_SLOT; - return SeekStatus.END; - } - - termID = termsSkipList.getValue(termIDPointer); - - // Set next termID pointer and is correct flag. - nextTermIDPointer = termsSkipList.getNextPointer(termIDPointer); - isNextTermIDPointerCorrect = true; - - // Found a ceil term but not the precise match. - index.getTerm(termID, bytesRef); - return SeekStatus.NOT_FOUND; - } - - /** - * {@link #nextTermIDPointer} is used to record the pointer to next termID. This method is used - * to correct {@link #nextTermIDPointer} to correct value after {@link #seekCeil} or - * {@link #seekExact} dropped current term to arbitrary point. - */ - private void correctNextTermIDPointer() { - final int curTermIDPointer = termsSkipList.search( - bytesRef, - SkipListContainer.FIRST_LIST_HEAD, - termsSkipListComparator, - null); - // Must be able to find the exact term. - assert termID == HashTable.EMPTY_SLOT - || termID == termsSkipList.getValue(curTermIDPointer); - - nextTermIDPointer = termsSkipList.getNextPointer(curTermIDPointer); - isNextTermIDPointerCorrect = true; - } - - @Override - public BytesRef next() { - // Correct nextTermIDPointer first if not correct due to seekExact or seekCeil. - if (!isNextTermIDPointerCorrect) { - correctNextTermIDPointer(); - } - - // Skip list is exhausted. - if (nextTermIDPointer == SkipListContainer.FIRST_LIST_HEAD) { - termID = HashTable.EMPTY_SLOT; - return null; - } - - termID = termsSkipList.getValue(nextTermIDPointer); - - index.getTerm(termID, bytesRef); - - // Set next termID Pointer. - nextTermIDPointer = termsSkipList.getNextPointer(nextTermIDPointer); - return bytesRef; - } - - @Override - public long ord() { - return termID; - } - - @Override - public void seekExact(long ord) { - if (ord < index.getNumTerms()) { - termID = (int) ord; - index.getTerm(termID, bytesRef); - - // Next term pointer is not correct anymore since seek exact - // just jump to an arbitrary term. - isNextTermIDPointerCorrect = false; - } - } - - @Override - public BytesRef term() { - return bytesRef; - } - - @Override - public long totalTermFreq() { - return docFreq(); - } - } - - @Override - public long getSumTotalTermFreq() { - return index.getSumTotalTermFreq(); - } - - @Override - public long getSumDocFreq() { - return index.getSumTermDocFreq(); - } - - @Override - public int getDocCount() { - return index.getNumDocs(); - } - - @Override - public boolean hasFreqs() { - return true; - } - - @Override - public boolean hasOffsets() { - return false; - } - - @Override - public boolean hasPositions() { - return true; - } - - @Override - public boolean hasPayloads() { - return true; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListComparator.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListComparator.docx new file mode 100644 index 0000000000000000000000000000000000000000..22868473a64e3d6ae95a442b49d621376fce2762 GIT binary patch literal 37359 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 F2LOH7?DGHs literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListComparator.java b/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListComparator.java deleted file mode 100644 index 3c23de5d1..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListComparator.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -/** - * Comparator interface for {@link SkipListContainer}, - * see sample implementation {@link SkipListIntegerComparator}. - * - * Notice: less/equal/greater here refer to the order precedence, instead of numerical value. - */ -public interface SkipListComparator { - - /** - * Determine the order between the given key and the key of the given targetValue. - * Notice, usually key of a value could be derived from the value along. - * - * Implementation of this method should consider sentinel value, see {@link #getSentinelValue()}. - * - * Can include position data (primarily for text posting lists). Position should be ignored if - * the skip list was constructed without positions enabled. - * - * @return negative, zero, or positive to indicate if first value is - * less than, equal to, or greater than the second value, respectively. - */ - int compareKeyWithValue(K key, int targetValue, int targetPosition); - - /** - * Determine the order of two given values based on their keys. - * Notice, usually key of a value could be derived from the value along. - * - * Implementation of this method should consider sentinel value, see {@link #getSentinelValue()}. - * - * @return negative, zero, or positive to indicate if first value is - * less than, equal to, or greater than the second value, respectively. - */ - int compareValues(int v1, int v2); - - /** - * Return a sentinel value, sentinel value should be considered by this comparator - * as an ADVISORY GREATEST value, which should NOT be actually inserted into the skip list. - * - * @return the sentinel value. - */ - int getSentinelValue(); -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListContainer.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListContainer.docx new file mode 100644 index 0000000000000000000000000000000000000000..342d5396842fc2cd47a848ac9cb2e508fa30ae3e GIT binary patch literal 44637 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListContainer.java b/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListContainer.java deleted file mode 100644 index da4d1d001..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListContainer.java +++ /dev/null @@ -1,739 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.io.IOException; -import java.util.Random; - -import javax.annotation.Nullable; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; - -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; - -import static com.twitter.search.core.earlybird.index.inverted.PayloadUtil.EMPTY_PAYLOAD; - -/** - * This is a skip list container implementation backed by {@link IntBlockPool}. - * - * Skip list is a data structure similar to linked list, but with a hierarchy of lists - * each skipping over fewer elements, and the bottom hierarchy does NOT skip any elements. - * @see Skip List Wikipedia - * - * This implementation is lock free and thread safe with ONE writer thread and MULTIPLE reader - * threads. - * - * This implementation could contain one or more skip lists, and they are all backed by - * the same {@link IntBlockPool}. - * - * Values are actually stored as integers; however search key is implemented as a generic type. - * Inserts of values that already exist are stored as subsequent elements. This is used to support - * positions and term frequency. - * - * Also reserve the integer after value to store next ordinal pointer information. We avoid storing - * pointers to the next element in the tower by allocating them contiguously. To descend the tower, - * we just increment the pointer. - * - * This skip list can also store positions as integers. It allocates them before it allocates the - * value (the value is a doc ID if we are using positions). This means that we can access the - * position by simply decrementing the value pointer. - * - * To understand how the skip list works, first understand how insert works, then the rest will be - * more comprehendable. - * - * A skip list will be implemented in a circle linked way: - * - the list head node will have the sentinel value, which is the advisory greatest value - * provided by comparator. - * - Real first value will be pointed by the list head node. - * - Real last value will point to the list head. - * - * Constraints: - * - Does NOT support negative value. - * - * Simple Viz: - * - * Empty list with max tower height 5. S = Sentinel value, I = Initial value. - * | s| 0| 0| 0| 0| 0| i| i| i| i| i| i| i| i| i| i| - * - * One possible situation after inserting 4, 6, 5. - * | s| 6| 6| 9| 0| 0| 4|13|13| 6| 0| 0| 0| 5| 9| 9| - */ -public class SkipListContainer implements Flushable { - /** - * The list head of first skip list in the container, this is for convenient usage, - * so application use only one skip list does not need to keep track of the list head. - */ - static final int FIRST_LIST_HEAD = 0; - - /** - * Initial value used when initialize int block pool. Notice -1 is not used here in order to give - * application more freedom because -1 is a special value when doing bit manipulations. - */ - static final int INITIAL_VALUE = -2; - - /** - * Maximum tower height of this skip list and chance to grow tower by level. - * - * Notice these two values could affect the memory usage and the performance. - * Ideally they should be calculated based on the potential size of the skip list. - * - * Given n is the number of elements in the skip list, the memory usage is in O(n). - * - * More precisely, - * - * the memory is mainly used for the following data: - * - * header_tower = O(maxTowerHeight + 1) - * value = O(n) - * next_pointers = O(n * (1 - growTowerChance^(maxTowerHeight + 1)) / (1 - growTowerChance)) - * - * thus, the total memory usage is in O(header_tower + value + next_pointers). - * - * Default value for maximum tower height and grow tower chance, these two numbers are chosen - * arbitrarily now. - */ - @VisibleForTesting - public static final int MAX_TOWER_HEIGHT = 10; - private static final float GROW_TOWER_CHANCE = 0.2f; - - public enum HasPositions { - YES, - NO - } - - public enum HasPayloads { - YES, - NO - } - - static final int INVALID_POSITION = -3; - - /** Memory barrier. */ - private volatile int maxPoolPointer; - - /** Actual storage data structure. */ - private final IntBlockPool blockPool; - - /** - * Default comparator used to determine the order between two given values or between one key and - * another value. - * - * Notice this comparator is shared by all threads using this skip list, so it is not thread safe - * if it is maintaining some states. However, {@link #search}, {@link #insert}, and - * {@link #searchCeil} support passed in comparator as a parameter, which should be thread safe if - * managed by the caller properly. - */ - private final SkipListComparator defaultComparator; - - /** Random generator used to decide if to grow tower by one level or not. */ - private final Random random = new Random(); - - /** - * Used by writer thread to record last pointers at each level. Notice it is ok to have it as an - * instance field because we would only have one writer thread. - */ - private final int[] lastPointers; - - /** - * Whether the skip list contains positions. Used for text fields. - */ - private final HasPositions hasPositions; - - private final HasPayloads hasPayloads; - - /** - * Creates a new probabilistic skip list, using the provided comparator to compare keys - * of type K. - * - * @param comparator a comparator used to compare integer values. - */ - public SkipListContainer( - SkipListComparator comparator, - HasPositions hasPositions, - HasPayloads hasPayloads, - String name - ) { - this(comparator, new IntBlockPool(INITIAL_VALUE, name), hasPositions, hasPayloads); - } - - /** - * Base constructor, also used by flush handler. - */ - private SkipListContainer( - SkipListComparator comparator, - IntBlockPool blockPool, - HasPositions hasPositions, - HasPayloads hasPayloads) { - // Sentinel value specified by the comparator cannot equal to INITIAL_VALUE. - Preconditions.checkArgument(comparator.getSentinelValue() != INITIAL_VALUE); - - this.defaultComparator = comparator; - this.lastPointers = new int[MAX_TOWER_HEIGHT]; - this.blockPool = blockPool; - this.hasPositions = hasPositions; - this.hasPayloads = hasPayloads; - } - - /** - * Search for the index of the greatest value which has key less than or equal to the given key. - * - * This is more like a floor search function. See {@link #searchCeil} for ceil search. - * - * @param key target key will be searched. - * @param skipListHead index of the header tower of the skip list will be searched. - * @param comparator comparator used for comparison when traversing through the skip list. - * @param searchFinger {@link SkipListSearchFinger} to accelerate search speed, - * notice the search finger must be before the key. - * @return the index of the greatest value which is less than or equal to given value, - * will return skipListHead if given value has no greater or equal values. - */ - public int search( - K key, - int skipListHead, - SkipListComparator comparator, - @Nullable SkipListSearchFinger searchFinger) { - assert comparator != null; - // Start at the header tower. - int currentPointer = skipListHead; - - // Instantiate nextPointer and nextValue outside of the for loop so we can use the value - // directly after for loop. - int nextPointer = getForwardPointer(currentPointer, MAX_TOWER_HEIGHT - 1); - int nextValue = getValue(nextPointer); - - // Top down traversal. - for (int currentLevel = MAX_TOWER_HEIGHT - 1; currentLevel >= 0; currentLevel--) { - nextPointer = getForwardPointer(currentPointer, currentLevel); - nextValue = getValue(nextPointer); - - // Jump to search finger at current level. - if (searchFinger != null) { - final int fingerPointer = searchFinger.getPointer(currentLevel); - assert searchFinger.isInitialPointer(fingerPointer) - || comparator.compareKeyWithValue(key, getValue(fingerPointer), INVALID_POSITION) >= 0; - - if (!searchFinger.isInitialPointer(fingerPointer) - && comparator.compareValues(getValue(fingerPointer), nextValue) >= 0) { - currentPointer = fingerPointer; - nextPointer = getForwardPointer(currentPointer, currentLevel); - nextValue = getValue(nextPointer); - } - } - - // Move forward. - while (comparator.compareKeyWithValue(key, nextValue, INVALID_POSITION) > 0) { - currentPointer = nextPointer; - - nextPointer = getForwardPointer(currentPointer, currentLevel); - nextValue = getValue(nextPointer); - } - - // Advance search finger. - if (searchFinger != null && currentPointer != skipListHead) { - final int currentValue = getValue(currentPointer); - final int fingerPointer = searchFinger.getPointer(currentLevel); - - if (searchFinger.isInitialPointer(fingerPointer) - || comparator.compareValues(currentValue, getValue(fingerPointer)) > 0) { - searchFinger.setPointer(currentLevel, currentPointer); - } - } - } - - // Return next pointer if next value matches searched value; otherwise return currentPointer. - return comparator.compareKeyWithValue(key, nextValue, INVALID_POSITION) == 0 - ? nextPointer : currentPointer; - } - - /** - * Perform search with {@link #defaultComparator}. - * Notice {@link #defaultComparator} is not thread safe if it is keeping some states. - */ - public int search(K key, int skipListHead, @Nullable SkipListSearchFinger searchFinger) { - return search(key, skipListHead, this.defaultComparator, searchFinger); - } - - /** - * Ceil search on given {@param key}. - * - * @param key target key will be searched. - * @param skipListHead index of the header tower of the skip list will be searched. - * @param comparator comparator used for comparison when traversing through the skip list. - * @param searchFinger {@link SkipListSearchFinger} to accelerate search speed. - * @return index of the smallest value with key greater or equal to the given key. - */ - public int searchCeil( - K key, - int skipListHead, - SkipListComparator comparator, - @Nullable SkipListSearchFinger searchFinger) { - assert comparator != null; - - // Perform regular search. - final int foundPointer = search(key, skipListHead, comparator, searchFinger); - - // Return foundPointer if it is not the list head and the pointed value has key equal to the - // given key; otherwise, return next pointer. - if (foundPointer != skipListHead - && comparator.compareKeyWithValue(key, getValue(foundPointer), INVALID_POSITION) == 0) { - return foundPointer; - } else { - return getNextPointer(foundPointer); - } - } - - /** - * Perform searchCeil with {@link #defaultComparator}. - * Notice {@link #defaultComparator} is not thread safe if it is keeping some states. - */ - public int searchCeil( - K key, int skipListHead, @Nullable SkipListSearchFinger searchFinger) { - return searchCeil(key, skipListHead, this.defaultComparator, searchFinger); - } - - /** - * Insert a new value into the skip list. - * - * Notice inserting supports duplicate keys and duplicate values. - * - * Duplicate keys with different values or positions will be inserted consecutively. - * Duplciate keys with identical values will be ignored, and the duplicate will not be stored in - * the posting list. - * - * @param key is the key of the given value. - * @param value is the value will be inserted, cannot be {@link #getSentinelValue()}. - * @param skipListHead index of the header tower of the skip list will accept the new value. - * @param comparator comparator used for comparison when traversing through the skip list. - * @return whether this value exists in the posting list. Note that this will return true even - * if it is a new position. - */ - public boolean insert(K key, int value, int position, int[] payload, int skipListHead, - SkipListComparator comparator) { - Preconditions.checkArgument(comparator != null); - Preconditions.checkArgument(value != getSentinelValue()); - - // Start at the header tower. - int currentPointer = skipListHead; - - // Initialize lastPointers. - for (int i = 0; i < MAX_TOWER_HEIGHT; i++) { - this.lastPointers[i] = INITIAL_VALUE; - } - int nextPointer = INITIAL_VALUE; - - // Top down traversal. - for (int currentLevel = MAX_TOWER_HEIGHT - 1; currentLevel >= 0; currentLevel--) { - nextPointer = getForwardPointer(currentPointer, currentLevel); - int nextValue = getValue(nextPointer); - - int nextPosition = getPosition(nextPointer); - while (comparator.compareKeyWithValue(key, nextValue, nextPosition) > 0) { - currentPointer = nextPointer; - - nextPointer = getForwardPointer(currentPointer, currentLevel); - nextValue = getValue(nextPointer); - nextPosition = getPosition(nextPointer); - } - - // Store last pointers. - lastPointers[currentLevel] = currentPointer; - } - - // we use isDuplicateValue to determine if a value already exists in a posting list (even if it - // is a new position). We need to check both current pointer and next pointer in case this is - // the largest position we have seen for this value in this skip list. In that case, nextPointer - // will point to a larger value, but we want to check the smaller one to see if it is the same - // value. For example, if we have [(1, 2), (2, 4)] and we want to insert (1, 3), then - // nextPointer will point to (2, 4), but we want to check the doc ID of (1, 2) to see if it has - // the same document ID. - boolean isDuplicateValue = getValue(currentPointer) == value || getValue(nextPointer) == value; - - if (comparator.compareKeyWithValue(key, getValue(nextPointer), getPosition(nextPointer)) != 0) { - if (hasPayloads == HasPayloads.YES) { - Preconditions.checkNotNull(payload); - // If this skip list has payloads, we store the payload immediately before the document ID - // and position (iff the position exists) in the block pool. We store payloads before - // positions because they are variable length, and reading past them would require knowing - // the size of the payload. We don't store payloads after the doc ID because we have a - // variable number of pointers after the doc ID, and we would have no idea where the - // pointers stop and the payload starts. - for (int n : payload) { - this.blockPool.add(n); - } - } - - if (hasPositions == HasPositions.YES) { - // If this skip list has positions, we store the position before the document ID in the - // block pool. - this.blockPool.add(position); - } - - // Insert value. - final int insertedPointer = this.blockPool.add(value); - - // Insert outgoing pointers. - final int height = getRandomTowerHeight(); - for (int currentLevel = 0; currentLevel < height; currentLevel++) { - this.blockPool.add(getForwardPointer(lastPointers[currentLevel], currentLevel)); - } - - this.sync(); - - // Update incoming pointers. - for (int currentLevel = 0; currentLevel < height; currentLevel++) { - setForwardPointer(lastPointers[currentLevel], currentLevel, insertedPointer); - } - - this.sync(); - } - - return isDuplicateValue; - } - - /** - * Delete a given key from skip list - * - * @param key the key of the given value - * @param skipListHead index of the header tower of the skip list will accept the new value - * @param comparator comparator used for comparison when traversing through the skip list - * @return smallest value in the container. Returns {@link #INITIAL_VALUE} if the - * key does not exist. - */ - public int delete(K key, int skipListHead, SkipListComparator comparator) { - boolean foundKey = false; - - for (int currentLevel = MAX_TOWER_HEIGHT - 1; currentLevel >= 0; currentLevel--) { - int currentPointer = skipListHead; - int nextValue = getValue(getForwardPointer(currentPointer, currentLevel)); - - // First we skip over all the nodes that are smaller than our key. - while (comparator.compareKeyWithValue(key, nextValue, INVALID_POSITION) > 0) { - currentPointer = getForwardPointer(currentPointer, currentLevel); - nextValue = getValue(getForwardPointer(currentPointer, currentLevel)); - } - - Preconditions.checkState(currentPointer != INITIAL_VALUE); - - // If we don't find the node at this level that's OK, keep searching on a lower one. - if (comparator.compareKeyWithValue(key, nextValue, INVALID_POSITION) != 0) { - continue; - } - - // We found an element to delete. - foundKey = true; - - // Otherwise, save the current pointer. Right now, current pointer points to the first element - // that has the same value as key. - int savedPointer = currentPointer; - - currentPointer = getForwardPointer(currentPointer, currentLevel); - // Then, walk over every element that is equal to the key. - while (comparator.compareKeyWithValue(key, getValue(currentPointer), INVALID_POSITION) == 0) { - currentPointer = getForwardPointer(currentPointer, currentLevel); - } - - // update the saved pointer to point to the first non-equal element of the skip list. - setForwardPointer(savedPointer, currentLevel, currentPointer); - } - - // Something has changed, need to sync up here. - if (foundKey) { - this.sync(); - // return smallest value, might be used as first postings later - return getSmallestValue(skipListHead); - } - - return INITIAL_VALUE; - } - - /** - * Perform insert with {@link #defaultComparator}. - * Notice {@link #defaultComparator} is not thread safe if it is keeping some states. - */ - public boolean insert(K key, int value, int skipListHead) { - return insert(key, value, INVALID_POSITION, EMPTY_PAYLOAD, skipListHead, - this.defaultComparator); - } - - public boolean insert(K key, int value, int position, int[] payload, int skipListHead) { - return insert(key, value, position, payload, skipListHead, this.defaultComparator); - } - - /** - * Perform delete with {@link #defaultComparator}. - * Notice {@link #defaultComparator} is not thread safe if it is keeping some states. - */ - public int delete(K key, int skipListHead) { - return delete(key, skipListHead, this.defaultComparator); - } - - /** - * Get the pointer of next value pointed by the given pointer. - * - * @param pointer reference to the current value. - * @return pointer of next value. - */ - public int getNextPointer(int pointer) { - return getForwardPointer(pointer, 0); - } - - /** - * Get the value pointed by a pointer, this is a dereference process. - * - * @param pointer is an array index on this.blockPool. - * @return value pointed pointed by the pointer. - */ - public int getValue(int pointer) { - int value = blockPool.get(pointer); - - // Visibility race - if (value == INITIAL_VALUE) { - // Volatile read to cross the memory barrier again. - final boolean isSafe = isPointerSafe(pointer); - assert isSafe; - - // Re-read the pointer again - value = blockPool.get(pointer); - } - - return value; - } - - public int getSmallestValue(int skipListHeader) { - return getValue(getForwardPointer(skipListHeader, 0)); - } - - /** - * Builder of a forward search finger with header tower index. - * - * @return a new {@link SkipListSearchFinger} object. - */ - public SkipListSearchFinger buildSearchFinger() { - return new SkipListSearchFinger(MAX_TOWER_HEIGHT); - } - - /** - * Added another skip list into the int pool. - * - * @return index of the header tower of the newly created skip list. - */ - public int newSkipList() { - // Virtual value of header. - final int sentinelValue = getSentinelValue(); - if (hasPositions == HasPositions.YES) { - this.blockPool.add(INVALID_POSITION); - } - final int skipListHead = this.blockPool.add(sentinelValue); - - // Build header tower, initially point all the pointers to - // itself since no value has been inserted. - for (int i = 0; i < MAX_TOWER_HEIGHT; i++) { - this.blockPool.add(skipListHead); - } - - this.sync(); - - return skipListHead; - } - - /** - * Check if the block pool has been initiated by {@link #newSkipList}. - */ - public boolean isEmpty() { - return this.blockPool.length() == 0; - } - - /** - * Write to the volatile variable to cross memory barrier. maxPoolPointer is the memory barrier - * for new appends. - */ - private void sync() { - this.maxPoolPointer = this.blockPool.length(); - } - - /** - * Read from volatile variable to cross memory barrier. - * - * @param pointer is an block pool index. - * @return boolean indicate if given pointer is within the range of max pool pointer. - */ - private boolean isPointerSafe(int pointer) { - return pointer <= this.maxPoolPointer; - } - - /** - * Get the position associated with the doc ID pointed to by pointer. - * @param pointer aka doc ID pointer. - * @return The value of the position for that doc ID. Returns INVALID_POSITION if the skip list - * does not have positions, or if there is no position for that pointer. - */ - public int getPosition(int pointer) { - if (hasPositions == HasPositions.NO) { - return INVALID_POSITION; - } - // if this skip list has positions, the position will always be inserted into the block pool - // immediately before the doc ID. - return getValue(pointer - 1); - } - - /** - * Get the payload pointer from a normal pointer (e.g. one returned from the {@link this#search} - * method). - */ - public int getPayloadPointer(int pointer) { - Preconditions.checkState(hasPayloads == HasPayloads.YES, - "getPayloadPointer() should only be called on a skip list that supports payloads."); - - // if this skip list has payloads, the payload will always be inserted into the block pool - // before the doc ID, and before the position if there is a position. - int positionOffset = hasPositions == HasPositions.YES ? 1 : 0; - - return pointer - 1 - positionOffset; - } - - - int getPoolSize() { - return this.blockPool.length(); - } - - - IntBlockPool getBlockPool() { - return blockPool; - } - - public HasPayloads getHasPayloads() { - return hasPayloads; - } - - /****************** - * Helper Methods * - ******************/ - - /** - * Get the next forward pointer on a given level. - * - * @param pointer is an array index on this.blockPool, might be SENTINEL_VALUE. - * @param level indicates the level of the forward pointer will be acquired. It is zero indexed. - * @return next forward pointer on the given level, might be SENTINEL_VALUE. - */ - private int getForwardPointer(int pointer, int level) { - final int pointerIndex = pointer + level + 1; - - int forwardPointer = blockPool.get(pointerIndex); - - // Visibility race - if (forwardPointer == INITIAL_VALUE) { - // Volatile read to cross the memory barrier again. - final boolean isSafe = isPointerSafe(pointerIndex); - assert isSafe; - - // Re-read the pointer again - forwardPointer = blockPool.get(pointerIndex); - } - - return forwardPointer; - } - - /** - * Set the next forward pointer on a given level. - * - * @param pointer points to the value, of which the pointer value will be updated. - * @param level indicates the level of the forward pointer will be set. It is zero indexed. - * @param target the value fo the target pointer which will be set. - */ - private void setForwardPointer(int pointer, int level, int target) { - // Update header tower if given pointer points to headerTower. - setPointer(pointer + level + 1, target); - } - - /** - * Set the value pointed by pointer - * @param pointer point to the actual position in the pool - * @param target the value we are going to set - */ - private void setPointer(int pointer, int target) { - blockPool.set(pointer, target); - } - - /** - * Getter of the sentinel value used by this skip list. The sentinel value should be provided - * by the comparator. - * - * @return sentinel value used by this skip list. - */ - int getSentinelValue() { - return defaultComparator.getSentinelValue(); - } - - /** - * Return a height h in range [1, maxTowerHeight], each number with chance - * growTowerChance ^ (h - 1). - * - * @return a integer indicating height. - */ - private int getRandomTowerHeight() { - int height = 1; - while (height < MAX_TOWER_HEIGHT && random.nextFloat() < GROW_TOWER_CHANCE) { - height++; - } - return height; - } - - @SuppressWarnings("unchecked") - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler<>(this); - } - - public static class FlushHandler extends Flushable.Handler> { - private final SkipListComparator comparator; - private static final String BLOCK_POOL_PROP_NAME = "blockPool"; - private static final String HAS_POSITIONS_PROP_NAME = "hasPositions"; - private static final String HAS_PAYLOADS_PROP_NAME = "hasPayloads"; - - public FlushHandler(SkipListContainer objectToFlush) { - super(objectToFlush); - this.comparator = objectToFlush.defaultComparator; - } - - public FlushHandler(SkipListComparator comparator) { - this.comparator = comparator; - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - long startTime = getClock().nowMillis(); - SkipListContainer objectToFlush = getObjectToFlush(); - flushInfo.addBooleanProperty(HAS_POSITIONS_PROP_NAME, - objectToFlush.hasPositions == HasPositions.YES); - flushInfo.addBooleanProperty(HAS_PAYLOADS_PROP_NAME, - objectToFlush.hasPayloads == HasPayloads.YES); - - objectToFlush.blockPool.getFlushHandler() - .flush(flushInfo.newSubProperties(BLOCK_POOL_PROP_NAME), out); - getFlushTimerStats().timerIncrement(getClock().nowMillis() - startTime); - } - - @Override - protected SkipListContainer doLoad(FlushInfo flushInfo, DataDeserializer in) - throws IOException { - long startTime = getClock().nowMillis(); - IntBlockPool blockPool = (new IntBlockPool.FlushHandler()).load( - flushInfo.getSubProperties(BLOCK_POOL_PROP_NAME), in); - getLoadTimerStats().timerIncrement(getClock().nowMillis() - startTime); - - HasPositions hasPositions = flushInfo.getBooleanProperty(HAS_POSITIONS_PROP_NAME) - ? HasPositions.YES : HasPositions.NO; - HasPayloads hasPayloads = flushInfo.getBooleanProperty(HAS_PAYLOADS_PROP_NAME) - ? HasPayloads.YES : HasPayloads.NO; - - return new SkipListContainer<>( - this.comparator, - blockPool, - hasPositions, - hasPayloads); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListIntegerComparator.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListIntegerComparator.docx new file mode 100644 index 0000000000000000000000000000000000000000..8819de973bb6bedb3e599cf4cb7e5e3b96b9e6ff GIT binary patch literal 37048 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListIntegerComparator.java b/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListIntegerComparator.java deleted file mode 100644 index 6acc19542..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListIntegerComparator.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -/** - * Example implementation of {@link SkipListComparator} with Order-Theoretic Properties. - * - * Notice: - * Re-using key object is highly suggested! - * Normally the generic type should be a mutable object so it can be reused by the reader/writer. - */ -public class SkipListIntegerComparator implements SkipListComparator { - - @Override - public int compareKeyWithValue(Integer key, int targetValue, int targetPosition) { - return key - targetValue; - } - - @Override - public int compareValues(int v1, int v2) { - return v1 - v2; - } - - @Override - public int getSentinelValue() { - return Integer.MAX_VALUE; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListPostingList.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListPostingList.docx new file mode 100644 index 0000000000000000000000000000000000000000..679544d92cc25e8e9a0e12a795cd56c0bcca7237 GIT binary patch literal 39104 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 H`_}&e$@xH> literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListPostingList.java b/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListPostingList.java deleted file mode 100644 index 498321beb..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListPostingList.java +++ /dev/null @@ -1,232 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import java.io.IOException; -import javax.annotation.Nullable; - -import com.google.common.base.Preconditions; - -import org.apache.lucene.index.PostingsEnum; -import org.apache.lucene.search.DocIdSetIterator; -import org.apache.lucene.util.BytesRef; - -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; - -import static com.twitter.search.core.earlybird.index.inverted.SkipListContainer.HasPayloads; -import static com.twitter.search.core.earlybird.index.inverted.SkipListContainer.HasPositions; -import static com.twitter.search.core.earlybird.index.inverted.SkipListContainer.INVALID_POSITION; -import static com.twitter.search.core.earlybird.index.inverted.TermsArray.INVALID; - -/** - * A skip list implementation of real time posting list. Supports out of order updates. - */ -public class SkipListPostingList implements Flushable { - /** Underlying skip list. */ - private final SkipListContainer skipListContainer; - - /** Key used when inserting into the skip list. */ - private final Key key = new Key(); - - public SkipListPostingList( - HasPositions hasPositions, - HasPayloads hasPayloads, - String field) { - this.skipListContainer = new SkipListContainer<>( - new DocIDComparator(), - hasPositions, - hasPayloads, - field); - } - - /** Used by {@link SkipListPostingList.FlushHandler} */ - private SkipListPostingList(SkipListContainer skipListContainer) { - this.skipListContainer = skipListContainer; - } - - /** - * Appends a posting to the posting list for a term. - */ - public void appendPosting( - int termID, - TermsArray termsArray, - int docID, - int position, - @Nullable BytesRef payload) { - termsArray.getLargestPostings()[termID] = Math.max( - termsArray.getLargestPostings()[termID], - docID); - - // Append to an existing skip list. - // Notice, header tower index is stored at the last postings pointer spot. - int postingsPointer = termsArray.getPostingsPointer(termID); - if (postingsPointer == INVALID) { - // Create a new skip list and add the first posting. - postingsPointer = skipListContainer.newSkipList(); - } - - boolean havePostingForThisDoc = insertPosting(docID, position, payload, postingsPointer); - - // If this is a new document ID, we need to update the document frequency for this term - if (!havePostingForThisDoc) { - termsArray.getDocumentFrequency()[termID]++; - } - - termsArray.updatePostingsPointer(termID, postingsPointer); - } - - /** - * Deletes the given doc ID from the posting list for the term. - */ - public void deletePosting(int termID, TermsArray postingsArray, int docID) { - int docFreq = postingsArray.getDocumentFrequency()[termID]; - if (docFreq == 0) { - return; - } - - int postingsPointer = postingsArray.getPostingsPointer(termID); - // skipListContainer is not empty, try to delete docId from it. - int smallestDoc = deletePosting(docID, postingsPointer); - if (smallestDoc == SkipListContainer.INITIAL_VALUE) { - // Key does not exist. - return; - } - - postingsArray.getDocumentFrequency()[termID]--; - } - - /** - * Insert posting into an existing skip list. - * - * @param docID docID of the this posting. - * @param skipListHead header tower index of the skip list - * in which the posting will be inserted. - * @return whether we have already inserted this document ID into this term list. - */ - private boolean insertPosting(int docID, int position, BytesRef termPayload, int skipListHead) { - int[] payload = PayloadUtil.encodePayload(termPayload); - return skipListContainer.insert(key.withDocAndPosition(docID, position), docID, position, - payload, skipListHead); - } - - private int deletePosting(int docID, int skipListHead) { - return skipListContainer.delete(key.withDocAndPosition(docID, INVALID_POSITION), skipListHead); - } - - /** Return a term docs enumerator with position flag on. */ - public PostingsEnum postings( - int postingPointer, - int docFreq, - int maxPublishedPointer) { - return new SkipListPostingsEnum( - postingPointer, docFreq, maxPublishedPointer, skipListContainer); - } - - /** - * Get the number of documents (AKA document frequency or DF) for the given term. - */ - public int getDF(int termID, TermsArray postingsArray) { - int[] documentFrequency = postingsArray.getDocumentFrequency(); - Preconditions.checkArgument(termID < documentFrequency.length); - - return documentFrequency[termID]; - } - - public int getDocIDFromPosting(int posting) { - // Posting is simply the whole doc ID. - return posting; - } - - public int getMaxPublishedPointer() { - return skipListContainer.getPoolSize(); - } - - - @SuppressWarnings("unchecked") - @Override - public FlushHandler getFlushHandler() { - return new FlushHandler(this); - } - - public static class FlushHandler extends Flushable.Handler { - private static final String SKIP_LIST_PROP_NAME = "skipList"; - - public FlushHandler(SkipListPostingList objectToFlush) { - super(objectToFlush); - } - - public FlushHandler() { - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - SkipListPostingList objectToFlush = getObjectToFlush(); - - objectToFlush.skipListContainer.getFlushHandler() - .flush(flushInfo.newSubProperties(SKIP_LIST_PROP_NAME), out); - } - - @Override - protected SkipListPostingList doLoad( - FlushInfo flushInfo, DataDeserializer in) throws IOException { - SkipListComparator comparator = new DocIDComparator(); - SkipListContainer.FlushHandler flushHandler = - new SkipListContainer.FlushHandler<>(comparator); - SkipListContainer skipList = - flushHandler.load(flushInfo.getSubProperties(SKIP_LIST_PROP_NAME), in); - return new SkipListPostingList(skipList); - } - } - - /** - * Key used to in {@link SkipListContainer} by {@link SkipListPostingList}. - */ - public static class Key { - private int docID; - private int position; - - public int getDocID() { - return docID; - } - - public int getPosition() { - return position; - } - - public Key withDocAndPosition(int withDocID, int withPosition) { - this.docID = withDocID; - this.position = withPosition; - return this; - } - } - - /** - * Comparator for docID and position. - */ - public static class DocIDComparator implements SkipListComparator { - private static final int SENTINEL_VALUE = DocIdSetIterator.NO_MORE_DOCS; - - @Override - public int compareKeyWithValue(Key key, int targetDocID, int targetPosition) { - // No key could represent sentinel value and sentinel value is the largest. - int docCompare = key.getDocID() - targetDocID; - if (docCompare == 0 && targetPosition != INVALID_POSITION) { - return key.getPosition() - targetPosition; - } else { - return docCompare; - } - } - - @Override - public int compareValues(int docID1, int docID2) { - // Sentinel value is the largest. - return docID1 - docID2; - } - - @Override - public int getSentinelValue() { - return SENTINEL_VALUE; - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListPostingsEnum.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListPostingsEnum.docx new file mode 100644 index 0000000000000000000000000000000000000000..aaf77c10865c096d4102bf99be3d1436ce46c14b GIT binary patch literal 39576 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 z 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 PiUni^Ob>z7AHV(vvV1Jy literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListPostingsEnum.java b/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListPostingsEnum.java deleted file mode 100644 index 908ae1c87..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListPostingsEnum.java +++ /dev/null @@ -1,255 +0,0 @@ -package com.twitter.search.core.earlybird.index.inverted; - -import com.google.common.base.Preconditions; - -import org.apache.lucene.index.PostingsEnum; -import org.apache.lucene.util.BytesRef; - -import com.twitter.search.core.earlybird.index.EarlybirdRealtimeIndexSegmentData; - -import static com.twitter.search.core.earlybird.index.inverted.SkipListContainer.INVALID_POSITION; - -/** - * TermDocs enumerator used by {@link SkipListPostingList}. - */ -public class SkipListPostingsEnum extends PostingsEnum { - /** Initialize cur doc ID and frequency. */ - private int curDoc = TermsArray.INVALID; - private int curFreq = 0; - - private final int postingPointer; - - private final int cost; - - /** - * maxPublishedPointer exists to prevent us from returning documents that are partially indexed. - * These pointers are safe to follow, but the documents should not be returned. See - * {@link EarlybirdRealtimeIndexSegmentData#getSyncData()} ()}. - */ - private final int maxPublishedPointer; - - /** Skip list info and search key */ - private final SkipListContainer skiplist; - private final SkipListPostingList.Key key = new SkipListPostingList.Key(); - - /** - * Pointer/posting/docID of next posting in the skip list. - * Notice the next here is relative to last posting with curDoc ID. - */ - private int nextPostingPointer; - private int nextPostingDocID; - - /** - * We save the positionPointer because we must walk the posting list to obtain term frequency - * before we can start iterating through document positions. To do that walk, we increment - * postingsPointer until it points to the first posting for the next doc, so postingsPointer is no - * longer what we want to use as the start of the position list. The position pointer starts out - * pointing to the first posting with that doc ID value. There can be duplicate doc ID values with - * different positions. To find subsequent positions, we simply walk the posting list using this - * pointer. - */ - private int positionPointer = -1; - - /** - * The payloadPointer should only be called after calling nextPosition, as it points to a payload - * for each position. It is not updated unless nextPosition is called. - */ - private int payloadPointer = -1; - - /** Search finger used in advance method. */ - private final SkipListSearchFinger advanceSearchFinger; - - /** - * A new {@link PostingsEnum} for a real-time skip list-based posting list. - */ - public SkipListPostingsEnum( - int postingPointer, - int docFreq, - int maxPublishedPointer, - SkipListContainer skiplist) { - this.postingPointer = postingPointer; - this.skiplist = skiplist; - this.advanceSearchFinger = this.skiplist.buildSearchFinger(); - this.maxPublishedPointer = maxPublishedPointer; - this.nextPostingPointer = postingPointer; - - // WARNING: - // docFreq is approximate and may not be the true document frequency of the posting list. - this.cost = docFreq; - - if (postingPointer != -1) { - // Because the posting pointer is not negative 1, we know it's valid. - readNextPosting(); - } - - advanceSearchFinger.reset(); - } - - @Override - public final int nextDoc() { - // Notice if skip list is exhausted nextPostingPointer will point back to postingPointer since - // skip list is circle linked. - if (nextPostingPointer == postingPointer) { - // Skip list is exhausted. - curDoc = NO_MORE_DOCS; - curFreq = 0; - } else { - // Skip list is not exhausted. - curDoc = nextPostingDocID; - curFreq = 1; - positionPointer = nextPostingPointer; - - // Keep reading all the posting with the same doc ID. - // Notice: - // - posting with the same doc ID will be stored consecutively - // since the skip list is sorted. - // - if skip list is exhausted, nextPostingPointer will become postingPointer - // since skip list is circle linked. - readNextPosting(); - while (nextPostingPointer != postingPointer && nextPostingDocID == curDoc) { - curFreq++; - readNextPosting(); - } - } - - // Returned updated curDoc. - return curDoc; - } - - /** - * Moves the enumerator forward by one element, then reads the information at that position. - * */ - private void readNextPosting() { - // Move search finger forward at lowest level. - advanceSearchFinger.setPointer(0, nextPostingPointer); - - // Read next posting pointer. - nextPostingPointer = skiplist.getNextPointer(nextPostingPointer); - - // Read the new posting positioned under nextPostingPointer into the nextPostingDocID. - readNextPostingInfo(); - } - - private boolean isPointerPublished(int pointer) { - return pointer <= maxPublishedPointer; - } - - /** Read next posting and doc id encoded in next posting. */ - private void readNextPostingInfo() { - // We need to skip over every pointer that has not been published to this Enum, otherwise the - // searcher will see unpublished documents. We also end termination if we reach - // nextPostingPointer == postingPointer, because that means we have reached the end of the - // skiplist. - while (!isPointerPublished(nextPostingPointer) && nextPostingPointer != postingPointer) { - // Move search finger forward at lowest level. - advanceSearchFinger.setPointer(0, nextPostingPointer); - - // Read next posting pointer. - nextPostingPointer = skiplist.getNextPointer(nextPostingPointer); - } - - // Notice if skip list is exhausted, nextPostingPointer will be postingPointer - // since skip list is circle linked. - if (nextPostingPointer != postingPointer) { - nextPostingDocID = skiplist.getValue(nextPostingPointer); - } else { - nextPostingDocID = NO_MORE_DOCS; - } - } - - /** - * Jump to the target, then use {@link #nextDoc()} to collect nextDoc info. - * Notice target might be smaller than curDoc or smallestDocID. - */ - @Override - public final int advance(int target) { - if (target == NO_MORE_DOCS) { - // Exhaust the posting list, so that future calls to docID() always return NO_MORE_DOCS. - nextPostingPointer = postingPointer; - } - - if (nextPostingPointer == postingPointer) { - // Call nextDoc to ensure that all values are updated and we don't have to duplicate that - // here. - return nextDoc(); - } - - // Jump to target if target is bigger. - if (target >= curDoc && target >= nextPostingDocID) { - jumpToTarget(target); - } - - // Retrieve next doc. - return nextDoc(); - } - - /** - * Set the next posting pointer (and info) to the first posting - * with doc ID equal to or larger than the target. - * - * Notice this method does not set curDoc or curFreq. - */ - private void jumpToTarget(int target) { - // Do a ceil search. - nextPostingPointer = skiplist.searchCeil( - key.withDocAndPosition(target, INVALID_POSITION), postingPointer, advanceSearchFinger); - - // Read next posting information. - readNextPostingInfo(); - } - - @Override - public int nextPosition() { - // If doc ID is equal to no more docs than we are past the end of the posting list. If doc ID - // is invalid, then we have not called nextDoc yet, and we should not return a real position. - // If the position pointer is past the current doc ID, then we should not return a position - // until nextDoc is called again (we don't want to return positions for a different doc). - if (docID() == NO_MORE_DOCS - || docID() == TermsArray.INVALID - || skiplist.getValue(positionPointer) != docID()) { - return INVALID_POSITION; - } - payloadPointer = positionPointer; - int position = skiplist.getPosition(positionPointer); - do { - positionPointer = skiplist.getNextPointer(positionPointer); - } while (!isPointerPublished(positionPointer) && positionPointer != postingPointer); - return position; - } - - @Override - public BytesRef getPayload() { - if (skiplist.getHasPayloads() == SkipListContainer.HasPayloads.NO) { - return null; - } - - int pointer = skiplist.getPayloadPointer(this.payloadPointer); - Preconditions.checkState(pointer > 0); - return PayloadUtil.decodePayload(skiplist.getBlockPool(), pointer); - } - - @Override - public int startOffset() { - return -1; - } - - @Override - public int endOffset() { - return -1; - } - - @Override - public final int docID() { - return curDoc; - } - - @Override - public final int freq() { - return curFreq; - } - - @Override - public long cost() { - return cost; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListSearchFinger.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/SkipListSearchFinger.docx new file mode 100644 index 0000000000000000000000000000000000000000..1cc0846273c88544af84961a449e302725753c2f GIT binary patch literal 37300 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 search wikipedia. - * - * Using a search finger on a skip list could reduce the search search time from - * log(n) to log(k), where n is length of the skip list and k is the distance between last searched - * key and current searched key. - */ -public class SkipListSearchFinger { - // Pointer used when initialize the search finger. - public static final int INITIAL_POINTER = Integer.MIN_VALUE; - - private final int[] lastPointers; - - /** - * Creates a new search finger. - */ - public SkipListSearchFinger(int maxTowerHeight) { - lastPointers = new int[maxTowerHeight]; - - reset(); - } - - public void reset() { - for (int i = 0; i < lastPointers.length; i++) { - setPointer(i, INITIAL_POINTER); - } - } - - public int getPointer(int level) { - return lastPointers[level]; - } - - public void setPointer(int level, int pointer) { - lastPointers[level] = pointer; - } - - public boolean isInitialPointer(int pointer) { - return pointer == INITIAL_POINTER; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/inverted/TermDictionary.docx b/src/java/com/twitter/search/core/earlybird/index/inverted/TermDictionary.docx new file mode 100644 index 0000000000000000000000000000000000000000..eeec35de0c454f73621285a382db0d280d754318 GIT binary patch literal 37374 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

    u} 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentAtomicReader.java b/src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentAtomicReader.java deleted file mode 100644 index 78c1f6d45..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentAtomicReader.java +++ /dev/null @@ -1,175 +0,0 @@ -package com.twitter.search.core.earlybird.index; - -import java.io.IOException; - -import org.apache.lucene.index.BinaryDocValues; -import org.apache.lucene.index.Fields; -import org.apache.lucene.index.LeafMetaData; -import org.apache.lucene.index.NumericDocValues; -import org.apache.lucene.index.PointValues; -import org.apache.lucene.index.SortedDocValues; -import org.apache.lucene.index.SortedNumericDocValues; -import org.apache.lucene.index.SortedSetDocValues; -import org.apache.lucene.index.StoredFieldVisitor; -import org.apache.lucene.index.Term; -import org.apache.lucene.index.Terms; -import org.apache.lucene.search.Sort; -import org.apache.lucene.util.Bits; -import org.apache.lucene.util.Version; - -import com.twitter.search.core.earlybird.facets.EarlybirdFacetDocValueSet; -import com.twitter.search.core.earlybird.index.column.ColumnStrideFieldDocValues; -import com.twitter.search.core.earlybird.index.column.ColumnStrideFieldIndex; -import com.twitter.search.core.earlybird.index.inverted.InMemoryFields; -import com.twitter.search.core.earlybird.index.inverted.InvertedIndex; - -public final class EarlybirdRealtimeIndexSegmentAtomicReader - extends EarlybirdIndexSegmentAtomicReader { - private final Fields fields; - private final int maxDocId; - private final int numDocs; - - /** - * Creates a new real-time reader for the given segment. Do not add public constructors to this - * class. EarlybirdRealtimeIndexSegmentAtomicReader instances should be created only by calling - * EarlybirdRealtimeIndexSegmentData.createAtomicReader(), to make sure everything is set up - * properly (such as CSF readers). - */ - EarlybirdRealtimeIndexSegmentAtomicReader(EarlybirdRealtimeIndexSegmentData segmentData) { - super(segmentData); - - this.fields = new InMemoryFields(segmentData.getPerFieldMap(), syncData.getIndexPointers()); - - // We cache the highest doc ID and the number of docs, because the reader must return the same - // values for its entire lifetime, and the segment will get more tweets over time. - // These values could be slightly out of sync with 'fields', because we don't update these - // values atomically with the fields. - this.maxDocId = segmentData.getDocIDToTweetIDMapper().getPreviousDocID(Integer.MAX_VALUE); - this.numDocs = segmentData.getDocIDToTweetIDMapper().getNumDocs(); - } - - @Override - public int maxDoc() { - return maxDocId + 1; - } - - @Override - public int numDocs() { - return numDocs; - } - - @Override - protected void doClose() { - // nothing to do - } - - @Override - public void document(int docID, StoredFieldVisitor visitor) { - // not supported - } - - @Override - public int getOldestDocID(Term t) throws IOException { - InvertedIndex perField = getSegmentData().getPerFieldMap().get(t.field()); - if (perField == null) { - return TERM_NOT_FOUND; - } - return perField.getLargestDocIDForTerm(t.bytes()); - } - - @Override - public int getTermID(Term t) throws IOException { - InvertedIndex perField = getSegmentData().getPerFieldMap().get(t.field()); - if (perField == null) { - return TERM_NOT_FOUND; - } - return perField.lookupTerm(t.bytes()); - } - - @Override - public Bits getLiveDocs() { - // liveDocs contains inverted (decreasing) docIDs. - return getDeletesView().getLiveDocs(); - } - - @Override - public boolean hasDeletions() { - return getDeletesView().hasDeletions(); - } - - @Override - public Terms terms(String field) throws IOException { - return fields.terms(field); - } - - @Override - public NumericDocValues getNumericDocValues(String field) throws IOException { - ColumnStrideFieldIndex csf = - getSegmentData().getDocValuesManager().getColumnStrideFieldIndex(field); - return csf != null ? new ColumnStrideFieldDocValues(csf, this) : null; - } - - @Override - public boolean hasDocs() { - // smallestDocID is the smallest document ID that was available when this reader was created. - // So we need to check its value in order to decide if this reader can see any documents, - // because in the meantime other documents might've been added to the tweet ID mapper. - return getSmallestDocID() != Integer.MAX_VALUE; - } - - @Override - public BinaryDocValues getBinaryDocValues(String field) { - return null; - } - - @Override - public SortedDocValues getSortedDocValues(String field) { - return null; - } - - @Override - public SortedSetDocValues getSortedSetDocValues(String field) { - // special handling for facet field - if (EarlybirdFacetDocValueSet.FIELD_NAME.equals(field)) { - return ((EarlybirdRealtimeIndexSegmentData) getSegmentData()).getFacetDocValueSet(); - } - - return null; - } - - @Override - public NumericDocValues getNormValues(String field) throws IOException { - ColumnStrideFieldIndex csf = getSegmentData().getNormIndex(field); - return csf != null ? new ColumnStrideFieldDocValues(csf, this) : null; - } - - @Override - public SortedNumericDocValues getSortedNumericDocValues(String field) { - return null; - } - - @Override - public void checkIntegrity() { - // nothing to do - } - - @Override - public PointValues getPointValues(String field) { - return null; - } - - @Override - public LeafMetaData getMetaData() { - return new LeafMetaData(Version.LATEST.major, Version.LATEST, Sort.RELEVANCE); - } - - @Override - public CacheHelper getCoreCacheHelper() { - return null; - } - - @Override - public CacheHelper getReaderCacheHelper() { - return null; - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentData.docx b/src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentData.docx new file mode 100644 index 0000000000000000000000000000000000000000..b7142c1a912c963c1a1e4a311fd2590d0d2e1be9 GIT binary patch literal 39093 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentData.java b/src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentData.java deleted file mode 100644 index 58ea6f3bf..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentData.java +++ /dev/null @@ -1,251 +0,0 @@ -package com.twitter.search.core.earlybird.index; - -import java.io.IOException; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import com.google.common.collect.Maps; - -import org.apache.lucene.index.IndexWriterConfig; -import org.apache.lucene.search.IndexSearcher; - -import com.twitter.search.common.schema.SearchWhitespaceAnalyzer; -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.common.util.io.flushable.DataDeserializer; -import com.twitter.search.common.util.io.flushable.DataSerializer; -import com.twitter.search.common.util.io.flushable.FlushInfo; -import com.twitter.search.common.util.io.flushable.Flushable; -import com.twitter.search.core.earlybird.facets.AbstractFacetCountingArray; -import com.twitter.search.core.earlybird.facets.EarlybirdFacetDocValueSet; -import com.twitter.search.core.earlybird.facets.FacetCountingArray; -import com.twitter.search.core.earlybird.facets.FacetIDMap; -import com.twitter.search.core.earlybird.facets.FacetLabelProvider; -import com.twitter.search.core.earlybird.facets.FacetUtil; -import com.twitter.search.core.earlybird.facets.OptimizedFacetCountingArray; -import com.twitter.search.core.earlybird.index.column.DocValuesManager; -import com.twitter.search.core.earlybird.index.column.OptimizedDocValuesManager; -import com.twitter.search.core.earlybird.index.column.UnoptimizedDocValuesManager; -import com.twitter.search.core.earlybird.index.extensions.EarlybirdIndexExtensionsFactory; -import com.twitter.search.core.earlybird.index.extensions.EarlybirdRealtimeIndexExtensionsData; -import com.twitter.search.core.earlybird.index.inverted.DeletedDocs; -import com.twitter.search.core.earlybird.index.inverted.IndexOptimizer; -import com.twitter.search.core.earlybird.index.inverted.InvertedIndex; - -/** - * Implements {@link EarlybirdIndexSegmentData} for real-time in-memory Earlybird segments. - */ -public class EarlybirdRealtimeIndexSegmentData extends EarlybirdIndexSegmentData { - private final EarlybirdRealtimeIndexExtensionsData indexExtension; - - private EarlybirdFacetDocValueSet facetDocValueSet; - - /** - * Creates a new empty real-time SegmentData instance. - */ - public EarlybirdRealtimeIndexSegmentData( - int maxSegmentSize, - long timeSliceID, - Schema schema, - DocIDToTweetIDMapper docIdToTweetIdMapper, - TimeMapper timeMapper, - EarlybirdIndexExtensionsFactory indexExtensionsFactory) { - this( - maxSegmentSize, - timeSliceID, - schema, - false, // isOptimized - Integer.MAX_VALUE, - new ConcurrentHashMap<>(), - new FacetCountingArray(maxSegmentSize), - new UnoptimizedDocValuesManager(schema, maxSegmentSize), - Maps.newHashMapWithExpectedSize(schema.getNumFacetFields()), - FacetIDMap.build(schema), - new DeletedDocs.Default(maxSegmentSize), - docIdToTweetIdMapper, - timeMapper, - indexExtensionsFactory == null - ? null - : indexExtensionsFactory.newRealtimeIndexExtensionsData()); - } - - /** - * Creates a new real-time SegmentData instance using the passed in data structures. Usually this - * constructor is used by the FlushHandler after a segment was loaded from disk, but also the - * {@link IndexOptimizer} uses it to create an - * optimized segment. - */ - public EarlybirdRealtimeIndexSegmentData( - int maxSegmentSize, - long timeSliceID, - Schema schema, - boolean isOptimized, - int smallestDocID, - ConcurrentHashMap perFieldMap, - AbstractFacetCountingArray facetCountingArray, - DocValuesManager docValuesManager, - Map facetLabelProviders, - FacetIDMap facetIDMap, - DeletedDocs deletedDocs, - DocIDToTweetIDMapper docIdToTweetIdMapper, - TimeMapper timeMapper, - EarlybirdRealtimeIndexExtensionsData indexExtension) { - super(maxSegmentSize, - timeSliceID, - schema, - isOptimized, - smallestDocID, - perFieldMap, - new ConcurrentHashMap<>(), - facetCountingArray, - docValuesManager, - facetLabelProviders, - facetIDMap, - deletedDocs, - docIdToTweetIdMapper, - timeMapper); - this.indexExtension = indexExtension; - this.facetDocValueSet = null; - } - - @Override - public EarlybirdRealtimeIndexExtensionsData getIndexExtensionsData() { - return indexExtension; - } - - /** - * For realtime segments, this wraps a facet datastructure into a SortedSetDocValues to - * comply to Lucene facet api. - */ - public EarlybirdFacetDocValueSet getFacetDocValueSet() { - if (facetDocValueSet == null) { - AbstractFacetCountingArray facetCountingArray = getFacetCountingArray(); - if (facetCountingArray != null) { - facetDocValueSet = new EarlybirdFacetDocValueSet( - facetCountingArray, getFacetLabelProviders(), getFacetIDMap()); - } - } - return facetDocValueSet; - } - - @Override - protected EarlybirdIndexSegmentAtomicReader doCreateAtomicReader() { - return new EarlybirdRealtimeIndexSegmentAtomicReader(this); - } - - /** - * Convenience method for creating an EarlybirdIndexSegmentWriter for this segment with a default - * IndexSegmentWriter config. - */ - public EarlybirdIndexSegmentWriter createEarlybirdIndexSegmentWriter() { - return createEarlybirdIndexSegmentWriter( - new IndexWriterConfig(new SearchWhitespaceAnalyzer()).setSimilarity( - IndexSearcher.getDefaultSimilarity())); - } - - @Override - public EarlybirdIndexSegmentWriter createEarlybirdIndexSegmentWriter( - IndexWriterConfig indexWriterConfig) { - // Prepare the in-memory segment with all enabled CSF fields. - DocValuesManager docValuesManager = getDocValuesManager(); - for (Schema.FieldInfo fieldInfo : getSchema().getFieldInfos()) { - if (fieldInfo.getFieldType().getCsfType() != null) { - docValuesManager.addColumnStrideField(fieldInfo.getName(), fieldInfo.getFieldType()); - } - } - - return new EarlybirdRealtimeIndexSegmentWriter( - this, - indexWriterConfig.getAnalyzer(), - indexWriterConfig.getSimilarity()); - } - - @Override - public EarlybirdIndexSegmentData.AbstractSegmentDataFlushHandler getFlushHandler() { - return new InMemorySegmentDataFlushHandler(this); - } - - public static class InMemorySegmentDataFlushHandler - extends AbstractSegmentDataFlushHandler { - public InMemorySegmentDataFlushHandler(EarlybirdIndexSegmentData objectToFlush) { - super(objectToFlush); - } - - public InMemorySegmentDataFlushHandler( - Schema schema, - EarlybirdIndexExtensionsFactory factory, - Flushable.Handler docIdMapperFlushHandler, - Flushable.Handler timeMapperFlushHandler) { - super(schema, factory, docIdMapperFlushHandler, timeMapperFlushHandler); - } - - @Override - protected EarlybirdRealtimeIndexExtensionsData newIndexExtension() { - return indexExtensionsFactory.newRealtimeIndexExtensionsData(); - } - - @Override - protected void flushAdditionalDataStructures( - FlushInfo flushInfo, - DataSerializer out, - EarlybirdIndexSegmentData segmentData) throws IOException { - segmentData.getFacetCountingArray().getFlushHandler() - .flush(flushInfo.newSubProperties("facet_counting_array"), out); - - // flush all column stride fields - segmentData.getDocValuesManager().getFlushHandler() - .flush(flushInfo.newSubProperties("doc_values"), out); - - segmentData.getFacetIDMap().getFlushHandler() - .flush(flushInfo.newSubProperties("facet_id_map"), out); - - segmentData.getDeletedDocs().getFlushHandler() - .flush(flushInfo.newSubProperties("deleted_docs"), out); - } - - @Override - protected EarlybirdIndexSegmentData constructSegmentData( - FlushInfo flushInfo, - ConcurrentHashMap perFieldMap, - int maxSegmentSize, - EarlybirdRealtimeIndexExtensionsData indexExtension, - DocIDToTweetIDMapper docIdToTweetIdMapper, - TimeMapper timeMapper, - DataDeserializer in) throws IOException { - boolean isOptimized = flushInfo.getBooleanProperty(IS_OPTIMIZED_PROP_NAME); - - Flushable.Handler facetLoader = isOptimized - ? new OptimizedFacetCountingArray.FlushHandler() - : new FacetCountingArray.FlushHandler(maxSegmentSize); - AbstractFacetCountingArray facetCountingArray = - facetLoader.load(flushInfo.getSubProperties("facet_counting_array"), in); - - Flushable.Handler docValuesLoader = isOptimized - ? new OptimizedDocValuesManager.OptimizedFlushHandler(schema) - : new UnoptimizedDocValuesManager.UnoptimizedFlushHandler(schema); - DocValuesManager docValuesManager = - docValuesLoader.load(flushInfo.getSubProperties("doc_values"), in); - - FacetIDMap facetIDMap = new FacetIDMap.FlushHandler(schema) - .load(flushInfo.getSubProperties("facet_id_map"), in); - - DeletedDocs.Default deletedDocs = new DeletedDocs.Default.FlushHandler(maxSegmentSize) - .load(flushInfo.getSubProperties("deleted_docs"), in); - - return new EarlybirdRealtimeIndexSegmentData( - maxSegmentSize, - flushInfo.getLongProperty(TIME_SLICE_ID_PROP_NAME), - schema, - isOptimized, - flushInfo.getIntProperty(SMALLEST_DOCID_PROP_NAME), - perFieldMap, - facetCountingArray, - docValuesManager, - FacetUtil.getFacetLabelProviders(schema, perFieldMap), - facetIDMap, - deletedDocs, - docIdToTweetIdMapper, - timeMapper, - indexExtension); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentWriter.docx b/src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentWriter.docx new file mode 100644 index 0000000000000000000000000000000000000000..6c846d9f16e3daa108d6879058567a62921d8cb0 GIT binary patch literal 45228 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�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 GzWoPWMKP%W literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentWriter.java b/src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentWriter.java deleted file mode 100644 index 049d33ce8..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/EarlybirdRealtimeIndexSegmentWriter.java +++ /dev/null @@ -1,789 +0,0 @@ -package com.twitter.search.core.earlybird.index; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import javax.annotation.Nullable; - -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.apache.lucene.analysis.Analyzer; -import org.apache.lucene.analysis.TokenStream; -import org.apache.lucene.analysis.tokenattributes.OffsetAttribute; -import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute; -import org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute; -import org.apache.lucene.document.Document; -import org.apache.lucene.document.Field; -import org.apache.lucene.facet.FacetsConfig; -import org.apache.lucene.index.DocValuesType; -import org.apache.lucene.index.FieldInvertState; -import org.apache.lucene.index.IndexOptions; -import org.apache.lucene.index.IndexableField; -import org.apache.lucene.index.IndexableFieldType; -import org.apache.lucene.search.similarities.Similarity; -import org.apache.lucene.store.Directory; -import org.apache.lucene.util.AttributeSource; -import org.apache.lucene.util.BytesRef; -import org.apache.lucene.util.BytesRefHash; -import org.apache.lucene.util.Version; - -import com.twitter.search.common.metrics.SearchRateCounter; -import com.twitter.search.common.schema.base.EarlybirdFieldType; -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.common.schema.earlybird.EarlybirdFieldConstants; -import com.twitter.search.core.earlybird.facets.FacetCountingArrayWriter; -import com.twitter.search.core.earlybird.facets.FacetIDMap.FacetField; -import com.twitter.search.core.earlybird.facets.FacetLabelProvider; -import com.twitter.search.core.earlybird.facets.FacetUtil; -import com.twitter.search.core.earlybird.index.column.ColumnStrideByteIndex; -import com.twitter.search.core.earlybird.index.extensions.EarlybirdRealtimeIndexExtensionsData; -import com.twitter.search.core.earlybird.index.inverted.EarlybirdCSFDocValuesProcessor; -import com.twitter.search.core.earlybird.index.inverted.InvertedRealtimeIndex; -import com.twitter.search.core.earlybird.index.inverted.InvertedRealtimeIndexWriter; -import com.twitter.search.core.earlybird.index.inverted.TermPointerEncoding; -import com.twitter.search.core.earlybird.index.util.AllDocsIterator; - -/** - * EarlybirdIndexWriter implementation that writes realtime in-memory segments. - * Note that it is used by both Earlybirds and ExpertSearch. - */ -public final class EarlybirdRealtimeIndexSegmentWriter extends EarlybirdIndexSegmentWriter { - private static final Logger LOG = - LoggerFactory.getLogger(EarlybirdRealtimeIndexSegmentWriter.class); - /** - * Maximum tweet length is 10k, setting maximum token position to 25k in case of weird unicode. - */ - private static final int MAX_POSITION = 25000; - - private static final String OUT_OF_ORDER_APPEND_UNSUPPORTED_STATS_PATTERN = - "out_of_order_append_unsupported_for_field_%s"; - private static final ConcurrentHashMap - UNSUPPORTED_OUT_OF_ORDER_APPEND_MAP = new ConcurrentHashMap<>(); - private static final SearchRateCounter NUM_TWEETS_DROPPED = - SearchRateCounter.export("EarlybirdRealtimeIndexSegmentWriter_num_tweets_dropped"); - - private long nextFieldGen; - - private HashMap fields = new HashMap<>(); - private List fieldsInDocument = new ArrayList<>(); - - private final EarlybirdCSFDocValuesProcessor docValuesProcessor; - - private Map termHashSync = new HashMap<>(); - private Set appendedFields = new HashSet<>(); - - private final Analyzer analyzer; - private final Similarity similarity; - - private final EarlybirdRealtimeIndexSegmentData segmentData; - - private final Field allDocsField; - - @Nullable - private final FacetCountingArrayWriter facetCountingArrayWriter; - - /** - * Creates a new writer for a real-time in-memory Earlybird segment. - * - * Do not add public constructors to this class. EarlybirdRealtimeIndexSegmentWriter instances - * should be created only by calling - * EarlybirdRealtimeIndexSegmentData.createEarlybirdIndexSegmentWriter(), to make sure everything - * is set up properly (such as CSF readers). - */ - EarlybirdRealtimeIndexSegmentWriter( - EarlybirdRealtimeIndexSegmentData segmentData, - Analyzer analyzer, - Similarity similarity) { - Preconditions.checkNotNull(segmentData); - this.segmentData = segmentData; - this.facetCountingArrayWriter = segmentData.createFacetCountingArrayWriter(); - this.docValuesProcessor = new EarlybirdCSFDocValuesProcessor(segmentData.getDocValuesManager()); - this.analyzer = analyzer; - this.similarity = similarity; - this.allDocsField = buildAllDocsField(segmentData); - } - - @Override - public EarlybirdRealtimeIndexSegmentData getSegmentData() { - return segmentData; - } - - @Override - public int numDocsNoDelete() { - return segmentData.getDocIDToTweetIDMapper().getNumDocs(); - } - - @Override - public void addDocument(Document doc) throws IOException { - // This method should be called only from Expertsearch, not tweets Earlybirds. - DocIDToTweetIDMapper docIdToTweetIdMapper = segmentData.getDocIDToTweetIDMapper(); - Preconditions.checkState(docIdToTweetIdMapper instanceof SequentialDocIDMapper); - - // Make sure we have space for a new doc in this segment. - Preconditions.checkState(docIdToTweetIdMapper.getNumDocs() < segmentData.getMaxSegmentSize(), - "Cannot add a new document to the segment, because it's full."); - - addDocument(doc, docIdToTweetIdMapper.addMapping(-1L), false); - } - - @Override - public void addTweet(Document doc, long tweetId, boolean docIsOffensive) throws IOException { - DocIDToTweetIDMapper docIdToTweetIdMapper = segmentData.getDocIDToTweetIDMapper(); - Preconditions.checkState(!(docIdToTweetIdMapper instanceof SequentialDocIDMapper)); - - // Make sure we have space for a new doc in this segment. - Preconditions.checkState(docIdToTweetIdMapper.getNumDocs() < segmentData.getMaxSegmentSize(), - "Cannot add a new document to the segment, because it's full."); - - Preconditions.checkNotNull(doc.getField( - EarlybirdFieldConstants.EarlybirdFieldConstant.CREATED_AT_FIELD.getFieldName())); - - addAllDocsField(doc); - - int docId = docIdToTweetIdMapper.addMapping(tweetId); - // Make sure we successfully assigned a doc ID to the new document/tweet before proceeding. - // If the docId is DocIDToTweetIDMapper.ID_NOT_FOUND then either: - // 1. the tweet is older than the OutOfOrderRealtimeTweetIDMapper.segmentBoundaryTimestamp and - // is too old for this segment - // 2. the OutOfOrderRealtimeTweetIDMapper does not have any available doc ids left - if (docId == DocIDToTweetIDMapper.ID_NOT_FOUND) { - LOG.info("Could not assign doc id for tweet. Dropping tweet id " + tweetId - + " for segment with timeslice: " + segmentData.getTimeSliceID()); - NUM_TWEETS_DROPPED.increment(); - return; - } - - addDocument(doc, docId, docIsOffensive); - } - - private void addDocument(Document doc, - int docId, - boolean docIsOffensive) throws IOException { - fieldsInDocument.clear(); - - long fieldGen = nextFieldGen++; - - // NOTE: we need two passes here, in case there are - // multi-valued fields, because we must process all - // instances of a given field at once, since the - // analyzer is free to reuse TokenStream across fields - // (i.e., we cannot have more than one TokenStream - // running "at once"): - - try { - for (IndexableField field : doc) { - if (!skipField(field.name())) { - processField(docId, field, fieldGen, docIsOffensive); - } - } - } finally { - // Finish each indexed field name seen in the document: - for (PerField field : fieldsInDocument) { - field.finish(docId); - } - - // When indexing a dummy document for out-of-order updates into a loaded segment, that - // document gets docID set as maxSegment size. So we have to make sure that we never - // sync backwards in document order. - int smallestDocID = Math.min(docId, segmentData.getSyncData().getSmallestDocID()); - segmentData.updateSmallestDocID(smallestDocID); - } - } - - @Override - protected void appendOutOfOrder(Document doc, int internalDocID) throws IOException { - Preconditions.checkNotNull(doc); - fieldsInDocument.clear(); - - long fieldGen = nextFieldGen++; - - try { - for (IndexableField indexableField : doc) { - if (!skipField(indexableField.name())) { - Schema.FieldInfo fi = segmentData.getSchema().getFieldInfo(indexableField.name()); - if (fi == null) { - LOG.error("FieldInfo for " + indexableField.name() + " is null!"); - continue; - } - if (segmentData.isOptimized() && fi.getFieldType().becomesImmutable()) { - UNSUPPORTED_OUT_OF_ORDER_APPEND_MAP.computeIfAbsent( - indexableField.name(), - f -> SearchRateCounter.export( - String.format(OUT_OF_ORDER_APPEND_UNSUPPORTED_STATS_PATTERN, f)) - ).increment(); - continue; - } - processField(internalDocID, indexableField, fieldGen, false); - appendedFields.add(indexableField.name()); - } - } - } finally { - // Finish each indexed field name seen in the document: - for (PerField field : fieldsInDocument) { - field.finish(internalDocID); - } - // force sync - segmentData.updateSmallestDocID(segmentData.getSyncData().getSmallestDocID()); - } - } - - @Override - public void addIndexes(Directory... dirs) { - throw new UnsupportedOperationException("In realtime mode addIndexes() is currently " - + "not supported."); - } - - @Override - public void forceMerge() { - // we always have a single segment in realtime-mode - } - - @Override - public void close() { - // nothing to close - } - - private void processField( - int docId, - IndexableField field, - long fieldGen, - boolean currentDocIsOffensive) throws IOException { - String fieldName = field.name(); - IndexableFieldType fieldType = field.fieldType(); - - // Invert indexed fields: - if (fieldType.indexOptions() != IndexOptions.NONE) { - PerField perField = getOrAddField(fieldName, fieldType); - - // Whether this is the first time we have seen this field in this document. - boolean first = perField.fieldGen != fieldGen; - perField.invert(field, docId, first, currentDocIsOffensive); - - if (first) { - fieldsInDocument.add(perField); - perField.fieldGen = fieldGen; - } - } else { - Schema.FieldInfo facetFieldInfo = - segmentData.getSchema().getFacetFieldByFieldName(fieldName); - FacetField facetField = facetFieldInfo != null - ? segmentData.getFacetIDMap().getFacetField(facetFieldInfo) : null; - EarlybirdFieldType facetFieldType = facetFieldInfo != null - ? facetFieldInfo.getFieldType() : null; - Preconditions.checkState( - facetFieldInfo == null || (facetField != null && facetFieldType != null)); - if (facetField != null && facetFieldType.isUseCSFForFacetCounting()) { - segmentData.getFacetLabelProviders().put( - facetField.getFacetName(), - Preconditions.checkNotNull( - FacetUtil.chooseFacetLabelProvider(facetFieldType, null))); - } - } - - if (fieldType.docValuesType() != DocValuesType.NONE) { - StoredFieldsConsumerBuilder consumerBuilder = new StoredFieldsConsumerBuilder( - fieldName, (EarlybirdFieldType) fieldType); - EarlybirdRealtimeIndexExtensionsData indexExtension = segmentData.getIndexExtensionsData(); - if (indexExtension != null) { - indexExtension.createStoredFieldsConsumer(consumerBuilder); - } - if (consumerBuilder.isUseDefaultConsumer()) { - consumerBuilder.addConsumer(docValuesProcessor); - } - - StoredFieldsConsumer storedFieldsConsumer = consumerBuilder.build(); - if (storedFieldsConsumer != null) { - storedFieldsConsumer.addField(docId, field); - } - } - } - - /** Returns a previously created {@link PerField}, absorbing the type information from - * {@link org.apache.lucene.document.FieldType}, and creates a new {@link PerField} if this field - * name wasn't seen yet. */ - private PerField getOrAddField(String name, IndexableFieldType fieldType) { - // Note that this could be a computeIfAbsent, but that allocates a closure in the hot path and - // slows down indexing. - PerField perField = fields.get(name); - if (perField == null) { - boolean omitNorms = fieldType.omitNorms() || fieldType.indexOptions() == IndexOptions.NONE; - perField = new PerField(this, name, fieldType.indexOptions(), omitNorms); - fields.put(name, perField); - } - return perField; - } - - /** NOTE: not static: accesses at least docState, termsHash. */ - private static final class PerField implements Comparable { - - private final EarlybirdRealtimeIndexSegmentWriter indexSegmentWriter; - - private final String fieldName; - private final IndexOptions indexOptions; - private final boolean omitNorms; - - private InvertedRealtimeIndex invertedField; - private InvertedDocConsumer indexWriter; - - /** We use this to know when a PerField is seen for the - * first time in the current document. */ - private long fieldGen = -1; - - // reused - private TokenStream tokenStream; - - private int currentPosition; - private int currentOffset; - private int currentLength; - private int currentOverlap; - private int lastStartOffset; - private int lastPosition; - - public PerField( - EarlybirdRealtimeIndexSegmentWriter indexSegmentWriter, - String fieldName, - IndexOptions indexOptions, - boolean omitNorms) { - this.indexSegmentWriter = indexSegmentWriter; - this.fieldName = fieldName; - this.indexOptions = indexOptions; - this.omitNorms = omitNorms; - - initInvertState(); - } - - void initInvertState() { - // it's okay if this is null - in that case TwitterTermHashPerField - // will not add it to the facet array - final Schema.FieldInfo facetFieldInfo - = indexSegmentWriter.segmentData.getSchema().getFacetFieldByFieldName(fieldName); - final FacetField facetField = facetFieldInfo != null - ? indexSegmentWriter.segmentData.getFacetIDMap().getFacetField(facetFieldInfo) : null; - final EarlybirdFieldType facetFieldType - = facetFieldInfo != null ? facetFieldInfo.getFieldType() : null; - Preconditions.checkState( - facetFieldInfo == null || (facetField != null && facetFieldType != null)); - - if (facetField != null && facetFieldType.isUseCSFForFacetCounting()) { - indexSegmentWriter.segmentData.getFacetLabelProviders().put( - facetField.getFacetName(), - Preconditions.checkNotNull( - FacetUtil.chooseFacetLabelProvider(facetFieldType, null))); - return; - } - - Schema.FieldInfo fi = indexSegmentWriter.segmentData.getSchema().getFieldInfo(fieldName); - final EarlybirdFieldType fieldType = fi.getFieldType(); - - InvertedDocConsumerBuilder consumerBuilder = new InvertedDocConsumerBuilder( - indexSegmentWriter.segmentData, fieldName, fieldType); - EarlybirdRealtimeIndexExtensionsData indexExtension = - indexSegmentWriter.segmentData.getIndexExtensionsData(); - if (indexExtension != null) { - indexExtension.createInvertedDocConsumer(consumerBuilder); - } - - if (consumerBuilder.isUseDefaultConsumer()) { - if (indexSegmentWriter.segmentData.getPerFieldMap().containsKey(fieldName)) { - invertedField = (InvertedRealtimeIndex) indexSegmentWriter - .segmentData.getPerFieldMap().get(fieldName); - } else { - invertedField = new InvertedRealtimeIndex( - fieldType, - TermPointerEncoding.DEFAULT_ENCODING, - fieldName); - } - - InvertedRealtimeIndexWriter fieldWriter = new InvertedRealtimeIndexWriter( - invertedField, facetField, indexSegmentWriter.facetCountingArrayWriter); - - if (facetField != null) { - Map providerMap = - indexSegmentWriter.segmentData.getFacetLabelProviders(); - if (!providerMap.containsKey(facetField.getFacetName())) { - providerMap.put( - facetField.getFacetName(), - Preconditions.checkNotNull( - FacetUtil.chooseFacetLabelProvider(facetFieldType, invertedField))); - } - } - - indexSegmentWriter.segmentData.addField(fieldName, invertedField); - - if (indexSegmentWriter.appendedFields.contains(fieldName)) { - indexSegmentWriter.termHashSync.put(fieldName, fieldWriter); - } - - consumerBuilder.addConsumer(fieldWriter); - } - - indexWriter = consumerBuilder.build(); - } - - @Override - public int compareTo(PerField other) { - return this.fieldName.compareTo(other.fieldName); - } - - @Override - public boolean equals(Object other) { - if (!(other instanceof PerField)) { - return false; - } - - return this.fieldName.equals(((PerField) other).fieldName); - } - - @Override - public int hashCode() { - return fieldName.hashCode(); - } - - public void finish(int docId) { - if (indexWriter != null) { - indexWriter.finish(); - } - - if (!omitNorms) { - FieldInvertState state = new FieldInvertState( - Version.LATEST.major, - fieldName, - indexOptions, - currentPosition, - currentLength, - currentOverlap, - currentOffset, - 0, // maxTermFrequency - 0); // uniqueTermCount - ColumnStrideByteIndex normsIndex = - indexSegmentWriter.segmentData.createNormIndex(fieldName); - if (normsIndex != null) { - normsIndex.setValue(docId, (byte) indexSegmentWriter.similarity.computeNorm(state)); - } - } - } - - /** Inverts one field for one document; first is true - * if this is the first time we are seeing this field - * name in this document. */ - public void invert(IndexableField field, - int docId, - boolean first, - boolean currentDocIsOffensive) throws IOException { - if (indexWriter == null) { - return; - } - if (first) { - currentPosition = -1; - currentOffset = 0; - lastPosition = 0; - lastStartOffset = 0; - - if (invertedField != null) { - invertedField.incrementNumDocs(); - } - } - - IndexableFieldType fieldType = field.fieldType(); - final boolean analyzed = fieldType.tokenized() && indexSegmentWriter.analyzer != null; - boolean succeededInProcessingField = false; - try { - tokenStream = field.tokenStream(indexSegmentWriter.analyzer, tokenStream); - tokenStream.reset(); - - PositionIncrementAttribute posIncrAttribute = - tokenStream.addAttribute(PositionIncrementAttribute.class); - OffsetAttribute offsetAttribute = tokenStream.addAttribute(OffsetAttribute.class); - TermToBytesRefAttribute termAtt = tokenStream.addAttribute(TermToBytesRefAttribute.class); - - Set seenTerms = new HashSet<>(); - indexWriter.start(tokenStream, currentDocIsOffensive); - while (tokenStream.incrementToken()) { - // If we hit an exception in stream.next below - // (which is fairly common, e.g. if analyzer - // chokes on a given document), then it's - // non-aborting and (above) this one document - // will be marked as deleted, but still - // consume a docID - - int posIncr = posIncrAttribute.getPositionIncrement(); - currentPosition += posIncr; - if (currentPosition < lastPosition) { - if (posIncr == 0) { - throw new IllegalArgumentException( - "first position increment must be > 0 (got 0) for field '" + field.name() + "'"); - } else if (posIncr < 0) { - throw new IllegalArgumentException( - "position increments (and gaps) must be >= 0 (got " + posIncr + ") for field '" - + field.name() + "'"); - } else { - throw new IllegalArgumentException( - "position overflowed Integer.MAX_VALUE (got posIncr=" + posIncr + " lastPosition=" - + lastPosition + " position=" + currentPosition + ") for field '" + field.name() - + "'"); - } - } else if (currentPosition > MAX_POSITION) { - throw new IllegalArgumentException( - "position " + currentPosition + " is too large for field '" + field.name() - + "': max allowed position is " + MAX_POSITION); - } - lastPosition = currentPosition; - if (posIncr == 0) { - currentOverlap++; - } - - int startOffset = currentOffset + offsetAttribute.startOffset(); - int endOffset = currentOffset + offsetAttribute.endOffset(); - if (startOffset < lastStartOffset || endOffset < startOffset) { - throw new IllegalArgumentException( - "startOffset must be non-negative, and endOffset must be >= startOffset, and " - + "offsets must not go backwards startOffset=" + startOffset + ",endOffset=" - + endOffset + ",lastStartOffset=" + lastStartOffset + " for field '" + field.name() - + "'"); - } - lastStartOffset = startOffset; - indexWriter.add(docId, currentPosition); - currentLength++; - - BytesRef term = termAtt.getBytesRef(); - if (seenTerms.add(term) && (invertedField != null)) { - invertedField.incrementSumTermDocFreq(); - } - } - - tokenStream.end(); - - currentPosition += posIncrAttribute.getPositionIncrement(); - currentOffset += offsetAttribute.endOffset(); - succeededInProcessingField = true; - } catch (BytesRefHash.MaxBytesLengthExceededException e) { - byte[] prefix = new byte[30]; - BytesRef bigTerm = tokenStream.getAttribute(TermToBytesRefAttribute.class).getBytesRef(); - System.arraycopy(bigTerm.bytes, bigTerm.offset, prefix, 0, 30); - String msg = "Document contains at least one immense term in field=\"" + fieldName - + "\" (whose UTF8 encoding is longer than the max length), all of " - + "which were skipped." + "Please correct the analyzer to not produce such terms. " - + "The prefix of the first immense term is: '" + Arrays.toString(prefix) - + "...', original message: " + e.getMessage(); - LOG.warn(msg); - // Document will be deleted above: - throw new IllegalArgumentException(msg, e); - } finally { - if (!succeededInProcessingField) { - LOG.warn("An exception was thrown while processing field " + fieldName); - } - if (tokenStream != null) { - try { - tokenStream.close(); - } catch (IOException e) { - if (succeededInProcessingField) { - // only throw this exception if no other exception already occurred above - throw e; - } else { - LOG.warn("Exception while trying to close TokenStream.", e); - } - } - } - } - - if (analyzed) { - currentPosition += indexSegmentWriter.analyzer.getPositionIncrementGap(fieldName); - currentOffset += indexSegmentWriter.analyzer.getOffsetGap(fieldName); - } - } - } - - @Override - public int numDocs() { - return segmentData.getDocIDToTweetIDMapper().getNumDocs(); - } - - public interface InvertedDocConsumer { - /** - * Called for each document before inversion starts. - */ - void start(AttributeSource attributeSource, boolean currentDocIsOffensive); - - /** - * Called for each token in the current document. - * @param docID Document id. - * @param position Position in the token stream for this document. - */ - void add(int docID, int position) throws IOException; - - /** - * Called after the last token was added and before the next document is processed. - */ - void finish(); - } - - public interface StoredFieldsConsumer { - /** - * Adds a new stored fields. - */ - void addField(int docID, IndexableField field) throws IOException; - } - - /** - * This Builder allows registering listeners for a particular field of an indexable document. - * For each field name any number of listeners can be added. - * - * Using {@link #useDefaultConsumer} it can be specified whether this index writer will use - * the default consumer in addition to any additionally registered consumers. - */ - public abstract static class ConsumerBuilder { - private boolean useDefaultConsumer; - private final List consumers; - private final EarlybirdFieldType fieldType; - private final String fieldName; - - private ConsumerBuilder(String fieldName, EarlybirdFieldType fieldType) { - useDefaultConsumer = true; - consumers = Lists.newArrayList(); - this.fieldName = fieldName; - this.fieldType = fieldType; - } - - public String getFieldName() { - return fieldName; - } - - public EarlybirdFieldType getFieldType() { - return fieldType; - } - - /** - * If set to true, {@link EarlybirdRealtimeIndexSegmentWriter} will use the default consumer - * (e.g. build a default inverted index for an inverted field) in addition to any consumers - * added via {@link #addConsumer(Object)}. - */ - public void setUseDefaultConsumer(boolean useDefaultConsumer) { - this.useDefaultConsumer = useDefaultConsumer; - } - - public boolean isUseDefaultConsumer() { - return useDefaultConsumer; - } - - /** - * Allows registering any number of additional consumers for the field associated with this - * builder. - */ - public void addConsumer(T consumer) { - consumers.add(consumer); - } - - T build() { - if (consumers.isEmpty()) { - return null; - } else if (consumers.size() == 1) { - return consumers.get(0); - } else { - return build(consumers); - } - } - - abstract T build(List consumerList); - } - - public static final class StoredFieldsConsumerBuilder - extends ConsumerBuilder { - private StoredFieldsConsumerBuilder(String fieldName, EarlybirdFieldType fieldType) { - super(fieldName, fieldType); - } - - @Override - StoredFieldsConsumer build(final List consumers) { - return (docID, field) -> { - for (StoredFieldsConsumer consumer : consumers) { - consumer.addField(docID, field); - } - }; - } - } - - public static final class InvertedDocConsumerBuilder - extends ConsumerBuilder { - private final EarlybirdIndexSegmentData segmentData; - - private InvertedDocConsumerBuilder( - EarlybirdIndexSegmentData segmentData, String fieldName, EarlybirdFieldType fieldType) { - super(fieldName, fieldType); - this.segmentData = segmentData; - } - - @Override - InvertedDocConsumer build(final List consumers) { - return new InvertedDocConsumer() { - @Override - public void start(AttributeSource attributeSource, boolean currentDocIsOffensive) { - for (InvertedDocConsumer consumer : consumers) { - consumer.start(attributeSource, currentDocIsOffensive); - } - } - - @Override - public void finish() { - for (InvertedDocConsumer consumer : consumers) { - consumer.finish(); - } - } - - @Override - public void add(int docID, int position) throws IOException { - for (InvertedDocConsumer consumer : consumers) { - consumer.add(docID, position); - } - } - }; - } - - public EarlybirdIndexSegmentData getSegmentData() { - return segmentData; - } - } - - /** - * Returns true, if a field should not be indexed. - * @deprecated This writer should be able to process all fields in the future. - */ - @Deprecated - private static boolean skipField(String fieldName) { - // ignore lucene facet fields for realtime index, we are handling it differently for now. - return fieldName.startsWith(FacetsConfig.DEFAULT_INDEX_FIELD_NAME); - } - - private static Field buildAllDocsField(EarlybirdRealtimeIndexSegmentData segmentData) { - String fieldName = EarlybirdFieldConstants.EarlybirdFieldConstant.INTERNAL_FIELD.getFieldName(); - if (segmentData.getSchema().hasField(fieldName)) { - Schema.FieldInfo fi = Preconditions.checkNotNull( - segmentData.getSchema().getFieldInfo(fieldName)); - return new Field(fi.getName(), AllDocsIterator.ALL_DOCS_TERM, fi.getFieldType()); - } - - return null; - } - - /** - * Every document must have this field and term, so that we can safely iterate through documents - * using {@link AllDocsIterator}. This is to prevent the problem of adding a tweet to the doc ID - * mapper, and returning it for a match-all query when the rest of the document hasn't been - * published. This could lead to queries returning incorrect results for queries that are only - * negations. - * */ - private void addAllDocsField(Document doc) { - if (allDocsField != null) { - doc.add(allDocsField); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/QueryCacheResultForSegment.docx b/src/java/com/twitter/search/core/earlybird/index/QueryCacheResultForSegment.docx new file mode 100644 index 0000000000000000000000000000000000000000..403c520c43afaca23ab2257c0b2f86dd26196881 GIT binary patch literal 37134 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⪆IPK4j5J*yk0i!;V(zC+VPY0mnA^q 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 ZLv0-fc(Vd?5GYp(G9&`C$F5!w4*-N%4~75$ literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/SequentialDocIDMapper.java b/src/java/com/twitter/search/core/earlybird/index/SequentialDocIDMapper.java deleted file mode 100644 index 3d029dcb2..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/SequentialDocIDMapper.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.twitter.search.core.earlybird.index; - -/** - * A doc ID mapper that assigns doc IDs sequentially in decreasing order, starting with the given - * max ID. Used by Expertsearch, which doesn't index tweets. - */ -public class SequentialDocIDMapper implements DocIDToTweetIDMapper { - private final int maxSegmentSize; - private int lastAssignedDocId; - - public SequentialDocIDMapper(int maxSegmentSize) { - this.maxSegmentSize = maxSegmentSize; - lastAssignedDocId = maxSegmentSize; - } - - @Override - public long getTweetID(int docID) { - // Should be used only at segment optimization time and in tests. - if ((docID < lastAssignedDocId) || (docID >= maxSegmentSize)) { - return ID_NOT_FOUND; - } - - return docID; - } - - @Override - public int getDocID(long tweetID) { - // Should be used only at segment optimization time and in tests. - if ((tweetID < lastAssignedDocId) || (tweetID >= maxSegmentSize)) { - return ID_NOT_FOUND; - } - - return (int) tweetID; - } - - @Override - public int getNumDocs() { - return maxSegmentSize - lastAssignedDocId; - } - - @Override - public int getNextDocID(int docID) { - int nextDocID = docID + 1; - - // nextDocID is larger than any doc ID that can be assigned by this mapper. - if (nextDocID >= maxSegmentSize) { - return ID_NOT_FOUND; - } - - // nextDocID is smaller than any doc ID assigned by this mapper so far. - if (nextDocID < lastAssignedDocId) { - return lastAssignedDocId; - } - - // nextDocID is in the range of doc IDs assigned by this mapper. - return nextDocID; - } - - @Override - public int getPreviousDocID(int docID) { - int previousDocID = docID - 1; - - // previousDocID is larger than any doc ID that can be assigned by this mapper. - if (previousDocID >= maxSegmentSize) { - return maxSegmentSize - 1; - } - - // previousDocID is smaller than any doc ID assigned by this mapper so far. - if (previousDocID < lastAssignedDocId) { - return ID_NOT_FOUND; - } - - // previousDocID is in the range of doc IDs assigned by this mapper. - return previousDocID; - } - - @Override - public int addMapping(final long tweetID) { - return --lastAssignedDocId; - } - - @Override - public DocIDToTweetIDMapper optimize() { - // Segments that use this DocIDToTweetIDMapper should never be optimized. - throw new UnsupportedOperationException("SequentialDocIDMapper cannot be optimized."); - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/TimeMapper.docx b/src/java/com/twitter/search/core/earlybird/index/TimeMapper.docx new file mode 100644 index 0000000000000000000000000000000000000000..6189662a82aa9b7e808879ce5f75937053fe48f4 GIT binary patch literal 37896 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/TimeMapper.java b/src/java/com/twitter/search/core/earlybird/index/TimeMapper.java deleted file mode 100644 index e2f609168..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/TimeMapper.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.twitter.search.core.earlybird.index; - -import java.io.IOException; - -import com.twitter.search.common.util.io.flushable.Flushable; - -/** - * Maps timestamps to the doc IDs assigned to the documents that are indexed (tweets, users, etc.). - */ -public interface TimeMapper extends Flushable { - // Unless specified, all time fields are seconds-since-epoch. - int ILLEGAL_TIME = Integer.MIN_VALUE; - - /** - * Returns the time of the newest tweet in the index. - * - * @return The time of the newest tweet in the index. - */ - int getLastTime(); - - /** - * Returns the time of the oldest tweet in the index. - * - * @return The time of the oldest tweet in the index. - */ - int getFirstTime(); - - /** - * Returns the timestamp of the document mapped to the given doc ID, or ILLEGAL_TIME if this - * mapper doesn't know about this doc ID. - * - * @param docID The document's internal ID. - * @return The timestamp of the document mapped to the given doc ID. - */ - int getTime(int docID); - - /** - * Returns the doc ID of the first indexed document with a timestamp equal to or greater than the - * given timestamp. - * - * If timeSeconds is larger than the max timestamp in this mapper, smallestDocID is returned. - * If timeSeconds is smaller than the min timestamp in the mapper, the largest docID is returned. - * - * Note that when tweets are indexed out of order, this method might return the doc ID of a tweet - * with a timestamp greater than timeSeconds, even if there's a tweet with a timestamp of - * timeSeconds. So the callers of this method can use the returned doc ID as a starting point for - * iteration purposes, but should have a check that the traversed doc IDs have a timestamp in the - * desired range. See SinceUntilFilter.getDocIdSet() for an example. - * - * Example: - * DocIds: 6, 5, 4, 3, 2, 1, 0 - * Times: 1, 5, 3, 4, 4, 3, 6 - * With that data: - * findFirstDocId(1, 0) should return 6. - * findFirstDocId(3, 0) should return 5. - * findFirstDocId(4, 0) should return 5. - * findFirstDocId(5, 0) should return 5. - * findFirstDocId(6, 0) should return 0. - * - * @param timeSeconds The boundary timestamp, in seconds. - * @param smallestDocID The doc ID to return if the given time boundary is larger than the max - * timestamp in this mapper. - */ - int findFirstDocId(int timeSeconds, int smallestDocID) throws IOException; - - /** - * Optimizes this time mapper. - * - * At segment optimization time, the doc IDs assigned to the documents in that segment might - * change (they might be mapped to a more compact space for performance reasons, for example). - * When that happens, we need to remap accordingly the doc IDs stored in the time mapper for that - * segment too. It would also be a good time to optimize the data stored in the time mapper. - * - * @param originalDocIdMapper The doc ID mapper used by this segment before it was optimized. - * @param optimizedDocIdMapper The doc ID mapper used by this segment after it was optimized. - * @return An optimized TimeMapper with the same tweet IDs. - */ - TimeMapper optimize(DocIDToTweetIDMapper originalDocIdMapper, - DocIDToTweetIDMapper optimizedDocIdMapper) throws IOException; -} diff --git a/src/java/com/twitter/search/core/earlybird/index/column/AbstractColumnStrideMultiIntIndex.docx b/src/java/com/twitter/search/core/earlybird/index/column/AbstractColumnStrideMultiIntIndex.docx new file mode 100644 index 0000000000000000000000000000000000000000..5b87ac3c592b048021938a780e10f989f82571f7 GIT binary patch literal 37663 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 LA~1Wb=mYTp4DNFs literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/core/earlybird/index/column/AbstractColumnStrideMultiIntIndex.java b/src/java/com/twitter/search/core/earlybird/index/column/AbstractColumnStrideMultiIntIndex.java deleted file mode 100644 index d7dc63910..000000000 --- a/src/java/com/twitter/search/core/earlybird/index/column/AbstractColumnStrideMultiIntIndex.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.twitter.search.core.earlybird.index.column; - -import java.io.IOException; - -import com.google.common.base.Preconditions; - -import org.apache.lucene.index.BinaryDocValues; -import org.apache.lucene.index.LeafReader; -import org.apache.lucene.util.BytesRef; - -import com.twitter.search.common.encoding.docvalues.CSFTypeUtil; -import com.twitter.search.common.util.io.flushable.Flushable; - -public abstract class AbstractColumnStrideMultiIntIndex - extends ColumnStrideFieldIndex implements Flushable { - private static final int NUM_BYTES_PER_INT = java.lang.Integer.SIZE / java.lang.Byte.SIZE; - - private final int numIntsPerField; - - protected AbstractColumnStrideMultiIntIndex(String name, int numIntsPerField) { - super(name); - this.numIntsPerField = numIntsPerField; - } - - public int getNumIntsPerField() { - return numIntsPerField; - } - - @Override - public long get(int docID) { - throw new UnsupportedOperationException(); - } - - /** - * Returns the value stored at the given index for the given doc ID. - */ - public abstract int get(int docID, int valueIndex); - - /** - * Sets the value stored at the given index for the given doc ID. - */ - public abstract void setValue(int docID, int valueIndex, int val); - - @Override - public void load(LeafReader atomicReader, String field) throws IOException { - BinaryDocValues docValues = atomicReader.getBinaryDocValues(field); - int numBytesPerDoc = numIntsPerField * NUM_BYTES_PER_INT; - - for (int docID = 0; docID < atomicReader.maxDoc(); docID++) { - Preconditions.checkState(docValues.advanceExact(docID)); - BytesRef scratch = docValues.binaryValue(); - Preconditions.checkState( - scratch.length == numBytesPerDoc, - "Unexpected doc value length for field " + field - + ": Should be " + numBytesPerDoc + ", but was " + scratch.length); - - scratch.length = NUM_BYTES_PER_INT; - for (int i = 0; i < numIntsPerField; i++) { - setValue(docID, i, asInt(scratch)); - scratch.offset += NUM_BYTES_PER_INT; - } - } - } - - public void updateDocValues(BytesRef ref, int docID) { - for (int i = 0; i < numIntsPerField; i++) { - setValue(docID, i, CSFTypeUtil.convertFromBytes(ref.bytes, ref.offset, i)); - } - } - - private static int asInt(BytesRef b) { - return asInt(b, b.offset); - } - - private static int asInt(BytesRef b, int pos) { - int p = pos; - return (b.bytes[p++] << 24) | (b.bytes[p++] << 16) | (b.bytes[p++] << 8) | (b.bytes[p] & 0xFF); - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideByteIndex.docx b/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideByteIndex.docx new file mode 100644 index 0000000000000000000000000000000000000000..8acc1e3cf8eb14ab6283b3a6e66c1369944b51fb GIT binary patch literal 37626 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 { - private static final String NAME_PROP_NAME = "fieldName"; - private static final String MAX_SIZE_PROP = "maxSize"; - - public FlushHandler() { - super(); - } - - public FlushHandler(ColumnStrideByteIndex objectToFlush) { - super(objectToFlush); - } - - @Override - protected void doFlush(FlushInfo flushInfo, DataSerializer out) throws IOException { - ColumnStrideByteIndex index = getObjectToFlush(); - flushInfo.addStringProperty(NAME_PROP_NAME, index.getName()); - flushInfo.addIntProperty(MAX_SIZE_PROP, index.maxSize); - - out.writeInt(index.values.size()); - for (Int2ByteOpenHashMap.Entry entry : index.values.int2ByteEntrySet()) { - out.writeInt(entry.getIntKey()); - out.writeByte(entry.getByteValue()); - } - } - - @Override - protected ColumnStrideByteIndex doLoad(FlushInfo flushInfo, DataDeserializer in) - throws IOException { - int size = in.readInt(); - int maxSize = flushInfo.getIntProperty(MAX_SIZE_PROP); - Int2ByteOpenHashMap map = new Int2ByteOpenHashMap(maxSize); - for (int i = 0; i < size; i++) { - map.put(in.readInt(), in.readByte()); - } - return new ColumnStrideByteIndex(flushInfo.getStringProperty(NAME_PROP_NAME), map, maxSize); - } - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideFieldDocValues.docx b/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideFieldDocValues.docx new file mode 100644 index 0000000000000000000000000000000000000000..c3bf06e278eedc70246529629c8212a72605dbb3 GIT binary patch literal 37684 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 docID(), - "ColumnStrideFieldDocValues.advance() for field %s called with target %s, " - + "but the current doc ID is %s.", - csf.getName(), - target, - docID()); - if (target == docID()) { - return true; - } - - // We don't need to check if we have a value for 'target', because a ColumnStrideFieldIndex - // instance has a value for every doc ID (though that value might be 0). - return advance(target) == target; - } - - @Override - public long cost() { - return iterator.cost(); - } -} diff --git a/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideFieldIndex.docx b/src/java/com/twitter/search/core/earlybird/index/column/ColumnStrideFieldIndex.docx new file mode 100644 index 0000000000000000000000000000000000000000..62be6be0ecabc4323d7554672f64ac59dc75fc86 GIT binary patch literal 37429 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

  • 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 Ps(3(-fO%ZX`1bApMg7HA literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/earlybird/ThriftSearchResultUtil.java b/src/java/com/twitter/search/common/util/earlybird/ThriftSearchResultUtil.java deleted file mode 100644 index 3b9661c6e..000000000 --- a/src/java/com/twitter/search/common/util/earlybird/ThriftSearchResultUtil.java +++ /dev/null @@ -1,209 +0,0 @@ -package com.twitter.search.common.util.earlybird; - -import java.util.List; -import java.util.Map; -import javax.annotation.Nullable; - -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.base.Predicates; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - -import com.twitter.search.common.constants.thriftjava.ThriftLanguage; -import com.twitter.search.common.relevance.ranking.ActionChain; -import com.twitter.search.common.relevance.ranking.filters.ExactDuplicateFilter; -import com.twitter.search.common.relevance.text.VisibleTokenRatioNormalizer; -import com.twitter.search.common.runtime.ActionChainDebugManager; -import com.twitter.search.common.schema.base.Schema; -import com.twitter.search.earlybird.thrift.ThriftFacetFieldResults; -import com.twitter.search.earlybird.thrift.ThriftFacetResults; -import com.twitter.search.earlybird.thrift.ThriftSearchResult; -import com.twitter.search.earlybird.thrift.ThriftSearchResultMetadata; -import com.twitter.search.earlybird.thrift.ThriftSearchResultType; -import com.twitter.search.earlybird.thrift.ThriftSearchResults; -import com.twitter.search.earlybird.thrift.ThriftTweetSource; - -/** - * ThriftSearchResultUtil contains some simple static methods for constructing - * ThriftSearchResult objects. - */ -public final class ThriftSearchResultUtil { - private ThriftSearchResultUtil() { } - - private static final VisibleTokenRatioNormalizer NORMALIZER = - VisibleTokenRatioNormalizer.createInstance(); - - public static final Function> LANG_MAP_GETTER = - searchResults -> searchResults.getLanguageHistogram(); - public static final Function> HIT_COUNTS_MAP_GETTER = - searchResults -> searchResults.getHitCounts(); - - // Some useful Predicates - public static final Predicate IS_OFFENSIVE_TWEET = - result -> { - if (result != null && result.isSetMetadata()) { - ThriftSearchResultMetadata metadata = result.getMetadata(); - return metadata.isIsOffensive(); - } else { - return false; - } - }; - - public static final Predicate IS_TOP_TWEET = - result -> result != null - && result.isSetMetadata() - && result.getMetadata().isSetResultType() - && result.getMetadata().getResultType() == ThriftSearchResultType.POPULAR; - - public static final Predicate FROM_FULL_ARCHIVE = - result -> result != null - && result.isSetTweetSource() - && result.getTweetSource() == ThriftTweetSource.FULL_ARCHIVE_CLUSTER; - - public static final Predicate IS_FULL_ARCHIVE_TOP_TWEET = - Predicates.and(FROM_FULL_ARCHIVE, IS_TOP_TWEET); - - public static final Predicate IS_NSFW_BY_ANY_MEANS_TWEET = - result -> { - if (result != null && result.isSetMetadata()) { - ThriftSearchResultMetadata metadata = result.getMetadata(); - return metadata.isIsUserNSFW() - || metadata.isIsOffensive() - || metadata.getExtraMetadata().isIsSensitiveContent(); - } else { - return false; - } - }; - - /** - * Returns the number of underlying ThriftSearchResult results. - */ - public static int numResults(ThriftSearchResults results) { - if (results == null || !results.isSetResults()) { - return 0; - } else { - return results.getResultsSize(); - } - } - - /** - * Returns the list of tweet IDs in ThriftSearchResults. - * Returns null if there's no results. - */ - @Nullable - public static List getTweetIds(ThriftSearchResults results) { - if (numResults(results) > 0) { - return getTweetIds(results.getResults()); - } else { - return null; - } - } - - /** - * Returns the list of tweet IDs in a list of ThriftSearchResult. - * Returns null if there's no results. - */ - public static List getTweetIds(@Nullable List results) { - if (results != null && results.size() > 0) { - return Lists.newArrayList(Iterables.transform( - results, - searchResult -> searchResult.getId() - )); - } - return null; - } - - /** - * Given ThriftSearchResults, build a map from tweet ID to the tweets metadata. - */ - public static Map getTweetMetadataMap( - Schema schema, ThriftSearchResults results) { - Map resultMap = Maps.newHashMap(); - if (results == null || results.getResultsSize() == 0) { - return resultMap; - } - for (ThriftSearchResult searchResult : results.getResults()) { - resultMap.put(searchResult.getId(), searchResult.getMetadata()); - } - return resultMap; - } - - /** - * Return the total number of facet results in ThriftFacetResults, by summing up the number - * of facet results in each field. - */ - public static int numFacetResults(ThriftFacetResults results) { - if (results == null || !results.isSetFacetFields()) { - return 0; - } else { - int numResults = 0; - for (ThriftFacetFieldResults field : results.getFacetFields().values()) { - if (field.isSetTopFacets()) { - numResults += field.topFacets.size(); - } - } - return numResults; - } - } - - /** - * Updates the search statistics on base, by adding the corresponding stats from delta. - */ - public static void incrementCounts(ThriftSearchResults base, - ThriftSearchResults delta) { - if (delta.isSetNumHitsProcessed()) { - base.setNumHitsProcessed(base.getNumHitsProcessed() + delta.getNumHitsProcessed()); - } - if (delta.isSetNumPartitionsEarlyTerminated() && delta.getNumPartitionsEarlyTerminated() > 0) { - // This currently used for merging results on a single earlybird, so we don't sum up all the - // counts, just set it to 1 if we see one that was early terminated. - base.setNumPartitionsEarlyTerminated(1); - } - if (delta.isSetMaxSearchedStatusID()) { - long deltaMax = delta.getMaxSearchedStatusID(); - if (!base.isSetMaxSearchedStatusID() || deltaMax > base.getMaxSearchedStatusID()) { - base.setMaxSearchedStatusID(deltaMax); - } - } - if (delta.isSetMinSearchedStatusID()) { - long deltaMin = delta.getMinSearchedStatusID(); - if (!base.isSetMinSearchedStatusID() || deltaMin < base.getMinSearchedStatusID()) { - base.setMinSearchedStatusID(deltaMin); - } - } - if (delta.isSetScore()) { - if (base.isSetScore()) { - base.setScore(base.getScore() + delta.getScore()); - } else { - base.setScore(delta.getScore()); - } - } - } - - /** - * Removes the duplicates from the given list of results. - * - * @param results The list of ThriftSearchResults. - * @return The given list with duplicates removed. - */ - public static List removeDuplicates(List results) { - ActionChain filterChain = - ActionChainDebugManager - .createActionChainBuilder("RemoveDuplicatesFilters") - .appendActions(new ExactDuplicateFilter()) - .build(); - return filterChain.apply(results); - } - - /** - * Returns ranking score from Earlybird shard-based ranking models if any, and 0 otherwise. - */ - public static double getTweetScore(@Nullable ThriftSearchResult result) { - if (result == null || !result.isSetMetadata() || !result.getMetadata().isSetScore()) { - return 0.0; - } - return result.getMetadata().getScore(); - } -} diff --git a/src/java/com/twitter/search/common/util/earlybird/ThriftSearchResultsRelevanceStatsUtil.docx b/src/java/com/twitter/search/common/util/earlybird/ThriftSearchResultsRelevanceStatsUtil.docx new file mode 100644 index 0000000000000000000000000000000000000000..66303a936a77daf2cb1dd8314d34fa29ecd5a825 GIT binary patch literal 37308 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 z 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/earlybird/ThriftSearchResultsRelevanceStatsUtil.java b/src/java/com/twitter/search/common/util/earlybird/ThriftSearchResultsRelevanceStatsUtil.java deleted file mode 100644 index 182dd1274..000000000 --- a/src/java/com/twitter/search/common/util/earlybird/ThriftSearchResultsRelevanceStatsUtil.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.twitter.search.common.util.earlybird; - -import com.twitter.search.earlybird.thrift.ThriftSearchResultsRelevanceStats; - -public final class ThriftSearchResultsRelevanceStatsUtil { - private ThriftSearchResultsRelevanceStatsUtil() { } - - /** - * Adding ThriftSearchResultsRelevanceStats from one set of results onto a base set. - * Assumes all values are set on both of the inputs. - * - * @param base the stats to add to. - * @param delta the stats to be added. - */ - public static void addRelevanceStats(ThriftSearchResultsRelevanceStats base, - ThriftSearchResultsRelevanceStats delta) { - base.setNumScored(base.getNumScored() + delta.getNumScored()); - base.setNumSkipped(base.getNumSkipped() + delta.getNumSkipped()); - base.setNumSkippedForAntiGaming( - base.getNumSkippedForAntiGaming() + delta.getNumSkippedForAntiGaming()); - base.setNumSkippedForLowReputation( - base.getNumSkippedForLowReputation() + delta.getNumSkippedForLowReputation()); - base.setNumSkippedForLowTextScore( - base.getNumSkippedForLowTextScore() + delta.getNumSkippedForLowTextScore()); - base.setNumSkippedForSocialFilter( - base.getNumSkippedForSocialFilter() + delta.getNumSkippedForSocialFilter()); - base.setNumSkippedForLowFinalScore( - base.getNumSkippedForLowFinalScore() + delta.getNumSkippedForLowFinalScore()); - if (delta.getOldestScoredTweetAgeInSeconds() > base.getOldestScoredTweetAgeInSeconds()) { - base.setOldestScoredTweetAgeInSeconds(delta.getOldestScoredTweetAgeInSeconds()); - } - - base.setNumFromDirectFollows(base.getNumFromDirectFollows() + delta.getNumFromDirectFollows()); - base.setNumFromTrustedCircle(base.getNumFromTrustedCircle() + delta.getNumFromTrustedCircle()); - base.setNumReplies(base.getNumReplies() + delta.getNumReplies()); - base.setNumRepliesTrusted(base.getNumRepliesTrusted() + delta.getNumRepliesTrusted()); - base.setNumRepliesOutOfNetwork( - base.getNumRepliesOutOfNetwork() + delta.getNumRepliesOutOfNetwork()); - base.setNumSelfTweets(base.getNumSelfTweets() + delta.getNumSelfTweets()); - base.setNumWithMedia(base.getNumWithMedia() + delta.getNumWithMedia()); - base.setNumWithNews(base.getNumWithNews() + delta.getNumWithNews()); - base.setNumSpamUser(base.getNumSpamUser() + delta.getNumSpamUser()); - base.setNumOffensive(base.getNumOffensive() + delta.getNumOffensive()); - base.setNumBot(base.getNumBot() + delta.getNumBot()); - } -} diff --git a/src/java/com/twitter/search/common/util/lang/BUILD b/src/java/com/twitter/search/common/util/lang/BUILD deleted file mode 100644 index e88e63360..000000000 --- a/src/java/com/twitter/search/common/util/lang/BUILD +++ /dev/null @@ -1,18 +0,0 @@ -java_library( - sources = ["*.java"], - platform = "java8", - provides = artifact( - org = "com.twitter.search.common.util", - name = "lang", - repo = artifactory, - ), - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/code/findbugs:jsr305", - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/org/apache/thrift:libthrift", - "3rdparty/jvm/org/slf4j:slf4j-api", - "src/java/com/twitter/common/text/language:locale-util", - "src/thrift/com/twitter/search/common:constants-java", - ], -) diff --git a/src/java/com/twitter/search/common/util/lang/BUILD.docx b/src/java/com/twitter/search/common/util/lang/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..ef531b5d2bda8776b517c83daab59cea144c95f3 GIT binary patch literal 36919 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/lang/ThriftLanguageUtil.java b/src/java/com/twitter/search/common/util/lang/ThriftLanguageUtil.java deleted file mode 100644 index 2ede4c2f0..000000000 --- a/src/java/com/twitter/search/common/util/lang/ThriftLanguageUtil.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.twitter.search.common.util.lang; - -import java.lang.reflect.Field; -import java.util.Locale; -import java.util.Map; - -import javax.annotation.Nullable; - -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.twitter.common.text.language.LocaleUtil; -import com.twitter.search.common.constants.thriftjava.ThriftLanguage; - -/** - * This class can be used to convert ThriftLanguage to Locale object and vise versa. - */ -public final class ThriftLanguageUtil { - private static final Logger LOG = LoggerFactory.getLogger(ThriftLanguageUtil.class.getName()); - - // stores ThriftLanguage.id -> Locale mapping - private static final Locale[] LOCALES; - - // stores Locale -> ThriftLanguage mapping - private static final Map THRIFT_LANGUAGES; - - static { - LOCALES = new Locale[ThriftLanguage.values().length]; - Map thriftLanguageMap = Maps.newHashMap(); - - // get all languages defined in ThriftLanguage - Field[] fields = ThriftLanguage.class.getDeclaredFields(); - for (Field field : fields) { - if (!field.isEnumConstant()) { - continue; - } - - try { - ThriftLanguage thriftLang = (ThriftLanguage) field.get(null); - String thriftLanguageName = field.getName(); - - // get corresponding Locale declared in LocaleUtil - try { - Field localeUtilField = LocaleUtil.class.getDeclaredField(thriftLanguageName); - Locale localeLang = (Locale) localeUtilField.get(null); - - LOCALES[thriftLang.getValue()] = localeLang; - thriftLanguageMap.put(localeLang, thriftLang); - } catch (NoSuchFieldException e) { - LOG.warn("{} is defined in ThriftLanguage, but not in LocaleUtil.", thriftLanguageName); - } - } catch (IllegalAccessException e) { - // shouldn't happen. - LOG.warn("Could not get a declared field.", e); - } - } - - // Let's make sure that all Locales defined in LocaleUtil are also defined in ThriftLanguage - for (Locale lang : LocaleUtil.getDefinedLanguages()) { - if (!thriftLanguageMap.containsKey(lang)) { - LOG.warn("{} is defined in LocaleUtil but not in ThriftLanguage.", lang.getLanguage()); - } - } - - THRIFT_LANGUAGES = ImmutableMap.copyOf(thriftLanguageMap); - } - - private ThriftLanguageUtil() { - } - - /** - * Returns a Locale object which corresponds to a given ThriftLanguage object. - * @param language ThriftLanguage object - * @return a corresponding Locale object - */ - public static Locale getLocaleOf(ThriftLanguage language) { - // Note that ThriftLanguage.findByValue() can return null (thrift generated code). - // So ThriftLanguageUtil.getLocaleOf needs to handle null correctly. - if (language == null) { - return LocaleUtil.UNKNOWN; - } - - Preconditions.checkArgument(language.getValue() < LOCALES.length); - return LOCALES[language.getValue()]; - } - - /** - * Returns a ThriftLanguage object which corresponds to a given Locale object. - * - * @param language Locale object - * @return a corresponding ThriftLanguage object, or UNKNOWN if there's no corresponding one. - */ - public static ThriftLanguage getThriftLanguageOf(Locale language) { - Preconditions.checkNotNull(language); - ThriftLanguage thriftLang = THRIFT_LANGUAGES.get(language); - return thriftLang == null ? ThriftLanguage.UNKNOWN : thriftLang; - } - - /** - * Returns a ThriftLanguage object which corresponds to a given language code. - * - * @param languageCode BCP-47 language code - * @return a corresponding ThriftLanguage object, or UNKNOWN if there's no corresponding one. - */ - public static ThriftLanguage getThriftLanguageOf(String languageCode) { - Preconditions.checkNotNull(languageCode); - ThriftLanguage thriftLang = THRIFT_LANGUAGES.get(LocaleUtil.getLocaleOf(languageCode)); - return thriftLang == null ? ThriftLanguage.UNKNOWN : thriftLang; - } - - /** - * Returns a ThriftLanguage object which corresponds to a given int value. - * If value is not valid, returns ThriftLanguage.UNKNOWN - * @param value value of language - * @return a corresponding ThriftLanguage object - */ - public static ThriftLanguage safeFindByValue(int value) { - ThriftLanguage thriftLang = ThriftLanguage.findByValue(value); - return thriftLang == null ? ThriftLanguage.UNKNOWN : thriftLang; - } - - /** - * Returns the language code which corresponds to a given ThriftLanguage. - * - * Note that multiple ThriftLanguage entries can return the same language code. - * - * @param thriftLang ThriftLanguage object - * @return Corresponding language or null if thriftLang is null. - */ - @Nullable - public static String getLanguageCodeOf(@Nullable ThriftLanguage thriftLang) { - if (thriftLang == null) { - return null; - } - return ThriftLanguageUtil.getLocaleOf(thriftLang).getLanguage(); - } -} diff --git a/src/java/com/twitter/search/common/util/ml/BUILD b/src/java/com/twitter/search/common/util/ml/BUILD deleted file mode 100644 index b6c67753a..000000000 --- a/src/java/com/twitter/search/common/util/ml/BUILD +++ /dev/null @@ -1,16 +0,0 @@ -java_library( - sources = ["*.java"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/com/google/inject:guice", - "3rdparty/jvm/it/unimi/dsi:fastutil", - "3rdparty/jvm/org/apache/hadoop:hadoop-client-default", - "3rdparty/jvm/org/apache/thrift:libthrift", - "3rdparty/jvm/org/slf4j:slf4j-api", - "src/java/com/twitter/common/base", - "src/java/com/twitter/search/common/file", - "src/java/com/twitter/search/common/util/io", - ], -) diff --git a/src/java/com/twitter/search/common/util/ml/BUILD.docx b/src/java/com/twitter/search/common/util/ml/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..26788668818964cd0ac391627530bfd923f66413 GIT binary patch literal 36871 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 Hbc1*RC1mKg literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/EnumBasedLinearModel.docx b/src/java/com/twitter/search/common/util/ml/EnumBasedLinearModel.docx new file mode 100644 index 0000000000000000000000000000000000000000..4089b45f04f11c60321224a1bda0cb4bcee7fee3 GIT binary patch literal 38324 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 LU>@2D-|zkf2=d_z literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/EnumBasedLinearModel.java b/src/java/com/twitter/search/common/util/ml/EnumBasedLinearModel.java deleted file mode 100644 index 50b2fc46a..000000000 --- a/src/java/com/twitter/search/common/util/ml/EnumBasedLinearModel.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.twitter.search.common.util.ml; - -import java.io.IOException; -import java.util.EnumMap; -import java.util.EnumSet; -import java.util.Map; -import java.util.Set; - -import com.google.common.base.Preconditions; -import com.google.common.base.Predicates; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; - -import com.twitter.search.common.file.AbstractFile; -import com.twitter.search.common.util.io.TextFileLoadingUtils; - -/** - * Represents a linear model for scoring and classification. - * - * The list of features is defined by an Enum class. The model weights and instances are - * represented as maps that must contain an entry for all the values of the enum. - * - */ -public class EnumBasedLinearModel> implements MapBasedLinearModel { - - private final EnumSet features; - private final EnumMap weights; - - /** - * Creates a model from a map of weights. - * - * @param enumType Enum used for the keys - * @param weights Feature weights. - */ - public EnumBasedLinearModel(Class enumType, Map weights) { - features = EnumSet.allOf(enumType); - EnumMap enumWeights = - new EnumMap<>(Maps.filterValues(weights, Predicates.notNull())); - Preconditions.checkArgument(features.equals(enumWeights.keySet()), - "The model does not include weights for all the available features"); - - this.weights = enumWeights; - } - - public ImmutableMap getWeights() { - return Maps.immutableEnumMap(weights); - } - - @Override - public float score(Map instance) { - float total = 0; - for (Map.Entry weightEntry : weights.entrySet()) { - Float feature = instance.get(weightEntry.getKey()); - if (feature != null) { - total += weightEntry.getValue() * feature; - } - } - return total; - } - - /** - * Determines whether an instance is positive. - */ - @Override - public boolean classify(float threshold, Map instance) { - return score(instance) > threshold; - } - - @Override - public boolean classify(Map instance) { - return classify(0, instance); - } - - @Override - public String toString() { - return String.format("EnumBasedLinearModel[%s]", weights); - } - - /** - * Creates a model where all the features have the same weight. - * This method is useful for generating the feature vectors for training a new model. - */ - public static > EnumBasedLinearModel createWithEqualWeight(Class enumType, - Float weight) { - EnumSet features = EnumSet.allOf(enumType); - EnumMap weights = Maps.newEnumMap(enumType); - for (T feature : features) { - weights.put(feature, weight); - } - return new EnumBasedLinearModel<>(enumType, weights); - } - - /** - * Loads the model from a TSV file with the following format: - * - * feature_name \t weight - */ - public static > EnumBasedLinearModel createFromFile( - Class enumType, AbstractFile path) throws IOException { - return new EnumBasedLinearModel<>(enumType, loadWeights(enumType, path, true)); - } - - /** - * Loads the model from a TSV file, using a default weight of 0 for missing features. - * - * File format: - * - * feature_name \t weight - */ - public static > EnumBasedLinearModel createFromFileSafe( - Class enumType, AbstractFile path) throws IOException { - return new EnumBasedLinearModel<>(enumType, loadWeights(enumType, path, false)); - } - - /** - * Creates a map of (feature_name, weight) from a TSV file. - * - * If strictMode is true, it will throw an exception if the file doesn't contain all the - * features declared in the enum. Otherwise, it will use zero as default value. - * - */ - private static > EnumMap loadWeights( - Class enumType, AbstractFile fileHandle, boolean strictMode) throws IOException { - Map weightsFromFile = - TextFileLoadingUtils.loadMapFromFile(fileHandle, input -> Float.parseFloat(input)); - EnumMap weights = Maps.newEnumMap(enumType); - Set expectedFeatures = EnumSet.allOf(enumType); - if (!strictMode) { - for (T feature : expectedFeatures) { - weights.put(feature, 0f); - } - } - for (String featureName : weightsFromFile.keySet()) { - Float weight = weightsFromFile.get(featureName); - weights.put(Enum.valueOf(enumType, featureName.toUpperCase()), weight); - } - Preconditions.checkArgument(expectedFeatures.equals(weights.keySet()), - "Model does not contain weights for all the features"); - return weights; - } -} diff --git a/src/java/com/twitter/search/common/util/ml/FeatureUtils.docx b/src/java/com/twitter/search/common/util/ml/FeatureUtils.docx new file mode 100644 index 0000000000000000000000000000000000000000..f52453c23d05b954010213baa0c73d3ec733e888 GIT binary patch literal 37943 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⪙sz~Dkga(f_3 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 literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/FeatureUtils.java b/src/java/com/twitter/search/common/util/ml/FeatureUtils.java deleted file mode 100644 index fef79620d..000000000 --- a/src/java/com/twitter/search/common/util/ml/FeatureUtils.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.twitter.search.common.util.ml; - -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import com.google.common.base.Preconditions; -import com.google.common.collect.Sets; - -/** - * Utilities for feature transformation and extraction. - */ -public final class FeatureUtils { - - private FeatureUtils() { - } - - /** - * Computes the difference between 2 values and returns the ratio of the difference over the - * minimum of both, according to these cases: - * - * 1. if (a > b) return a / b - * 2. if (a < b) return - b / a - * 3. if (a == b == 0) return 0 - * - * The upper/lower limit is (-) maxRatio. For cases 1 and 2, if the denominator is 0, - * it returns maxRatio. - * - * This method is used to define a feature that tells how much larger or smaller is the - * first value with respect to the second one.. - */ - public static float diffRatio(float a, float b, float maxRatio) { - float diff = a - b; - if (diff == 0) { - return 0; - } - float denominator = Math.min(a, b); - float ratio = denominator != 0 ? Math.abs(diff / denominator) : maxRatio; - return Math.copySign(Math.min(ratio, maxRatio), diff); - } - - /** - * Computes the cosine similarity between two maps that represent sparse vectors. - */ - public static double cosineSimilarity( - Map vector1, Map vector2) { - if (vector1 == null || vector1.isEmpty() || vector2 == null || vector2.isEmpty()) { - return 0; - } - double squaredSum1 = 0; - double squaredSum2 = 0; - double squaredCrossSum = 0; - - for (K key : Sets.union(vector1.keySet(), vector2.keySet())) { - double value1 = 0; - double value2 = 0; - - V optValue1 = vector1.get(key); - if (optValue1 != null) { - value1 = optValue1.doubleValue(); - } - V optValue2 = vector2.get(key); - if (optValue2 != null) { - value2 = optValue2.doubleValue(); - } - - squaredSum1 += value1 * value1; - squaredSum2 += value2 * value2; - squaredCrossSum += value1 * value2; - } - - if (squaredSum1 == 0 || squaredSum2 == 0) { - return 0; - } else { - return squaredCrossSum / Math.sqrt(squaredSum1 * squaredSum2); - } - } - - /** - * Computes the cosine similarity between two (dense) vectors. - */ - public static double cosineSimilarity( - List vector1, List vector2) { - if (vector1 == null || vector1.isEmpty() || vector2 == null || vector2.isEmpty()) { - return 0; - } - - Preconditions.checkArgument(vector1.size() == vector2.size()); - double squaredSum1 = 0; - double squaredSum2 = 0; - double squaredCrossSum = 0; - for (int i = 0; i < vector1.size(); i++) { - double value1 = vector1.get(i).doubleValue(); - double value2 = vector2.get(i).doubleValue(); - squaredSum1 += value1 * value1; - squaredSum2 += value2 * value2; - squaredCrossSum += value1 * value2; - } - - if (squaredSum1 == 0 || squaredSum2 == 0) { - return 0; - } else { - return squaredCrossSum / Math.sqrt(squaredSum1 * squaredSum2); - } - } - - /** - * Finds the key of the map with the highest value (compared in natural order) - */ - @SuppressWarnings("unchecked") - public static Optional findMaxKey(Map map) { - if (map == null || map.isEmpty()) { - return Optional.empty(); - } - - Optional> maxEntry = map.entrySet().stream().max(Map.Entry.comparingByValue()); - return maxEntry.map(Map.Entry::getKey); - } - -} diff --git a/src/java/com/twitter/search/common/util/ml/MapBasedLinearModel.docx b/src/java/com/twitter/search/common/util/ml/MapBasedLinearModel.docx new file mode 100644 index 0000000000000000000000000000000000000000..719b3b99d0b5796b9afad4cc8feb391271271c39 GIT binary patch literal 37075 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 TD=-Iva+M%MA~1Wz^niE(v=dZ= literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/MapBasedLinearModel.java b/src/java/com/twitter/search/common/util/ml/MapBasedLinearModel.java deleted file mode 100644 index 0f8899271..000000000 --- a/src/java/com/twitter/search/common/util/ml/MapBasedLinearModel.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.twitter.search.common.util.ml; - -import java.util.Map; - -/** - * An interface for linear models that are backed by some sort of map - */ -public interface MapBasedLinearModel { - /** - * Evaluate using this model given a feature vector. - * @param instance The feature vector in format of a hashmap. - * @return - */ - boolean classify(Map instance); - - /** - * Evaluate using this model given a classification threshold and a feature vector. - * @param threshold Score threshold used for classification. - * @param instance The feature vector in format of a hashmap. - * @return - */ - boolean classify(float threshold, Map instance); - - /** - * Computes the score of an instance as a linear combination of the features and the model - * weights. 0 is used as default value for features or weights that are not present. - * - * @param instance The feature vector in format of a hashmap. - * @return The instance score according to the model. - */ - float score(Map instance); -} diff --git a/src/java/com/twitter/search/common/util/ml/StringMapBasedLinearModel.docx b/src/java/com/twitter/search/common/util/ml/StringMapBasedLinearModel.docx new file mode 100644 index 0000000000000000000000000000000000000000..e3edfdeaa78c802a2e68ed393d9cfd6f81b5ae21 GIT binary patch literal 38115 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 { - private static final Logger LOG = LoggerFactory.getLogger(StringMapBasedLinearModel.class); - - protected final Object2FloatMap model = new Object2FloatOpenHashMap<>(); - - /** - * Creates a model from a map of weights. - * - * @param weights Feature weights. - */ - public StringMapBasedLinearModel(Map weights) { - model.putAll(weights); - model.defaultReturnValue(0.0f); - } - - /** - * Get the weight of a feature - * @param featureName - * @return - */ - public float getWeight(String featureName) { - return model.getFloat(featureName); - } - - /** - * Get the full weight map - */ - @VisibleForTesting - protected Map getWeights() { - return model; - } - - /** - * Evaluate using this model given a feature vector. - * @param values The feature vector in format of a hashmap. - * @return - */ - @Override - public float score(Map values) { - float score = 0.0f; - for (Map.Entry value : values.entrySet()) { - String featureName = value.getKey(); - float weight = getWeight(featureName); - if (weight != 0.0f) { - score += weight * value.getValue(); - if (LOG.isDebugEnabled()) { - LOG.debug(String.format("%s = %.3f * %.3f = %.3f, ", - featureName, weight, value.getValue(), - weight * value.getValue())); - } - } - } - if (LOG.isDebugEnabled()) { - LOG.debug(String.format("Score = %.3f", score)); - } - return score; - } - - /** - * Determines whether an instance is positive. - */ - @Override - public boolean classify(Map values) { - return classify(0.0f, values); - } - - @Override - public boolean classify(float threshold, Map values) { - return score(values) > threshold; - } - - public int size() { - return model.size(); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("StringMapBasedLinearModel["); - for (Map.Entry entry : model.entrySet()) { - sb.append(String.format("(%s = %.3f), ", entry.getKey(), entry.getValue())); - } - sb.append("]"); - return sb.toString(); - } - - /** - * Loads the model from a TSV file with the following format: - * - * feature_name \t weight - */ - public static StringMapBasedLinearModel loadFromFile(AbstractFile fileHandle) { - Map weights = - TextFileLoadingUtils.loadMapFromFile( - fileHandle, - (Function) item -> Float.parseFloat(item)); - return new StringMapBasedLinearModel(weights); - } -} diff --git a/src/java/com/twitter/search/common/util/ml/models_manager/BUILD b/src/java/com/twitter/search/common/util/ml/models_manager/BUILD deleted file mode 100644 index ba62e194c..000000000 --- a/src/java/com/twitter/search/common/util/ml/models_manager/BUILD +++ /dev/null @@ -1,14 +0,0 @@ -java_library( - sources = ["*.java"], - platform = "java8", - strict_deps = True, - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/org/apache/hadoop:hadoop-client-default", - "3rdparty/jvm/org/slf4j:slf4j-api", - "3rdparty/jvm/org/yaml:snakeyaml", - "src/java/com/twitter/search/common/file", - "src/java/com/twitter/search/common/metrics", - ], -) diff --git a/src/java/com/twitter/search/common/util/ml/models_manager/BUILD.docx b/src/java/com/twitter/search/common/util/ml/models_manager/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..fd9ef5eef7bdc3699b1c086986b752670cca093d GIT binary patch literal 36849 zcmagEWmp}_wm*!!dvFQv?k<4@cXtW8acASf-GW1Kcip%#;o4{q2N6 zgvN|=7#vGNR{E_U>1w@jmv1wTo}|>VfkBp50VQ;aZ^8N(mJ>_fJ?R7rxkcGslDR>+ z+SV-JH`6?jY`eAn0!CP&rxJO(K`Gkz5V5pXahh0UL!k(&!eg-EH3c)g`5jb_>Z*q$ zw7ZNS_r{dnpC|l1DDNc$q;sB^SZFk}Z8MSD1NlBj7@uj#d@^oK9B`>~pJZ%sw$gB_ zU+pbI^Bh73V0`;--^1cDuElu>S6>!=rKY=qWfS`S7+@PhQ#<{! zhptYnx}Wu7uq>hXtt493QBM#(Z3BftGF%2nM_iR}$Zh}aEqzhkTao*vaKqcVSq1wE zjersKPuv=!b*dooxYSWje%@E7LrF@%>%0)XWqv6|zYZxQVY)!E0iU~bw8woD*cF01 zl)&m+*{9CpJ-5}MFJ|&gsq}i!DI|rM-3ca-J`czx6>p?OdY=|c*7romZYjS!;wTtG zDF361UNj%X?!eXCfP#QP2LCm3wy<+yW%+%rN}PNT&5jXpDk42XUEKfM|)a*e+PhRA)XYf3a74lm5IBWVD8m zir5iI;itpc3xEU2$TxFGmQ=NUxATa+6K!^tH4YFvjCaITOII{!$LA|VlXJqpl9W4`jxCRG z%ff4a04aaet2k%*5iF^sX6X6$3U0CkYk<$HQK)35b@$yq^INJ(E$=Byw~b&Gf5&Ok zUu<=0r@BpXOMVEWGkQFy|4dN$CuB8i@NGT=P7o$ILFNE6WoLk+3#%Ex+2Z$2o}DVsbW?En(otlc zx2Xl%EHp8cEG*$P&^!`Z2lr*w6mRV@N1B1ZDkY@vwC7>=g2qa~Y^*0rg%Aa)HV0ZR zlifgmAzXlJpq`s+?$Z=ScB^V}{tpQ?Ooio7nqrA`?Nq4bdpPtz0|QATlBg0JFw0ts zNg=W@OY1x;+D(We-s=;-_P$wEx} zmwVmaz*&lN)6&Lg6*i^F3h3vWj}=~})56^EcCQb0Qd3aTWS~r*Ibp`VDy-?2!)5Rl z$cfmEJI^LQ!q_1DxL((r|HRC*ve&~GnxzsuB4u*Cm_@l8K>ChvR=6bw{CX|pSdo1~ zw+ewD*?81Iu2x^B6@C$O9N(=iKAgwT4gD-h7d`roD#gYG(0hfMs~x!J6yJK&P$n3U z_TdH%=0Q+m=?PDYVMP*Nmn1%^IUU=-ZVYhwiBa@!E>_J1mtH!qr2xZ&OJgP05HD&FD|G4h|$2bqy5tVsLZ02{GNNw?lz# zkb3}H*koH_0_At^x;tdI9|@l^SkCR)54P^zgpm(D;P`;84Tz*^$B1^%qtWA}fvt9% zX(=L;TAObL!?N%-eC(7G(gs%LM2nQ(b#`R3KCzOXA!goR61~n}|04V6jbWeWZSxF% zSc_5qd|*8Q&gQJ(r`F9L{BrtzXMj-wtK=BKO(TeWUV!O?FM<+EX$RS#_Ry6q*_ zPl7UI~AWO4+ zbc*E+eK&f*4+;f-jMTpG^2Zl9x?GXI`HkP`p%uAfJIKIlW1oc4|2BZXQ}s> z;Ux!MV6v%%T8^bGxh3%T<*jxRh~EjmY>$oI$2FW^>^NlwZLZ2s?p+67E%Vk6`W}q3dQJygU|hy z=}Rkc_6O`<-eZ3D<3ocvwnL$IuNKGe>P!OEk-;pcC9xLR`cq}t(xTAxn!C1Pvh8&=cxo@@)?3-{y17;J*@8%8%0xty#LS!|JN;bMjmWsAFmYQ7AXnFU9aH z+*-OsVk6m2eM0qRC|W17EVBQUElAl0Y25;+Sc2Jq+81LP(Qg?vl}_E`%!Swv)3p4t z{dhjc-JhUg^PkU(LjVyL2Y3=42T!8J;7Rn4XXVc&z~7&kKbHf^;!4461fNb{korQC zaEcwG-u(JP17eV=De?`KSxLN++}qS!H)oRE3EaKq@yn&PpPjr>Ti6gJU~GIJ#1{>P zjx!soY=I?Yg`RfQ(;%xMZd*l;C{WwW)43!hp)hk?m-4al;C-^f6H;9p^*}w++opU6 zu{PZ5n8F`2YKfofd3B+5q-GL7n}p@&xO#&q&nK%}FFGr2w?x-7Tza<@8#IIZFk$MJ z=8X-gxT%eIP7l6b-U(^-ey7fbKV(SkL_A6m_bN+ zbW5g5aun5Oscl1FlyF9g^HJAlsD;>uzL~V;v$>i{9`IH~boGIU65SPvE+O9GC(*W5 z8P|GuB;0rQ87q*S)*jDgrBrj@cgB)Suu_;lvfopLI0&i?xP75`)0 zv5`MDg&3KJs)pwK^2B<$vSU;H)>a#-l^te z$>hl;2mpL0@D;q@Kk?K($w^&(c6dI?6kQw!yxhmV-ajs$#+Hb-9PJw1-LId6(&j;r z2eUt~L1AILhhES1LNE5O?Hi%2z!fsX)RMF5{)4czz3uVUqn3*2@uQ1IuQfZ~5>c|s z-kwgSPyFH0^{-df4Z1#$^Q+_D9+9H2j@p2J%v;dz<^Hwjo8yX+k4Cp)C5!#QCK1wp zE8ud@u#b*|`=ZGwMU%X=$-`RF6VdD!JP~>4cjwC6!(qX9My#ukU{M~M{u{^WwbJ+pG74mg^#s1z$+zt9|0MEQlQ9Ne;WV6SL7Se?D@%&$M~*I!#%-!RCv$j5VOwQ zr2;K7pSFjJY|sG z-yXE)*QKv_+Vy-b`CzGL6diV{D3=i1@2obl9S>6D)!0um<$7nrhMKS|dLlQ9r&= z)(%jdMJT@i^UFcMr9Z;+)%vq*hW=A6aJgesNVv-5^du~e_aui`>FCwZ@DwOqo$Ijp ziapSk8r{0meXMw}8VA_9`~F&|+bxqr)YYyh!*fsn(8J?>%T7)Ea<{tg&U=8&Uv@tD z3JNEtxiOXVGGr|v=qA!c%Gg1u|GfJi)uaM_yA+*Wm8?&L%(PNuK*}$i-Zy*}=;q#a zHGFJ6NQ-2sejgDus}B6KMU|3E*DAF~i$tmnZt7(eRjCDl|J!GJ9^SMKaNt7(LX4+$BO*dYZqc5ywIBBU0ZQkL!|7Y!{Up0=Ij*aP4 z+Ty{UlS?IDVd+C0=2_e0qRFK?z0E+n)m`vwhe7qi^yBgDgX68!^RV2_rRedgNS2CB zlfnGlS^xg!<Ct(e#Tea~{ztV=qLVC3bmdw10SXJm^?nJsBiHZWhq zZ5bnL%cc3mFcTo9NKFbkx_X{LJ?B(JQERW-7QTUxxuwwntvJ?f>yG%A$k0V?0eAez z*BaP7+2T5A=Hk)l4L6nBD^^CyK+Qf)J)A9aV|=6<2x+1gj049wUUy z;sBfwFEufwl@5AxWc!WE>;hQ?RVqfTAjia(0P?Kw27+-37=<|<6`@OY zu#dSC!J*{farA$L>VnZi!MOhj{gVo&jP}%q!t=ifPF1MDEl7W;NbP_%&;K71{{t28 zeNl}Ulm;I4cVX^CU_GiBV6Qlh-Ti&WFi@AMwhU&mjUYyp(g^Bze$FpV}jzO=R3vuo484O?%?-i267 zdv4zev^+d+_req{%%Ye2bUL{Hcu@wE-Q|<)9*GESbNoKEUV+^LXGLo##!8P)m6QKK2 zmIvzKY8Q+DaIUQVk#pif+pmF0K+R5IbsR>SogbZ0-{rkC)1lLwm9tI3g;{%E5Nq1e zK?2_N_;)j2Wc>|x1$R>O&ft8)O%lcZ2%E%Cvy#1C_WRd8Kb0}0Q}(AzH-BG`)7GT7 z=tUbY;k66b%xbG7Z^zoBwU(0bKsNPMlWi}(>j^_DHw^0i&M9jfhsT~P-2<_yw|U9m zE@=3=T|Lx3PN9wBg&&nSdP2htGicy#ml-W&20gzFoE0k_jB{+bl16mMjb*C7AJ5!+ zN-XDvrI%bdRge=P<7k-mvK3GHaJ=B3C55H+ws>yYyxwca+-TuwF<0Uq9Xx*`DERx1 zJdEx>%)VgQ^rR1LIJsrs**~_ZePgq&#FDO4aw6o{`fd}s$t1~a2m5A4>HnBmM zJrhvq)x!z+MI(fk)x#Q8U`z=`EtDaA1mXK=^d*fgI!QDe67c>i|C746+qh`u>E`y*-1?Jb&Ctf z?!CiwuqQ#}CD@q5exFQF`nyln=KM;&=j@&c6>WZ49|V+@Z)*zP{dCI2nI&u4Jf(bn z$(RF8dpukXU%Xrl4SIu~oxFgzFDb7J#}BhVpAH?_Ogdg#MYC^MpQeXlyyYas=tCoV2%(hB1=srT$0tA4Idh9P!P)(!Isvf9u4XiEZqSEG%fr#1++z8 zb^+x$rnM($7p`K?3Yt`PsWU(A=|!F~$y?CXp*SclA zZcin{IV$l|-y;pj)a}v$Zeq9v4E-^>3}gT6 zW6O3w6gn;vd%lh_>8r*4n!t8U`9ip&)ui3ZW!c;iDx1@&e2fYjWGum(F zu$4nsqZ#;S5=y@;{J_v0Y<19J>O1EFwV2MZFAQGKTe|f^uSy$hjQe_f*(g@(8#)N- z4$P^3NT;d7Q(V)Z|K|EVyo~yj*$?k~r#69K>DLu$KT;^;+JO+Er5ugDOAy5LZIf+w0U3jed6(sM zo%L--*%PUUNm|~%$neT>D!!lO6X)11M7FfEYDg~>E-AXnqFi=af%UOz-HuX-#~by! z^{S{&JW@^^(AMTMT~Ts7*s7|eYTeyGB+wy1itC{;Lm$DYhyUJecj~&t+006vwnrJ= zTg?PPt-y%u(X zJsV553Ix~7WhA#hVs80!Udz$!g$XQsEsGq!2&7vQ*Y^n)26d~rS>ka37S~`BPwOf( z-hCR;0F4?aGF_HtT#83CoSNwi<9bUn((0EnLu9ngR{3)c=Q;qC=aW!pX4xm6S26O~ zxf%$f;n3c3rd_AEO;nv|`ugDtIx{lL;}({d$8|2ltCXoIIo%ZZtG75=aIcKmn3utJ z>|Ja|edxdFK>9X0p(8Nj@Ggy<;<}NQo`)>G*eODcH!4&03*$^WjC8hC&A>1&n?|C8 zZ?D&b%HAyl0W<1%0kaA4m(KO}lY#5nn*u0%G}Vun&68X|Ga(-;>833FAHF$3Uu{pa zG!8s;t_=GJ`#t670h3mfaiHl%Ea>>_Lh5j+-M(OPWv#t`ipEw98_!_rt>I3qXWDfT`RCNlH>f-63a;d}rDa&n(G-oUocJ6l_e^{HlY|fVS}JY&IiMH4 zlLtu|GIV@q;X>3=_9J&W&Ep)6U1QYK!>&HKFQh?Sb7r4!!n&)_4^pCV_pJz#jcW4! za%-?pY(R#j7iTn2m$Q~c*quLaZLZ0?K4()G*dDAzk?32zieYShEC?{@qfXX zdmwfy99-Ui9P?3jgsLG<{hAr;(hApAE+AQkw5I;e%g?s`NHeN=Tz(h#tA$?%j2~Y(PPrz z2oA#b+^Y@QaLw8U=Lq1Y-ozvUFxQa)><3_v=fW<->JRcaEdD@M1H(+>N&>1QeoVHk z4+g0DfcA>e@>-0A+(;CQ-L?@soV6tY0#oNu8v#7S$Rm_jGO5&8mMDCPLYwCoL=2ZM zmbt%ER5(L)ur(}8wzf+qZLGV8xOnI1=K4-URq*lJ9!_;-D~vFj3+>7IEp@p6MFvp6 zy31GO*JhvmXdZRCD}7e0GmiowB~4-5GN8QVd3ASk-T=u(_VX=4)=YGMD5KoAbiK|j z548AFWDfl~f7BSN8p3S(jqq2HHPXmI8SV%CI{T^eWlbnQnHHQg2}mWnw0#U={c^*` z56zPG*+_?b*BNpJhMom)Xbue~;H!_WaIfFrM12J~s z?Mi~Yy*gvQmEvzKg)7(C_+xcu5(ReT=+d}hUhh|C*x%1s&3%Am#W@S{wnm%jFFKU& zG#7lkT9#*Ms8q^z7|I($Iajf=D1BP2TC!>GlPf<+T?k>A)m0NyHNl+2fz z6{Z36g9r9+`28!w?L!3q;7g%>wzkFcHrQU4(eiMx+E&#?B-G(hG{8lWg00O zi2({Jj`2;=97}E_Da||H7KG9do)sFxhrgs0rNsn%0{bWgMSti@6;P7H8YT6L(MEp+ zQw2qnc{UH95Kf82r$Ox4@UaPYCD#zq(B?dHdnL+f8I*SL_Q2VCcE0+9h74H>i2Vs|=|;3PUg zmNXDnybHaC!6DIdpB2ewR**&yF38-(R!%z8vYQ2Y!Mt6STTv_~H@j~jUyV5CaeOE*mKM8+(Jadu645eK61(6R_N|Vk%wtrB=^zHm zON)h2l9L!P|JxiANt1$fPb|LhM2v$2rgGYuW`#FGC@n7JD*gYNO}Y`7oKw%>qmiFM z(V1=kOYztu14OHHc>t_rIcZAUBzSRfBHg}e9o3F3XBMa2DX$LHo8niQE$%lT&s>l` z!*8v$H=-z)8R#MvUa&C3Gy|1YQ8b>uGZ0&MCDA>b=8?aQR=ha1JzU(^`Xign`E?>w z(~%Ozyfbv7YC{{+3cjNatC_l`MlQ^tf8cIJh+ES$y49@iq)6?}lhn`<4}tb%4+o}0 zW_2x~Py^_!xz8v1l55eFJ|!iZdr5Hfw=t=brv{Cv4qYxA_X<~H+3p0$2FjCQ@CS@S zQ^E~seuu?0`iW$eKVnDAaTEm6W)|20FLRsT7GFTL^<%)8Q1sD&7p-79;#Rl*^G@%P z5FWHBFk4%mf`}#P+;_sd(KcU!0)sv;X$r!b{9P{OKu@e=8lDtWF(cC_%7*Nb%9{9e z{zW#Q9gAEY6#jO|SVbn8P3R<|_r@6{%N5j7^f|=iX6$E|W)Xup_1kNPOf*@FfjlcX zPzg}!66DShY6wy&;e#W{lz6kac#;XrislQjP|on27ID80Iio1v@%GF_4F2%hF;iob zso{igGG`wwIQ3+L145A2eU{+Kf=gP?Qk!-9T8t5n^EEIDfIu5TvX{f_^GxXRU0 z22-rHYEz{xzgG>svjmoO7l!)i&g|U;hLIHI-Im~lok1CY~{ z?Z$%q>UQ7-_+cNqkm| zs)+;U_QvBMce21iQ-22W{m-D3$vx)l{fhzq2p6n_-&CI~QSHtYvarYR2KZw*-*|Um z9aKs;{qA=sGRHWWQ@S0?YPg_-`0z{zv6J;jJ2SPM`~qCF8SPYrh3`(*P&$gRVT8-V z7v10eAXJWUm%|btizyv1$KWEMBeav^AML4$<~;1_i$b}4w5jJ2E`(MbSDw^UI#D)% zDB&3)pDN2eN#VEJV<$>|U?=*I!hDi_5;w6d?8!eBy8lmw7g?8KlL?!ZJl-n#;>V?L zoJXBY_2DlD^1m^U%vKk^;oS35AC&Ax>n&eUhu5()eUhx*%#KaiB>DY@{&By#-p%w1 z679$hRUwem55ur_Ut^kOeHd-}aeeS3Wl8Uujh#-!HXE_8%fWG`K(v*$Rr+ zFIoSduUh49(rdua1c})n7#<%ALX}>L&KBv%guaf2lM`A+_RZCqpF>T~+bAbw+P+bp z>cjG+vIwGXt$n)~&5j*~Cp5qqMy+ki$Anq$*kU4=SvPB?ZJM_+V+>x3HwgQvS>M<^ z*1}wC&Ko1PtXtxx_W0OiG4+O0w*d{(wHvo74EdRQvHDFSep7$=gBlA=4gcZy>U*MX zV*xeQ_z!A#^Kme>AkUxF->9*p(EbnV^R5BJj)+{N4d1qRoyLfVRpq@{4zoE-Oo1N1 zD71q*n%{zsM6si&Jj1onKGY64YEznTJM<^=n3YV|4v2N`_G0~BWf#3^@tH&Ui~PoI z1Wc|5{|9*sI~R5o%l|<>V=T9IADgzh=KL3VpRwG%s@5HnR*MSGw?5Zz@ITbr5?DKp z3^zLi+l22LIopx4NnYE3jJ^MIeYd#txw9Cir0|hR8!hr@44^J~$Zsi6oMDAubGE== zp);2cGia%y9E>@a)AIsc{)I z%k{IYynqEDpkUhx$Ufn!a)-rKfSzf**a%GZJ{9|7O_FB~HQD|BpsQIRGEhvZ+lP@* zYSw%bAmmz}R4g|nJi`_9F(cque%^PNOToMRuymYAadzc&w~Sw*!bn_dR*b8vBdxq> z<3q|vUHFd~Vw_SvL9eL-OnvU&SM7_H|MIANTRb}WH?T{eS@SC2XE?zr}lyVC=^HvhqFnc#QMC zC(!1r3O|%&ug(m{tlk8_9s)E1lFyPk#xs)lQtM!_2L=EK0k%9tB$p!4d)BHCE;N8_ z+A0{fCG;(x0C?501szTdArTM`X#&$qE|*NsT1v|&UUh9AmH;(jhQP?yX~&ZTpVOMw z6oID<&_HE%1jSjNLv=jTZHJn&HW&+$x$unYP1M4>$wU8sO~Q->a?L`ALvF)@(K>#k zd5TxT>xP~GMq_onftwuS)LI%}89**=DgT7uYJXPm3Aq6mcP2sc>)^(eef!r!W4Z}? zFER!_Mh8R!bPqBHJ9!5L{@V!r@37aftaRMFKiLceyim4bZ(0m;4kq#X3>Rn>( zJ9>_XlLwK{fbt>ukqUP~qjppIh-jR@#H(H)RK@IVAf3q#$id4DPe>M7EY=a^LqtR6 zBcvIV4v0&FK4f{;O!!L*tERW({}C4>{#zVD$eF~s?Z~L<7XPnWGWLGbMj#|P?C%SF zJ@^9G41{Eob$OO-*ZR2SQ$I&YwYfgn8q! z_IQ+H8`7P4WKO}GDK3G)$vZ9wC+`>mek9PY73QDGv(MH4D|xk@c3qz*my+22Qi#-# zymv&rJx)YB*#m83tVWwx=1GU(T}F%rrNICXyOlV`E>14xs4h34a_s9DfFA<@slSJ; zebetzVAN|xtXNdijD!+$I}j8;+BYIE>`*%!i8}9dO#pzwW9zbcdNGYz!>#{7Q8X<2 zg?>GiN6m`I+-goQQXc%{FruS+t=U}F=?&2d#Luj+?j9ffK!WEWv@=24&nO3Le$8T^ zXxZpWg_W*rd1>1%o+xmsCQZNPv|SXq@|%YdAZ}6Cl1I6}2)WOjJ$*nmW#~>c_5=e5 z+tgZ0iuY~ii?_NqH1dp-#iNFL%qsr=qOV{D&*x3L@4#P3v`6$2_vsK05%+Fi5eA-= ze_>r?oGlfxSn2{2?wd9b6|?WlzTlj-o=NvK*{-|pYi-DXRRz$7Zy zm)Hb2jng&W+9M*}hbktIPg27v>jzrg4o07iE}1P?mk$o$)V53B?pr~$QtvNHQ(;_6 z)c@;2w6j?8uRFE|fzw zP+S~!xFRg{3crRFcR^9#Re$+pTVwYodW zd?-~xmD21sM6t<{ua5@)6VKk6?3`{S%)mf=3$dhWP8cDkMNptL8nA>4B3td~=R>)J z)GSFG(2evDFeUPrvWjy0by$O9C82V~!ubTA z?>beSp2>AhLDJ!*Xq7(@vlq-Nau+12Mc!km?;LqX)TD4axr#sR!wciyV-#Pljbbko z&nn!kBKCq(d zWLk`ODP*H|6=b9Ge*t^;)}#c-{R>#R-PJr6e{u){_vz{ys8-yu!6%CQB+q=8e<0@9 z8Gr;V9V!MB&Bm1zS-YDH{{uK?0123uG*hm#pvL35!^hyP>t0+5Ry3N& za#^jYfn5w%)UR_hnZAa13f!uO4E({bY{Z%ec3oGtWp#K}u+|Uw9^>o2{&|q3bZb$3 z^UxdYXLue7SgqYVT@*wHmZktsiCM>naWCtcZ`dU&+)=9w!`)BZEA=zU&vU`&b8bsd z!$m>4L;ot~|C$^3f_u{;9lEg{G;n_N0B)UI;EHm%Ga$+jFG9vqr9UbjtiKp#LGKivj-B~QKgcq^icPFUO2Yt& zKncB6@5}8~6Z-Uc2{*zQb2@;qNzcODYVjtnVf_ta>%)jKXboIDpd&;j6+Gaq==UTWp0qET5rJeLKW(@300o@hLVjzDRHE7GLiutEIyUcYp#69wM}?tcR~Dg6dGjQ9h<@zx_~7iJiQFnruY z8oRXVDNvcE=-6Qy91Ue9kP|@^vekNi^8=k2@IJjWV7GNlJz#gRp8&~`*cSu3_gtjc zX?vscF9mwRGXo?pPyt(>$hN~_*j57gya>HcyT>zRd>hFeK9IvsDP<7DQB{e^j>Ky; z>3`B6aQ#JJVrC_@1q(L6zugJ|ML~l02f6+`oF003_wM-$51p7M0E)1?1L)xejT2=Q zFNdrx1TUMIoFemXI zIPVgLl5g#n*=Jv)y^o;v50iTLOl4}Ad5540(wrQEe>U6azq~~)5`U}IVT%2Vpcu?@ z_7sK%MO}Bn_ki1>B4%LS66*-N*ai#P5noutEvrhdzZRS7wNtdQlt}Oy5rt_nfrGOY z3LcvPucr@2hMKgP6a5m3(fAZVO(P>;Ss*{5%NNBCQiFG5*I-Fib8vXys$ZQJ!)zTh#h7GeF*sB#qzQKlcwadIqe%mPU#5(HQEpU; zNU@$63yL_s?_g;ioKUQc*4Ba7UiP$OX1XCHuzZy=wZQtxU9zTcY{0TOK1RsKR>zTD z88|fdG~>%*1>iDQ2)D22VEr6p^-FrGQjc1bW_m30+1{%XWn({8`wa)<_;vM|yck+? z%HG4QC0vtE8NR(X1S2*b6UM(+0ZnDU62qq033OzXP>KanhIE!((iXW% z;8m~FdcXgRiVaLf5dE8qEo#tot8SXt3~ZC*vlkngx1H%oyT*f|TuutEpyZ|Yn+|cV zIu3Kq)T4*g^ZvSSg3BXY!@sv*95TL_aceveFgCRS7ZQM;dgLYIqsCz?VdsXvFhX>1 zS3lmaVQO(vS-C`>H9WTE*B6mO(ZB(zNI5+Qvqky$ib9Dx`rd@3Kf_glGu!-Lys}cT z((WX74U)*4{SgEEZ;akLI?!-5n#D=nU$u4EZnOA7oN!>qq!if8!Dtsnfg{a`l!)5; zA5t_TxKT!--)hFE9KIN3i{zD^7jHHx3Kb3W>Qv>mlmVvgZe07;zJavoqElRWlf{KX z4GtDTDpFJWds@ToG$A3d2|7}k;X`?n*9Uf)gX9mm6Y4xKy*wPqpZmyWh?>S7a3T@Q zi3m!jokKiWY2v@4$A9&GryGO_gN;CgAs^pdYUKl2LKWa3)|>fQU`z+BaFYm4tj@45 zg#eVvDd*!W=ZEq{z~CY5i}l6lA&v;7I_l+=v3mcK}Z>5 zu&ie^S=r8D5e(`CUXWIzu$P)gAxP9QBHxrDH}-<_Bv|t#kh6&%;BcXA?a-G>lG(II z7SV8>dDXijg7cunVGZ(va1-3N_2&57;x%L6 zqB1N^4P@3G6;I&N{#yky`kyL7doD>7D^xVAZQQDY4wU#&_0wA-(QsefmW0kJB%T;> z-YkWnjAeYATNK`-U@gy#m$Ep;K!{IPaM)qQ+9m4+!P!ZqW$x@jNl(*OcTN4!*hHoF z_%`Sy6X5A-+Cg4Ud&I3nYnz#X(AU`lnS`xA0Tr4ATK^)DdY-#~i*2D1MRH0M9j36#x$v06Z&k6tgch!V2HkN*Qfr~*8< zII-Gc(}VZ@C{^i}5z}Rm&a&e}a1iL{B5{&$keb494n-ApMGOD%fg=;hNz&j^z~-Y* z5Q9VLsog;ZZ7WJ*Fde*xn;RQou?exlzJ4WlJ1`UeW(~Zr|7|XqKNF0>Y&R4ubHX z=k~R%T|Y`&T3VR7{&|Go&mgTprvCWx9=GXmP$?%Bf?{;sZwd=)$Z&l3JpJZQq@rTZ zAfr0*@I6Bd_!PfbZUELuoa{)*G4M0J*qit^PM2Y{@VgiP7f-LQN58i9DxRa;O_W!j zyM2c?;F3`FLhh#j<*CswfOd23_$KOlcgL&2ufqpnY*)}PDT(ol_TS);-(U)|t>Yj^pf9Cax^|kjg@A5)olG1?;0~z0C zt&ve!&Pra`>fqvc|7z5WwU^!VcdXOHf;A3Kd|LzwjS=Ilo(>d%OJ7=@GryFh47&rM z=Fw_5fEQ4+xS(lM_1ya6Y|W?xC$%CFqjEFjZo_-IZGE00pO+SP3ViC=u)`B`xKViv0@Z9XyQ5dk z*Ni?>S9MonNs3M^fad+2E!&oktw8gXJ{$rhAErf%@HzbNYget%;46mbpFvsI>qes* z-K;sAn}So5W%t!r-!Dy{?|q%yUT!wY>TlEeuh`k|Ux0PbH~qg>`fg7-)*T7?{1 zhudwpqm(z>t@zaVOrpS!$!>&lRP?Wo101{CBbB=tQBOM zadG3^?4|=G_6^gUPyb z*Ly<2O+U84O$6X3&YNpdA8q27uKR6S6z=Zoo9XeDYkS$ctel&4kP+VM;KA|E^-q>P zSl;5pjQg`2r)iH_$)L=a+D!-58$GjeCj>ib)*7X#bsH@}j42;bL1$xqv!!BK*QX%y zxoW77bvi0+Z+0JiRIu~W?S9y>JRz6YgDjS~6xf64y;m}SQ1Wch7e?mA^gs>WYw^8g z-oXfv|2@Bz$q}{M2x^@W`Bht_dc$x^c(6CYH?1#L4KS=$mxP8i-5;GC<0uqSWBQiF zH;48OBhj{JVnjV=%SQMb11?Lm(cS)zwnOtY?{wyINsHBqh6NMv0jv8Rsf@#lQM6+f zvsoK|u3pHgB|3V9Dp-mK(hFL^MoOj@QTL<;5iPFp2g%r%t14k8wefBoTz(V5Qn3ByFlCJ=jW2 zyLzYv91lI<2dUNS0P&z_tscT&87AWx$9MZ%e(Hi8Vf5uB>HRpzu@ffo?(ZCi!mw&( zw&W4Dsn($QDlr`(C+~Ei7Q&kYygv-+L4=9-F$eS$ZsYZs#5f{vosE?>L!hatgFEO~ zz#Zhr;Es53N3BdNtmD5Sh!+rAAf7Xbx~X@55BgX1??IlE_K?KIrN2=cf5ZQQ^7jFM zNBQ4X5OBA^I)47L0>vjk;{ZtvXWasU790Wwxd6Q&Vs@X3xao???V?gq z07|s&rt#~+(@EIgUiMhuEp{}KoT%qGaKoL?{ozEQ&G+@d_S>QD4R_V>E-!M4$2dCv z%bn*v!m+c@&*!!5E?l8((8l9WmTLHBka=WIH7UwYo2c9F5h`i)+~)G0p`tLG`R3#` zQFFy}T$Fj`OB+k)_Vq=a-_Oy5`G@iQ@5@(D)^(Hm&LrWNp=xa>d|6YznCVZ~7Hz)I z{B7MHp=P303*!biTi5-gapOvv_TT(Az6VUrdL*ZDpEzFc+vftM?q^S@(*)brBu=Qt z))uQa)BIN3@012xs(y}s1L(Pczh74~NT>W)Gh)q7;=E4I$-X^rJuy{_MwY9Au?y zwzd`Iq*}qAm6!v&UBOGI7~!4b4>broe&1rW5MJBgUrNCaAmpf1d49p{P3ofZv=a%M z5B(&*EhY1j;H!j}F6v&H44u*=+Fr!H@{`6c*#u|irU1z za$-z5Qir6|nWpHBh(fRWIae5t!gXCSsNZe=Qqg_qSXAU7FZ1bnS0LNVNU67LH%aKF zZUoiMdD-{==_yWHBy$gVsrx*;J68YHC~C+Vm-n58pxxA*u4EU2DYNd&sYMSjA12@yn&+E7M4Y3! zIxjt;T+f(u2Ys}mey4ij4OjgKDaG{#&!4RwltAZ%7JR0SUs-9nd_~CnBQwp$hLDCL zbw4!6c7&?Z-!D`qk-%d5kaT^Iv83F0*6g?ObpQdyi!VQ80UDL%Os^+APmh*T(xWB~ z&OaJ)8bf;UF$9+UKf>MuIF4pp5*9NvGc&Wr3?pV)%#60kVrFJ$W@cttOcpcCVq3gp zfA`&e_x-#3$Ans;h*6%*tnQjqr>FYtCl4&#G*vtCuBrv3*cY3~2LktjHLkir30)jA zF2&T~N~Sx~nvxzGoZ6G_c$(5Losm$NWEec(Oy<>zEZwrD_rP(*`Vyhdvv<;d@|x0| z*%n*lb+zvn#2L8zVb;TJ(P+d2`{dS;Kj;~oZT@ZIlZBh&Jfl)-{{GeKEs~l)U>yH! zg&NC4D*M5Y;AcKJcy1)V+p|vrX+GyRvRk$Savk2TywHHGK2EP-(-{4J74?BTV^=j~ zga~0x=V_f@0sdLy$!)g=H^;quRs8Ai>s7#yMQl$Xf~)kkXLMY~KcghDw;Z5_53P0MDKHplss;wjT5owht_P0JSj>vwkz#?D*W zOe~eZ?A>Ax#$r>qQ{f4xT`iV2KIt26VAPx{mmU&TXZ$E7; zQ^eL<$}UXlY_y&ruC?@;;8)$wPC?JkAbQZfnyaAoJ)0XT?b3;j(LJB@n7_Av(?Emd zbv->qYwT#6a5J5M2ytI%@2og_d&1i{?@=n{D*A5D-)wzmz_-*i&b(L-J+UoZ`)+bm zx0w{V#e8~-2D^8wN*JK5U~q*^{I%VUgV*uh>4*O*dyoB>@fM-)wyMdRNTF+vE)T`~ zwqqT)Dx-w%U8#TuF@2Bn^JsVCNjY~_AKmuHY-u&_Y0Afz&xDZmVojHx6t&2o^}xQ> zK54=@d#JIAd}|Bh0ddNfO7Pr3+)*Gxc+_#Ox*NT?-KTwjNPD4-5F2cUk1I^Dq7y>d zxY_I96?zP1>*({njJ{RQ8}xQkvU%?2-^`j+8n`&U^J*u0@@m(A088YZd`20{SYZ=9 zdS@YP3?t!_d^o|0FEm+1cIC*}7k1oudv^LYKDzmHv<*M;mnaJQzNdWDI4dg@RfZfn zDNLBmClaayzqEUBln^sB6!DQJB3xBxQ~4Kv1g}JbI>M``y||~0=#>XEx~wW^%ik~HIuo}`AwhGQdYx4|x2GaG7e6pu|cVMEw+qgBenX($P6 zSMgKfK&IZ?vM4W5lbI>o?~#Tf_tb!OfHZzhj9IE#GlzVQQWxFl`^AOdr?mWLaqP6Q zZ}OXB!7*ZA67~%yD${op#u25@>Sag$ofCubvoX%IS;Z1x+Ach_yW_AbyJo9P2eC|_ z#|@o5I~!uo$|oQsnlyjiDrn;m*vTDwsZ{!ZtIkvnzBpHR{dP6~@Wixcn~Q#Cu$6z; zZ@H7~YWbdc);i!L4R@Wf)x&5mzPkCNo$g6V&4;PhB5S?_faxL4W|j*hHDc#rI?|M$XyvfN z>L{y3xjK1?5BJ9*viRj|$^3WPZ>B~UJwMHSrq;`S%UZqYMztSvEJ_yZp22qDf4gO1 z`Mr*eyah}??I?idOvPxl^bru;_}cYA0au!#O9rXm39(Ys27|-be!#miXeTDX4&VGh z9wjSU^z1cvLPG4dWv=$tvHSW00sJx{(wKb000(cR(bL76w@V3&O~hS^Fsy^jZs#5c zzkn`M7IN^>BQm$)65L8=_1A9C9^P8SS;(%WEny>S#@>V01UaNWx-XYEJIo#z*|Qpu zeaDd3(67y*y@OzB0<)h$8HSX$+vZ|n!ExSOHm-ikDCt2rrT97OvE?u^T(#uFDC}4ZC9jnfy7Xl>}ccH-@*#BQnFIT=Q_v} z0aw*AwzRXMC4c~NrC{ZQ9^$1Me^i8jHNEKaZH3-zy|DKR@mQB-zLVvrE|;Uj&X$sx z27WU}C-`I;4Djhl2HM&wn#ZvN-Sw_GFdLck@_`7yO2~E%xi>QF zh1@oHy|^8{F1F+YNpKVBV$GG&kbGT)6myyYrj@)K$$5Ad;(Io|in9H8A>*2$f9IoR#* zC5EJJxA<3Tilf6{slQ5Ay7;07WjKs(t(m`KTtycT3h!)1L2P8&axDNlxUU@d6u=+t z9o>{(j*wx>j<50?hCi82Fvm=>kZ_syG z`Mu5k_pL{#hg?gx7gy-cMnGHY9oUZsE0*NenH+w^*v!`0mD8)rYD&))kxlyiTCyK|A*5#sBjXqsLT-vT?sxHo_q7^a26e?kcw7~bVY&lYGn%a(AJdhsvEWKy@i=L@x2CBWRHp6 zYR=PY%EAWIi6>4vNU*J{hGl&E2BP}knsCyUTaxs#ri<7>aa|%@KSa^L4&u@;6MXkGe;^0BsA)3tP zQ&;naS@dx-cCJr|X?1G0r*s6eL$!=UwO^|@nE{ZZyUi`^zFSeC1JAC&LjkS6OE0iG93ceD5g>H^g|%YR9t+uMT(_p>kF^ za_!OF=Wk4QUcc&e-ZGH3US3j%eYw_&&0$gIM^a%wXI*MUUW}i(GJN_-(jR+09JJ5n zC8#3O9458eFgjE5ImusxEzpj{l%malOjOg&=e)PuE0};hs+LS1jyV;txLLg!TYbLN z6*+kz#fUv6BDo40kiHXn{%K6BE6m_EwOWwX_qkK8L?p);w2lx2zmIBrpg7q(=L~S_ zmb8>ja%sUV=0+`6!C&9y@EHms6=|__g3&wf$?n&~B`u2z-9x6Tk$9!;DgcxK=A98> zgrPKu5OR-vO6=M<(p;oU3IZa=&N76tFpIcP)3G|SQaw#{319(%Srm1_J7m%D>zeKZ z5w;f^a|?x`lZ!AHgTSDaKqVW~4@oEpNy0FDI_*G!VIrc5$k6?bLRR+~y{@$4vsGAM zR>Kz^$dNA^*0eU5IP0_z(I_I3 zs%gyPhBFu=2=+!$MK(!U6_E(l)MInUqurd~C zLhHc}>_T8boL@w0_{Dc_LSP!6KZ!z&1i}1{?4F!*j9)f8YL$LLYt$|BC`a*c1MMFU zTmTV;fI(f&hjpC6*`(LF%uvT8Lt)Q%S(~S0xvjN>L3K5Sy9#t9o#nDp6pTPsYQrxmUs7(TXOUK>;`_F&dP-L!rfRIS&sJn+XF%4|4P z5S$Eu(y|=BIfn1lro9;xz_a1M56zMe1W5Y>$qFIawTBplpeO`Y2+ZEi;xF0RL+n?G z8(gOOj;U8HD+A*%ksQpJWGLJuZSIbE|C5ib7=$sEE0eAcq~v=uB56R3yipH||0h)( z_O@W$C=~zUSOh-9pE~p9D4>4%xH!gVRs@pzJZ*ml%;*0+U;sk0-=nuq50AINx^LRX zD=;hI(RcaUadJiGPY(gzkc@yrkoV+c823)UXWjcsuIlsFmICS2Zxj~>HG!W9hd7a$ z7>+)noA~l5JV7)7auf_oC-8I7f6yr>9_eLtcrbNleOh-Q^e$!Ht5MOJkE5%J zqo<9dyGwc^G*}L%>~81Uz@Lx!r$IV7J|-HAdeUgr#cR|e?N}>W_yT^i8e@BE`xD9A zsNPY-XcT6@{3@N!shDVVarSui(NM1bW99MEJx2+Q{5Ct?<|hkR+l>)LQQNOVtoIC!^pzu#>MnT z(CBu@C~=1ofdnPI{v(aI&z&c#zVDC0n6#DLH)&-3URM1N0V3%A1Y8&XR_qS@VH{~q%D!_O^>L<9`?JoVGmE6ZV`lAPnPhZ^MM%>^0`EwOz&*a*Y@sk!y zYE1#=lbUQa^}Fyn^YpuN$OxA2L^fOc#hAhq~UY6wO7#87|fBl~gi& z5_r=Y4aW0^LTXJFC(cuwVQPu>eaZEEUz04o;_tle3i{2yWbP$yUp~4BtQ+^-_|BA;eG=G``b(dZ|S*d$`uU8v(&yJVFt1t z@~K^nV}hnM{a^H)Asxc&_y4CJ2VYz{@)pGNa|)f4hdZ;ILg}s4hrQhcc;2VM21Hs# zP3x~J-@ojL3f5zw9r2)A}U^b{=YGkxR>A zXJKt%qGQV}OM_}gGx-pLs1X`_3Vl!5@-2Pg&no($TRy)?Uxe2y>9qnr%E|F?+fA@N4JZvB4*u;#(e zA<%abnXebJouN!$1k?VZ^@Yio&`*t;f}oomac+vh37BJi>Ju&@%>adz3^(sdv;0E) z70BmLd?*gm45Q$cBFU)Ip3z6jSFkD4jPN~-0$kjG#5n(7#aL=`yjV3?(x#{Di>Oes zzv$@jpJ@>_@LpqA=;Ze0(%WQ%cTel+;{M=$_A_ClZASWBBcDpow7Kryxb<_Mx86&u z+DD=D{_SmYPbl*exzW@~#=$C`G52<(@IE8>vgfR z)aQzlE{pi>tfJY^K`w=a(1g56a)JYt#bTa8qsNmcy_ zJlnjkV0eYXu3$WzcC%s1ysoUvz}tXZE-(%yeTkC6&6$*F3L0j=S%kxfLK*_rr+gdw z!=+!+XGyIcVX`^5Dr!oghm3lbc!!Lpb>A83i9inzZHbexlm4i-+7i(ifF~=}^r(2I_cs`7a&s;~NcZWd9EmZUx#|zQYgCN+~M(-~L*Gp7zIz zN0tAAcq{{2f&TxnV#Memc=!P7IJ6=0*4mrGV`B1V4R3hGy2l8i^^*_Cm+H7ThD__( zj45kg*{CKvyLO1q-tU_~F$|{G-Z;1G0bJ5Y>Is&7Id}pNpw`v^qc@Ko+#1O} zAruokywfi#ANXuDHd4_<8gDo*AyR8&ap!=ap;r2Q2V--->*p;8;uOl#tT4rEr?l!w zm*^hUPA_{P2`ZBqt~l>g=}2Zr@-XZu=F$ycA{q(AoC78jtcwVOg$KiDRs1Cx+Ve4! z8qU$8SK~yA{G|&awcc>t8qM&M7n{<~iUX1ILvA{%IM=-S8JC(^5KwG*NEQ>c2JdbW z%)VQMaiZ8r-zr495Q;TuPbSzWsE2jP3%--A`MBZ?Hmmz0ThF(L$@53ELtC+@#S+BDn8pEMNJ@;#D(@PT7@cO zaH`#|v!u%`J-ziMkD8^!8CW5p#)!~CI%qaLbVIyJn0qA4!d0Z@0P36ZR@~;FrsJHl z=OR_R;+7uY@$$*^HD)JjA~}u4pn$=nu?!zf7N@an)MQzVD^ij8hVVjU4HcFq>?1j+ zk->-XkYJiAmK_(l+-PhvMS-S?sc5Qao#Uu9tEcD{(l89+0fJH@IE@dftMigSW7`ac zAQ&SK;W74|jh1CHE|*~-kEk&dx`uH^>9>|_Isb36co;VCJ)b{mX!^_6lF+_$*niGE z%_`VMocFa=KlZ-n`5MRr%~Ea{)5Thzs(LUzK7@5xjj3@Pa`Cnt)Gb)?3Hhm6%H{L$ zKm}7Z*Efdy4ewEnl*xUh@_f0Df>H4I)>H8yH7L|_IMCr0U|av#@MKq8XV3=>h- zn}aTG3?*brp==c6PlYFgZm~~-^hBM8D6YIuUamTP7Gdg9A*~#bpvLNjt3X)mP7o#M zOw6|wnWy#{0n~GEmH|#hLOU`q;<-}BkIwvBOcE3G2&b$dUX3-% zVn2Q6Q@?Fq#Gm<#PGd!ETvZ~%lO``>ZBn|-c<1|ZV#1W1{R0_|7-sU+xRL~AAex%; zcn*d-MIDVarWs=Z-Pw#8Vntd%GOoH>nn_-Sq{^@dPDmr~FNj8eI^ay;R-u(0{Yep% zwxK?d&YZcBmIwP!rq+9*&K#fusi!t2lU$_AN~5YOJ^Y`jMX>*gN`e$ZNxWD`m4>MH zFAMbQfEL8VWBsvUx-%m2iR6AYa;MA_HOW&`c{ppaGlCAvY)f6Op88i!L5IZLS4_&k zeD@*$Aa8a?+`1sB%}H1A;0G6my@f#A1gr^TatbE!saJg$Pc4nWNIwzAY)qXyaL9xT zbQ&i+(F9Tk)`F*G%-n&L6APsN2W2v_|D?>5He+t9Kb&F6r6ds@OQDF#D`=7bJHl+9 zk6k>**o2o!ia09+i@NF6Zn94EeVMY1&Uas>ORdR61Z`qT0LKE_`BIwE+Br)30CMht z*unv^^z1++`V;qR@LtinvaYZ_mOX{CMqheCq!HFEp7h3sLD6+vFg6MX_lQl+`yQ=d z>9^}Cp|3|Y1T6hlTR6*@kKg%9dL2wj1zWBHA(rZ*v*=cX}P(k=G z+|L4ZFx;ZT=k-4kccFITYcUAL3lq4f?2_#-#)V|*wj2|kJf1>we^!Dw1}k4g2Myju zAexP6N%O=xPTZv-NrKm!Dm%eNiI6Q-3!kf`+d=+Fl`*BC?b6%QF#<2JvVKAk9yk@( z&_Sonaz_hR9@{jCb0pc-3)ylUB|t-p1A{I7x#KiIg7Evv4-zfrlSjV{C4oH~6Z7u% z-8V41`lr7!&pAEhC1K&2FFK&1dB zLGU<7zIethX;=#kMcFMK;|FXC0%@MqeC`d_&>-+4ASGV+d4^b0e)0YTa4cz_$HjA! zWXHDgwyvPTnP0Fy=QchVUgW!uYFbV-^i{$G{z0l|`-)IKsWOnsx@uiuCMcm&h0eAm|B`X)xj>q^L zmM?w3{AV%)osU1Obdn0D<>w0L3gH*FU=_%W)XGRYTj3@Ix?E6cp6oJD>w+M3sd`Pc zV$=Vx&;0HKmUs+n^r2Yp_%`R3z9Y+YkW*e5JSL&QSMNZzHmvywYk81 zd%`;{K;>=Pj3ffD;u)HUh&wGd8?>Q9Zzk?qf5;8?R!Gm;rfH_I;)>}7CDD-CI?Zg+ha##M=)pFn0C`{a8(4)Mv4I`E#jw9zgP30Vz4#=6@a zp>*wsd8(-2?tRQj9QmxHkJSBh0~r}o7!S#wUzk`c8B#v}2xa*ystX9e*i^r;wR+il zc5Y)BAIaJ5=TtZsET>Q`DmC9dq~~8LIRhB+&~hvhtKc-jUtnfNLH^T%$R>B0+ zSbG=ukz<5kcU6XPZ=i>WQGD|_0)7XA-h|R1ZN|Nk5>}Q8>>=-1gb6jt*Bk}T^_jeE zBMHS;%!jd9p!)V@HCucqd-wYth{z-H3VH**z#8!z80CFq^~P4fB=x6h`(~IBFp$tc zfds-+zTZHb>WKp18_GXK+=1tNT}U&f`I(1#@oAnkOvo>n^xY7mJp)RF#n>X4QW_-k zH~1cMTH}{#?LXY=Kug1fNZt+kBvE}qif4&M;RhW@nDmC6JAr@Kp!%|y_>_+l3;6#Q zuL2da=Fx2Pwf&KMR2)(6j$0h1~!5Ak06G3BTr7-au1l3_m5g9|!Y& zs6+hY7>-CymmybfqYx9}&0QH?G>i+@4fK?@*Ac@XVyk|tez)7L< z2aWuv7H|LGfwBKqGWS~ySoD&~;2|Kq+X0_^k+19ZD#(+ zxq-%a1dhfYa)}90juPA(3er(yf}*>YJ@+1RALkyj`4lq{ux-`n$*Ot1F%ao=t#i=o zkY~_6j&~D~MXH!`V5u47ii_3h=bn{m7C7h|tleVpUO$6aVxHVaned&@pgA3Z^OCA0 z;oj4>tUVsG&ys{Kh@1+Fz=p6ff^~-I<+{mTZ$3^Z<=SlQzLrqJ&ax314ippv=Z6Zs zHR3MIqqB0JaDX6WslPhtV3|Q(AB#1Pq;~J`dzG!a5h20exUX)EJ2ZpJEknwWd*dvI znpGi{2%5Mx4GfM|o1ug=(cd1uQXNxp_gAef)*hs8lCmKnuAFB!4!P<;LfhrQVN=&~ z{MB4D2mz&Q{tLiMimTK^5C>79W#Pg!6dk~xWzIAGZ8iMc=nX-usf6Fc26L&$S$og< zO&}=1e|? zIZ!|OBYc#7yei|T0h-TxWv6QGp$d~U!hWWhFgVM`mC;M7B--;b~wITk?eA;v&TgMTx9a^@JrM4#(4ioLG)diQieqO zH&AxJ<9ZPdZAK54b>zc49e+LpeW3+~j^LQldCt-556LtA8BdyL z`Vpb1Y{6R#TBw^)o)VsR-9pg7^=psprpfn`ZLaSoOxMQ?`cA5GV`>KJkbs+n#o#9G zQUJ}tw6Xk#_nld_iz}z!O3cHTb~0{f9TT{`0J=e))wg@%g`eMv z_?O`b0Hlkv%#x3FeghZ+0ma@>^U|CJ>J5iMrgrX=g~Qa^BFz(a2wdFR6|oF*?zBkN zMq(CF+nU?EGtjt&>FieWmxOR#tWAV{(~Hr=8KPFNKOT350Q!e7;>Z+CUNGJ?8Snev zByhz(-SV`|zg`cWoo<;}KB~R#UNtZz;?E|GC7gm9`f$_|27*7S%D_GJI9IElP>@~9 z(NL02i_xE^YoLt)rU2AX%|Q+tVvPPe#<@CsQ{7K#*>l*Q;Z{ft+eq3t^80=@_*^1wFK*H>oDAJ~mQD@lK3NxpGleFYUEX3gu!eLQSmtMNFsInQ-gv{8a;v(jYD%#2G@&0-e!D8gHWBJZR42 z^Rm+Nvyv8Z7*qi?vWTL*w0f3V&MGwQapZ{l_8zIq0J!82=jzVjWwRvo_(w|M;V3`r zUY-|sI5CV+aBOAR-Qp_&_~=Na#OS98%nqbMKT3SjIZDAp__54{5Rq*l0;56_t8<^1QMtnCLvm zd?!5rFnop@)G!(pHavgeO&H+eZWhL~1eHgbpfULNwKHiJCWsU4N@AP{4LUlH9?zfq zD|l~}do2|oQuNO2tPV%OKpfWN)7>r>X8;!qbhI#%bG0qA9f)|VBunlLv=M8j6z^bz z2szB2Ax=Xv!7};oB^>)!4NZBac1e~}(n^rCO4}^YVUdy!xfI^(#w}Cw9J#?I+sbnp zFkO^H2BwQ_o-iE9heZYxG8iL1Q(G%{&3SoQF!aaGlmHzCSrG4I#C5Qr8qrAplLc0CBG8#b@qatxj0T;LUFVYDfRlnaAww`_!QSFL z;7LJ4ZAVKjRQ=@zul>L=yhA)eAqy@%NQ2CO(psim)nrvXxs%To;YPS5p5J9H^Ar2G z6>s~TuiEY*1cyB`1)AO8^nB+~|M|=ilsatbF!$DGk62_R-u4vqXAl4NqFXZ3Xk{QN<8aQwCUQkYh0jQxJ z4OiU4Dr_Ljj&G6qxYcLg7zWz%rr2gwVSt1rn>KbqxbSxx^l__QT<3#( zDi{1Q+OhHkea$D!{0RbfD(wgAE!7}DKe0v&ntWw3iJ`cgwD?P^;tts_DFk+*t=WPQ2YR^hnNd&K0IW zm!xjTS#D)zv+KDq@W-rfr56$cT&JY0{j%P_b$V8j7Kh3$wwJ*(W%S0yMK(}nTy1=( zMj*R%e(Oq|nwtY*Ps!(hC1xfB&b77?@?nb%Dgx=b51%b{=Jl^~=%UoM6|-r4h5N7& zCOK^!6;A;je7Hp)JQlDLJ}R5y%Io0ev*O>20H?)CGTD9j@Yn&|kHOrs)U$Qjyikcx z0>&0|P+vLP(5ua2|9n$efF1F*KDlRpn&fYVq>*{8kCamo4K%W9vM0$b9%C)Fj|_+* z@fa*2Ytd1cEg@NGh!)jOOu#T72WU!>0DM~cx)zn0UR^oE&=3v8Asck(%Bk-qGMmQ4 z*D4y3A~TG4vr1@SNFY-{(=y!^tsCp9lRiztXlWdqjot8jGp0Z9?I~NU<^8 z-ufnHzkd9WmUM+ek_NrtARx!E|E+b4Z9Y=I960BQIJVt3D-fRL}aO}-v6o?@PMd4YNR^u4#oWoT59IScVi9%8bw zARKeR9EdnAJssEG+)AnKs}ToFN>~I7t)U>FAMUq~_se}jPD4iPbWl$es>4I?wq}ju z#BkcyzVP-qIEVn7a^Cvi<=p6idzb2w;)4h+9VN+2BQ!`6wu_Cir@CdbOT8#w#%2y@ zyKEV{6&oGVU;B*ryiU4_#SAt`16-)ocsNHS!D}jJUEJ>m-K1>~fG-VS5F9&y` zoPVik)?ytO9U~;AP~rq)52Y){MF={+1{SWYV&inu*E%rPa*PC$76Zs1yemc zWZ3K|y3+ zE<{riq#sg7D?r+)u)l~$Y{(vNelN%io@AUWYRYqwkiBn-8?YYl(x?1L`Qp#8v^umr z5JxCry{fz_G(W$Lrz3@!yjji__jV(U)X*X&y%ht?hZST}?@-p8fY}CStuWIYo3Dtr z{syV zmN`({+Y2tdCgF7H7K1H1;o{5`iko})c2FiW*P^=(F@Zub*fjFMI>W8|ly5+_^@XTe zh&Kb#-KL(TYc>f%!=4|IC7GY=P=4(W+Qz(tGk!i0xbFmy1HhSd)cb_ebQ^)!9OUL= zPG7*?y$uk{P1>_=^L=ihtqr$6-B%yrxnd}n3S*Q#Jli}^_=FYP_E z@I*VOSI(LXi!3o;*V|@O`K$cr%28hwx5*8KUkY}`2IHGhT$kosXpoa%w#kXj=ue11 z*jJ0Mjq9f|1*yRcEr-Y9^{r8+v+e+yoL(={HG^3Vp6B^wDZk&YN7~ZEeGm7xfOQJr zJ8JeHPS}I92EP@6p^Bb;J)q1 zqgX`~*l-9tlSEpO9SJB|n}M65rk{VYYjfdr-cymDl9q4z;!QK{$mIXoZ_fs$v6pwT zXiEGubkk&n28JId8Y|-hF6nZ;NWTK|8A&uOdWg)poUK9T7zOyKZ~E;!v1!u1G*5^CQKMaxic=TE^4Lidu68#7tNVnL!zyT=%ZR~8 z$ufF!{U+Gq$xjL)yR8r1%?S|^x|kHp=KXlx?iTVt9ed%;b1?xnxO;&E0YUpO$IOAv zSJjM+ZU45U+)U}W|G`2q^7C5+O=^~`ZDKP9D&0s((d~BkC`XqkNY=5oz|}m4OHTEbZtNT@EjQiz*&pD z5BQ0nyC*|TXrrG{qyo^l(@_sMT9|bf%xT&*QrfdCso=f6s@yhQKVwG04pvYZ4@Bd@ zjn{FdIv=nx2vOabk!VG663&L5rALCaHMrn=ghj%L;l*i^N#pGDb#EtAu*C#avPLgW z*m;JntBn~kNC+pf>6$Aajj|lt;GbOLu;NMQiV zlkKgKjM*D#X?*{l!NqG{^6oPNMJ8LU7R8DkAzY~Fc(9&#VA6TM){i46aqr1RXGv<# zkx@;NWvPr}QW1C~n`tPMTFGz{5fhbB2D)0+|DA5Ob@vP86aa>kEU(=Qnqy zqs#^$%Gg|w3kg>4+;rF-%;@vE!=}iCaa-|5ZYBeW!m}VNX3?-85GbEoSvz?OsI1gQ z&WoeN=Et(BE$bL8v+ZSOku1l0;eHsuyRd#VxAhuK_2vrN%Oixp&fHR=$%I!;;Inw} z$8B2OrUnMzZ4D&Hre| znIuBiHUjJe+(`!lg85&kq^qTwof-4rBkSJ|XF3WF>s&ZJzcf)g4i=x+-6A?9E> zOAygo#bTSpb!};sNlqzx5HFqj{ERm12H`GR2J5PY;VKv+gAd+mCAU%#=HhTrW4=>~GfITBoEJ|HA z)9%@<)P8P*tA)Y#fRS#SsqJeyghSP%O>SchCG8alKbUMsH6y~fjgOW?3WQErCNH*b z-(c`SdBM8Q5B;&cIR~>2gMd-&b_oXJ@=g>_+_PiNK+p`k-aMF{C{3S%tjXh*{G|GO zslpinlG2#T!M(&?%@ z&Yk-6!^32zl~qLs2jsPW?aHP4d?)qpY)i2O{S(H6PvyLfOdQxS2V{clWVG|9bYgNz zielr|sVm+&RfbMTNsi(I9rroDI=aFqu?3ns1&hLUy9`S_+zfL;g^yd$M*AWwDoee9 zw{CAV%;r-A;-HJWGu07+xPjR)u30;4@G9^yf*jkW^e7> zLGa@)lv<(<5h_$>1H>yVkpBeaLP?R%potQ%fifQ)dym3(kl5u!43a6}A*izdN}kkT z!VhVl&@p%1SU0SV)uW8I`Me=qdNd`Z?a&j?I8tRkziJhvH3>&%UE%cxtbLUNcGcgp zSE=mMjC?zAxNQzg}aOTxQIUW2Ib?Yr4&ZW+xF-yZG`_v9vy~;JEd;c?#3SE4R-lki(uv z+X?}KdtPj+B&#I_T7nhFb)G3P!S8!v9kKCR4WgTaCMyI{*5(6nE||*QA@bue1w&sd zNX-}?AALz;|?8cJW*MTI*m-Dq8|L+2K`c89hl z+5Bg`et0PI|Fp6wD`l*bt^8@~xe{^Zd)K)+=QgA3x{hxo`eisNZ(Yy9PcLKSbaJh5 z&QjnYlDWX2zSsIkQj}IW0Xq&7nB*|ER$C_%LXkWsee+kgR=XM zlQ)c%6eMiU`(ILg#2C7Z;mb=CN5T08ci&X^Qj)sb=@u84sf#5qZ>`Fe!*LX)V`cZ# zJP&?f8l0j=7Y)c~KOdwkrbyE&G~!uNH=>~(l(8s4J_%&aI7ewZXAz-x%!-U^r`Gut ze`zT!V<}Ia{nb=Z-9__bAi$w)Gh&$=%XKd>u%&scjEli=FwZXffKbZk0j!-^vl=y_ ze!IoCe}2yT0&?_My#0%tOF=1kwXIHy&0|&#`aD!rq{7%{7>{0Z3)2l^Nd?#01Z8Ej zy48}-qE7NJ^~jTPlwC^>(H0g-4`aG!Hx3iJPFFINb+>GA77Fwh@M5_j5{^l6Qk%f&>H}~fDtMY0CxYb6I^p$ff2DUVq^TuofHb7hf`f>@T?>i5 zl#lSHQt!>!${nc7U+l0NYH=CuvIVsaPi=kJugEUB=fS|Q+9t{ePyGLyvv2U@cL1z)RPMTfadB3yEbq2`^md~yZy%N`spk76gzk9Gsna>3=n65~Deg_> zDiwLkx2oeqN?i349f8y6ab)gqt7O!1=_sQXn>Ve2-|6CooNN9$-; zFK$^!{`yH~tu%5{(D;->hHAt6YumOeJBW-vtT}{q5#i}um$a%$i4UqipnGUinltXn zER7EokysX%dkzL5y?1OZ5GNL%GZbj2AuE7f&b}lC6YHt%9A$xIHMA{4?w2hlMpjf{ z^te!dacFuh-LN{#YGcQ{j2pTujLWW>Y7(REntoVLXO6T@!E8tkl};XGN<)D_lr3S* z9MWRYu9(_12bPR_j3XUlBmYG(KMW3M`@9&UgI1LT*F#CXDZ311k- zf(i;XYCc?z%<~VZgsy}l`Y`XDrjD0;;tVIZoATSHZa>SGBFxa;-N1Ubr^orqt zNL$SmFREq^JSpZQE6UzAUkySWCDdo88Ymv4%WB4)P0HZfHn>bv=b)vv|Dj88;&7=O zsD~P;i|9Xe{nH)x-|GIhhK-)72j=G}P&?glSEA@ox;+G2S8XDU7**0HctB>9H*qIm9^?67%y4q42ExsSrH>*FS)1z$pqq)Nd z?o;-(u9IpH?54`6HR%b+y=I2zzYy-2YKHHy%Bl{t2irocR^}DHvT?!f-_E;bDQ%i) zICa&AQHPc9M8LxpcVOBCqtvb+NIFp|?Lks$5pifL&0UNvYt$+CJE<<^vy!X#SxU*I zPn|p8iALs&hsi}uk+Ksx&>FMR&tQd>1@Ovo^YET6Cn-R3Q_5V1C~|cw`fY!|PxtfU zB!Fe6^-T|?8KV;KSGBm?WP!a&da?f2t!5ijP~O~ASkwJrwnLm9ElU>2v*N>Ne?OzxvmX;%@G*ij(z+ zrnC&ha+vEPY%K*B>}fhJF|&;Ezu|w7-a1Pwr59pT(PVyKpiq#;&GPI^SNz5u8<&k_ z$e9#bPDN*$j&RGcBucKMz@!{SOM%%B|ExSL=)Z3LUJKlTYe{)`dXPB=r}Dxu!X{O1 zRDK>rKP+;>!?!JHZd^h+D=wk6X-A@a{_fx*lAd$3zIMCjUU1Aj3`JFM5j~vq0^o7g z`w)w~d}%g5cl>4CNmYLwJsd;ikB`tTBV|lIb1Pht+`FTeTGJ!rzH&bRYtucud)0j{ zuP+|meJ#2T-Tzth^T* zim^}e2Cq?nl7lBsDPe9W%P9+1&|&8 z4Dt{v;QdjLq2`+9q%;@6ry?ON1&soafips8eZwh$VE}%!u~`JG6clgp{bF)5_vw7_6+_7=?xmIVRa%w6QZsb|u@xyF&FQuYFq%N69LwS8b0#0Ja~VWOaM z(O9R$wq0f$o*^oLV=ROtRTmDMmjKf*(0aGS=@fb+wq)pJfP*KmRG7Luwo_Hl4Im*_C$7m&~lr!3m&u&WP;4bn%F5CC$}H zHLX?LvqqX2qrnUaIQg1s$xL88c8&}qbGkM3EwYdmCA^j!>ZfaYz9*8|E3cDMgYC)S~yijz_ zjtRoC#`s!vvF~)87B#9cNqkGcH@507!Vdc$puv+dt>ukTD2gSAnO>|X7TZlzqL`Jl ztMk6-QyLZi24o*xMwJUTl#{-o@# z#Qz!V|Fw1zzc$4a>bw~QG;o;Z2TQ+_Esjl^X_@p8yD6?SqFD&-3GS!st%Mc1nqlP0 zYuuk_J2vGVz{Xek+U3G3d;~#DD;FQDwrn8>XfK?dEq+&rZK4(nnCB6FMVS@!i-%_u zw6VvfnE^eb-al%7xLx6^kx-N;oM+Ws@O5aOUQi8F`vdzFvwgCx&cC*vGx(XP;9-7e ztBUGV0g?FWB!_kS01iSvLXIswfFevGzyfOaXP&3Hfh*lMH`Sf+02MPt+6#P+HZ*$6 zA*$aBrC(J#tS(YcIJrK=NycGJm_j{!u2Bz2T-TGwS*zJ)dS852q5YcwioWXB0@zh)m2RxdN# z%Z614%rzvg8pE8EoxLpeqB(TK;twKwn^}@p{J`)lC=<9yTIVQKE%HI!^b;bS$oAU` zl6NDs|Fwv|4_39OCR{NQc_YE4bGT6FVa2?J%rnd{*pr^L_ny|h#2f$QQh)r^iQCf- zKbyii?d@IVIqm0s&#V`|-M%C(tygBMZRV#bb9OH~x2O8ro2En6YmRQ4bjhf?veftO zBh?>OcjXR7zyG{`$`g;^;?u9Lwae8#xw!SUTy@RkWy|N)J-hjQUj4%2)7PfQ)urBE zy?*b{YqzcMRc_CIzOLWy-sh9|YJc1ReRKM7{8t&vsx{v$?!U}GSM&Ss_rK}&7WEGw zt=}K}>uTD!L%y7fOemAO^*l@;GhnLG>S^p>9mPrdj` zHt;WNVw1{P(1?}zZ`|?ikbQtRBa;X-Xn351;ml0)h_yjWCr$;nP)`BJ+(6w97-#^B zF)&0s0|$ds^Gf1FDhpDJV?nJmbOS2Yyd8c3mEHr6BXh%a1L+3FV?ZMyZG3Rk9$jNc z8+ULfP{~E0MnM#f&w(QFx+gim2s{#vuKmmH+v2Z*+H+VK7z9wX*8@f1+7k;3u(>*S zI`Aq!pf$^Q&@G<<3<&Vd0nmujT%g~vY0qnr7BT`_ei~?%42tDPfK!cN?GT?M8-g_y zdRL2Cck44S#D%gl@S~Vy01QpANyR0VIjP|3O7t*5KTr~;zk%_E6^drG<0a9}L7yi@ zm=jq5GY4rB1zkJ(#0x^ZdkIuK+B6Kh3Fs3M2oowxp(dbAOQ7pVA2mkk=c$0|M;}8* zHv+x?jWB|>9&2wL-2n8CF2aDjCXk zT65N@l9d1kK>+{&fB=|GWmBz`FN{qD1OONV0{}q&8r2Z8v34}FcGOXHvo&(iqII>h zY)q7rS>s3edHIf-M8}KoAq0#xj*+i-#Bz&%=m7$VP2wd!$zmZ3KVa#?Q5=$VyB({e$KL}RSlHvJnniY_K zucn_<2Px=MFh|`#QS})himWnP83}JF2tuA`3^b%Vf0iw`gUD7<{$zw~kIM95OxF2* z!pDX1S;$u;>wTG)R5{Zk9jeWbJtb84N=fvmZbRIFL#^{9RlU85l3m?eZy}uP5VQ@# zuYIc?T9iwJ1d|vy%WZ zO!r42xQx>te+sgC0<8qFG{%nTO3%Q@{>Mj(!f0aN=j9OX$N4!as|h9F5%`}hN_@5Q z?E=wBqf8uZpLQoggkJYKff_3u!qQ$H!a6+Ue*6O-PuFm-hkBr^7*8;MRgYqCoka&u zYyNo#lGI5Q8t;iX1&H0TdaoWY(8cB7gn4`4mWnqH_{JUy^IlP;v;k!Qql#{%68ukJ z)!PID0D%5_)v-6SbfBaCbFGY<`~l2>;Csm{GD1>p-J~R3u%az|ELFhUlQMBpWbG|h zwA$4vC#|xo2R!n4XWdOjTqVprWs~;GetHtGY#T-O#SH4v_@e;YZ-AxErWu znHGLe1jlbg`p9amjL%E8i9D!5QGYQjP$ej=Lun-jR}xqnk9Y^|NUq}KMKfmuW+N)u z#1d9q*}8A(686N`Qz)ZODMmUH~UoVDWSYEy=|YPNIQ2 z7Uub%Qv{hU@yxAJmmU%rGLa z0b|5IcYX$ifd^#bmrIp*X;Eg}4m)?Sx7(U_2G%NvX%2>gOZt{OdtOq(@1F~?uHn3C zGf-GNJU_p?PUAr0%jam=!c>F&-ZaimmaONUv5^Zm?80Lb44Ikmcz12ake(opQY?@G zBHkwUi@Iwv@3`LQ^ZUoQWo)V^wrdcK6B9UXia8gdkGH-XtpBXb-P#)Z=~rDWK>z>{ z{=F`GwzhwjMRDAEjUJ)nl?p`5G0Y5HKn^3$e^FpoXaln*E~9yVjPOS+NGrpxx7TwB zD#uT{`%tcWuGfaK*ChdC@CIp9CDiffyb)Qu4XDQIu;IhC$s=uDqIPLp&zUzPevvch+NXi5MA^pW z%@jF$nXq!;_iEE}w~}cdmhXG_Cu&KFuyCS4dhbji<8I|<oKWb%wtYb4;u>(7ES`_)l@EZExmao(7=y(G3c=`MqcEMQzJ7FUZ#b(8C%|>+u!p zN>xH`BF|&GRRxA~I9Pz+g~%gDe-R~`>)G_)A!e)kt=q-4Jk*zR#lT5Cz=6DQ2`;~( z2~(~Lfve-h#5biP`_zuv+@7(q!^BtK0ILFq-R!>}X4W7l@S9<;v>_6EP0jL()Q;Db z|JbFiAmFJQA|p=1dDX|mqB5YkP&qmhT2j}N)`&#SX2C>sCfNz{ZUsEBAp=dY;K7jn z?ySCx_h^dwjzD{D#c;I!?8F0o;sVC*-BJ&Un|uyw`92ykj_cQAxs{yAJE^io%oUu0 zuH<1U6PrA+CeBwV^S!epo$iee_X;xo`4;PQ;r&dU9dwtYxHwZw`E2_{iMzv zlX1llLXx`xC;S~kz6*F75d^~(?SgxLoG%&XO98rZKISfJhiyi{c#-C}|2;Y!4taQcmarVP(vG2JkTp7!m$2`bgu3Jac!{VJ6f zUo@2MCXa1Wu9P?ps7Lu+Mkbbno}2Dm2H8N0`w zBTL?;1n19cvj7)BK4y55TEDjkG`#b5Kf-0<`vEQfl=J$)f+^3vX(1_`)_?`uSLHCm z^rj&di*x$UvQ;2~E0xtc<}!GxN-#+qF{TuL@fjZM0>NM2FbIG{koJbBpkl>c5M)o8 zzxj%hy1k)CTDbDAt;^|rSGefB&lJ0V^F4=0fT=k4K=f=M8Dt$vzJ$qrgF&niF7S@M zU6$F-hES`ZMNaE`zu{m_JOwK>d!TdLe2y@I>ERv?oEWun6!xNhTM|KG80}*c?N7{A zU+v!+O+WQDB6rnf_K5}J15u%NT!}8)$qF$*GX*>;3h+u}Vx#HKH+Pj}VvEGHOKdk= z`8Gn9CS`h7bdT#07|mZGKtNKWt2=ZvLt$mX)75G$5DWb~y-DpKu|5 znXd*ss{J>r8kz%mosvtw{ivz@SkXdheVx952s?s4LcKiTFJ{zM2JZLl*4-Qr_&{zG zO7OuB=?ZG+jpDH9;y6HuAkXu-*PkEmt$}_V7Zmg$kMQvYBeNN5%_v>15(qX?;LZ35 zKYR9f07byEJ7`@y+DhvfvjgNV%h}yu(tU`*%CQ`qo2y6jA7S^6cdFl}+0b`E?}@iCc|GtVg&`Kp(aqag;E^kMc7Hyt(!ztZ zg)(DMMP16CM#}_;U!=FbBW#D#WU+l=97TyIT67n{jUf^c5{WPoC8R*QvHr~YZi2JCN`dJ798_7+Svp{;oJ&7Wrt(KH)xKq1d19& zmMsKl*bKd4uFQklkUY-0tC8%_tbQ7iZ<-LDXIWxNvHe*;OqV za7^cfNx4B`d2szn0djQ@_a{Ib{yL{TG zCq#@ywLnG;COO7GA=S0_H<#eg>m~2Go%u0c!~_w6i#c5i!pJpGk6MQ83%*dNF9#R{ zk!KoM0`n8aF%!^Z3Jvf`pFFH15Se|3Bs3}Nw87-3Vawdm>cXcsUsCs7AWvcFB=&B|3yLZ?5P$1_LVd=m~X&q0VR zh(Q`1hGUvw@v0uKJ?9)_NG6~O)v|lsx2imnoFpf2s6C*^4N|k2)Lb7f=-7qdo zm+eMkvlQ-0Xv(-h%WCReSH_DVUia8bb)7e;+GWRZdz!2cT1@G+<8)$ncSP-IRd~v< zR!(c`0$|bW-r{6L(NMzzKIRRm@pj6MCFs!M3xMIt3s8f@Mb2~;L-ud=?+G{4Y@nUm z65qLLoovOmy~}9<2PBX?%o6nw4b!sj6X=R5&sCJ z-1@!+UN=Q)Fo8`dm-D;{5LG?`Rc+}<#w%OsBRzkPSS(_iH2pgT)HmNsIsE23vNRQA zvKE66mT#I`BtfAD)CwSCrhybZnIE)d34UezrdhlVkjH_>QF>>n@4;>C!Kr;T8Xn^Q zf(HOm7=G}*{V|1eH$?HqMJbS9_{A8bm>G{!(YEMf zv9dQJYnJVnp}B}VKR>>iSB7Y(G0GCKy^>w9Q+KR;7ZO2?AX2FNVA+k_D=E@h4jY6y z*=_?i*17+iHDaIyCU*+OM>=zIyv7l9+j#Xa1U<5i!o90+tiLRNW?Kmh^&pfrE==jOMM3JsIyqgq3V5mGC zpuk`iNQ-oUJrySS8Bi(^0jJWm5o_S_S}&A6P9i|4YP$0vR6XP4@ivX38hoqEVCgzz zWuF!=2OPP+wfP0~oqZ@#Y|a!w1~#F!hKkIRx_%)`I`RQ~oVf=Rq!MuEeNbKbWMgyb z5YjC(2*CIk>XIf(8TAGq9q>E7MRL;J-WyNsD|Mboh6fAO1vU#m3+yemCcyDJ%&-Vr zqedDMb90V8Zt^5Vybou94D47|<&7voVBc&Qer2*VpXWRhN|z0?_=r+TH}?{t+gpZ4 zYqx~4Gx*iLHshs86b10*&#R>jVk>}EimdS*0AC4%4{+%AoMcb`dc^Mqt$1{Zm;J-% zNvEqRtHq*=E2+zi(2}+mST@#Stb&JW6Epi+48nE#qCF@5q=skmwS3?c*mbNlF>Q*J zz(2bIHBb(vg>GEbB22-uz)F5If)}lk0Zs-GT$kl=+GX_&$|z|9<&nj39H>jyVsPWqd9xtv%s%LhulCA{=4AHoL$|16a?q*J*vTe~PMVQmZEv4|; zd~j4Roi*S@q&cL8TFg!)eMytmqlYP&bor~b*g$-Uz2xEU zeu}ZJ6Ud?&rY+PKZkq%<86rpl{)>;|QK70?B{SfdypZkB!4I&Xx*PD+-_6ac;`=pe z&iEK@D7;wWu~iAS3?0%b70VV(y3v`H#~1ALA-jQNh|MA1kfseksC}q|ZSrsJvrWCS zh#kyV-PF1U3xR~E@Kvt)QXJ+N%ePn{Izz|Qb~UJQ`-_IT!Js!7h|^iMGSPkRfl~BE zCeEC-+Gg-r@~D3mHHDTZBB$bxmOh`9QP(JkH~uqnabsJ9GKO|s;ux4%a|wenc($ zitxoUu++H_kpCQM6cgd4l3B`4>0yv~^Nxhwo0cD-<&kV$CR3_y!_TfIt-OnJ%Wxk{ z19{1d?N{@wxGZY-{N}}?)6DT!SyNYz!{Om$jKw#RMnwNnC;p$mcKGA#s(vk7Z`JtO zYHYP@23sY`xEl50`TSC8$j<7MN|El%boB&+qt#nN@sbF>^D+)dI@*~7zRzA@e!w{n}#npZ>2XY&xE z^l;DqW~0&V(dF4`*J@R}+2hlmiKD}FI_vCl=V8!xukX!p^zMlRTJy zo@2%CiHG)Ls|D^-^x7WiqEK`l`DPeQJbk3TPC9|w@DCOlo{@m#^|K@FGy)|y5V(g-6>(kMCoN)XASg&RD z9bvp4B2ZC&?YIAGOj!G3Au)b+tj51OR@h%1tG^l(fA?Gey*=@F?=?X{CV(E}=j8`f zUr;BBY%;64$p?kSO)dY#`l zbFKMXQL7>gjztyXe%7(61E~qm#-->5XJ6(r087~?D z2)lF(B?~bY)?_H`0N)fdg$uBg)TJo|S_FNYv|u;Cn@t#Smxgro00-jRxWx9v9G?--t3&xaST>K9o_YwyRI>i2Hs z#qBroUdbBvP_uSk()%f`myMRr|VEm!`&L*ZaNDi?Mt%Zol2u1|9sCcZvv}r&!iG!RJ8rbGLqP_4op5QvI8w zdayTQ8VROjJ7nk8CT4pwpSN4MV!J2TIWj?YXv|#=JZNF?1rq0Ua6No*brs)xjgFTZ zpBH-&T}OMgQ4qS%`^Qngu@A)i-Nw6Pn&w-L_e#eWH&3O@_N6yZ zRkrogC-Oj7QbfyY_qp`ZTC~mX)Bb0zdbem6R#%&bDC;xDOAo92BLfN9$J5%OGusg~ zN9pz8XL|@X>4Uzwn>JlOMmLr+RN5{?UCQ1MSiN%iof3EkdAvR)JpBsZ0b#EY3eS)^ zZzt!jyWw-QK{6<9#ph7}IYsZhZKA|%@)qF(GALZxuc2NlKDip3uXl&k?*r!FKDC}E z#FoK%t)8T*2phvSzk;TEj#`+wJLc~zkp zsF~}(B`+Nv*f~_76_mV0BVM(>F6rGWQkV~CPQRYdz1Tk5y$_2&-141Y z@@B}1Hfk-*U-ci}-u}MmcgSF-3TnkJREhlTKXfg_&A2633V>djId~%Rxx!nLNpDUL zHwT#sv7id8DHCDmM~np&#?>oe?CN=M@3|(z3Sa+JHS+X(%`SH`!i0tuR>9}scUZQT_)U5yYUDGtiV4YY5nq;Jp=0^>VCM`#3Z&|>^!IzS6@{!E&FO``pC5@d(i22kK1_g6JylF)+Cxj~Qg ziEje^6Z@Pw?kg1k>pqIVLe;;}g1&J7BlK@7kW#Wsa{|}@BDjtUyZ&96GuD?Ld4w;oC=L5G_|P=}C6NXng3JvX;xEQ=p@u2v_AX@YEKXtd1^g~tWhbx8XFwk{A9cLN_QakaP$GWGWC<}PElsXnTRyGG z8p~D=*utvwhj#5N!{e48)Db+i8cA=LgB!2+POVzjgB}8J{Yw+hxu(mmw;E4FbJ^89 zuGPO6cx8?b4oCBLo+7vSw3_dQ@uIAEX;=6YHKQ(BVlh8oZDE9H+@^IAsMkwzGPVZS z@gFX{otHCQUcJ|W$$)$Q81l?8$}B_Eo*QE1{tPQLfa|TSxonT{}{L`k~tb@+;qeZ?GPVJ zm;W)IzWo+g#s*3uw0J2c&WXoZKj&s4kSKA!=#wFgq(WRYzhYSDwri-fc)FA=_zeH` z{DhG5@f>*>-Fun)Krrt~9oV#UN`JC?ZC2Q)<$LSug!;iHIXJX?;3L6`_MOh24b6nt zZA}$htILYooBPwn&O1*jkc`g7tUX^Bv)%Y@7Q^D_2X4T`+5v?0cP4Mylv&bbs?x|Y z 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 F_CFE$aMu6; literal 0 HcmV?d00001 diff --git a/src/java/com/twitter/search/common/util/ml/models_manager/BaseModelsManager.java b/src/java/com/twitter/search/common/util/ml/models_manager/BaseModelsManager.java deleted file mode 100644 index 5c94c7988..000000000 --- a/src/java/com/twitter/search/common/util/ml/models_manager/BaseModelsManager.java +++ /dev/null @@ -1,293 +0,0 @@ -package com.twitter.search.common.util.ml.models_manager; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.UncheckedIOException; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; -import java.util.function.Function; -import java.util.function.Supplier; -import java.util.stream.Collectors; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Preconditions; -import com.google.common.base.Strings; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Sets; -import com.google.common.util.concurrent.ThreadFactoryBuilder; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.yaml.snakeyaml.Yaml; - -import com.twitter.search.common.file.AbstractFile; -import com.twitter.search.common.file.FileUtils; -import com.twitter.search.common.metrics.SearchCounter; -import com.twitter.search.common.metrics.SearchLongGauge; - -/** - * Loads models from HDFS and provides an interface for reloading them periodically. - * - * There are 2 possible ways of detecting the active models: - * - * - DirectorySupplier: Uses all the subdirectories of a base path - * - ConfigSupplier: Gets the list from from a configuration file - * - * Models can be updated or added. Depending on the selected method, existing models can be removed - * if they are no longer active. - */ -public abstract class BaseModelsManager implements Runnable { - private static final Logger LOG = LoggerFactory.getLogger(BaseModelsManager.class); - - protected final Map lastModifiedMsByModel = new ConcurrentHashMap<>(); - protected final Map loadedModels = new ConcurrentHashMap<>(); - protected final Supplier> activeModelsSupplier; - - protected Map prevLoadedModels = new ConcurrentHashMap<>(); - - // This flag determines whether models are unloaded immediately when they're removed from - // activeModelsSupplier. If false, old models stay in memory until the process is restarted. - // This may be useful to safely change model configuration without restarting. - protected final boolean shouldUnloadInactiveModels; - - protected final SearchLongGauge numModels; - protected final SearchCounter numErrors; - protected final SearchLongGauge lastLoadedMs; - - protected Supplier shouldServeModels; - protected Supplier shouldLoadModels; - - public BaseModelsManager( - Supplier> activeModelsSupplier, - boolean shouldUnloadInactiveModels, - String statsPrefix - ) { - this( - activeModelsSupplier, - shouldUnloadInactiveModels, - statsPrefix, - () -> true, - () -> true - ); - } - - public BaseModelsManager( - Supplier> activeModelsSupplier, - boolean shouldUnloadInactiveModels, - String statsPrefix, - Supplier shouldServeModels, - Supplier shouldLoadModels - ) { - this.activeModelsSupplier = activeModelsSupplier; - this.shouldUnloadInactiveModels = shouldUnloadInactiveModels; - - this.shouldServeModels = shouldServeModels; - this.shouldLoadModels = shouldLoadModels; - - numModels = SearchLongGauge.export( - String.format("model_loader_%s_num_models", statsPrefix)); - numErrors = SearchCounter.export( - String.format("model_loader_%s_num_errors", statsPrefix)); - lastLoadedMs = SearchLongGauge.export( - String.format("model_loader_%s_last_loaded_timestamp_ms", statsPrefix)); - } - - /** - * Retrieves a particular model. - */ - public Optional getModel(String name) { - if (shouldServeModels.get()) { - return Optional.ofNullable(loadedModels.get(name)); - } else { - return Optional.empty(); - } - } - - /** - * Reads a model instance from the directory file instance. - * - * @param modelBaseDir AbstractFile instance representing the directory. - * @return Model instance parsed from the directory. - */ - public abstract T readModelFromDirectory(AbstractFile modelBaseDir) throws Exception; - - /** - * Cleans up any resources used by the model instance. - * This method is called after removing the model from the in-memory map. - * Sub-classes can provide custom overridden implementation as required. - * - * @param unloadedModel Model instance that would be unloaded from the manager. - */ - protected void cleanUpUnloadedModel(T unloadedModel) { } - - @Override - public void run() { - // Get available models, either from the config file or by listing the base directory - final Map modelPathsFromConfig; - if (!shouldLoadModels.get()) { - LOG.info("Loading models is currently disabled."); - return; - } - - modelPathsFromConfig = activeModelsSupplier.get(); - for (Map.Entry nameAndPath : modelPathsFromConfig.entrySet()) { - String modelName = nameAndPath.getKey(); - try { - AbstractFile modelDirectory = nameAndPath.getValue(); - if (!modelDirectory.exists() && loadedModels.containsKey(modelName)) { - LOG.warn("Loaded model '{}' no longer exists at HDFS path {}, keeping loaded version; " - + "replace directory in HDFS to update model.", modelName, modelDirectory); - continue; - } - - long previousModifiedTimestamp = lastModifiedMsByModel.getOrDefault(modelName, 0L); - long lastModifiedMs = modelDirectory.getLastModified(); - if (previousModifiedTimestamp == lastModifiedMs) { - continue; - } - - LOG.info("Starting to load model. name={} path={}", modelName, modelDirectory.getPath()); - T model = Preconditions.checkNotNull(readModelFromDirectory(modelDirectory)); - LOG.info("Model initialized: {}. Last modified: {} ({})", - modelName, lastModifiedMs, new Date(lastModifiedMs)); - T previousModel = loadedModels.put(modelName, model); - lastModifiedMsByModel.put(modelName, lastModifiedMs); - - if (previousModel != null) { - cleanUpUnloadedModel(previousModel); - } - } catch (Exception e) { - numErrors.increment(); - LOG.error("Error initializing model: {}", modelName, e); - } - } - - // Remove any currently loaded models not present in the latest list - if (shouldUnloadInactiveModels) { - Set inactiveModels = - Sets.difference(loadedModels.keySet(), modelPathsFromConfig.keySet()).immutableCopy(); - - for (String modelName : inactiveModels) { - T modelToUnload = loadedModels.get(modelName); - loadedModels.remove(modelName); - - if (modelToUnload != null) { - // We could have an inactive model key without a model (value) if the - // initial readModelFromDirectory failed for the model entry. - // Checking for null to avoid exception. - cleanUpUnloadedModel(modelToUnload); - } - LOG.info("Unloaded model that is no longer active: {}", modelName); - } - } - - if (!prevLoadedModels.keySet().equals(loadedModels.keySet())) { - LOG.info("Finished loading models: {}", loadedModels.keySet()); - } - prevLoadedModels = loadedModels; - numModels.set(loadedModels.size()); - lastLoadedMs.set(System.currentTimeMillis()); - } - - /** - * Schedules the loader to run periodically. - * @param period Period between executions - * @param timeUnit The time unit the period parameter. - */ - public final void scheduleAtFixedRate( - long period, TimeUnit timeUnit, String builderThreadName) { - Executors.newSingleThreadScheduledExecutor( - new ThreadFactoryBuilder() - .setDaemon(true) - .setNameFormat(builderThreadName) - .build()) - .scheduleAtFixedRate(this, 0, period, timeUnit); - } - - /** - * Gets the active list of models from the subdirectories in a base directory. - * - * Each model is identified by the name of the subdirectory. - */ - @VisibleForTesting - public static class DirectorySupplier implements Supplier> { - private static final Logger LOG = LoggerFactory.getLogger(DirectorySupplier.class); - private final AbstractFile baseDir; - - public DirectorySupplier(AbstractFile baseDir) { - this.baseDir = baseDir; - } - - @Override - public Map get() { - try { - LOG.info("Loading models from the directories in: {}", baseDir.getPath()); - List modelDirs = - ImmutableList.copyOf(baseDir.listFiles(AbstractFile.IS_DIRECTORY)); - LOG.info("Found {} model directories: {}", modelDirs.size(), modelDirs); - return modelDirs.stream() - .collect(Collectors.toMap( - AbstractFile::getName, - Function.identity() - )); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } - } - - /** - * Gets the active list of models by reading a YAML config file. - * - * The keys are the model names, the values are dictionaries with a single entry for the path - * of the model in HDFS (without the HDFS name node prefix). For example: - * - * model_a: - * path: /path/to/model_a - * model_b: - * path: /path/to/model_b - * - */ - @VisibleForTesting - public static class ConfigSupplier implements Supplier> { - - private final AbstractFile configFile; - - public ConfigSupplier(AbstractFile configFile) { - this.configFile = configFile; - } - - @SuppressWarnings("unchecked") - @Override - public Map get() { - try (BufferedReader configReader = configFile.getCharSource().openBufferedStream()) { - Yaml yamlParser = new Yaml(); - //noinspection unchecked - Map> config = - (Map>) yamlParser.load(configReader); - - if (config == null || config.isEmpty()) { - return Collections.emptyMap(); - } - - Map modelPaths = new HashMap<>(); - for (Map.Entry> nameAndConfig : config.entrySet()) { - String path = Strings.emptyToNull(nameAndConfig.getValue().get("path")); - Preconditions.checkNotNull(path, "Missing path for model: %s", nameAndConfig.getKey()); - modelPaths.put(nameAndConfig.getKey(), FileUtils.getHdfsFileHandle(path)); - } - return modelPaths; - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } - } -} diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/BUILD b/src/java/com/twitter/search/common/util/ml/prediction_engine/BUILD deleted file mode 100644 index 45513f511..000000000 --- a/src/java/com/twitter/search/common/util/ml/prediction_engine/BUILD +++ /dev/null @@ -1,68 +0,0 @@ -java_library( - sources = ["*.java"], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/com/google/inject:guice", - "3rdparty/jvm/org/apache/hadoop:hadoop-client-default", - "3rdparty/jvm/org/apache/thrift:libthrift", - "3rdparty/jvm/org/slf4j:slf4j-api", - "src/java/com/twitter/common/base", - "src/java/com/twitter/common_internal/hadoop", - "src/java/com/twitter/ml/api:api-base", - "src/java/com/twitter/ml/api/transform", - "src/java/com/twitter/ml/common/base", - "src/java/com/twitter/ml/prediction/core", - "src/java/com/twitter/ml/tool/prediction:ModelInterpreter", - "src/java/com/twitter/ml/vw/constant", - "src/java/com/twitter/mlv2/trees/predictor", - "src/java/com/twitter/mlv2/trees/scorer", - "src/java/com/twitter/search/common/features", - "src/java/com/twitter/search/common/file", - "src/java/com/twitter/search/common/metrics", - "src/java/com/twitter/search/common/util/ml/models_manager", - "src/java/com/twitter/search/modeling/common", - "src/thrift/com/twitter/ml/api:data-java", - "src/thrift/com/twitter/search/common:features-java", - ], -) - -java_library( - name = "for-timelines", - sources = [ - "BaseLegacyScoreAccumulator.java", - "BaseModelBuilder.java", - "BaseScoreAccumulator.java", - "CompositeFeatureContext.java", - "DiscretizedFeature.java", - "DiscretizedFeatureRange.java", - "LegacyModelBuilder.java", - "LightweightLinearModel.java", - "ModelBuilder.java", - "SchemaBasedModelBuilder.java", - ], - platform = "java8", - tags = ["bazel-compatible"], - dependencies = [ - "3rdparty/jvm/com/google/guava", - "3rdparty/jvm/com/google/inject:guice", - "3rdparty/jvm/org/apache/hadoop:hadoop-client-default", - "3rdparty/jvm/org/apache/thrift:libthrift", - "3rdparty/jvm/org/slf4j:slf4j-api", - "src/java/com/twitter/common/base", - "src/java/com/twitter/common_internal/hadoop", - "src/java/com/twitter/ml/api:api-base", - "src/java/com/twitter/ml/api/transform:DiscretizerTransform", - "src/java/com/twitter/ml/common/base", - "src/java/com/twitter/ml/tool/prediction:ModelInterpreter", - "src/java/com/twitter/ml/vw/constant", - "src/java/com/twitter/search/common/features", - "src/java/com/twitter/search/common/file", - "src/java/com/twitter/search/common/metrics", - "src/java/com/twitter/search/common/util/ml/models_manager", - "src/java/com/twitter/search/modeling/common", - "src/thrift/com/twitter/ml/api:data-java", - "src/thrift/com/twitter/search/common:features-java", - ], -) diff --git a/src/java/com/twitter/search/common/util/ml/prediction_engine/BUILD.docx b/src/java/com/twitter/search/common/util/ml/prediction_engine/BUILD.docx new file mode 100644 index 0000000000000000000000000000000000000000..2983e03a61f28c22168fd28a672a95dfb35c85f7 GIT binary patch literal 37200 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ʨfKR&~E+ zUbW6HU1nYrC-BD|pM4vK{i6;$;nXO(T#o(fW2z)@QC?WQazXuCH)=C)6Oa_{HV;5z zqbmue7N|0dRPoiKGyY1jv2K#Zv{R`uUQ&NUm2_RQ!V)a*3Y=-=ks1_4=%Nbr*Ri%S z=MN)`wDj^nGyE_`gcRFVX4M+wov&V2Tsys>`AD8UH*k1F197=JT^!+eetV?`#ju>Q zI*kyCKnH;kL;t>To+&$=i0T7(GhB(Rd%3#c(Ju)FNfACT|2|TF;U78@`D7%}h6%kQ z)RCV+Q~{C1?oGp|S*e|6R%o&R=7FO47mvc83=a5C@r4pvjgj-w5Hky12^O(QKIDx7aHKCLGOwd=9UkS=po{#t#+MVFu^@SFp5B~`r%9Av}$+>6)670W*q)s zY`iZ2pKLTE?*7~t)Jt*oho6e8t#zO%wmu~tS^aXp!2%yWRiTK)^r4<)E$oEL;jyepQsgp9qcm$sNYhkNu6o1bwez1dT4iC(8SyWV~} zcSiUMyS>`h@J^{zUk9P!l8F(j380?ms_4$13i`Kx2=Zv3;ORt6Q4p-_ zUcXUDGME94@6c$5KM@RbM{KFtjsw72P5tX(rS4K&WApL1e+(Gm2|wv`Bj>M#-RabQ z-R(UVz=jkCW@^ci;xh$Ycu!b0*yPHSqSEFhOo2I(e8>hL=!ten!IoesqG$L*R-ZXi zQ5~DgyTszPYYuub#@hxSt-v6)1(|^V(I|~@rJOQ?Hj7}~l=b||G;9#FZfD(qfht46 zpKBEpA`T)|jKm2{6;9$^=->z<8TK3&ws_o%g4rT8gcB^gdCadP_6X7s+&!~lgFn1> zO;s7Bs@Y*1%~%KX&)gYcfM7(mU&XjGU=mg`ROcLLicmu_XZ#bucw;eWz)eILqzq7N zzgE@YhEKSX)ia^S@@tcM9Z3I8BYAn6j&jjbuFP-WD}uj$_l9W6Ir^NKv7QsSauNLL zTXGZx3A(V>_^^Hp2p#+!Jg8*Wgpt~K5;58|G{q%<_BWLWQomKI5;uTU_QU>G2?bvJ z)nvH!r#H)inK+Ieg1@{np6Z(x=OxWeqv z*M8}IjMug`H^4C2P1hQt?y|}lo!LvmwPY-#oRZ0?Un2?RDF(J_9%L*S+LkrbQ-c~4 zcr2Gx;s?y^jK)9hW`KgG{tV*zpFv5J`;0dSmjk?E&gh4~slHYq*`CX1V2s}n@J6w} z_v}DFtdMN{-S3KThI%-!csG_&e@O!-`$7Y@oAF0GBc+VoB21Gh^;DR-_in~e>N`P$ zFz3ZQo!|ZKNNl0bN5x*|Q`#O5frUT^NJoV~+LPnWxL8w{1hRRklP|)Y@hsV{-6^NE zBdq^W!ZkuNRhoU8#A~_Fil6+*ivJ&lxr7IVE+QEilYc67{htaiGp<4=sruj4PuTf@x{*xvZ?-HwMCiapu{@ScZldn{}MiE zJ0MoCc;kDnN~NoDuRbpWI9k7dXl!shlH_V+rcgf`rZg4aHIKwI3e->4YS7$nO)dKeH9CkIR`&Pq zd!lu75h>Z|4{BGlaS$~>*PqniC@~_C{}1Ymt^xRtux!Ik@752UM({_KWxeS3b6E@w z{%*fWwE{YtDB6#OF(Sy_Lp70QYX%&&$jo-^`{TJxi>GS_L^}6+(SPr<3*R?;&A

    - * HashtagMentionPunctuationSplitter would break a mention or hashtag like @ab_cd or #ab_cd into - * tokens {ab, cd}. - * NormalizedTokenFilter strips out the # @ $ from the tokens. - */ - public final EarlybirdSchemaBuilder withTweetSpecificNormalization(String fieldName) { - if (!shouldIncludeField(fieldName)) { - return this; - } - ThriftFieldSettings settings = - schema.getFieldConfigs().get(idMapping.getFieldID(fieldName)).getSettings(); - Preconditions.checkState(settings.isSetIndexedFieldSettings(), - "Tweet text field must be indexed."); - settings.getIndexedFieldSettings().setDeprecated_performTweetSpecificNormalizations(true); - return this; - } - - /** - * Add a twitter photo facet field. - */ - public final EarlybirdSchemaBuilder withPhotoUrlFacetField(String fieldName) { - if (!shouldIncludeField(fieldName)) { - return this; - } - ThriftFieldSettings photoFieldSettings = getNoPositionNoFreqSettings(); - ThriftTokenStreamSerializer tokenStreamSerializer = - new ThriftTokenStreamSerializer(tokenStreamSerializerVersion); - tokenStreamSerializer.setAttributeSerializerClassNames( - ImmutableList.of( - CharTermAttributeSerializer.class.getName(), - TermPayloadAttributeSerializer.class.getName())); - photoFieldSettings - .getIndexedFieldSettings() - .setTokenStreamSerializer(tokenStreamSerializer) - .setTokenized(true); - putIntoFieldConfigs(idMapping.getFieldID(fieldName), - new ThriftFieldConfiguration(fieldName).setSettings(photoFieldSettings)); - return this; - } - - /** - * Returns whether the given field should be included or dropped. - */ - @Override - protected boolean shouldIncludeField(String fieldName) { - return EarlybirdFieldConstants.getFieldConstant(fieldName).isValidFieldInCluster(cluster); - } -} - diff --git a/src/java/com/twitter/search/common/schema/earlybird/EarlybirdSchemaCreateTool.docx b/src/java/com/twitter/search/common/schema/earlybird/EarlybirdSchemaCreateTool.docx new file mode 100644 index 0000000000000000000000000000000000000000..b5faf58e022d42d3b7ffe52d39f3a56a6f8080df GIT binary patch literal 43603 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 FEATURE_CONFIGURATION_MAP - = Maps.newLinkedHashMap(); - - public static final String BASE_FIELD_NAME = - EarlybirdFieldConstant.ENCODED_TWEET_FEATURES_FIELD.getFieldName(); - - private static String getBaseFieldName(String fullName) { - int index = fullName.indexOf(SchemaBuilder.CSF_VIEW_NAME_SEPARATOR); - Preconditions.checkArgument(index > 0); - return fullName.substring(0, index); - } - - private static String getBaseFieldName(EarlybirdFieldConstant fieldConstant) { - return getBaseFieldName(fieldConstant.getFieldName()); - } - - private static String getFeatureNameInField(EarlybirdFieldConstant fieldConstant) { - int index = fieldConstant.getFieldName().indexOf(SchemaBuilder.CSF_VIEW_NAME_SEPARATOR); - Preconditions.checkArgument(index > 0); - return fieldConstant.getFieldName().substring(index + 1); - } - - // defining all features - static { - // Add individual tweet encoded features as views on top of - // EarlybirdFieldConstant.ENCODED_TWEET_FEATURES_FIELD - - // int intIndex, int bitStartPos, int bitLength - newEarlybirdFeatureConfiguration(IS_RETWEET_FLAG, ThriftCSFType.BOOLEAN, 0, 0, 1); - newEarlybirdFeatureConfiguration(IS_OFFENSIVE_FLAG, ThriftCSFType.BOOLEAN, 0, 1, 1); - newEarlybirdFeatureConfiguration(HAS_LINK_FLAG, ThriftCSFType.BOOLEAN, 0, 2, 1); - newEarlybirdFeatureConfiguration(HAS_TREND_FLAG, ThriftCSFType.BOOLEAN, 0, 3, 1); - newEarlybirdFeatureConfiguration(IS_REPLY_FLAG, ThriftCSFType.BOOLEAN, 0, 4, 1); - newEarlybirdFeatureConfiguration(IS_SENSITIVE_CONTENT, ThriftCSFType.BOOLEAN, 0, 5, 1); - newEarlybirdFeatureConfiguration(HAS_MULTIPLE_HASHTAGS_OR_TRENDS_FLAG, - ThriftCSFType.BOOLEAN, 0, 6, 1); - newEarlybirdFeatureConfiguration(FROM_VERIFIED_ACCOUNT_FLAG, ThriftCSFType.BOOLEAN, 0, 7, 1); - newEarlybirdFeatureConfiguration(TEXT_SCORE, ThriftCSFType.INT, 0, 8, 8); - newEarlybirdFeatureConfiguration(LANGUAGE, ThriftCSFType.INT, 0, 16, 8); - newEarlybirdFeatureConfiguration(LINK_LANGUAGE, ThriftCSFType.INT, 0, 24, 8); - - newEarlybirdFeatureConfiguration(HAS_IMAGE_URL_FLAG, ThriftCSFType.BOOLEAN, 1, 0, 1); - newEarlybirdFeatureConfiguration(HAS_VIDEO_URL_FLAG, ThriftCSFType.BOOLEAN, 1, 1, 1); - newEarlybirdFeatureConfiguration(HAS_NEWS_URL_FLAG, ThriftCSFType.BOOLEAN, 1, 2, 1); - newEarlybirdFeatureConfiguration(HAS_EXPANDO_CARD_FLAG, ThriftCSFType.BOOLEAN, 1, 3, 1); - newEarlybirdFeatureConfiguration(HAS_MULTIPLE_MEDIA_FLAG, ThriftCSFType.BOOLEAN, 1, 4, 1); - newEarlybirdFeatureConfiguration(PROFILE_IS_EGG_FLAG, ThriftCSFType.BOOLEAN, 1, 5, 1); - newEarlybirdFeatureConfiguration(NUM_MENTIONS, ThriftCSFType.INT, 1, 6, 2); // 0, 1, 2, 3+ - newEarlybirdFeatureConfiguration(NUM_HASHTAGS, ThriftCSFType.INT, 1, 8, 2); // 0, 1, 2, 3+ - newEarlybirdFeatureConfiguration(HAS_CARD_FLAG, ThriftCSFType.BOOLEAN, 1, 10, 1); - newEarlybirdFeatureConfiguration(HAS_VISIBLE_LINK_FLAG, ThriftCSFType.BOOLEAN, 1, 11, 1); - newEarlybirdFeatureConfiguration(USER_REPUTATION, ThriftCSFType.INT, 1, 12, 8); - newEarlybirdFeatureConfiguration(IS_USER_SPAM_FLAG, ThriftCSFType.BOOLEAN, 1, 20, 1); - newEarlybirdFeatureConfiguration(IS_USER_NSFW_FLAG, ThriftCSFType.BOOLEAN, 1, 21, 1); - newEarlybirdFeatureConfiguration(IS_USER_BOT_FLAG, ThriftCSFType.BOOLEAN, 1, 22, 1); - newEarlybirdFeatureConfiguration(IS_USER_NEW_FLAG, ThriftCSFType.BOOLEAN, 1, 23, 1); - newEarlybirdFeatureConfiguration(PREV_USER_TWEET_ENGAGEMENT, ThriftCSFType.INT, 1, 24, 6); - newEarlybirdFeatureConfiguration(COMPOSER_SOURCE_IS_CAMERA_FLAG, - ThriftCSFType.BOOLEAN, 1, 30, 1); - newEarlybirdFeatureConfiguration(IS_NULLCAST_FLAG, ThriftCSFType.BOOLEAN, 1, 31, 1); - - newEarlybirdFeatureConfiguration(RETWEET_COUNT, ThriftCSFType.DOUBLE, 2, 0, 8, - ThriftFeatureUpdateConstraint.INC_ONLY); - newEarlybirdFeatureConfiguration(FAVORITE_COUNT, ThriftCSFType.DOUBLE, 2, 8, 8, - ThriftFeatureUpdateConstraint.INC_ONLY); - newEarlybirdFeatureConfiguration(REPLY_COUNT, ThriftCSFType.DOUBLE, 2, 16, 8, - ThriftFeatureUpdateConstraint.INC_ONLY); - newEarlybirdFeatureConfiguration(PARUS_SCORE, ThriftCSFType.DOUBLE, 2, 24, 8); - - newEarlybirdFeatureConfiguration(HAS_CONSUMER_VIDEO_FLAG, ThriftCSFType.BOOLEAN, 3, 0, 1); - newEarlybirdFeatureConfiguration(HAS_PRO_VIDEO_FLAG, ThriftCSFType.BOOLEAN, 3, 1, 1); - newEarlybirdFeatureConfiguration(HAS_VINE_FLAG, ThriftCSFType.BOOLEAN, 3, 2, 1); - newEarlybirdFeatureConfiguration(HAS_PERISCOPE_FLAG, ThriftCSFType.BOOLEAN, 3, 3, 1); - newEarlybirdFeatureConfiguration(HAS_NATIVE_IMAGE_FLAG, ThriftCSFType.BOOLEAN, 3, 4, 1); - // NOTE: There are 3 bits left in the first byte of INT 3, if possible, please reserve them - // for future media types (SEARCH-9131) - // newEarlybirdFeatureConfiguration(FUTURE_MEDIA_BITS, ThriftCSFType.INT, 3, 5, 3); - - newEarlybirdFeatureConfiguration(VISIBLE_TOKEN_RATIO, ThriftCSFType.INT, 3, 8, 4); - newEarlybirdFeatureConfiguration(HAS_QUOTE_FLAG, ThriftCSFType.BOOLEAN, 3, 12, 1); - newEarlybirdFeatureConfiguration(FROM_BLUE_VERIFIED_ACCOUNT_FLAG, - ThriftCSFType.BOOLEAN, 3, 13, 1); - // Unused bits from bit 14 to bit 31 (18 bits) - // newEarlybirdFeatureConfiguration(UNUSED_BITS, ThriftCSFType.INT, 3, 14, 18); - - newEarlybirdFeatureConfiguration(TWEET_SIGNATURE, ThriftCSFType.INT, 4, 0, 32); - - newEarlybirdFeatureConfiguration(EMBEDS_IMPRESSION_COUNT, - ThriftCSFType.DOUBLE, 0, 0, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - newEarlybirdFeatureConfiguration(EMBEDS_URL_COUNT, - ThriftCSFType.DOUBLE, 0, 8, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - newEarlybirdFeatureConfiguration(VIDEO_VIEW_COUNT, - ThriftCSFType.DOUBLE, 0, 16, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - - // Unused bits from bit 24 to bit 31 (8 bits). - // This used to be a feature that was decommissioned (SEARCHQUAL-10321) - newEarlybirdFeatureConfiguration(EXTENDED_FEATURE_UNUSED_BITS_0_24_8, - ThriftCSFType.INT, 0, 24, 8); - - newEarlybirdFeatureConfiguration(REFERENCE_AUTHOR_ID_LEAST_SIGNIFICANT_INT, - ThriftCSFType.INT, 1, 0, 32, ThriftFeatureUpdateConstraint.IMMUTABLE); - newEarlybirdFeatureConfiguration(REFERENCE_AUTHOR_ID_MOST_SIGNIFICANT_INT, - ThriftCSFType.INT, 2, 0, 32, ThriftFeatureUpdateConstraint.IMMUTABLE); - - newEarlybirdFeatureConfiguration(RETWEET_COUNT_V2, - ThriftCSFType.DOUBLE, 3, 0, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - newEarlybirdFeatureConfiguration(FAVORITE_COUNT_V2, - ThriftCSFType.DOUBLE, 3, 8, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - newEarlybirdFeatureConfiguration(REPLY_COUNT_V2, - ThriftCSFType.DOUBLE, 3, 16, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - newEarlybirdFeatureConfiguration(EMBEDS_IMPRESSION_COUNT_V2, - ThriftCSFType.DOUBLE, 3, 24, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - - newEarlybirdFeatureConfiguration(EMBEDS_URL_COUNT_V2, - ThriftCSFType.DOUBLE, 4, 0, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - newEarlybirdFeatureConfiguration(VIDEO_VIEW_COUNT_V2, - ThriftCSFType.DOUBLE, 4, 8, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - newEarlybirdFeatureConfiguration(QUOTE_COUNT, - ThriftCSFType.DOUBLE, 4, 16, 8); - - newEarlybirdFeatureConfiguration(LABEL_ABUSIVE_FLAG, ThriftCSFType.BOOLEAN, 4, 24, 1); - newEarlybirdFeatureConfiguration(LABEL_ABUSIVE_HI_RCL_FLAG, ThriftCSFType.BOOLEAN, 4, 25, 1); - newEarlybirdFeatureConfiguration(LABEL_DUP_CONTENT_FLAG, ThriftCSFType.BOOLEAN, 4, 26, 1); - newEarlybirdFeatureConfiguration(LABEL_NSFW_HI_PRC_FLAG, ThriftCSFType.BOOLEAN, 4, 27, 1); - newEarlybirdFeatureConfiguration(LABEL_NSFW_HI_RCL_FLAG, ThriftCSFType.BOOLEAN, 4, 28, 1); - newEarlybirdFeatureConfiguration(LABEL_SPAM_FLAG, ThriftCSFType.BOOLEAN, 4, 29, 1); - newEarlybirdFeatureConfiguration(LABEL_SPAM_HI_RCL_FLAG, ThriftCSFType.BOOLEAN, 4, 30, 1); - - newEarlybirdFeatureConfiguration(EXTENDED_TEST_FEATURE_UNUSED_BITS_4_31_1, - ThriftCSFType.INT, 4, 31, 1); - - newEarlybirdFeatureConfiguration(WEIGHTED_RETWEET_COUNT, - ThriftCSFType.DOUBLE, 5, 0, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - newEarlybirdFeatureConfiguration(WEIGHTED_REPLY_COUNT, - ThriftCSFType.DOUBLE, 5, 8, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - newEarlybirdFeatureConfiguration(WEIGHTED_FAVORITE_COUNT, - ThriftCSFType.DOUBLE, 5, 16, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - newEarlybirdFeatureConfiguration(WEIGHTED_QUOTE_COUNT, - ThriftCSFType.DOUBLE, 5, 24, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - - newEarlybirdFeatureConfiguration(PERISCOPE_EXISTS, - ThriftCSFType.BOOLEAN, 6, 0, 1); - newEarlybirdFeatureConfiguration(PERISCOPE_HAS_BEEN_FEATURED, - ThriftCSFType.BOOLEAN, 6, 1, 1); - newEarlybirdFeatureConfiguration(PERISCOPE_IS_CURRENTLY_FEATURED, - ThriftCSFType.BOOLEAN, 6, 2, 1); - newEarlybirdFeatureConfiguration(PERISCOPE_IS_FROM_QUALITY_SOURCE, - ThriftCSFType.BOOLEAN, 6, 3, 1); - newEarlybirdFeatureConfiguration(PERISCOPE_IS_LIVE, - ThriftCSFType.BOOLEAN, 6, 4, 1); - - newEarlybirdFeatureConfiguration(IS_TRENDING_NOW_FLAG, - ThriftCSFType.BOOLEAN, 6, 5, 1); - - // remaining bits for integer 6 - newEarlybirdFeatureConfiguration(EXTENDED_TEST_FEATURE_UNUSED_BITS_7_6_26, - ThriftCSFType.INT, 6, 6, 26); - - // The decaying counters can become smaller - newEarlybirdFeatureConfiguration(DECAYED_RETWEET_COUNT, - ThriftCSFType.DOUBLE, 7, 0, 8, ThriftFeatureUpdateConstraint.POSITIVE); - newEarlybirdFeatureConfiguration(DECAYED_REPLY_COUNT, - ThriftCSFType.DOUBLE, 7, 8, 8, ThriftFeatureUpdateConstraint.POSITIVE); - newEarlybirdFeatureConfiguration(DECAYED_FAVORITE_COUNT, - ThriftCSFType.DOUBLE, 7, 16, 8, ThriftFeatureUpdateConstraint.POSITIVE); - newEarlybirdFeatureConfiguration(DECAYED_QUOTE_COUNT, - ThriftCSFType.DOUBLE, 7, 24, 8, ThriftFeatureUpdateConstraint.POSITIVE); - - // The fake engagement counters. - newEarlybirdFeatureConfiguration(FAKE_RETWEET_COUNT, - ThriftCSFType.DOUBLE, 8, 0, 8, ThriftFeatureUpdateConstraint.POSITIVE); - newEarlybirdFeatureConfiguration(FAKE_REPLY_COUNT, - ThriftCSFType.DOUBLE, 8, 8, 8, ThriftFeatureUpdateConstraint.POSITIVE); - newEarlybirdFeatureConfiguration(FAKE_FAVORITE_COUNT, - ThriftCSFType.DOUBLE, 8, 16, 8, ThriftFeatureUpdateConstraint.POSITIVE); - newEarlybirdFeatureConfiguration(FAKE_QUOTE_COUNT, - ThriftCSFType.DOUBLE, 8, 24, 8, ThriftFeatureUpdateConstraint.POSITIVE); - - newEarlybirdFeatureConfiguration(LAST_RETWEET_SINCE_CREATION_HRS, - ThriftCSFType.INT, 9, 0, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - newEarlybirdFeatureConfiguration(LAST_REPLY_SINCE_CREATION_HRS, - ThriftCSFType.INT, 9, 8, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - newEarlybirdFeatureConfiguration(LAST_FAVORITE_SINCE_CREATION_HRS, - ThriftCSFType.INT, 9, 16, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - newEarlybirdFeatureConfiguration(LAST_QUOTE_SINCE_CREATION_HRS, - ThriftCSFType.INT, 9, 24, 8, ThriftFeatureUpdateConstraint.INC_ONLY); - - newEarlybirdFeatureConfiguration(NUM_HASHTAGS_V2, - ThriftCSFType.INT, 10, 0, 4); - newEarlybirdFeatureConfiguration(NUM_MENTIONS_V2, - ThriftCSFType.INT, 10, 4, 4); - newEarlybirdFeatureConfiguration(NUM_STOCKS, - ThriftCSFType.INT, 10, 8, 4); - - // Remaining bits for integer 10 - // Production Toxicity and PBlock score from HML (go/toxicity, go/pblock) - newEarlybirdFeatureConfiguration(TOXICITY_SCORE, - ThriftCSFType.DOUBLE, 10, 12, 10); - newEarlybirdFeatureConfiguration(PBLOCK_SCORE, - ThriftCSFType.DOUBLE, 10, 22, 10); - - // The blink engagement counters - newEarlybirdFeatureConfiguration(BLINK_RETWEET_COUNT, - ThriftCSFType.DOUBLE, 11, 0, 8, ThriftFeatureUpdateConstraint.POSITIVE); - newEarlybirdFeatureConfiguration(BLINK_REPLY_COUNT, - ThriftCSFType.DOUBLE, 11, 8, 8, ThriftFeatureUpdateConstraint.POSITIVE); - newEarlybirdFeatureConfiguration(BLINK_FAVORITE_COUNT, - ThriftCSFType.DOUBLE, 11, 16, 8, ThriftFeatureUpdateConstraint.POSITIVE); - newEarlybirdFeatureConfiguration(BLINK_QUOTE_COUNT, - ThriftCSFType.DOUBLE, 11, 24, 8, ThriftFeatureUpdateConstraint.POSITIVE); - - // Experimental health model scores from HML - newEarlybirdFeatureConfiguration(EXPERIMENTAL_HEALTH_MODEL_SCORE_1, - ThriftCSFType.DOUBLE, 12, 0, 10); - newEarlybirdFeatureConfiguration(EXPERIMENTAL_HEALTH_MODEL_SCORE_2, - ThriftCSFType.DOUBLE, 12, 10, 10); - newEarlybirdFeatureConfiguration(EXPERIMENTAL_HEALTH_MODEL_SCORE_3, - ThriftCSFType.DOUBLE, 12, 20, 10); - // remaining bits for integer 12 - newEarlybirdFeatureConfiguration(EXTENDED_TEST_FEATURE_UNUSED_BITS_12_30_2, - ThriftCSFType.INT, 12, 30, 2); - - // Experimental health model scores from HML (cont.) - newEarlybirdFeatureConfiguration(EXPERIMENTAL_HEALTH_MODEL_SCORE_4, - ThriftCSFType.DOUBLE, 13, 0, 10); - // Production pSpammyTweet score from HML (go/pspammytweet) - newEarlybirdFeatureConfiguration(P_SPAMMY_TWEET_SCORE, - ThriftCSFType.DOUBLE, 13, 10, 10); - // Production pReportedTweet score from HML (go/preportedtweet) - newEarlybirdFeatureConfiguration(P_REPORTED_TWEET_SCORE, - ThriftCSFType.DOUBLE, 13, 20, 10); - // remaining bits for integer 13 - newEarlybirdFeatureConfiguration(EXTENDED_TEST_FEATURE_UNUSED_BITS_13_30_2, - ThriftCSFType.INT, 13, 30, 2); - - // Experimental health model scores from HML (cont.) - // Prod Spammy Tweet Content model score from Platform Manipulation (go/spammy-tweet-content) - newEarlybirdFeatureConfiguration(SPAMMY_TWEET_CONTENT_SCORE, - ThriftCSFType.DOUBLE, 14, 0, 10); - // remaining bits for integer 14 - newEarlybirdFeatureConfiguration(EXTENDED_TEST_FEATURE_UNUSED_BITS_14_10_22, - ThriftCSFType.INT, 14, 10, 22); - - // Note that the integer index below is 0-based, but the index j in UNUSED_BITS_{j} below - // is 1-based. - newEarlybirdFeatureConfiguration(EXTENDED_TEST_FEATURE_UNUSED_BITS_16, - ThriftCSFType.INT, 15, 0, 32); - newEarlybirdFeatureConfiguration(EXTENDED_TEST_FEATURE_UNUSED_BITS_17, - ThriftCSFType.INT, 16, 0, 32); - newEarlybirdFeatureConfiguration(EXTENDED_TEST_FEATURE_UNUSED_BITS_18, - ThriftCSFType.INT, 17, 0, 32); - newEarlybirdFeatureConfiguration(EXTENDED_TEST_FEATURE_UNUSED_BITS_19, - ThriftCSFType.INT, 18, 0, 32); - newEarlybirdFeatureConfiguration(EXTENDED_TEST_FEATURE_UNUSED_BITS_20, - ThriftCSFType.INT, 19, 0, 32); - } - - private EarlybirdSchemaCreateTool() { } - - /** - * Get schema for the Earlybird. - */ - public static DynamicSchema buildSchema(EarlybirdCluster cluster) - throws Schema.SchemaValidationException { - SCHEMA_BUILD_COUNT.increment(); - return new DynamicSchema(new ImmutableSchema(buildThriftSchema(cluster), - new AnalyzerFactory(), - cluster.getNameForStats())); - } - - /** - * Get schema for the Earlybird, can throw runtime exception. This is mostly for static schema - * usage, which does not care about schema updates. - */ - @VisibleForTesting - public static DynamicSchema buildSchemaWithRuntimeException(EarlybirdCluster cluster) { - try { - return buildSchema(cluster); - } catch (Schema.SchemaValidationException e) { - throw new RuntimeException(e); - } - } - - private static FeatureConfiguration newEarlybirdFeatureConfiguration( - EarlybirdFieldConstant fieldConstant, - ThriftCSFType type, - int intIndex, int bitStartPos, int bitLength, - ThriftFeatureUpdateConstraint... constraints) { - - if (!fieldConstant.isFlagFeatureField() && type == ThriftCSFType.BOOLEAN) { - throw new IllegalArgumentException( - "Non-flag feature field configured with boolean Thrift type: " + fieldConstant); - } - if (fieldConstant.isFlagFeatureField() && type != ThriftCSFType.BOOLEAN) { - throw new IllegalArgumentException( - "Flag feature field configured with non-boolean Thrift type: " + fieldConstant); - } - - String baseFieldName = getBaseFieldName(fieldConstant); - String name = getFeatureNameInField(fieldConstant); - FeatureConfiguration.Builder builder = FeatureConfiguration.builder() - .withName(name) - .withType(type) - .withBitRange(intIndex, bitStartPos, bitLength); - // remove the following line once we configure features purely by the schema - builder.withBaseField(baseFieldName); - - if (!fieldConstant.isUnusedField()) { - builder.withOutputType(type); - } - if (fieldConstant.getFeatureNormalizationType() != null) { - builder.withFeatureNormalizationType(fieldConstant.getFeatureNormalizationType()); - } - - for (ThriftFeatureUpdateConstraint constraint : constraints) { - builder.withFeatureUpdateConstraint(constraint); - } - FeatureConfiguration featureConfiguration = builder.build(); - FEATURE_CONFIGURATION_MAP.put(fieldConstant.getFieldName(), featureConfiguration); - return featureConfiguration; - } - - /** - * Build ThriftSchema for the Earlybird. Note that the schema returned can be used - * all Earlybird clusters. However, some clusters may not use all the field configurations. - */ - @VisibleForTesting - public static ThriftSchema buildThriftSchema(EarlybirdCluster cluster) { - EarlybirdSchemaBuilder builder = new EarlybirdSchemaBuilder( - new EarlybirdFieldConstants(), cluster, TokenStreamSerializer.Version.VERSION_2); - - builder.withSchemaVersion( - FlushVersion.CURRENT_FLUSH_VERSION.getVersionNumber(), - FlushVersion.CURRENT_FLUSH_VERSION.getMinorVersion(), - FlushVersion.CURRENT_FLUSH_VERSION.getDescription(), - FlushVersion.CURRENT_FLUSH_VERSION.isOfficial()); - - // ID field, used for partitioning - builder.withPartitionFieldId(0) - .withSortableLongTermField(EarlybirdFieldConstant.ID_FIELD.getFieldName()) - // Text Fields that are searched by default - .withTextField(EarlybirdFieldConstant.RESOLVED_LINKS_TEXT_FIELD.getFieldName(), true) - .withSearchFieldByDefault( - EarlybirdFieldConstant.RESOLVED_LINKS_TEXT_FIELD.getFieldName(), 0.1f) - .withPretokenizedTextField(EarlybirdFieldConstant.TEXT_FIELD.getFieldName(), true) - .withSearchFieldByDefault(EarlybirdFieldConstant.TEXT_FIELD.getFieldName(), 1.0f); - builder.withTweetSpecificNormalization(EarlybirdFieldConstant.TEXT_FIELD.getFieldName()) - .withTextField(EarlybirdFieldConstant.TOKENIZED_FROM_USER_FIELD.getFieldName(), true) - .withSearchFieldByDefault( - EarlybirdFieldConstant.TOKENIZED_FROM_USER_FIELD.getFieldName(), 0.2f) - - // Text fields not searched by default - .withTextField(EarlybirdFieldConstant.FROM_USER_FIELD.getFieldName(), false) - .withTextField(EarlybirdFieldConstant.TO_USER_FIELD.getFieldName(), false) - - // cards are not searched by default, and have weight 0. - .withPretokenizedTextField(EarlybirdFieldConstant.CARD_TITLE_FIELD.getFieldName(), false) - .withPretokenizedTextField( - EarlybirdFieldConstant.CARD_DESCRIPTION_FIELD.getFieldName(), false) - .withTextField(EarlybirdFieldConstant.CARD_LANG.getFieldName(), false) - - // Out-of-order append fields - .withLongTermField(EarlybirdFieldConstant.LIKED_BY_USER_ID_FIELD.getFieldName()) - .withLongTermField(EarlybirdFieldConstant.RETWEETED_BY_USER_ID.getFieldName()) - .withLongTermField(EarlybirdFieldConstant.REPLIED_TO_BY_USER_ID.getFieldName()) - - // No Position fields, sorted alphabetically - .withPretokenizedNoPositionField(EarlybirdFieldConstant.CARD_DOMAIN_FIELD.getFieldName()) - .withIndexedNotTokenizedField(EarlybirdFieldConstant.CARD_NAME_FIELD.getFieldName()) - .withIntTermField(EarlybirdFieldConstant.CREATED_AT_FIELD.getFieldName()) - .withIndexedNotTokenizedField(EarlybirdFieldConstant.ENTITY_ID_FIELD.getFieldName()) - .withIndexedNotTokenizedField(EarlybirdFieldConstant.GEO_HASH_FIELD.getFieldName()) - .withLongTermField(EarlybirdFieldConstant.FROM_USER_ID_FIELD.getFieldName()) - .withLongTermField(EarlybirdFieldConstant.IN_REPLY_TO_TWEET_ID_FIELD.getFieldName()) - .withLongTermField(EarlybirdFieldConstant.IN_REPLY_TO_USER_ID_FIELD.getFieldName()) - .withLongTermField(EarlybirdFieldConstant.RETWEET_SOURCE_TWEET_ID_FIELD.getFieldName()) - .withLongTermField(EarlybirdFieldConstant.RETWEET_SOURCE_USER_ID_FIELD.getFieldName()) - .withLongTermField(EarlybirdFieldConstant.CONVERSATION_ID_FIELD.getFieldName()) - .withIndexedNotTokenizedField(EarlybirdFieldConstant.PLACE_ID_FIELD.getFieldName()) - .withTextField(EarlybirdFieldConstant.PLACE_FULL_NAME_FIELD.getFieldName(), false) - .withIndexedNotTokenizedField( - EarlybirdFieldConstant.PLACE_COUNTRY_CODE_FIELD.getFieldName()) - .withIndexedNotTokenizedField( - EarlybirdFieldConstant.PROFILE_GEO_COUNTRY_CODE_FIELD.getFieldName()) - .withTextField(EarlybirdFieldConstant.PROFILE_GEO_REGION_FIELD.getFieldName(), false) - .withTextField(EarlybirdFieldConstant.PROFILE_GEO_LOCALITY_FIELD.getFieldName(), false) - .withTermTextLookup(EarlybirdFieldConstant.FROM_USER_ID_FIELD.getFieldName()) - .withTermTextLookup(EarlybirdFieldConstant.IN_REPLY_TO_USER_ID_FIELD.getFieldName()) - .withPretokenizedNoPositionField(EarlybirdFieldConstant.HASHTAGS_FIELD.getFieldName()) - .withIndexedNotTokenizedField(ImmutableSchema.HF_PHRASE_PAIRS_FIELD) - .withIndexedNotTokenizedField(ImmutableSchema.HF_TERM_PAIRS_FIELD) - .withIndexedNotTokenizedField(EarlybirdFieldConstant.IMAGE_LINKS_FIELD.getFieldName()) - .withIndexedNotTokenizedField(EarlybirdFieldConstant.INTERNAL_FIELD.getFieldName()) - .withIndexedNotTokenizedField(EarlybirdFieldConstant.ISO_LANGUAGE_FIELD.getFieldName()) - .withIndexedNotTokenizedField(EarlybirdFieldConstant.LINKS_FIELD.getFieldName()) - .withIntTermField(EarlybirdFieldConstant.LINK_CATEGORY_FIELD.getFieldName()) - .withIndexedNotTokenizedField(EarlybirdFieldConstant.MENTIONS_FIELD.getFieldName()) - .withIndexedNotTokenizedField(EarlybirdFieldConstant.NEWS_LINKS_FIELD.getFieldName()) - .withIndexedNotTokenizedField(EarlybirdFieldConstant.NORMALIZED_SOURCE_FIELD.getFieldName()) - .withIndexedNotTokenizedField(EarlybirdFieldConstant.PLACE_FIELD.getFieldName()) - .withIndexedNotTokenizedField(EarlybirdFieldConstant.SOURCE_FIELD.getFieldName()) - .withPretokenizedNoPositionField(EarlybirdFieldConstant.STOCKS_FIELD.getFieldName()) - .withIndexedNotTokenizedField(EarlybirdFieldConstant.VIDEO_LINKS_FIELD.getFieldName()) - .withIntTermField(NORMALIZED_FAVORITE_COUNT_GREATER_THAN_OR_EQUAL_TO_FIELD.getFieldName()) - .withIntTermField(NORMALIZED_REPLY_COUNT_GREATER_THAN_OR_EQUAL_TO_FIELD.getFieldName()) - .withIntTermField(NORMALIZED_RETWEET_COUNT_GREATER_THAN_OR_EQUAL_TO_FIELD.getFieldName()) - - .withIntTermField(EarlybirdFieldConstant.COMPOSER_SOURCE.getFieldName()) - - .withLongTermField(EarlybirdFieldConstant.QUOTED_TWEET_ID_FIELD.getFieldName()) - .withLongTermField(EarlybirdFieldConstant.QUOTED_USER_ID_FIELD.getFieldName()) - .withLongTermField(EarlybirdFieldConstant.DIRECTED_AT_USER_ID_FIELD.getFieldName()) - - // Named entity fields - .withIndexedNotTokenizedField( - EarlybirdFieldConstant.NAMED_ENTITY_FROM_URL_FIELD.getFieldName(), true) - .withIndexedNotTokenizedField( - EarlybirdFieldConstant.NAMED_ENTITY_FROM_TEXT_FIELD.getFieldName(), true) - .withIndexedNotTokenizedField( - EarlybirdFieldConstant.NAMED_ENTITY_WITH_TYPE_FROM_URL_FIELD.getFieldName(), true) - .withIndexedNotTokenizedField( - EarlybirdFieldConstant.NAMED_ENTITY_WITH_TYPE_FROM_TEXT_FIELD.getFieldName(), true) - - // camelCase-tokenized user handles and tokenized user names, not searchable by default - .withPretokenizedTextField( - EarlybirdFieldConstant.CAMELCASE_USER_HANDLE_FIELD.getFieldName(), false) - .withPretokenizedTextField( - EarlybirdFieldConstant.TOKENIZED_USER_NAME_FIELD.getFieldName(), false) - - .withIndexedNotTokenizedField( - EarlybirdFieldConstant.SPACE_ID_FIELD.getFieldName()) - .withTextField(EarlybirdFieldConstant.SPACE_ADMIN_FIELD.getFieldName(), false) - .withPretokenizedTextField(EarlybirdFieldConstant.SPACE_TITLE_FIELD.getFieldName(), false) - .withTextField(EarlybirdFieldConstant.TOKENIZED_SPACE_ADMIN_FIELD.getFieldName(), true) - .withPretokenizedTextField( - EarlybirdFieldConstant.CAMELCASE_TOKENIZED_SPACE_ADMIN_FIELD.getFieldName(), false) - .withPretokenizedTextField( - EarlybirdFieldConstant.TOKENIZED_SPACE_ADMIN_DISPLAY_NAME_FIELD.getFieldName(), false) - .withPretokenizedTextField( - EarlybirdFieldConstant.URL_DESCRIPTION_FIELD.getFieldName(), false) - .withPretokenizedTextField( - EarlybirdFieldConstant.URL_TITLE_FIELD.getFieldName(), false); - - builder - .withPhotoUrlFacetField(EarlybirdFieldConstant.TWIMG_LINKS_FIELD.getFieldName()) - .withOutOfOrderEnabledForField( - EarlybirdFieldConstant.LIKED_BY_USER_ID_FIELD.getFieldName()) - .withOutOfOrderEnabledForField( - EarlybirdFieldConstant.RETWEETED_BY_USER_ID.getFieldName()) - .withOutOfOrderEnabledForField( - EarlybirdFieldConstant.REPLIED_TO_BY_USER_ID.getFieldName()); - - // ColumnStrideFields. - boolean loadCSFIntoRAMDefault = cluster != EarlybirdCluster.FULL_ARCHIVE; - - builder - .withColumnStrideField(EarlybirdFieldConstants.ENCODED_TWEET_FEATURES_FIELD_NAME, - ThriftCSFType.INT, NUMBER_OF_INTEGERS_FOR_FEATURES, - true, loadCSFIntoRAMDefault) - .withColumnStrideField(EarlybirdFieldConstant.FROM_USER_ID_CSF.getFieldName(), - ThriftCSFType.LONG, 1, false, /* the full archive loads this field into RAM */ true) - .withColumnStrideField(EarlybirdFieldConstant.SHARED_STATUS_ID_CSF.getFieldName(), - ThriftCSFType.LONG, 1, false, loadCSFIntoRAMDefault) - .withColumnStrideField(EarlybirdFieldConstant.CARD_TYPE_CSF_FIELD.getFieldName(), - ThriftCSFType.BYTE, 1, false, loadCSFIntoRAMDefault) - // CSF Used by archive mappers - .withColumnStrideField(EarlybirdFieldConstant.CREATED_AT_CSF_FIELD.getFieldName(), - ThriftCSFType.INT, 1, false, /* the full archive loads this field into RAM */ true) - .withColumnStrideField(EarlybirdFieldConstant.ID_CSF_FIELD.getFieldName(), - ThriftCSFType.LONG, 1, false, /* the full archive loads this field into RAM */ true) - .withColumnStrideField(EarlybirdFieldConstant.LAT_LON_CSF_FIELD.getFieldName(), - ThriftCSFType.LONG, 1, false, loadCSFIntoRAMDefault) - .withColumnStrideField(EarlybirdFieldConstant.CONVERSATION_ID_CSF.getFieldName(), - ThriftCSFType.LONG, 1, false, loadCSFIntoRAMDefault) - .withColumnStrideField(EarlybirdFieldConstant.QUOTED_TWEET_ID_CSF.getFieldName(), - ThriftCSFType.LONG, 1, false, loadCSFIntoRAMDefault) - .withColumnStrideField(EarlybirdFieldConstant.QUOTED_USER_ID_CSF.getFieldName(), - ThriftCSFType.LONG, 1, false, loadCSFIntoRAMDefault) - .withColumnStrideField(EarlybirdFieldConstant.CARD_LANG_CSF.getFieldName(), - ThriftCSFType.INT, 1, false, loadCSFIntoRAMDefault) - .withColumnStrideField(EarlybirdFieldConstant.CARD_URI_CSF.getFieldName(), - ThriftCSFType.LONG, 1, false, loadCSFIntoRAMDefault) - .withColumnStrideField(EarlybirdFieldConstant.DIRECTED_AT_USER_ID_CSF.getFieldName(), - ThriftCSFType.LONG, 1, false, loadCSFIntoRAMDefault) - .withColumnStrideField(EarlybirdFieldConstant.REFERENCE_AUTHOR_ID_CSF.getFieldName(), - ThriftCSFType.LONG, 1, false, loadCSFIntoRAMDefault) - .withColumnStrideField( - EarlybirdFieldConstant.EXCLUSIVE_CONVERSATION_AUTHOR_ID_CSF.getFieldName(), - ThriftCSFType.LONG, 1, false, loadCSFIntoRAMDefault) - - /* Semicolon on separate line to preserve git blame. */; - - builder.withColumnStrideField( - EarlybirdFieldConstants.EXTENDED_ENCODED_TWEET_FEATURES_FIELD_NAME, - ThriftCSFType.INT, NUMBER_OF_INTEGERS_FOR_EXTENDED_FEATURES, - true, loadCSFIntoRAMDefault); - - for (Map.Entry entry : FEATURE_CONFIGURATION_MAP.entrySet()) { - String fullName = entry.getKey(); - String baseName = getBaseFieldName(fullName); - EarlybirdFieldConstant fieldConstant = EarlybirdFieldConstants.getFieldConstant(fullName); - if (fieldConstant.isValidFieldInCluster(cluster)) { - builder.withFeatureConfiguration(baseName, fullName, entry.getValue()); - } - } - // Add facet settings for facet fields - // boolean args are respectively whether to use skiplist, whether offensive, whether to use CSF - builder - .withFacetConfigs(EarlybirdFieldConstant.MENTIONS_FIELD.getFieldName(), - EarlybirdFieldConstant.MENTIONS_FACET, true, false, false) - .withFacetConfigs(EarlybirdFieldConstant.HASHTAGS_FIELD.getFieldName(), - EarlybirdFieldConstant.HASHTAGS_FACET, true, false, false) - .withFacetConfigs(EarlybirdFieldConstant.STOCKS_FIELD.getFieldName(), - EarlybirdFieldConstant.STOCKS_FACET, true, false, false) - .withFacetConfigs(EarlybirdFieldConstant.IMAGE_LINKS_FIELD.getFieldName(), - EarlybirdFieldConstant.IMAGES_FACET, true, true, false) - .withFacetConfigs(EarlybirdFieldConstant.VIDEO_LINKS_FIELD.getFieldName(), - EarlybirdFieldConstant.VIDEOS_FACET, true, true, false) - .withFacetConfigs(EarlybirdFieldConstant.NEWS_LINKS_FIELD.getFieldName(), - EarlybirdFieldConstant.NEWS_FACET, true, false, false) - .withFacetConfigs(EarlybirdFieldConstant.ISO_LANGUAGE_FIELD.getFieldName(), - EarlybirdFieldConstant.LANGUAGES_FACET, false, false, false) - .withFacetConfigs(EarlybirdFieldConstant.SOURCE_FIELD.getFieldName(), - EarlybirdFieldConstant.SOURCES_FACET, false, false, false) - .withFacetConfigs(EarlybirdFieldConstant.TWIMG_LINKS_FIELD.getFieldName(), - EarlybirdFieldConstant.TWIMG_FACET, true, true, false) - .withFacetConfigs(EarlybirdFieldConstant.FROM_USER_ID_CSF.getFieldName(), - EarlybirdFieldConstant.FROM_USER_ID_FACET, false, false, true /* facet on CSF */) - .withFacetConfigs(EarlybirdFieldConstant.SHARED_STATUS_ID_CSF.getFieldName(), - EarlybirdFieldConstant.RETWEETS_FACET, false, false, true /* facet on CSF */) - .withFacetConfigs(EarlybirdFieldConstant.LINKS_FIELD.getFieldName(), - EarlybirdFieldConstant.LINKS_FACET, true, false, false) - .withFacetConfigs( - EarlybirdFieldConstant.NAMED_ENTITY_WITH_TYPE_FROM_URL_FIELD.getFieldName(), - true, false, false) - .withFacetConfigs( - EarlybirdFieldConstant.NAMED_ENTITY_WITH_TYPE_FROM_TEXT_FIELD.getFieldName(), - true, false, false) - .withFacetConfigs( - EarlybirdFieldConstant.ENTITY_ID_FIELD.getFieldName(), - true, false, false) - .withFacetConfigs(EarlybirdFieldConstant.SPACE_ID_FIELD.getFieldName(), - EarlybirdFieldConstant.SPACES_FACET, true, false, false); - return builder.build(); - } -} diff --git a/src/java/com/twitter/search/common/schema/earlybird/EarlybirdThriftDocumentBuilder.docx b/src/java/com/twitter/search/common/schema/earlybird/EarlybirdThriftDocumentBuilder.docx new file mode 100644 index 0000000000000000000000000000000000000000..c0a5bae7e6667ab3ddb87a16527278e9ab5408a4 GIT binary patch literal 44528 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 NAMED_ENTITY_URL_SOURCE_TYPES = - ImmutableSet.of( - NamedEntityInputSourceType.URL_TITLE, NamedEntityInputSourceType.URL_DESCRIPTION); - - private final TokenStreamSerializer intTermAttributeSerializer = - new TokenStreamSerializer(ImmutableList.of( - new IntTermAttributeSerializer())); - private final TokenStreamSerializer photoUrlSerializer = - new TokenStreamSerializer(ImmutableList - .of( - new CharTermAttributeSerializer(), new TermPayloadAttributeSerializer())); - private final Schema schema; - - private boolean isSetLatLonCSF = false; - private boolean addLatLonCSF = true; - private boolean addEncodedTweetFeatures = true; - - @Nonnull - private final EarlybirdEncodedFeatures encodedTweetFeatures; - @Nullable - private final EarlybirdEncodedFeatures extendedEncodedTweetFeatures; - - /** - * Default constructor - */ - public EarlybirdThriftDocumentBuilder( - @Nonnull EarlybirdEncodedFeatures encodedTweetFeatures, - @Nullable EarlybirdEncodedFeatures extendedEncodedTweetFeatures, - FieldNameToIdMapping idMapping, - Schema schema) { - super(idMapping); - this.schema = schema; - this.encodedTweetFeatures = Preconditions.checkNotNull(encodedTweetFeatures); - - this.extendedEncodedTweetFeatures = extendedEncodedTweetFeatures; - } - - /** - * Get internal {@link EarlybirdEncodedFeatures} - */ - public EarlybirdEncodedFeatures getEncodedTweetFeatures() { - return encodedTweetFeatures; - } - - /** - * Add skip list entry for the given field. - * This adds a term __has_fieldName in the INTERNAL field. - */ - public EarlybirdThriftDocumentBuilder addFacetSkipList(String fieldName) { - withStringField(EarlybirdFieldConstant.INTERNAL_FIELD.getFieldName(), - EarlybirdFieldConstant.getFacetSkipFieldName(fieldName)); - return this; - } - - /** - * Add a filter term in the INTERNAL field. - */ - public EarlybirdThriftDocumentBuilder addFilterInternalFieldTerm(String filterName) { - withStringField(EarlybirdFieldConstant.INTERNAL_FIELD.getFieldName(), - EarlybirdThriftDocumentUtil.formatFilter(filterName)); - return this; - } - - /** - * Add id field and id csf field. - */ - public EarlybirdThriftDocumentBuilder withID(long id) { - withLongField(EarlybirdFieldConstant.ID_FIELD.getFieldName(), id); - withLongField(EarlybirdFieldConstant.ID_CSF_FIELD.getFieldName(), id); - return this; - } - - /** - * Add created at field and created at csf field. - */ - public EarlybirdThriftDocumentBuilder withCreatedAt(int createdAt) { - withIntField(EarlybirdFieldConstant.CREATED_AT_FIELD.getFieldName(), createdAt); - withIntField(EarlybirdFieldConstant.CREATED_AT_CSF_FIELD.getFieldName(), createdAt); - return this; - } - - /** - * Add tweet text field. - */ - public EarlybirdThriftDocumentBuilder withTweetText( - String text, byte[] textTokenStream) throws IOException { - withTokenStreamField(EarlybirdFieldConstants.EarlybirdFieldConstant.TEXT_FIELD.getFieldName(), - text, textTokenStream); - return this; - } - - public EarlybirdThriftDocumentBuilder withTweetText(String text) throws IOException { - withTweetText(text, null); - return this; - } - - /** - * Add a list of cashTags. Like $TWTR. - */ - public EarlybirdThriftDocumentBuilder withStocksFields(List cashTags) { - if (isNotEmpty(cashTags)) { - addFacetSkipList(EarlybirdFieldConstant.STOCKS_FIELD.getFieldName()); - for (String cashTag : cashTags) { - withStringField( - EarlybirdFieldConstant.STOCKS_FIELD.getFieldName(), CASHTAG_SYMBOL + cashTag); - } - } - return this; - } - - /** - * Add a list of hashtags. - */ - public EarlybirdThriftDocumentBuilder withHashtagsField(List hashtags) { - if (isNotEmpty(hashtags)) { - int numHashtags = Math.min( - hashtags.size(), - schema.getFeatureConfigurationById( - EarlybirdFieldConstant.NUM_HASHTAGS.getFieldId()).getMaxValue()); - encodedTweetFeatures.setFeatureValue(EarlybirdFieldConstant.NUM_HASHTAGS, numHashtags); - addFacetSkipList(EarlybirdFieldConstant.HASHTAGS_FIELD.getFieldName()); - for (String hashtag : hashtags) { - withStringField( - EarlybirdFieldConstant.HASHTAGS_FIELD.getFieldName(), HASHTAG_SYMBOL + hashtag); - } - } - return this; - } - - /** - * Added a list of mentions. - */ - public EarlybirdThriftDocumentBuilder withMentionsField(List mentions) { - if (isNotEmpty(mentions)) { - int numMentions = Math.min( - mentions.size(), - schema.getFeatureConfigurationById( - EarlybirdFieldConstant.NUM_HASHTAGS.getFieldId()).getMaxValue()); - encodedTweetFeatures.setFeatureValue(EarlybirdFieldConstant.NUM_MENTIONS, numMentions); - addFacetSkipList(EarlybirdFieldConstant.MENTIONS_FIELD.getFieldName()); - for (String mention : mentions) { - withStringField( - EarlybirdFieldConstant.MENTIONS_FIELD.getFieldName(), MENTION_SYMBOL + mention); - } - } - return this; - } - - /** - * Add a list of Twitter Photo URLs (twimg URLs). These are different from regular URLs, because - * we use the TwitterPhotoTokenStream to index them, and we also include the status ID as payload. - */ - public EarlybirdThriftDocumentBuilder withTwimgURLs( - List urls) throws IOException { - if (isNotEmpty(urls)) { - for (TwitterPhotoUrl photoUrl : urls) { - TokenStream ts = new TwitterPhotoTokenStream(photoUrl.getPhotoStatusId(), - photoUrl.getMediaUrl()); - byte[] serializedTs = photoUrlSerializer.serialize(ts); - withTokenStreamField(EarlybirdFieldConstant.TWIMG_LINKS_FIELD.getFieldName(), - Long.toString(photoUrl.getPhotoStatusId()), serializedTs); - addFacetSkipList(EarlybirdFieldConstant.TWIMG_LINKS_FIELD.getFieldName()); - } - encodedTweetFeatures.setFlag(EarlybirdFieldConstant.HAS_IMAGE_URL_FLAG); - encodedTweetFeatures.setFlag(EarlybirdFieldConstant.HAS_NATIVE_IMAGE_FLAG); - } - return this; - } - - /** - * Add a list of URLs. This also add facet skip list terms for news / images / videos if needed. - */ - public EarlybirdThriftDocumentBuilder withURLs(List urls) { - if (isNotEmpty(urls)) { - Set dedupedLinks = Sets.newHashSet(); - - for (ThriftExpandedUrl expandedUrl : urls) { - if (expandedUrl.isSetOriginalUrl()) { - String normalizedOriginalUrl = URLUtils.normalizePath(expandedUrl.getOriginalUrl()); - dedupedLinks.add(normalizedOriginalUrl); - } - if (expandedUrl.isSetExpandedUrl()) { - dedupedLinks.add(URLUtils.normalizePath(expandedUrl.getExpandedUrl())); - } - - if (expandedUrl.isSetCanonicalLastHopUrl()) { - String url = URLUtils.normalizePath(expandedUrl.getCanonicalLastHopUrl()); - dedupedLinks.add(url); - - String facetUrl = URLUtils.normalizeFacetURL(url); - - if (expandedUrl.isSetMediaType()) { - switch (expandedUrl.getMediaType()) { - case NEWS: - withStringField(EarlybirdFieldConstant.NEWS_LINKS_FIELD.getFieldName(), url); - addFacetSkipList(EarlybirdFieldConstant.NEWS_LINKS_FIELD.getFieldName()); - encodedTweetFeatures.setFlag(EarlybirdFieldConstant.HAS_NEWS_URL_FLAG); - break; - case VIDEO: - withStringField(EarlybirdFieldConstant.VIDEO_LINKS_FIELD.getFieldName(), facetUrl); - addFacetSkipList(EarlybirdFieldConstant.VIDEO_LINKS_FIELD.getFieldName()); - encodedTweetFeatures.setFlag(EarlybirdFieldConstant.HAS_VIDEO_URL_FLAG); - break; - case IMAGE: - withStringField(EarlybirdFieldConstant.IMAGE_LINKS_FIELD.getFieldName(), facetUrl); - addFacetSkipList(EarlybirdFieldConstant.IMAGE_LINKS_FIELD.getFieldName()); - encodedTweetFeatures.setFlag(EarlybirdFieldConstant.HAS_IMAGE_URL_FLAG); - break; - case NATIVE_IMAGE: - // Nothing done here. Native images are handled separately. - // They are in PhotoUrls instead of expandedUrls. - break; - case UNKNOWN: - break; - default: - throw new RuntimeException("Unknown Media Type: " + expandedUrl.getMediaType()); - } - } - - if (expandedUrl.isSetLinkCategory()) { - withIntField(EarlybirdFieldConstant.LINK_CATEGORY_FIELD.getFieldName(), - expandedUrl.getLinkCategory().getValue()); - } - } - } - - if (!dedupedLinks.isEmpty()) { - encodedTweetFeatures.setFlag(EarlybirdFieldConstant.HAS_LINK_FLAG); - - addFacetSkipList(EarlybirdFieldConstant.LINKS_FIELD.getFieldName()); - - for (String linkUrl : dedupedLinks) { - withStringField(EarlybirdFieldConstant.LINKS_FIELD.getFieldName(), linkUrl); - } - } - - encodedTweetFeatures.setFlagValue( - EarlybirdFieldConstant.HAS_VISIBLE_LINK_FLAG, - LinkVisibilityUtils.hasVisibleLink(urls)); - } - - return this; - } - - /** - * Add a list of places. The place are U64 encoded place IDs. - */ - public EarlybirdThriftDocumentBuilder withPlacesField(List places) { - if (isNotEmpty(places)) { - for (String place : places) { - withStringField(EarlybirdFieldConstant.PLACE_FIELD.getFieldName(), place); - } - } - return this; - } - - /** - * Add tweet text signature field. - */ - public EarlybirdThriftDocumentBuilder withTweetSignature(int signature) { - encodedTweetFeatures.setFeatureValue(EarlybirdFieldConstant.TWEET_SIGNATURE, signature); - return this; - } - - /** - * Add geo hash field and internal filter field. - */ - public EarlybirdThriftDocumentBuilder withGeoHash(double lat, double lon, int accuracy) { - if (GeoUtil.validateGeoCoordinates(lat, lon)) { - withGeoField( - EarlybirdFieldConstant.GEO_HASH_FIELD.getFieldName(), - lat, lon, accuracy); - withLatLonCSF(lat, lon); - } - return this; - } - - public EarlybirdThriftDocumentBuilder withGeoHash(double lat, double lon) { - withGeoHash(lat, lon, GeoAddressAccuracy.UNKNOWN_LOCATION.getCode()); - return this; - } - - /** - * Add geo location source to the internal field with ThriftGeoLocationSource object. - */ - public EarlybirdThriftDocumentBuilder withGeoLocationSource( - ThriftGeoLocationSource geoLocationSource) { - if (geoLocationSource != null) { - withGeoLocationSource(EarlybirdFieldConstants.formatGeoType(geoLocationSource)); - } - return this; - } - - /** - * Add geo location source to the internal field. - */ - public EarlybirdThriftDocumentBuilder withGeoLocationSource(String geoLocationSource) { - withStringField(EarlybirdFieldConstant.INTERNAL_FIELD.getFieldName(), geoLocationSource); - return this; - } - - /** - * Add encoded lat and lon to LatLonCSF field. - */ - public EarlybirdThriftDocumentBuilder withLatLonCSF(double lat, double lon) { - isSetLatLonCSF = true; - long encodedLatLon = GeoUtil.encodeLatLonIntoInt64((float) lat, (float) lon); - withLongField(EarlybirdFieldConstant.LAT_LON_CSF_FIELD.getFieldName(), encodedLatLon); - return this; - } - - /** - * Add from verified account flag to internal field. - */ - public EarlybirdThriftDocumentBuilder withFromVerifiedAccountFlag() { - encodedTweetFeatures.setFlag(EarlybirdFieldConstant.FROM_VERIFIED_ACCOUNT_FLAG); - addFilterInternalFieldTerm(EarlybirdFieldConstant.VERIFIED_FILTER_TERM); - return this; - } - - /** - * Add from blue-verified account flag to internal field. - */ - public EarlybirdThriftDocumentBuilder withFromBlueVerifiedAccountFlag() { - encodedTweetFeatures.setFlag(EarlybirdFieldConstant.FROM_BLUE_VERIFIED_ACCOUNT_FLAG); - addFilterInternalFieldTerm(EarlybirdFieldConstant.BLUE_VERIFIED_FILTER_TERM); - return this; - } - - /** - * Add offensive flag to internal field. - */ - public EarlybirdThriftDocumentBuilder withOffensiveFlag() { - encodedTweetFeatures.setFlag(EarlybirdFieldConstant.IS_OFFENSIVE_FLAG); - withStringField( - EarlybirdFieldConstant.INTERNAL_FIELD.getFieldName(), - EarlybirdFieldConstant.IS_OFFENSIVE); - return this; - } - - /** - * Add user reputation value to encoded feature. - */ - public EarlybirdThriftDocumentBuilder withUserReputation(byte score) { - encodedTweetFeatures.setFeatureValue(EarlybirdFieldConstant.USER_REPUTATION, score); - return this; - } - - /** - * This method creates the fields related to document language. - * For most languages, their isoLanguageCode and bcp47LanguageTag are the same. - * For some languages with variants, these two fields are different. - * E.g. for simplified Chinese, their isoLanguageCode is zh, but their bcp47LanguageTag is zh-cn. - *