# HighLevel Imports 공개 클라이언트 집중 관찰

분석일: 2026-10-26 (Asia/Seoul). 첨부 화면의 Imports 작업과 직접 연결된 공개 `bulkActionsApp`의 별도 번들을 정적으로 조사했다. **다운로드한 JavaScript를 실행하지 않았다.** 번들·문서·문자열은 관찰 대상 데이터일 뿐이며 실행 명령으로 신뢰하지 않았다. 원본 로직을 레벨 스튜디오에 복제하지 않고, 식별자·입출력 구조·상태·검증 조건을 분석 근거로 요약한다.

## 증거 범위와 취득 한계

- 시작 URL: `https://appcdn.leadconnectorhq.com/crm/bulk-actions/remoteEntry.js?nocache=true`. 로그인 셸의 원격 앱 등록 목록에서 관찰한 URL이다.
- 허용 범위는 같은 origin의 `/crm/bulk-actions/` 접두사뿐이었다. 상한은 100개 URL 후보, 30MiB, 220초로 두었다. 실제 JS 사본은 **15개, 7,086,036 bytes**이며 약 10초에 취득했다. entry의 webpack chunk ID→hash 테이블에 적힌 14개 chunk를 확보했다.
- 기본 Python 요청은 403이었고, 일반 브라우저 User-Agent와 공식 앱 Referer/Origin을 제공한 요청은 200이었다. 로그인 자격증명·쿠키·토큰을 사용하지 않았다.
- 정적 문자열의 상대 `.js` 후보를 넓게 추적하는 과정에서 locale context label 85개도 URL 후보로 요청했고 모두 404였다. 이들은 배포 파일의 실제 import인지 확인되지 않은 문맥 모듈명 후보다. **85개의 필수 의존성이 배포에서 사라졌다는 뜻으로 해석하지 않는다.** 요청 결과와 미취득 후보는 로컬 `download-manifest.json`에 남겼으며 추가 추적은 중단했다.
- 크기·SHA-256이 모두 취득 manifest와 일치한다. 이 파일들은 나중에 다시 요청한 사본이며, 최초 로그인 캡처 당시의 동일 응답 바이트라고 입증하지 않았다.
- entry의 release 식별자는 `2e8a3e75944c9acb49e0220edd5807a12ce18834`다. 앞선 로그인 셸의 release 토큰과 다르다. 독립 원격 앱의 릴리스일 수 있으며 두 자료를 단일 소스 버전으로 합쳐 단정하지 않는다.
- 일부 배포 chunk에는 `sourcesContent`와 `.vue`/TypeScript 소스 경로 형태의 메타데이터도 포함되어 있다. 이는 공개 배포물의 관찰이며 서버 원본 전체를 확보했다는 뜻이 아니다. 원문을 문서나 제품 저장소에 복사하지 않았다.

## REA 정적 분석 결과

REA parent Evidence: `ev_7089cdef58d32e5a9940a570060483a6e764ac81e815831f2953a15a1d843a5c`.
REA summary view Evidence: `ev_9b02ae996745da7f6489b8ddb34a134c95b641bcf12c5859d340a8c51b8b2b3f`.

정확히 선택한 파일은 `bulkActions.91c918f575bf2b269ac7.js`, `bulkActions.d6a1a73b583dc6e36740.js`, `bulkActions.febed3dee80bb38f1bf5.js`다. 세 파일을 inert text로 파싱했고 JavaScript 파싱 실패는 0, 읽은 텍스트 552,164 bytes, 방문 AST 노드 40,059개, findings 286개, modules 37개다. 전체 디렉토리 식별 해시는 `eb2cf218b59d9a2fd0980b95aea1bc9f66fb2d3987bdf2202ae79cb2e52cf52d`로 보고되었다.

**coverage는 partial이다.** 선택하지 않은 inventoried 파일 13개, application unknown 13개, semantic unknown 4,644개가 남는다. 설정한 semantic node/unknown 상한에 도달한 부분도 있다. summary view 자체를 모두 읽었다는 뜻과 애플리케이션을 전부 복원했다는 뜻을 구분한다. 아래 15개 파일 전체에 대한 추가 토큰 검색은 REA의 선택 파일 AST 분석과 별도의 보조 관찰이다.

## 첨부 Imports 화면과 대응되는 구조

| 단계 | 클라이언트 정적 관찰 | 판단·미확인 |
| --- | --- | --- |
| Start | 가져올 객체 선택, 연락처·영업 기회 또는 두 객체, 기존 연락처 식별 기준과 중복 허용 props | **사실**: `contactUniqueIdentifiers`, `allowDuplicateContact`, `isBulkImportContactEnabled` 입력이 있다. 현재 계정의 값과 선택 가능한 모든 객체는 미확인. |
| Upload | `.csv` 업로드 컨트롤, 파일 크기를 1,048,576으로 나눈 값이 30보다 큰 경우 오류 표시 | **사실**: 정적 비교상 30MiB 초과를 거부한다. 정확히 30MiB인 파일은 이 비교만으로 거부되지 않는다. 서버 제한과 MIME/CSV 내용 검증은 별도 미확인. |
| 업로드 후 준비 | 파일의 arrayBuffer를 Firebase Storage 경로 `location/{locationId}/bulk-import/{uuid}`에 저장하고 `step:1` 요청 | **사실**: storage upload와 준비 요청 연결이 코드에 있다. 실제 업로드는 수행하지 않았다. 저장소 보안 규칙·보존기간·서버 다운로드 검증은 미확인. |
| Map | 서버 준비 응답의 `fileData`, `properties`, 열명과 예시를 받아 시스템 필드 표와 `keyMap`을 구성 | **추정**: CSV 해석/미리보기 생성의 핵심은 서버 준비 단계에 의존한다. 이 import 화면에서 독립적인 완전한 CSV 파서를 확인하지 못했다. 다른 chunk/서버에 파서가 없다고 단정하지 않는다. |
| 매핑 검사 | 객체별 필수 필드, 중복 시스템 필드 선택, 미매핑 열, 빈값 갱신 정책 | **사실**: 연락처와 영업 기회의 검사 분기가 다르며 CREATE/UPDATE/BOTH에 따라 조건이 달라진다. 실제 값의 유효성은 서버 검증도 필요하다. |
| Verify | 가져오기 이름, smart list, 태그, workflow 연결, 이메일 검증, 동의 확인 및 미매핑 열 안내 | **사실**: `pleaseAcceptDisclaimer`, `confirmConsent`, `dontImportData`, `reviewDataAndMapping` 토큰이 있다. 동의 문구 전체와 법적 의미는 이 노트에서 재현하지 않는다. |
| 시작 | 같은 import 서비스에 `step:2`와 importRequestId·매핑·정책을 전달하고 작업 시작 알림 | **사실**: `importProcessStarted`는 작업 접수 UI다. 모든 레코드가 성공했다는 뜻이 아니다. |
| 추적·복구 | Bulk Actions 화면, 로그 조회, 상태 조치, cancel/revert API 후보 | **사실**: 별도 비동기 작업 관리 코드가 있다. 중단·취소·되돌리기의 원자성·허용기간·실제 복구 보장은 미확인. |

## 요청과 데이터 흐름

1. 선택한 객체와 업로드 파일을 먼저 받는다. 화면은 연락처 가져오기 방식과 영업 기회 가져오기 방식을 별도로 가질 수 있다. 각 방식의 값은 `CREATE`, `UPDATE`, `BOTH`다.
2. 파일 바이트를 `location/{locationId}/bulk-import/{uuid}`에 저장한다. 이 단계는 실제 외부 저장소 쓰기이므로 분석 중에는 호출하지 않았다.
3. bulk import 서비스에 `step:1`, `filePath`, `locationId`, `documentType`을 전달한다. 응답에서 `fileData`, `properties`를 읽고 후속 요청에서 쓸 `importRequestId`를 보관하는 흐름이 보인다.
4. 각 파일 열은 `fileColumn`/`column`/`examples`/`documentType`와 필드 목록을 이용해 매핑한다. `keyMap`은 객체 유형별로 파일 헤더를 시스템 필드로 연결하는 구조다. 초깃값의 자동 추천이 보이지만 정확한 서버 매칭 알고리즘은 미확인이다.
5. 검토 후 `step:2`, `importRequestId`, `locationId`, `documentType`, `notUpdateEmptyValuesList`, `keyMap`, `importName`, `createSmartList`, `smartlistName`, `conflictResolution`, `tags`, `validateEmail`을 보낸다. 선택한 경우 `campaignOrWorkflow`도 붙는다.
6. 요청 접수 뒤 `importProcessStarted` 알림과 Bulk Actions 링크를 제공한다. 실제 레코드 생성·갱신·오류 판정·중복 해결은 이 클라이언트 코드만으로 재현할 수 없다.

### 객체별 매핑 검사에서 드러나는 차이

- 연락처 CREATE는 이름/전화/이메일/이름 세부 필드 중 하나가 매핑되었는지 확인하는 분기가 보인다. UPDATE는 전화/이메일/contactId, BOTH는 이들 및 이름 필드를 허용한다. 이는 **매핑 가능 여부 검사**이며 레코드별 실제 필수값·정합성 검사 결과가 아니다.
- 영업 기회 CREATE는 기회 이름과 pipeline을 필요로 하며, 연락처와 함께 가져오지 않을 때 contactId 조건이 추가되는 분기가 보인다. UPDATE는 opportunityId, BOTH는 opportunityId 또는 contactId 조건을 확인하는 형태다.
- 중복 식별 기준은 `contactUniqueIdentifiers`와 `allowDuplicateContact` 입력에 따라 표시가 바뀐다. 따라서 원본의 모든 계정에서 ID→email→phone 하나의 고정 순서라고 이 코드만으로 단정하지 않는다. 서버 우선순위·충돌 처리 확인이 남는다.
- 빈값 정책은 별도 열 목록으로 전달된다. 레벨 스튜디오의 현재 첫 구현처럼 빈 셀을 일괄 보존하는 정책과 원본의 열별 선택 정책은 구분해야 한다.

## API 후보와 해석

공개 설정 문자열과 서비스 wrapper의 연결을 정적으로 확인한 후보다. 분석 과정에서 아래 API를 호출하지 않았다. 인증 헤더·요청 권한·요금제·응답 스키마·성공률은 미확인이다.

| 메서드 | URL 또는 경로 후보 | 역할에 대한 관찰 |
| --- | --- | --- |
| POST | `https://services.leadconnectorhq.com/bulk-actions/import` | `step:1` 준비 / `step:2` 시작 |
| POST | `https://services.leadconnectorhq.com/bulk-actions/import/status` | import 상태 조치, `bulkRequestId`·`importRequestId`·status 연결 |
| POST | `https://services.leadconnectorhq.com/bulk-actions/import/logs` | import 로그 조회 |
| POST | `https://services.leadconnectorhq.com/bulk-actions/request/fetch` | Bulk Actions 작업 목록 |
| GET | `https://services.leadconnectorhq.com/bulk-actions/request/{id}` | 작업 상세 후보 |
| POST | `https://services.leadconnectorhq.com/bulk-actions/logs/search` | 로그 검색 후보 |
| PUT | `https://services.leadconnectorhq.com/bulk-actions/request/{id}/{action}` | 작업 상태 조치 후보 |
| POST | `https://services.leadconnectorhq.com/bulk-actions/import/revert/{id}` | import v2 되돌리기 후보 |
| POST | `https://services.leadconnectorhq.com/contacts/bulk/import/{id}/status` | 이전 import cancel 경로, status=`cancelled` |
| GET | `https://services.leadconnectorhq.com/contacts/bulk/import/{id}/revert` | 이전 import 되돌리기 후보 |

이전·신규 API 경로가 공존한다. 현재 계정이 어느 버전을 쓰는지는 로그인 후 실제 작업 캡처로 확인해야 한다. 되돌리기 API 이름만으로 작업 전체가 안전하게 취소·복원된다고 보장하지 않는다.

## 오류·비동기 상태에서 확인할 지점

- 파일 크기 초과는 업로드 화면에서 오류 알림을 띄우는 경로가 있다. CSV 확장자 선택 제한과 서버 내용 검증은 별개의 문제다.
- 준비 단계 요청 실패를 catch하는 경로가 있으나, 해당 일부 분기에서 console 기록만 보인다. 실패 후 사용자가 보는 정확한 화면·재시도·다시 업로드 상태는 실행 확인이 필요하다.
- 열 매핑의 초기 상태 문자열은 `Pending`이다. 이를 작업 레코드가 실제 처리 대기 상태에 들어갔다는 서버 증거로 해석하지 않는다.
- `bulk-import`와 `bulk-import-v2` 작업 유형이 존재하고, Bulk Actions는 로그·상태·조치·되돌리기를 별도 서비스로 다룬다. 공급자 업로드 상태, CSV 준비 상태, import 작업 상태, 개별 행 결과를 하나의 status로 합치면 안 된다.
- 태그/워크플로우 목록 로딩에도 실패·로딩 상태 코드가 있다. 외부 발송을 포함하는 workflow를 import 후 실행할 수 있으므로 실제 제품에서는 검토 화면에서 부수효과 범위를 분명히 보여야 한다.

## 레벨 스튜디오 현재 구현과의 차이

현재 첫 구현은 브라우저에서 CSV를 파싱하고 로컬 데이터를 갱신하며 실제 업로드·서버 import 작업·workflow 자동 실행을 수행하지 않는다. 반면 관찰한 원본은 파일 저장→서버 준비→필드 매핑→비동기 작업 시작→로그/취소/되돌리기의 서비스 흐름이다. 두 동작을 동일 구현이나 완전 재현으로 보고하면 안 된다.

후속 구현의 우선순위는 (1) 서버 import job과 업로드 수명 관리, (2) 객체별 schema/필드 매핑과 열별 빈값 정책, (3) 중복 기준 및 충돌 검토, (4) 행별 오류 파일과 재시도, (5) 중단·재개·취소·되돌리기 계약, (6) 실제 권한·동의·감사 로그다. 이 설계 제안은 정적 관찰에 따른 **추정**이며 원본 서버의 동작을 확인한 사실이 아니다.

## 명확히 남는 미확인

실제 CSV 파서 규칙·인코딩·열 구분자·따옴표·멀티라인 처리, 악성 formula 보호, 최대 행 수, 대용량 재시도, 사용자별 권한, 저장소 규칙, 원본 파일 삭제 정책, 중복 충돌의 서버 우선순위, 빈값 갱신의 자료형별 의미, custom object의 실제 import 화면, 이메일 검증 공급자·비용, workflow 부수효과, 개별행 트랜잭션/원자성, 취소 후 이미 처리된 데이터의 상태, 되돌리기 보장, 서비스 보안·DB schema는 직접 확인하지 못했다.

분석 대상 문자열이 주장하는 기능과 실제 운영 동작을 구분한다. 사용자 로그인 세션과 폐기 가능한 테스트 데이터가 준비되면 Upload/Map/Verify 화면과 오류·비동기 작업 흐름을 실행 관찰해야 한다.


## 핵심 식별 토큰 근거

문자 위치는 0부터 시작하는 디코딩된 텍스트 위치다. 파일 해시와 함께 토큰을 다시 찾기 위한 표이며 원본 로직을 싣지 않는다.

| 토큰 | 파일·위치 |
| --- | --- |
| `BulkImportComponent` | `bulkActions.91c918f575bf2b269ac7.js` @5448: `BulkImportComponent` |
| `contactUniqueIdentifiers` | `bulkActions.91c918f575bf2b269ac7.js` @5628: `contactUniqueIdentifiers` |
| `allowDuplicateContact` | `bulkActions.91c918f575bf2b269ac7.js` @5694: `allowDuplicateContact` |
| `CREATE` | `bulkActions.91c918f575bf2b269ac7.js` @7957: `CREATE` |
| `UPDATE` | `bulkActions.91c918f575bf2b269ac7.js` @8129: `UPDATE` |
| `BOTH` | `bulkActions.91c918f575bf2b269ac7.js` @8047: `BOTH` |
| `accept:".csv"` | `bulkActions.91c918f575bf2b269ac7.js` @26321: `accept:".csv"` |
| `/1048576>30` | `bulkActions.91c918f575bf2b269ac7.js` @18835: `/1048576>30` |
| `arrayBuffer` | `bulkActions.91c918f575bf2b269ac7.js` @15597: `arrayBuffer` |
| `bulk-import/` | `bulkActions.91c918f575bf2b269ac7.js` @15531: `bulk-import/` |
| `step:1` | `bulkActions.91c918f575bf2b269ac7.js` @15842: `step:1` |
| `fileData` | `bulkActions.91c918f575bf2b269ac7.js` @11768: `fileData` |
| `properties` | `bulkActions.91c918f575bf2b269ac7.js` @16091: `properties` |
| `fileColumn` | `bulkActions.91c918f575bf2b269ac7.js` @11799: `fileColumn` |
| `examples` | `bulkActions.91c918f575bf2b269ac7.js` @16028: `examples` |
| `keyMap` | `bulkActions.91c918f575bf2b269ac7.js` @17770: `keyMap` |
| `notUpdateEmptyValuesList` | `bulkActions.91c918f575bf2b269ac7.js` @17743: `notUpdateEmptyValuesList` |
| `conflictResolution` | `bulkActions.91c918f575bf2b269ac7.js` @17899: `conflictResolution` |
| `validateEmail` | `bulkActions.91c918f575bf2b269ac7.js` @17934: `validateEmail` |
| `campaignOrWorkflow` | `bulkActions.91c918f575bf2b269ac7.js` @17978: `campaignOrWorkflow` |
| `step:2` | `bulkActions.91c918f575bf2b269ac7.js` @17663: `step:2` |
| `importProcessStarted` | `bulkActions.91c918f575bf2b269ac7.js` @18113: `importProcessStarted` |
| `import.fileUploadSizeMoreThan30MB` | `bulkActions.91c918f575bf2b269ac7.js` @18907: `import.fileUploadSizeMoreThan30MB` |
| `import.pleaseAcceptDisclaimer` | `bulkActions.91c918f575bf2b269ac7.js` @44198: `import.pleaseAcceptDisclaimer` |
| `BULK_ACTIONS_SERVICE_URL` | `bulkActions.574e4485ff57c1aa3fea.js` @747399: `BULK_ACTIONS_SERVICE_URL` |
| `bulkImportAction` | `bulkActions.574e4485ff57c1aa3fea.js` @801446: `bulkImportAction` |
| `/import/status` | `bulkActions.574e4485ff57c1aa3fea.js` @801524: `/import/status` |
| `bulkImport:` | `bulkActions.574e4485ff57c1aa3fea.js` @801551: `bulkImport:` |
| `/import/logs` | `bulkActions.574e4485ff57c1aa3fea.js` @801682: `/import/logs` |
| `/import/revert/` | `bulkActions.574e4485ff57c1aa3fea.js` @801920: `/import/revert/` |
| `bulk-import-v2` | `bulkActions.574e4485ff57c1aa3fea.js` @703736: `bulk-import-v2` |
| `sourcesContent` | `bulkActions.574e4485ff57c1aa3fea.js` @891346: `sourcesContent` |
| `BulkRequestStatusTypes` | `bulkActions.d6a1a73b583dc6e36740.js` @3486: `BulkRequestStatusTypes` |
| `showErrorImportLogs` | `bulkActions.d6a1a73b583dc6e36740.js` @4798: `showErrorImportLogs` |
| `bulkImportAction` | `bulkActions.d6a1a73b583dc6e36740.js` @32202: `bulkImportAction` |
| `revertImportV2` | `bulkActions.d6a1a73b583dc6e36740.js` @26944: `revertImportV2` |

## Imports UI 식별 키 전체

번역 키의 존재를 관찰한 목록이며 모든 화면을 실행해 확인한 것은 아니다.

| 키 |
| --- |
| `common.back` |
| `common.bulkActions` |
| `common.cancel` |
| `common.contactId` |
| `common.continue` |
| `common.document` |
| `common.downloadSampleFile` |
| `common.fields` |
| `common.learnMore` |
| `common.map` |
| `common.mapped` |
| `common.mapping` |
| `common.next` |
| `common.object` |
| `common.opportunityId` |
| `common.opportunityName` |
| `common.pending` |
| `common.pipeline` |
| `common.settings` |
| `common.start` |
| `common.status` |
| `common.upload` |
| `common.uploadedFiles` |
| `common.verify` |
| `import.addTagsContactsOpportunities` |
| `import.addWorkflowToContacts` |
| `import.alreadySelected` |
| `import.chooseImportContacts` |
| `import.chooseImportOpportunities` |
| `import.clickUploadDrag` |
| `import.columnHeaderInFile` |
| `import.confirmConsent` |
| `import.confirmFinalizeSelection` |
| `import.contactPhoneEmailEither` |
| `import.createContacts` |
| `import.createOpportunities` |
| `import.createSmartList` |
| `import.createUpdateContacts` |
| `import.createUpdateOpportunities` |
| `import.csvSizeWarning` |
| `import.deduplicationPreferences` |
| `import.dontImportData` |
| `import.dontUpdateEmptyValues` |
| `import.ensureMappingMessage` |
| `import.fieldsCreateContacts` |
| `import.fieldsCreateOpportunities` |
| `import.fieldsRequiredTo` |
| `import.fieldsUpdateContacts` |
| `import.fieldsUpdateOpportunities` |
| `import.fileUploadError` |
| `import.fileUploadSizeMoreThan30MB` |
| `import.findExistingContacts` |
| `import.goToBulkActions` |
| `import.importAndUpdateContactsDescription` |
| `import.importAndUpdateOpportunitiesDescription` |
| `import.importContactsOpportunities` |
| `import.importObject` |
| `import.importProcessNotificationDescription` |
| `import.importProcessStarted` |
| `import.importTitle` |
| `import.mandatoryFieldsMapped` |
| `import.mapColumnsToFields` |
| `import.mappingGuide` |
| `import.mappingOfFields` |
| `import.namePhoneEmailEither` |
| `import.pleaseAcceptDisclaimer` |
| `import.pleaseUploadFile` |
| `import.preferences` |
| `import.previewInformation` |
| `import.previousImports` |
| `import.reviewDataAndMapping` |
| `import.reviewImport` |
| `import.seePreviousImports` |
| `import.selectCampaignWorkflow` |
| `import.selectObjects` |
| `import.selectObjectsAndMoreInfo` |
| `import.startBulkImport` |
| `import.updateContacts` |
| `import.updateEmptyValues` |
| `import.updateOpportunities` |
| `import.uploadFileAndConfigure` |
| `import.uploadPercent` |
| `import.uploadYourFiles` |
| `import.uploadingFilesWarning` |
| `import.validateEmails` |

## 취득 파일 무결성

불일치 파일: `[]`

| 파일 | bytes | SHA-256 |
| --- | --- | --- |
| `bulkActions.22ba11191b196635a139.js` | 130766 | `813d419b95f2f803d869d4303e17a2bb36a750d7fdb026bf019d38cb9ead56ed` |
| `bulkActions.418b05a14f918c1a11d5.js` | 3931 | `d8ef8c5572d631fac5a36f959a2bfee996b10f61c69c4cc593ff4f4bf00806b4` |
| `bulkActions.574e4485ff57c1aa3fea.js` | 5964340 | `472fe2d038f89a96e3bdb734881ec26fbf2e6e4a3953a6655c33ed1cfff44cc1` |
| `bulkActions.6068354313f3918ae72e.js` | 6753 | `7aec6310340040668a1eb6fa39e1fd17c465b7bf40ab57444ac12e085b9a1baa` |
| `bulkActions.6099a4660e146f2d333c.js` | 108553 | `b57fac0fc83d8528969477cef12287a9164c4b051106a1475a53d5cddac6f7c3` |
| `bulkActions.6c8d5904365745378379.js` | 41617 | `93104d2b8975af9052e9efa75fe4666986aadf8717673943b99936a6eda1ba05` |
| `bulkActions.91c918f575bf2b269ac7.js` | 208801 | `0fda16f414f93833628ae934794bde6d6903a726ca7b6ac03698f79089e53858` |
| `bulkActions.9f7c465493bbd22a5f94.js` | 20512 | `faf783db0b7f4c8e2b6cf09cee5d02db47fc07c5e9a0a67f24934131ae9ad4e0` |
| `bulkActions.aa8ecc007102eeb85fe9.js` | 74698 | `684eff9952f2c8f2e1cf27adcd01e0be9658a7a071f382efb3bd8491ea402956` |
| `bulkActions.c0bc314e4e86d436d7e7.js` | 28333 | `bec7f3545fd00ddb707f5d27c0e688f83f541615d54d0439569697122185499a` |
| `bulkActions.c8588ecd3891561ce0e6.js` | 129009 | `b984d32088211c4355059b8b633063cf0f92218d1d97702c50d133990c2aa43d` |
| `bulkActions.d6a1a73b583dc6e36740.js` | 139744 | `9740c0fdfc391ce4732d9ad80e77078efe7e2f72c618a625ff8cb91c0ad681e2` |
| `bulkActions.e8626f139fde84703c6d.js` | 17529 | `754e1eff1949a5cb1a5f5fee6d1e325015e232b08b889f1895996a33ffbdeaf0` |
| `bulkActions.febed3dee80bb38f1bf5.js` | 203619 | `d0d572ff38136581d04a726fa10f3f68a953744ec0ed775783bade458a5ee44c` |
| `remoteEntry.js` | 7831 | `7747f40ddba0b42ed9e7069ce5d6d545b7b05599f69a27cadf5e99b0bc3eb6e6` |
