From 566ebdf749f693e24a8b90a1ed5bb70a26408abb Mon Sep 17 00:00:00 2001 From: Cheng Zhou Date: Tue, 16 Dec 2025 19:16:50 +0800 Subject: [PATCH] =?UTF-8?q?Step=208=EF=BC=9A=E6=95=B0=E6=8D=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86=EF=BC=88Queries=20+=20SDV/SDR=20=E8=BF=9B=E5=BA=A6?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/api/v1/data_queries.py | 153 ++++++++++++++++++++++++ backend/app/api/v1/router.py | 4 +- backend/app/api/v1/verifications.py | 115 ++++++++++++++++++ backend/app/crud/data_query.py | 117 ++++++++++++++++++ backend/app/crud/verification.py | 108 +++++++++++++++++ backend/app/db/base.py | 2 + backend/app/models/data_query.py | 32 +++++ backend/app/models/verification.py | 27 +++++ backend/app/schemas/data_query.py | 51 ++++++++ backend/app/schemas/verification.py | 38 ++++++ pg_data/base/16384/1247 | Bin 122880 -> 122880 bytes pg_data/base/16384/1249 | Bin 516096 -> 532480 bytes pg_data/base/16384/1259 | Bin 122880 -> 131072 bytes pg_data/base/16384/1259_fsm | Bin 24576 -> 24576 bytes pg_data/base/16384/24853 | Bin 0 -> 8192 bytes pg_data/base/16384/24858 | 0 pg_data/base/16384/24859 | Bin 0 -> 8192 bytes pg_data/base/16384/24860 | Bin 0 -> 16384 bytes pg_data/base/16384/24887 | Bin 0 -> 16384 bytes pg_data/base/16384/24888 | Bin 0 -> 16384 bytes pg_data/base/16384/24889 | Bin 0 -> 16384 bytes pg_data/base/16384/24890 | 0 pg_data/base/16384/24895 | 0 pg_data/base/16384/24896 | Bin 0 -> 8192 bytes pg_data/base/16384/24897 | Bin 0 -> 8192 bytes pg_data/base/16384/24899 | Bin 0 -> 8192 bytes pg_data/base/16384/24921 | Bin 0 -> 8192 bytes pg_data/base/16384/24922 | Bin 0 -> 8192 bytes pg_data/base/16384/24923 | Bin 0 -> 8192 bytes pg_data/base/16384/2579 | Bin 16384 -> 16384 bytes pg_data/base/16384/2604 | Bin 8192 -> 8192 bytes pg_data/base/16384/2606 | Bin 32768 -> 40960 bytes pg_data/base/16384/2606_fsm | Bin 24576 -> 24576 bytes pg_data/base/16384/2608 | Bin 139264 -> 139264 bytes pg_data/base/16384/2610 | Bin 40960 -> 40960 bytes pg_data/base/16384/2619 | Bin 172032 -> 188416 bytes pg_data/base/16384/2619_fsm | Bin 24576 -> 24576 bytes pg_data/base/16384/2620 | Bin 24576 -> 32768 bytes pg_data/base/16384/2620_fsm | Bin 24576 -> 24576 bytes pg_data/base/16384/2656 | Bin 16384 -> 16384 bytes pg_data/base/16384/2657 | Bin 16384 -> 16384 bytes pg_data/base/16384/2658 | Bin 139264 -> 139264 bytes pg_data/base/16384/2659 | Bin 98304 -> 98304 bytes pg_data/base/16384/2662 | Bin 32768 -> 32768 bytes pg_data/base/16384/2663 | Bin 40960 -> 40960 bytes pg_data/base/16384/2664 | Bin 16384 -> 16384 bytes pg_data/base/16384/2665 | Bin 16384 -> 32768 bytes pg_data/base/16384/2666 | Bin 16384 -> 16384 bytes pg_data/base/16384/2667 | Bin 16384 -> 16384 bytes pg_data/base/16384/2673 | Bin 106496 -> 106496 bytes pg_data/base/16384/2674 | Bin 73728 -> 81920 bytes pg_data/base/16384/2678 | Bin 16384 -> 16384 bytes pg_data/base/16384/2679 | Bin 16384 -> 16384 bytes pg_data/base/16384/2696 | Bin 32768 -> 40960 bytes pg_data/base/16384/2699 | Bin 16384 -> 16384 bytes pg_data/base/16384/2701 | Bin 16384 -> 16384 bytes pg_data/base/16384/2702 | Bin 16384 -> 16384 bytes pg_data/base/16384/2703 | Bin 32768 -> 32768 bytes pg_data/base/16384/2704 | Bin 49152 -> 49152 bytes pg_data/base/16384/3455 | Bin 16384 -> 16384 bytes pg_data/base/16384/pg_internal.init | Bin 160044 -> 160044 bytes pg_data/global/pg_control | Bin 8192 -> 8192 bytes pg_data/pg_wal/000000010000000000000001 | Bin 16777216 -> 16777216 bytes pg_data/pg_xact/0000 | Bin 8192 -> 8192 bytes 64 files changed, 646 insertions(+), 1 deletion(-) create mode 100644 backend/app/api/v1/data_queries.py create mode 100644 backend/app/api/v1/verifications.py create mode 100644 backend/app/crud/data_query.py create mode 100644 backend/app/crud/verification.py create mode 100644 backend/app/models/data_query.py create mode 100644 backend/app/models/verification.py create mode 100644 backend/app/schemas/data_query.py create mode 100644 backend/app/schemas/verification.py create mode 100644 pg_data/base/16384/24853 create mode 100644 pg_data/base/16384/24858 create mode 100644 pg_data/base/16384/24859 create mode 100644 pg_data/base/16384/24860 create mode 100644 pg_data/base/16384/24887 create mode 100644 pg_data/base/16384/24888 create mode 100644 pg_data/base/16384/24889 create mode 100644 pg_data/base/16384/24890 create mode 100644 pg_data/base/16384/24895 create mode 100644 pg_data/base/16384/24896 create mode 100644 pg_data/base/16384/24897 create mode 100644 pg_data/base/16384/24899 create mode 100644 pg_data/base/16384/24921 create mode 100644 pg_data/base/16384/24922 create mode 100644 pg_data/base/16384/24923 diff --git a/backend/app/api/v1/data_queries.py b/backend/app/api/v1/data_queries.py new file mode 100644 index 00000000..f5a359f2 --- /dev/null +++ b/backend/app/api/v1/data_queries.py @@ -0,0 +1,153 @@ +import uuid +from datetime import date + +from fastapi import APIRouter, Depends, HTTPException, status +from sqlalchemy.ext.asyncio import AsyncSession + +from app.core.deps import get_current_user, get_db_session, require_study_member, require_study_roles +from app.crud import data_query as dq_crud +from app.crud import audit as audit_crud +from app.crud import study as study_crud +from app.schemas.data_query import DataQueryCreate, DataQueryRead, DataQueryUpdate + +router = APIRouter() + + +def _is_overdue(dq: DataQueryRead) -> bool: + return bool(dq.due_date and date.today() > dq.due_date and dq.status != "CLOSED") + + +async def _ensure_study_exists(db: AsyncSession, study_id: uuid.UUID): + study = await study_crud.get(db, study_id) + if not study: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Study not found") + return study + + +@router.post( + "/", + response_model=DataQueryRead, + status_code=status.HTTP_201_CREATED, + dependencies=[Depends(require_study_roles(["PM", "CRA"]))], +) +async def create_query( + study_id: uuid.UUID, + query_in: DataQueryCreate, + db: AsyncSession = Depends(get_db_session), + current_user=Depends(get_current_user), +) -> DataQueryRead: + await _ensure_study_exists(db, study_id) + try: + dq = await dq_crud.create_query(db, study_id, query_in, created_by=current_user.id) + except ValueError as exc: + raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)) from exc + await audit_crud.log_action( + db, + study_id=study_id, + entity_type="data_query", + entity_id=dq.id, + action="CREATE_DATA_QUERY", + detail=f"DataQuery {dq.id} created", + operator_id=current_user.id, + operator_role=current_user.role, + ) + obj = DataQueryRead.model_validate(dq) + obj.is_overdue = _is_overdue(obj) + return obj + + +@router.get( + "/", + response_model=list[DataQueryRead], + dependencies=[Depends(require_study_member())], +) +async def list_queries( + study_id: uuid.UUID, + status_filter: str | None = None, + site_id: uuid.UUID | None = None, + subject_id: uuid.UUID | None = None, + assigned_to: uuid.UUID | None = None, + overdue: bool | None = None, + category: str | None = None, + priority: str | None = None, + skip: int = 0, + limit: int = 100, + db: AsyncSession = Depends(get_db_session), +) -> list[DataQueryRead]: + await _ensure_study_exists(db, study_id) + queries = await dq_crud.list_queries( + db, + study_id, + status=status_filter, + site_id=site_id, + subject_id=subject_id, + assigned_to=assigned_to, + overdue=overdue, + category=category, + priority=priority, + skip=skip, + limit=limit, + ) + result: list[DataQueryRead] = [] + for q in queries: + obj = DataQueryRead.model_validate(q) + obj.is_overdue = _is_overdue(obj) + result.append(obj) + return result + + +@router.get( + "/{query_id}", + response_model=DataQueryRead, + dependencies=[Depends(require_study_member())], +) +async def get_query( + study_id: uuid.UUID, + query_id: uuid.UUID, + db: AsyncSession = Depends(get_db_session), +) -> DataQueryRead: + await _ensure_study_exists(db, study_id) + dq = await dq_crud.get_query(db, query_id) + if not dq or dq.study_id != study_id: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="DataQuery not found") + obj = DataQueryRead.model_validate(dq) + obj.is_overdue = _is_overdue(obj) + return obj + + +@router.patch( + "/{query_id}", + response_model=DataQueryRead, + dependencies=[Depends(require_study_roles(["PM", "CRA"]))], +) +async def update_query( + study_id: uuid.UUID, + query_id: uuid.UUID, + query_in: DataQueryUpdate, + db: AsyncSession = Depends(get_db_session), + current_user=Depends(get_current_user), +) -> DataQueryRead: + await _ensure_study_exists(db, study_id) + dq = await dq_crud.get_query(db, query_id) + if not dq or dq.study_id != study_id: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="DataQuery not found") + old_status = dq.status + updated = await dq_crud.update_query(db, dq, query_in) + detail = None + action = "UPDATE_DATA_QUERY" + if query_in.status and query_in.status != old_status: + detail = f"DataQuery {query_id} status {old_status} -> {query_in.status}" + action = "DATA_QUERY_STATUS_CHANGE" + await audit_crud.log_action( + db, + study_id=study_id, + entity_type="data_query", + entity_id=query_id, + action=action, + detail=detail or "DataQuery updated", + operator_id=current_user.id, + operator_role=current_user.role, + ) + obj = DataQueryRead.model_validate(updated) + obj.is_overdue = _is_overdue(obj) + return obj diff --git a/backend/app/api/v1/router.py b/backend/app/api/v1/router.py index e5174483..13c689c5 100644 --- a/backend/app/api/v1/router.py +++ b/backend/app/api/v1/router.py @@ -1,6 +1,6 @@ from fastapi import APIRouter -from app.api.v1 import auth, users, studies, sites, members, comments, attachments, audit_logs, milestones, tasks, dashboard, subjects, visits, aes, issues +from app.api.v1 import auth, users, studies, sites, members, comments, attachments, audit_logs, milestones, tasks, dashboard, subjects, visits, aes, issues, data_queries, verifications api_router = APIRouter() api_router.include_router(auth.router, prefix="/auth", tags=["auth"]) @@ -18,3 +18,5 @@ api_router.include_router(subjects.router, prefix="/studies/{study_id}/subjects" api_router.include_router(visits.router, prefix="/studies/{study_id}/subjects/{subject_id}/visits", tags=["visits"]) api_router.include_router(aes.router, prefix="/studies/{study_id}/aes", tags=["aes"]) api_router.include_router(issues.router, prefix="/studies/{study_id}/issues", tags=["issues"]) +api_router.include_router(data_queries.router, prefix="/studies/{study_id}/data-queries", tags=["data-queries"]) +api_router.include_router(verifications.router, prefix="/studies/{study_id}/verifications", tags=["verifications"]) diff --git a/backend/app/api/v1/verifications.py b/backend/app/api/v1/verifications.py new file mode 100644 index 00000000..b643ce95 --- /dev/null +++ b/backend/app/api/v1/verifications.py @@ -0,0 +1,115 @@ +import uuid + +from fastapi import APIRouter, Depends, HTTPException, status +from sqlalchemy.ext.asyncio import AsyncSession + +from app.core.deps import get_current_user, get_db_session, require_study_member, require_study_roles +from app.crud import audit as audit_crud +from app.crud import verification as verification_crud +from app.crud import study as study_crud +from app.schemas.verification import VerificationCreate, VerificationRead, VerificationUpdate + +router = APIRouter() + + +async def _ensure_study_exists(db: AsyncSession, study_id: uuid.UUID): + study = await study_crud.get(db, study_id) + if not study: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Study not found") + return study + + +@router.put( + "/", + response_model=VerificationRead, + status_code=status.HTTP_200_OK, + dependencies=[Depends(require_study_roles(["PM", "CRA"]))], +) +async def upsert_verification( + study_id: uuid.UUID, + payload: VerificationCreate, + db: AsyncSession = Depends(get_db_session), + current_user=Depends(get_current_user), +) -> VerificationRead: + await _ensure_study_exists(db, study_id) + try: + vp = await verification_crud.upsert_progress(db, study_id, payload) + except ValueError as exc: + raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)) from exc + await audit_crud.log_action( + db, + study_id=study_id, + entity_type="verification", + entity_id=vp.id, + action="UPSERT_VERIFICATION", + detail=f"{payload.level} progress subject {payload.subject_id} upserted", + operator_id=current_user.id, + operator_role=current_user.role, + ) + return VerificationRead.model_validate(vp) + + +@router.get( + "/", + response_model=list[VerificationRead], + dependencies=[Depends(require_study_member())], +) +async def list_verifications( + study_id: uuid.UUID, + site_id: uuid.UUID | None = None, + subject_id: uuid.UUID | None = None, + level: str | None = None, + db: AsyncSession = Depends(get_db_session), +) -> list[VerificationRead]: + await _ensure_study_exists(db, study_id) + items = await verification_crud.list_progress(db, study_id, site_id=site_id, subject_id=subject_id, level=level) + return [VerificationRead.model_validate(i) for i in items] + + +@router.get( + "/subjects/{subject_id}/{level}", + response_model=VerificationRead, + dependencies=[Depends(require_study_member())], +) +async def get_verification( + study_id: uuid.UUID, + subject_id: uuid.UUID, + level: str, + db: AsyncSession = Depends(get_db_session), +) -> VerificationRead: + await _ensure_study_exists(db, study_id) + vp = await verification_crud.get_progress(db, study_id, subject_id, level) + if not vp: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Verification not found") + return VerificationRead.model_validate(vp) + + +@router.patch( + "/{verification_id}", + response_model=VerificationRead, + dependencies=[Depends(require_study_roles(["PM", "CRA"]))], +) +async def update_verification( + study_id: uuid.UUID, + verification_id: uuid.UUID, + payload: VerificationUpdate, + db: AsyncSession = Depends(get_db_session), + current_user=Depends(get_current_user), +) -> VerificationRead: + await _ensure_study_exists(db, study_id) + vp = await verification_crud.get_by_id(db, verification_id) + if not vp or vp.study_id != study_id: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Verification not found") + + updated = await verification_crud.update_progress(db, vp, payload) + await audit_crud.log_action( + db, + study_id=study_id, + entity_type="verification", + entity_id=verification_id, + action="UPSERT_VERIFICATION", + detail=f"{updated.level} progress subject {updated.subject_id} updated", + operator_id=current_user.id, + operator_role=current_user.role, + ) + return VerificationRead.model_validate(updated) diff --git a/backend/app/crud/data_query.py b/backend/app/crud/data_query.py new file mode 100644 index 00000000..b2803ddc --- /dev/null +++ b/backend/app/crud/data_query.py @@ -0,0 +1,117 @@ +import uuid +from datetime import date, datetime, timezone +from typing import Sequence + +from sqlalchemy import select, update as sa_update +from sqlalchemy.ext.asyncio import AsyncSession + +from app.models.data_query import DataQuery +from app.models.site import Site +from app.models.subject import Subject +from app.schemas.data_query import DataQueryCreate, DataQueryUpdate + + +async def _validate_site_subject(db: AsyncSession, study_id: uuid.UUID, site_id: uuid.UUID | None, subject_id: uuid.UUID | None): + if site_id: + result = await db.execute(select(Site).where(Site.id == site_id)) + site = result.scalar_one_or_none() + if not site or site.study_id != study_id: + raise ValueError("Site not found in study") + subject_site = None + if subject_id: + result = await db.execute(select(Subject).where(Subject.id == subject_id)) + subj = result.scalar_one_or_none() + if not subj or subj.study_id != study_id: + raise ValueError("Subject not found in study") + subject_site = subj.site_id + if site_id and subject_site and site_id != subject_site: + raise ValueError("Site and subject mismatch") + + +async def create_query( + db: AsyncSession, + study_id: uuid.UUID, + query_in: DataQueryCreate, + *, + created_by: uuid.UUID, +) -> DataQuery: + await _validate_site_subject(db, study_id, query_in.site_id, query_in.subject_id) + dq = DataQuery( + study_id=study_id, + site_id=query_in.site_id, + subject_id=query_in.subject_id, + visit_id=query_in.visit_id, + title=query_in.title, + description=query_in.description, + category=query_in.category, + priority=query_in.priority, + assigned_to=query_in.assigned_to, + due_date=query_in.due_date, + status="OPEN", + resolution=None, + closed_at=None, + created_by=created_by, + ) + db.add(dq) + await db.commit() + await db.refresh(dq) + return dq + + +async def get_query(db: AsyncSession, query_id: uuid.UUID) -> DataQuery | None: + result = await db.execute(select(DataQuery).where(DataQuery.id == query_id)) + return result.scalar_one_or_none() + + +async def list_queries( + db: AsyncSession, + study_id: uuid.UUID, + *, + status: str | None = None, + site_id: uuid.UUID | None = None, + subject_id: uuid.UUID | None = None, + assigned_to: uuid.UUID | None = None, + overdue: bool | None = None, + category: str | None = None, + priority: str | None = None, + skip: int = 0, + limit: int = 100, +) -> Sequence[DataQuery]: + stmt = select(DataQuery).where(DataQuery.study_id == study_id) + if status: + stmt = stmt.where(DataQuery.status == status) + if site_id: + stmt = stmt.where(DataQuery.site_id == site_id) + if subject_id: + stmt = stmt.where(DataQuery.subject_id == subject_id) + if assigned_to: + stmt = stmt.where(DataQuery.assigned_to == assigned_to) + if category: + stmt = stmt.where(DataQuery.category == category) + if priority: + stmt = stmt.where(DataQuery.priority == priority) + if overdue is True: + stmt = stmt.where(DataQuery.due_date < date.today(), DataQuery.status != "CLOSED") + if overdue is False: + stmt = stmt.where((DataQuery.due_date >= date.today()) | (DataQuery.due_date.is_(None)) | (DataQuery.status == "CLOSED")) + stmt = stmt.offset(skip).limit(limit) + result = await db.execute(stmt) + return result.scalars().all() + + +async def update_query(db: AsyncSession, dq: DataQuery, dq_in: DataQueryUpdate) -> DataQuery: + update_data = dq_in.model_dump(exclude_unset=True) + if "status" in update_data: + if update_data["status"] == "CLOSED": + update_data["closed_at"] = datetime.now(timezone.utc) + else: + update_data["closed_at"] = None + if update_data: + await db.execute( + sa_update(DataQuery) + .where(DataQuery.id == dq.id) + .values(**update_data) + ) + await db.commit() + await db.refresh(dq) + return dq diff --git a/backend/app/crud/verification.py b/backend/app/crud/verification.py new file mode 100644 index 00000000..abe73eeb --- /dev/null +++ b/backend/app/crud/verification.py @@ -0,0 +1,108 @@ +import uuid +from datetime import date +from typing import Sequence + +from sqlalchemy import select, update as sa_update +from sqlalchemy.ext.asyncio import AsyncSession + +from app.models.subject import Subject +from app.models.verification import VerificationProgress +from app.schemas.verification import VerificationCreate, VerificationUpdate + + +async def _validate_site_subject(db: AsyncSession, study_id: uuid.UUID, site_id: uuid.UUID, subject_id: uuid.UUID): + result = await db.execute(select(Subject).where(Subject.id == subject_id)) + subj = result.scalar_one_or_none() + if not subj or subj.study_id != study_id: + raise ValueError("Subject not found in study") + if subj.site_id != site_id: + raise ValueError("Site does not match subject") + + +async def upsert_progress( + db: AsyncSession, + study_id: uuid.UUID, + data: VerificationCreate, +) -> VerificationProgress: + await _validate_site_subject(db, study_id, data.site_id, data.subject_id) + + result = await db.execute( + select(VerificationProgress).where( + VerificationProgress.study_id == study_id, + VerificationProgress.subject_id == data.subject_id, + VerificationProgress.level == data.level, + ) + ) + existing = result.scalar_one_or_none() + if existing: + update_data = data.model_dump() + await db.execute( + sa_update(VerificationProgress) + .where(VerificationProgress.id == existing.id) + .values(**update_data) + ) + await db.commit() + await db.refresh(existing) + return existing + + vp = VerificationProgress( + study_id=study_id, + site_id=data.site_id, + subject_id=data.subject_id, + level=data.level, + percent=data.percent, + last_verified_at=data.last_verified_at, + verifier_id=data.verifier_id, + notes=data.notes, + ) + db.add(vp) + await db.commit() + await db.refresh(vp) + return vp + + +async def get_progress(db: AsyncSession, study_id: uuid.UUID, subject_id: uuid.UUID, level: str) -> VerificationProgress | None: + result = await db.execute( + select(VerificationProgress).where( + VerificationProgress.study_id == study_id, + VerificationProgress.subject_id == subject_id, + VerificationProgress.level == level, + ) + ) + return result.scalar_one_or_none() + + +async def get_by_id(db: AsyncSession, verification_id: uuid.UUID) -> VerificationProgress | None: + result = await db.execute(select(VerificationProgress).where(VerificationProgress.id == verification_id)) + return result.scalar_one_or_none() + + +async def list_progress( + db: AsyncSession, + study_id: uuid.UUID, + site_id: uuid.UUID | None = None, + subject_id: uuid.UUID | None = None, + level: str | None = None, +) -> Sequence[VerificationProgress]: + stmt = select(VerificationProgress).where(VerificationProgress.study_id == study_id) + if site_id: + stmt = stmt.where(VerificationProgress.site_id == site_id) + if subject_id: + stmt = stmt.where(VerificationProgress.subject_id == subject_id) + if level: + stmt = stmt.where(VerificationProgress.level == level) + result = await db.execute(stmt) + return result.scalars().all() + + +async def update_progress(db: AsyncSession, vp: VerificationProgress, data: VerificationUpdate) -> VerificationProgress: + update_data = data.model_dump(exclude_unset=True) + if update_data: + await db.execute( + sa_update(VerificationProgress) + .where(VerificationProgress.id == vp.id) + .values(**update_data) + ) + await db.commit() + await db.refresh(vp) + return vp diff --git a/backend/app/db/base.py b/backend/app/db/base.py index a1aeb9dd..8a18a1c3 100644 --- a/backend/app/db/base.py +++ b/backend/app/db/base.py @@ -14,3 +14,5 @@ from app.models.subject import Subject # noqa: F401 from app.models.visit import Visit # noqa: F401 from app.models.ae import AdverseEvent # noqa: F401 from app.models.issue import Issue # noqa: F401 +from app.models.data_query import DataQuery # noqa: F401 +from app.models.verification import VerificationProgress # noqa: F401 diff --git a/backend/app/models/data_query.py b/backend/app/models/data_query.py new file mode 100644 index 00000000..135f5bce --- /dev/null +++ b/backend/app/models/data_query.py @@ -0,0 +1,32 @@ +import uuid +from datetime import datetime, date + +from sqlalchemy import Date, DateTime, ForeignKey, String, Text, func +from sqlalchemy.dialects.postgresql import UUID +from sqlalchemy.orm import Mapped, mapped_column + +from app.db.base_class import Base + + +class DataQuery(Base): + __tablename__ = "data_queries" + + id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) + study_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("studies.id"), index=True, nullable=False) + site_id: Mapped[uuid.UUID | None] = mapped_column(UUID(as_uuid=True), ForeignKey("sites.id"), index=True, nullable=True) + subject_id: Mapped[uuid.UUID | None] = mapped_column(UUID(as_uuid=True), ForeignKey("subjects.id"), index=True, nullable=True) + visit_id: Mapped[uuid.UUID | None] = mapped_column(UUID(as_uuid=True), nullable=True) + title: Mapped[str] = mapped_column(String(255), nullable=False) + description: Mapped[str | None] = mapped_column(Text, nullable=True) + category: Mapped[str] = mapped_column(String(50), nullable=False) + priority: Mapped[str] = mapped_column(String(20), nullable=False) + assigned_to: Mapped[uuid.UUID | None] = mapped_column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=True) + due_date: Mapped[date | None] = mapped_column(Date, nullable=True) + status: Mapped[str] = mapped_column(String(20), nullable=False, default="OPEN") + resolution: Mapped[str | None] = mapped_column(Text, nullable=True) + closed_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True) + created_by: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=False) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False, server_default=func.now()) + updated_at: Mapped[datetime] = mapped_column( + DateTime(timezone=True), nullable=False, server_default=func.now(), onupdate=func.now() + ) diff --git a/backend/app/models/verification.py b/backend/app/models/verification.py new file mode 100644 index 00000000..6802b1b2 --- /dev/null +++ b/backend/app/models/verification.py @@ -0,0 +1,27 @@ +import uuid +from datetime import datetime, date + +from sqlalchemy import Date, DateTime, ForeignKey, Integer, String, Text, UniqueConstraint, func +from sqlalchemy.dialects.postgresql import UUID +from sqlalchemy.orm import Mapped, mapped_column + +from app.db.base_class import Base + + +class VerificationProgress(Base): + __tablename__ = "verification_progress" + __table_args__ = (UniqueConstraint("study_id", "subject_id", "level", name="uq_verification_subject_level"),) + + id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) + study_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("studies.id"), index=True, nullable=False) + site_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("sites.id"), index=True, nullable=False) + subject_id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), ForeignKey("subjects.id"), index=True, nullable=False) + level: Mapped[str] = mapped_column(String(10), nullable=False) # SDR / SDV + percent: Mapped[int] = mapped_column(Integer, nullable=False, default=0) + last_verified_at: Mapped[date | None] = mapped_column(Date, nullable=True) + verifier_id: Mapped[uuid.UUID | None] = mapped_column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=True) + notes: Mapped[str | None] = mapped_column(Text, nullable=True) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False, server_default=func.now()) + updated_at: Mapped[datetime] = mapped_column( + DateTime(timezone=True), nullable=False, server_default=func.now(), onupdate=func.now() + ) diff --git a/backend/app/schemas/data_query.py b/backend/app/schemas/data_query.py new file mode 100644 index 00000000..0d44b183 --- /dev/null +++ b/backend/app/schemas/data_query.py @@ -0,0 +1,51 @@ +import uuid +from datetime import date, datetime +from typing import Optional + +from pydantic import BaseModel, ConfigDict + + +class DataQueryCreate(BaseModel): + title: str + description: Optional[str] = None + category: str + priority: str + site_id: Optional[uuid.UUID] = None + subject_id: Optional[uuid.UUID] = None + visit_id: Optional[uuid.UUID] = None + assigned_to: Optional[uuid.UUID] = None + due_date: Optional[date] = None + + +class DataQueryUpdate(BaseModel): + title: Optional[str] = None + description: Optional[str] = None + category: Optional[str] = None + priority: Optional[str] = None + assigned_to: Optional[uuid.UUID] = None + due_date: Optional[date] = None + status: Optional[str] = None + resolution: Optional[str] = None + + +class DataQueryRead(BaseModel): + id: uuid.UUID + study_id: uuid.UUID + site_id: Optional[uuid.UUID] + subject_id: Optional[uuid.UUID] + visit_id: Optional[uuid.UUID] + title: str + description: Optional[str] + category: str + priority: str + assigned_to: Optional[uuid.UUID] + due_date: Optional[date] + status: str + resolution: Optional[str] + closed_at: Optional[datetime] + created_by: uuid.UUID + created_at: datetime + updated_at: datetime + is_overdue: bool | None = None + + model_config = ConfigDict(from_attributes=True) diff --git a/backend/app/schemas/verification.py b/backend/app/schemas/verification.py new file mode 100644 index 00000000..587c21bf --- /dev/null +++ b/backend/app/schemas/verification.py @@ -0,0 +1,38 @@ +import uuid +from datetime import date, datetime +from typing import Optional + +from pydantic import BaseModel, ConfigDict, Field + + +class VerificationCreate(BaseModel): + site_id: uuid.UUID + subject_id: uuid.UUID + level: str + percent: int = Field(ge=0, le=100) + last_verified_at: Optional[date] = None + verifier_id: Optional[uuid.UUID] = None + notes: Optional[str] = None + + +class VerificationUpdate(BaseModel): + percent: Optional[int] = Field(default=None, ge=0, le=100) + last_verified_at: Optional[date] = None + verifier_id: Optional[uuid.UUID] = None + notes: Optional[str] = None + + +class VerificationRead(BaseModel): + id: uuid.UUID + study_id: uuid.UUID + site_id: uuid.UUID + subject_id: uuid.UUID + level: str + percent: int + last_verified_at: Optional[date] + verifier_id: Optional[uuid.UUID] + notes: Optional[str] + created_at: datetime + updated_at: datetime + + model_config = ConfigDict(from_attributes=True) diff --git a/pg_data/base/16384/1247 b/pg_data/base/16384/1247 index 18e41d62bcaaa96bfa37a99bba55856351155fc4..87fd63c0a6201b45864a33fb56f726332a85cb15 100644 GIT binary patch delta 392 zcmZoTz}^5vTNqgm@H8Z>Wn=(?Eet=HCkiZ?926op@qq==NX}A?8Kj+oK^aW)F{m>r zFfei`{Qv)79xP&=$iNU^mRgjVmYJMbl9`_uUr>~vUX)rqoza9*d%DeWMhPaH#L0e1 zRuP0uMYH3V|CLl1?XS^_<_wBS$*IkeP=LJR85?#{0CcGkW0m<0(T z-uK>{d2il(vs(v4TL;Olnp6wb!Zo?3)YOMqK8WYCUrLBR|Dc3K5(oHa^7|H+?>_5K zWy0)#{w$&e)Q6;&WWAoX|LY-#hxiKFy@k_0*?FI=^fi^;dkLpUq24(tn@6Z*{-Vy9 zSEV>9{(xs6ee)R458OLYIzD(noeiO5>MTmi$xQgOQ}W-M-UR=(bhdNU%lV`(9l&rpu)05nxVTV5t9AdnYzp8n}x@rj&M|#0p^!DhUput;Fa3l)(GdvO)HL z3$tyC68V#`HU-ywRzPj&mC}19y|QdAo&3>@r)MCi3AmMf)mV05JNM2Jc?bJbXHo#K z>6HSxld#S~gvdXJ`^{}B;mf)+0(3>+(8;yGtZayoqX_O^Xk*D;+N9xOkNsVwzu+<^ zpgMBxF+I7TPB)x#eo)4JvQ|YHToA~P`DFbSf$PmcS$Y6@(#6T~Q&n>dPRd$N7L5XA zfl&2jS8T`;8v$bTY;~U4fFm{x#O7G3E4!6Tb;Qy@tiQ?6%dJ>*Ym0q4vh-v$7tzxc zDcoFNy|r8=cYd`3rjnh>ke^Hjl6-4aqGc2h3^`s70kDsnJgJ;uoJ?j*7si_Y?)H*5H>2IA@nH; z4q-zRwmoOxSriv}@61s*%n#qPQa|=l452!G5~!WjpQ<@~uS`s9CF&$`!I5R!68Sy=3+#)<&RtMZl5IYw8?DB4p>ahBn35EDMmL zUM*BgYkb!gV%!gVBO@on0@5fMMC!8!nJ9VkKwvKz6bwD4z#)>=Brjp<`C>+*R9#n z70Wqduy4KFJg_c0Vz5)aV-2kCC1BDKgUxA)w%q1Rz>_1@y98L2;1a;q!M?R*Ujpd$ zy_2k6#0hsb9B2c_aLHPYJ1|c;ZngrkOVmw1(Zos9z?^Xq*o1NvIeB2_Ba665szh1G|T9$YUDs|D1uH!?Gi| x|Fezb3~U`1bMnB5Z0yP|-BnZB(^{|h9o!=V5G delta 83 zcmZoTpwMtYzM+M&g{g(Pg{6hHg>4Hv%K;vPdn*|kfZzke0jB8!2iPA>|MGxMW^w?d X3L0jaF0hcDWBZ9i>MWVsk$`Z6nW#u>$m=xtld zK(`iY>LwvZOJbHPEi8x#3v?s6Xjf1h7fN8~ym#lvr-*@cVCKGe?s?xmfA?N>)~2fV zDNBbryM1!n)-im@tgbdkUR8S|OZOj{)YZt<2T>ZhTr*w&@RP;7vW9l*Opz(SIr8B} zl!n3KDCBDvZ6mLJX0-t=R-P23XEPMUvFYdQcdX{trO9_TSaaDeq-XifF?$~TnaFJQ zM1d6FS-`}zXJNvo0`o9nk(a)bA*s?+W@e0jCbD8q93@pMb#H8JG-(=_%vhHkmi@tg zrLRZfQV8lEGxp5R*g>2k$-p0dPNqpwXXv>Ab-)6B`{NVPr9IJ-AawLhq7M#M$0P>n zNf!L`MYN5p%=3zd+kQ@xS^b%ZQQ!eJVxM{w1qz$-x7IGtA zUuo>94Al_x%HaMl|5>2bAV99UxbjsnL-h2K)UvGDx65^LX zLplF83b{72LZJ$b$;An%Pt!V?!vMX$1N8S|97lpK{WCf+(fjm8QuN+$lDXpxs3@AL<2qk*<$rObWbwDXj#8fWG83yt>G~YI+;4)O|L^2UX ztfxjKf31RuS(;5f8ulzp(J{z7yIq#b#L9L5S-u2Vf$vwv zlczNQwFq^3Nofv6?50FYjtG>+fU4hu`Z0&7t_g6ZZ6ejilUpQ6W&`P@k)+VUQLB4J zlPJO~?GB=Mx=6$w#8S88Ufw}~E9`Iwr3n|n5KbX_oJ_D1^7GI#)bNE-$g|NLiiqYf Db(*}a delta 207 zcmZo@;Al9&zJVoyS)zR9X7+@6l1vO|CoivD2cp8OK-6aT>c1?^6$VQ-vp4LQWomGm zJR{Ly@{hT7AZEq9bwFyf#{4@D%pPGt6CQL*aq=;Mz*%R$%`<;xvof#XU$T{*@uw&U z6Ii^#X*-7)m$8p9T5&+IoMZ^FA diff --git a/pg_data/base/16384/1259_fsm b/pg_data/base/16384/1259_fsm index 92c04596a484db151c0710158a312161b21a5918..640ad1e4a88cac91dde6a4e741b06f208b9ba6de 100644 GIT binary patch delta 22 ccmZoTz}Rqraf6ZvBjZLzRt_d+Aa#u&08v{8I{*Lx delta 27 hcmZoTz}Rqraf6b_W_cGTmW>81ESu$An1PI|+yH_M2!8+o diff --git a/pg_data/base/16384/24853 b/pg_data/base/16384/24853 new file mode 100644 index 0000000000000000000000000000000000000000..6d17cf9d15fb9f4a2358a2d079f3b8c755d005fa GIT binary patch literal 8192 zcmeIu0Sy2E0K%a6Pi+o2h(KY$fB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM GyblZ@00031 literal 0 HcmV?d00001 diff --git a/pg_data/base/16384/24858 b/pg_data/base/16384/24858 new file mode 100644 index 00000000..e69de29b diff --git a/pg_data/base/16384/24859 b/pg_data/base/16384/24859 new file mode 100644 index 0000000000000000000000000000000000000000..f45b6ec5697d3f82602f40d016704304312fbf15 GIT binary patch literal 8192 zcmeIuyA6Oa320w`$t9AV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!Ct+0u}L+295v# literal 0 HcmV?d00001 diff --git a/pg_data/base/16384/24887 b/pg_data/base/16384/24887 new file mode 100644 index 0000000000000000000000000000000000000000..30c65135fd7dbf8a6acf232bc2c6ac7e33c83de2 GIT binary patch literal 16384 zcmeIuK@ET~3GjekZU5m#L_GU7y)BL?x#YCA z`P}A6ZRl3HzsK&4B>@5i2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5Fjv8U>O-M pn*ad<1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oU&9paQY)2AKc= literal 0 HcmV?d00001 diff --git a/pg_data/base/16384/24888 b/pg_data/base/16384/24888 new file mode 100644 index 0000000000000000000000000000000000000000..890eb05cd23a0e10eab143162969bdec9d4a0e61 GIT binary patch literal 16384 zcmeIuK@ET~3;3J z^SRBD+R&}?e2?85O9BK45FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV6TGz%nvi pHUR;3J z^SRBD+R&}?e2?85O9BK45FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV6TGz%nvi pHUR7*;;t;c&;0009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5cpGIY0qB- C&j!r^ literal 0 HcmV?d00001 diff --git a/pg_data/base/16384/24897 b/pg_data/base/16384/24897 new file mode 100644 index 0000000000000000000000000000000000000000..8a8e39359a41cf8827735e6f956f07f0b9204bfd GIT binary patch literal 8192 zcmeIuO$~rB3CfRsL_Fs;wHAA1&05x; zk8O_9!?5!H4u?C21PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfWV&uOMCtT Dgggfc literal 0 HcmV?d00001 diff --git a/pg_data/base/16384/24899 b/pg_data/base/16384/24899 new file mode 100644 index 0000000000000000000000000000000000000000..a8e6a04649ef95b86661a086bbf72678380e72bf GIT binary patch literal 8192 zcmeIuO$~rB3t1?`7Fn~FedP04 zql_@Ee7?i!jv)a81PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNCfr@+>qzhzPe AfB*mh literal 0 HcmV?d00001 diff --git a/pg_data/base/16384/24921 b/pg_data/base/16384/24921 new file mode 100644 index 0000000000000000000000000000000000000000..9b94bad0e6cfc7ab80602dea21f7ede0af0492b9 GIT binary patch literal 8192 zcmeIuyA6Oa3@5zl%}t;G>pvzD#r zbDyL1Fs!`4!{Lr00RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAn>Qa(w@J? C^9FkW literal 0 HcmV?d00001 diff --git a/pg_data/base/16384/24923 b/pg_data/base/16384/24923 new file mode 100644 index 0000000000000000000000000000000000000000..4107f6a4a3b5c0e6d05db409673f900ce39c4c66 GIT binary patch literal 8192 zcmeIuyA6Oa32_1Fr)FA(D;lfd}ankG(OONm|;MgnL!?n dFNe%G11gY3769^P(D>45d?^Nj&E{q&IRWTP9Xk453n-K@ZFJfvyxGZYA145^F$xm^ diff --git a/pg_data/base/16384/2604 b/pg_data/base/16384/2604 index badd733e19904729d79461a40a8142998c66dbdf..9d81ebef82a0d29dad14887addca60959ddf880f 100644 GIT binary patch delta 216 zcmZp0XmAi<00N1swTvLTgMop2qCkd#LvICRLr(?cf$j=M1|Z(pSivQy#tc%zz@P%5 z7-Se&7??OD80-=m7_1T}&l8%XVpt23LsuvbRcH%Q7$-bO-4aD1*lwUkDX2n8ph8g~ j7M#40e}<}o30B3DP{k5p#gpauW;2@@)o%X7%OV5-EFK@) diff --git a/pg_data/base/16384/2606 b/pg_data/base/16384/2606 index 1592ab4c806213c3eb88c25969db574671f4196e..42953592135988126df8a263f034b37c52721533 100644 GIT binary patch delta 1020 zcmZ|N&ubGw6bJCPv!gEYR|P|{Ka!|WV{KF-#u7x5je-=R7JBgH?%1w%%`cNp3W{h_ zf8a?1?-r}*MZ5?t`3L+Dyn65uZyuv~=*c>}&aBQDV>=!dKJyq)Z#Wj&052a&)w1u0s zbNE1yxUciF@UQr85g(IrF$;m(cGqx2c zO}KYkZ}>dE=JUAD=kXOKy|x+GdL47b-|nlre1xo<0LnixlcL3oyx{*v#t~!6`#vZg z^ByM4@aCiLtQ0dsR72wY5E0*1XQad1<2z~LkdQMs%=uRI9o{J4NeM>@Iah``n>F9z G9s2{I-}l%6 delta 36 qcmZoTz|_#dw1FjoN5fOsVRM)r+Bf{}fpA`6J% LU}6IbJmd!e02~eA delta 82 zcmZoTz}Rqraf6J50vj6x8v_Fv11UHSVuJwNL`8WOsVRMz)PWf{|^ZA`6J% J0P!F30|4>O4b1=m diff --git a/pg_data/base/16384/2608 b/pg_data/base/16384/2608 index 7e21be476528b83ec1bbc6e5f3a2cc8976f429db..657630e438fcea5a97cc2dd6527ad9d46887d1f6 100644 GIT binary patch delta 4866 zcma)=$xa?e6osp?V=%_}$C&8{evH8w%skH+8{+}nc%Bm{on1D0h4vy3z#`JWvl1y$ zR*95Flx?0MZxBU_6lIY`cm&t2KDTwM+)Wx;sJeB&y62wmt}6WYx2CuD-&fJs4aZv! z+JB0S{rM(3X#Tl!5dAXOaM+ZL9Fu#-TywuG=5y0%OjEb{_qZ{yV|UYy*X&rNxMh^v z1{V|eD&QJ&xUG~+%x46?3_$DQgMynV_$j!JW@BD}o3i647=Ph(CNsJL?hSFz<0Ms; z0Y4$|S&4${DEKjPPeX3ZibAJr0AB-4&DHmRjH)$_T{W+KP3^m=nmtn0y!13_!}56L zkv7>&c*>GmMg13K{4p87k8$XGCFK(HoWMurLGz5bhb6dW7=23IgE+lwB()-^O8}n$ zblUnKe@DGpz$$snlDOXb9|f$MN1n#boqaQTuka$uKP2D#)bCzFzzZptmw|(r zD7ZpK*W&uSALvC^%`!B9+LvJ+bIW)G<1jttmWWgBQK=86o)WW2rdFw$4m%EG7iIv> zED*O6aCt9sKe&0~mh}K5PNm>6E5cmawBs}V$ zNmVkylHg3LnwqC^b7ukPtu7Um?JsiCaIgd@ z-;o?(&JlOM1a}f#J8=V?aFJ8_V^Rv91t8f}y7BJd=E-2o^|N61MzDcD3tJJJ(dtpA6h knnq~kl-7xfWZZ>un4WSch*Pa=rvB|;QP;1BwT4Rc9<@SIM*si- delta 58 zcmZoTz|jCiEsRr`Sa=SEtYBmS0v(1IauWq)wl892ddIPS10&M|B$AJ1`wKZH2}S@W CU=lI_ diff --git a/pg_data/base/16384/2610 b/pg_data/base/16384/2610 index 6693f1d8b5506caaa7cd65687e6e1bafa277ab01..b86fed5593f63dca89b278432c0d0f9ce45648e6 100644 GIT binary patch delta 593 zcmZoTz|?SnX#-0G&kmt=j0`}qhhYWFWPyeTorvxP#tmIQj2u9m(CNdtqXWq9NMKB8 z_hDSnR>SzC)rT64pEI9{A^IA3TR4Y fpavuP3=+324Dx77rGZMN5+|SQo3vS==Yuc+ReWZ> delta 46 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 vDt)8&x50Cy)+W^6bUOs7el2RvYF|>=2& delta 2656 zcmchZZA?>F7{||fDCJU0DMenKSSxdi%c2zlH5g@^VO6BQY%)z;MKl!ZLeLL}WJxJH zkxlG?t3BF*>)3`blgezQ+2VxF#gHWuOg2IW>)00fuo#zZX7j^B_S|!->20D*_F+wa z?csl(m-F&G_u?5!@eJuw34SgNZl#21$o`JhmlIYuZ|JzQgf#?cqZ}wLmiq%5xoe?L zA|!(>APFh5ojQ{y+t;qQMOs4Fsm+|;e(?gj18F5^D6wcPdO6c_AZhfdlyauIR{k*} zf+-OXDbYe*3pavXv@1=%|MY!%YLV1*zSvjtZ%n^&qU3Spec>s25;yd(mpp-{Crv(f zZZ)ec`LC?R^WvZDKnRtuXp$0cdJeI`B+X}4b+DRs)j^JVjgF9SvI)7loRGU3LOgg` z3vg^h1`F9Qb?_|9b-^NLbHQ5H=7QY?OVQ;yWCgMkS%vhWn`FT2L&h-ND7w!ec~(O9 z70Tv3bJHkBwavv+JQBxDa# ziyTA_Bgc?VXfNMHe6QAdM<})m;KQTV3B!BAIKyP2JNgak0Fnsc{v;T^ zt0ZB#?rJ5dwxQ)ZoArQGPQA7zYMm(D>#se`uMuYMBdQ}y5J4jYaX~>?pF4*2^L0_V z-1q6jz*Kk`KKm;%-7TuTfeb~fJd`!GZeGmlv_wfjQ<%9Iwm*8EXtC>+*GXt(Vk~wq zS|WlU9f*VnBGkUuw6pm={(F_tBi`RKKNa2nka3mISL#0YrN{33UtSL@cN(c2I>iYbbMCL|f(=($7 zYFTxFwmeGL`2UVNJUZ6j21cz?G5D5uw1Jc6%XZs#AuHv8^0JeP%zP(d5N9JBo$PZj zRH0&i2g0a0%KfaN9Wrrf*z9MP4nDkr!%;D;ukbTZCs)mOKeNhwIAYJ0{ibr(C&N|@ zHY+Q^*uW{cfkiBX0jh5X>G?<;%l2+ZL52ndarxIY?Mfgz?ysRgZxAAJ??)v*z4wp;M>UGH=FPBBDsb~Z;R$N9su4&_@05g6OlmU zP$gHmh45X5i^+S(cPHK0Ouxa>%La6fJ~Xg{YTPkujLjQJYv>RW)M%m_x6BYjUgUSi zqu1;k=m6eE_@;@)?2obvSJVwC+(7uoG>07A4bydKcep*0h zFF}DiDllU07ucg)@o7Bb(O*-K_U!2EU_)ewh85SAbCuOky|OiA2T5=c(pX#=f9MOW zR+i&t?2ci@toeqMR;O0B zglv;-sF04WS@Q*l_yst69r10+ty!mB&)NgNhWM7zxtKLyZ&f?>d9W9ets7R%`dC}N znUq~cHe{AVj2B{+Tsm8hj9teK}Jbov~WD54UTG{H#BoUgV`JN+Wq z0D$@gH~;zXP*3%WxE+^d(d|5ElTlwddg8(4YkS`w>t($ZBLfh0Fc?hcSIFc~n5V!H0K^VJY%ot@qvKjxGZ_W}2D?O% cDhQAU@@O?mq^^4WjBox0Cb5FY5)KL delta 34 ocmZo@U~Fh$+`yv1ec;k^Mg}0LU?`Z(uaLRX>5uH@61yHo0KM%CEdT%j diff --git a/pg_data/base/16384/2658 b/pg_data/base/16384/2658 index fd0de5fd62d534bd01116f77314ba4be519cae83..c9275dcbcd55138b1b9626e67236ff679e694637 100644 GIT binary patch delta 2073 zcmZvdJya7x5XXmziYOWZpHcjX->9hZlW5@{&&D#PA4NQplbnVm-fehLT?z|J3y`P{ zC6x~=Eh#A}c~+K|l$8EwZ}-Ta=J9`<`_0VmPHtxCtPgbX_r7m2(|>5~=(j$?Cz~ma zE@d-Yk@KZME$H{>0_C9+v<7WJ9q0pW<52Evo}OXd0sDhB3(?mCZDJh&Tfy4J`V(sr zYYkfO7HAvVf}TS2&?;1bUO^wbg@|(aLeTbdp0<_|1g%2jp9=I0`U!o2y0Fu-Lq*s& z@tnt6gE~+N%7U#xJ4?7ARtIW9Yk2+*Z9qk+26dr4R9d=<4e(_E+Fpd?VxGEKH=s4B z1J$6?V&VJLli|pr5z09)U82yJUfHkmZ;6jX!{9HN%XW1kF*tM-{5kXX^c$}twZ)+< z_!IEDH|N#kP1HU|G*9~U1KKd(V_?2N3Gf>xfcd_}-{yObzchz(ltcZ7s|2d9 z#O0XppH~j-;C2g}c-68ic_Tp&G`BMrbYJt{jM@L5=JT`B?oYvn zyGcNAW`gb{0XDyF{H=@yp}YQj(Obqp@Ztm_oxx3QXf&l4a#HFe=!WKVUf{p>y&$eO zK@*f$2h`nAmbKCR9-PQ^9oO=Liq}wwU`IjMG&eeQbFT}Tiqe(is4pw z2)c~ocI2Z_*Bov=ioPnXS;R;*1at2HI0Mrbf^sIn>UTlM zExw!CDEP5|G81aBF;6GPgN->Srr&>D13cN{06PPoY;l0id9o@0RAxNcn5Wxx$oQM; zmw5kNd_3XQM%pmF5MPKVoZ|Inn6x|mdBQOdys%ksOTVeclOUdO%tPtQcG5;d4LIi2 zwpZrK!MpRh`zeY8+%WWK8aP5Wm4PQ52ebme8Te9NhXZ)RF|S~gnP!l1o^a{_FRTQ9 zOW#QFgi~DlvaU~6`}2Tf|G5btb)Nil5o*G*!EVFH^pFFVZ;xe0_7>Gw7heY_(G%?L MSASd{%lzv93oaX-^Z)<= delta 39 scmZoTz|jCiEsRr`Sa==;tzcvTf)@-L(o+SPZftaNlG?5%&2)_g0Q;B==l}o! diff --git a/pg_data/base/16384/2659 b/pg_data/base/16384/2659 index ab1edc3a1df4b261b72189bb135ad118bce3b2b4..325e05362628a2f5e23014617ee61cb13e98a05c 100644 GIT binary patch delta 1363 zcmYk*%T7~K6b9gR=#5K(Q*FIa)KWpbB3=Op-BlCEOqEFqbHmVCJ9cDJu_F_nz+hs+ zl=uWZfCHX@)TuZ8|L%V!r(q?0`|O^*_Uc-_Ua^P2Z%MvW9#+02hEFwT)x)%t{75dW z4jR@*Y$7^{T|{rtKV5j$-2c?D1H=*H7;%CaA{y9|B5crq+pO32@B+jpqJ!8)^!EDi zzppGc@b8C@4ckW?AdV2nh!aGLXNDN|e>RuDzBo<0Z98wNZEc&4a7vf#@FGsjGOR0&HJ+g3s|UQ!4E*Ij-2TEHFyrsz2sMAFZmVOOFl1q z$?J0LiC}Yb*Gqm`3x4BEvL|#=_Jpc%Et3$Zi1vgyMYJcxDWW|gP7&NS&xm8h4W1Ck zh_0vt93wiFIY#uX%qgO0WKI!1Epv+Kvdk%}ZKM9)WE>-I@FwFJ(cWYnBifscV?=wC qaf)bfGENa)(1DyHI`&x0Ht0nx#FDpcT^nM_Tec=Aho9diJEi{?$+9Z| delta 40 tcmZo@U~2%PEsQJ)JPN@p7#V=z4dVid?E(pmcNjN1Z4=wRsDd$$9RT&W3~m4b diff --git a/pg_data/base/16384/2662 b/pg_data/base/16384/2662 index 50b84533c1ad5933d1d1f8a104f6a38668a47239..fa2eb7221389c2b2de911bd884bc147241d58bcf 100644 GIT binary patch delta 314 zcmZo@U}|V!+Q8z#BOtJjkpT#Fm=_3d7I3)3BsgJ;B16Cw1%?J7E&$?$$&AYS8=cAo z>iHS?83Y)j6G7@hfS-X6$d5we^8)#iNPKP}-x-O|1>`#-@i~Be2P8f_kZ+H~X9M!B zVElTZg{(jUOPBzV&jRFIAn}=jd~+l|6Ob>8#AgKZW#D{124f&!8i}t9h8^tz z3=i5T-&4@z)@V;)hydb__JqycioaRw`5E{b3>-2m;>%KtGSf1X6H7Al^WqDN^3#h_ zi;LrnGfPtAGgClT%-{f#{0w|})t8i}R6;bs)brv~Ute6Bl$DxX0@4E0z{;Qja!^WQ zNn(6qDbQJ|KzAU_g{x!1rVe2oTpcqubx?mLK`e#%jEOn=43<^N{N7v>mhi8n;3%U{} z$2&=~I{?KmbOmfKcjD&&#t=6!1WOB1V+a;*IjLo-IdC_CY~*L)0(uyGbV3{q3uq3Y zx`OohlKjNtl6WH%3rmCe%)FG;3XmzuAOZwpfCjPyJ%*|fNdZuv4VQ&L{fGeMV=zXu Y&~!4dkGQBVn(3y-K+`v`^bQXJ064SIiU0rr delta 108 zcmZoTz|?SnX#+@LLifdPmgv^g+LXbWK20mKPy37dlz zWSOK_v?eeZ^cpbSXboWS0J1B9SfI6l;YLfr=3*strg|0z76uE4vecr?w9MqhlFa

9oHmZTzdK`dioU_{n{q<*rFmPEQDP_ncT>Qtx)VD{&vmZjzZ-HLEEGlK$y2EukE z!;0ezkbKC@AP+P*C9xzizOWP+HmQ^MYfDe|Q)iQrLlrNMPb@CZOwUVAi7&~YY@jJ3 zA&ag6>YB+m>JsKMK--Z_EsjU^G1R5Z4AQ9TCi`oO%P=!YF({zwhBz6hYx6%fCP@IV CSgH^J delta 49 zcmZo@U~Fh$+`yv1bHHQ;BLfh$Ffp)C7Eo~6oTDJa#B9)Ouz9hPIn%~~2&Ti;AF DL4*xo diff --git a/pg_data/base/16384/2665 b/pg_data/base/16384/2665 index 5fdfbecab3532673b1a5970dadcd39d4148f1f8f..31c39311cd8f0672412b9a99cb2c202a14dde72d 100644 GIT binary patch delta 1886 zcmai#Ur1Yb6vvNA3Ze8tST{oJ>fP|qt$*S*{=3HLZrL8fka1VaxQHw_YOK0YZxbzc z2)Pf|#=ngoZLR+z(g!IUD3l@Hi|nZsAAA^0h7UgYkcYtn^Fc-j`(90o8z~KZ@;&!= z&-wk%IXCyjH1kZ;R!R8iM?dCS>Zf#Jy3iq5c1QIEazO3Cx_PQwmA@6nvfhR*ej)39 zm=tI;sZ%1UkPa1-22oO_y;YqyR#h5;`hg3iS5(?r(P;tN1680daJX#H1{hk_NnKV+ zfTovp+5zz;gEXkHWW*@7Xwdc|7JB+zRX7|X+VU1GL229RoVbUu>Bx^+MxX@v~voH0eQ+KCv<-j8-SiklcY%`HDS`u z1P%hmghKua>zReC&3!t@3-Gt1x)DQs?9HRbH1O++HJb1@P6H`~o^z zBl1y=#s^i{ugc9A-5SrjMecA*9BCNm5&2ubS%tMmnJ-GnqtU~=jc$JF_VVTG1UnFa z;3?r>yfWMBWq#>v<4cVaAITzDV9nR4@#SWXyL{j9m4-H+^P+yQ%FE3Xhrun`&9n7! ze%;*1ZyGeNZPB>3N#ornk)MI%Ce-G|d9@yX=8-w6*d8Feg1Vp z%z?QiE8gJQ!S_Ou-tOMc;6QKxoq!SPza0rhqk*&4P$baX73lshbl>uIko~=J(ZPYdvt{jvU-FK{z{Hu;127;hICE7nh+=l>YXk4!gir`Cs>zW=pf zx0TelElHM@WXrDf_HAkGD{(*AVtr6@pIp3G(q&%bxb@zaB6Ej2kNmUeN?_j=b)Y19 zV2i)XNO~3eR_M1w->NJ1s+*VAo)UFL!LcnP$CmWp*-|H6;=WUoW^`z-vxru+W$;!> z|HPB-2@A16i>FNsR=!XK-XonZ6eFBX8N@G3&5~#eMgw$sXF0Jj^T6j$FB* zvHy^#qNqiY9Jun8^Svs^U?c22UExM{-`aJhOYMO8c|+wxS8{KZ*l%oUvI&ozv0$Br zU7~iW*<~@}=eR*_kNA1;i#*MXqzNU(o1569kZ8;u(&P2li7N31NPpXt2Cpwi&X|`= zo>)7s$c`s{ng?j?-8|j4EsAl3^tX7MB)7#wkj9oJXPZ1YV_vw>*yJK7(xhAD!loqy z#x!XZEy*!9U$artBO2$VXiN4r%{TaLoU_Q;h9wQ=9;p?00LB5Mwn1OU<~sM2T)`5p zz$Yu%{3HwZ=U-z(_;V!)H|WF16%E5AL*it8C4j}Cj?zONSENlwgBsR?F5=_Vl1t{9 z@c^#IZFHEw8c(C7MPX_-?oAkIGo~hr7!K*^Or((sDWpOHv_meI!Wtss0M^34pt@kg zd{oEt$V*&@bNCif$js75cko5mQPnkkH%xTGQB=bQ&L^MZ9_Rm#8CW%qJV@!dp4IVSHi3Ul6PHs#e3=U2RaD0k$;4Pcrei(k;8WB?+thKHO5zh) zoD1UTxe(6h9W2HZc#>Mi`OF5MCzf%g7tu*N_&5{A%SnZyY3kxSR;L|Aj08>%_G=i3 zOeaw?qc}|%7^cVf#1pJNc5wYz!(U|7bn#>2DSnGDqs_f*GddPYCYi-3buZ=|jL!d# P)4Ao!lHYfi{~iAUvJ#8_ diff --git a/pg_data/base/16384/2666 b/pg_data/base/16384/2666 index 702458714d0a2405ecbad6775d4ff18f47bef0f4..c1a248f57c16077e95c60d0226377014a31ef66a 100644 GIT binary patch delta 267 zcmZo@U~Fh$+`yv1!|-J-BLfg@VQLWFETE9Xq-QWqfk6R?1%Q|Vh(AnKV0Zw;7l8Nx z5N`nD1wcFjh#RJEu2Q-oRL{b|!XN-L1`1dhn9=x5XnaN#J~M+N8Xsss%rGF$%pi}( dmqX^80Tsw13jp~tXnbijz7&JNW^=QXoB$>J9E|_~ delta 40 ucmZo@U~Fh$+`yv16Jff7kpT!=m>k453n=6;ZC;~vO=x1khs{oA`#1sPa13$) diff --git a/pg_data/base/16384/2667 b/pg_data/base/16384/2667 index dbc9471d504e6bbc6825612194be2cebfe6e1bc4..197720f5b8a407f3396b90f9c50ae270bb4d2a34 100644 GIT binary patch delta 270 zcmZo@U~Fh$+`yv1*wlX`$ F2>@f4BfJ0r delta 36 qcmZo@U~Fh$+`yv1GsAQRBLfh$Fgb{A7EmZ*+UT@Tc(aq)K289)DhfmZ diff --git a/pg_data/base/16384/2673 b/pg_data/base/16384/2673 index 9acd20b0a752634309ecc54f7e965f5f5dd30fd3..cdc3497cc89467f9a267cc2b24d902aac9cba880 100644 GIT binary patch delta 2634 zcma*oNk|)E6bJBcVvI43b*fe4R^uKu>bS=}afxx?W7ICDCyySzB}hf976c2Ho;-S~ zSUe>3P;%_Cr{Y1VbOE84oJuc+zDfQe`e2}eKY`zy_r4kC`;uV95R4ek^+9vk|4tJ0 zd99D?FXZ5*F2lO52nQwlLJ`J`pId*W1zB_mi}pS7S%pI81MIK1JJRxM!hC(N6XoWkNx4=7? zXTpn^XTS@RuC6Z&GYW;tLd@@JxQSeS;(T^}I^4qCh&egTQ$@&Ym(H@y!Qb(Hf2F%l z3&~DtLkfJN&2vt9LkUvWDKiuY#Y!xTNo?v^`hp-W%vy7udb8X!x>*FTkhSoOunOQ$0Wn z^M*+@jIluz8a}S!Zul^pGknYMY|o)vh1=V906xS9xis9V;eGId^d){D0gN+R;(eOtao)0f)b1VrDutHv@{_l()naaGOgDvTc`fLA;R_LK!?PGWP z6u!j#3Ea#4F?^A^4?fR)Np6>vNAa(Er{GI%XNPNgW+u!drIHS;2P74t%PCG!G!1$-s`vnh*Q6v|jb W4!o54L%5ZBHoU|ia=(&3Wc>qn%LZxy delta 151 zcmZoTz}9epZ39aKPs4`gj0`}~!VCnz&oY;^j^u{}tKag#954ReU97^VkY+XWmL3mCUKF+O757|_7H u{gD@=k|~dX6GX)drU2gU0u78BOp|$(Lbl5^GhSoc81R94dr&XqIw1hGRWH~8 diff --git a/pg_data/base/16384/2674 b/pg_data/base/16384/2674 index 20156a53091b0b07d0c5a0dc89eda53124e46cc4..166e65fb923b3b1308dfd912f8700be0e31dc7f3 100644 GIT binary patch delta 2955 zcmZ{mUu;uV9LIlW-PUgF)&pHfg>AhELKTM>P%Jp5AcTT{b`{Veink=jK1t)>1`Vwm zNfV89E9{o7+iIe52?1wHT;tOoBP?|e!0d7EkLofOW(+1`62y?&)GpO#Fal=i9F%_h4^`;i_TO7 zi!Ft`EB6~~D}Am~A^+D`H#;_SdYrs;8_~mIk*wA@*-d?2IRER_ExoqX(zU#O@ed#C z$p3TOt#lRtt7iS3CDX35C+?puQ*ultKC9Boj7nt?n<-Hanl__RdAdx+X_e+d1|&cP z&~%BGvKnQw35vpxW>pFTKj2_#DoTq}D$Rk|lup`|MgjB{uri6flen2lElxRfk{}93 zK@fNmK=73-DwRM1XE9 zj5rdZ;{^mN6G#LKAO~U-NHh_pf_Op`I#n)fRJx3DkON5&1;NWYl@Q~_IN`c-Nu|Y0 z8qL9{Kn&<008N2kNh1%KI{=ePBLL_i1XSRFzC4Z{k86|zF`(l*1XSP!1S(_d_xrzf z9piKgFJ2rU(uw2&lV^g{E2iECz0o)wH}$WfTjP(J`c>oRT6WfO+L_n5VP}2DIXCMu zA`a#pejj-_iM2%YQj6l3C--li$R;&mTyz$eQ=6$&;|$HsdhHQ8Vp}-nW+z*0t%_%q_6=w0?QIauu4fuhzM2jfXd5{6o8I&Kq3SYX2vw?mA zp5T{KY8O>-Q9;e>sq|aQ`nZ2uCyvWMfs-Sbr3?|3tySU zK}Tig;G;lPtRH^m3UYxANT4DkAb`FDETaM!Gde0$r&vafQwSX|s2DmGKn|4`g%1J_ z%BZw?kU<4T-~+$`mQZDLAcYExfe`vCycal7eak5<1m-{r#6SqBzzYcEF6~*SHyWqY_t0Mxdi*XEUcJYJlhDQC6AL@)D{vY$<42kne)%5yOBVff zJrC~Sgk`|0zX-jyu=S2#FyoIlEv(h`h3gLXrOoD2V#Yov3-9J~;~ZbhTH`cQkFIIL zb9%n68`qtz@93eXRSwIjkhDjnJu2M9#*s!rD8e-3jX@ z{G2J`y$&_S`(@07(mo{ZwpH=|rudCA=6-265q@7dZC*8DQ`3a?GIWEq{n8GsiXUu> zcgvVwX+6^RN$WCid|*|)@uQP<8aLY6TCC%uqzq-!iql@bZzE`Dz5NMXyXa$SKauuR z*lNUtgZ0S-=j6bL(tcDQHc}4O>wa6R?@0TuwC^n}IN64Fl;1ECiNm!IyR(+r6Bb=; ztJ*m2HFZ%1T{Rica*svF+cF!c0~WpZ?Gmqezt9!4oUEt%8OsD)ddHZ1NGxUDS`f)O z9jq_$lw}4JGvZ=KqjB1e3rR$>NX|p0sp0W577@;PW( delta 1647 zcmZ{jUuauZ9LIkrH*K@ETduXOQQPJYUy6brv0@OB^kqgEco-W*_Hri(eOvKwoWmOx z*K~Akx@&t4Qt7pP%%G%<0NO^@yYU3+~=Xkld_Fc3#WwMJ-dCT3pyK zX{nUTQp9iJXG=!BQe7hWtqp3S4i!jk)WzE{(pvXrXWdA3T}u(NFbfHM4~@X?nlIHg zBgHlHkX|!^Bne`ef;MkxX}~s=A#=lskETFF3Z1EAT6R`^DMFUmpdLhsck{kfAfIPnR6~rox$Mg}l$V(pngkd2 zmiW9&oCjHA0}0{?x_jA|`ehwRp1=nU0?kD(vdCs=xjhw_0~hvbd=GYD77Qf7gE|+h zKprxXSZs)QNrzht9JW9nDv*Z^_@Ea?xdDMdlLH#CozvgX#GSyEK8eZiVUa)R%xV9Z z4wft7hkVkV`HJeBIe%;6J@Y<*Oe4mp%M!4?nKsPpH5d;`!GJb;h2YBzwp+Hkedz+r3G3!a3}v?Mrd>j$Mtb VlQEY|{P2p%03+z{%%eTee*n)e3 zh;IP#2_Tl3tgz8hU7((YL6bp%!734C3J9<;XrS@c(fDd;d{s2Q3XpG)WS%mRFN(xh bLgs4%EmTAn0P+>k`0_x$RO03$<31h$H+>*( delta 40 ucmZo@U~Fh$+`yv1qY<)#kpT!Qm@0%f3n*kTZC;|JCNMGJ&gLrPHXZ=n)(f}* diff --git a/pg_data/base/16384/2679 b/pg_data/base/16384/2679 index 63f3792611b9617cdcd72dd714edde502686e67e..e789b9366e9a3c4c14a9bbe7a114764316402b88 100644 GIT binary patch delta 250 zcmZo@U~Fh$+`yv1VYyP3n*AHYb#7vU=RRe1|a@0NrB-35MKb|13

2*xdV!X@mzZ9lIc)(6A)yE)gb;)2FYpgQB7(V+7e*9M%q|fZrA5ug zR#Jr@V8K!`MNDjj1%X)1z|Qmed`NZs>hW`qFG-GHr)f3KtHZjRyL;n(Mc5wJCc!9h z^-3-7N4?h8vu^Yz5=VqgUPqFX0m)uFNl8ND7fw1bf-!8v2s+q?0d!Dc0E>P0;RF`1 zoQ&ZF=5P#$Fo%PE_e6&5WDE>o3Nx6%6n0<&W7vTajA0u_(7`qgpi>fIUtp1um)tn( z-P!(evip3#+mtm4syU~We$l*T9-3b^Z<=2+Uoqb>Up8MiUou})?{dRM z8(6gi0`rUJ3+AEu1@or)y!ndxocXf(dGjUnbLNY9SHJPB4Fq<;jQN83wD|?|Df4;r zhWVU%-Tb_H&HS8s)qGZD^zGJ8gGH#=&`fzqL;l~=dmvTkoG#L|%}>D<*(^;s_y4?( zi!}JtdA~$w=XG4?xfJt$$>iag3+RL%P%97cYk2koIiC3`DpLn)5g^q{R!N4{}bsY%8#flOA5yyk4MwduU4hr`}1hI zm3%rbXRgR;t7z4o9{Terkkcb4Uyt0$gLkc&x?QyQrF*kn+||DCd{Rr7dO`G|+kWfB zk$?y(4rvD&lbj66fMg^k3F(lSM5IlE!$<@c2b@dBBqu{MAQ?$XLOLWS5osT|+v3;> zh>)Vs1<07>WJm@iBPmHpr{7!O`rJ)=oX_i|1NAi%Lw(IeP+v1`SkQO}Coq6xC@_Zw zucaZJzyTb?4CXL}Lzut;?7$4hFon@8*W1}XIoVxW=!T;0yU()u@`R%8Q}^WwMcb$D z%M*&WPu-U%EX$|v%M*&0Pu-U%6m5b!|7@XX`P3UD82T0ZZptpxJCaB*%$8NH{JgS Dn2!cJ delta 1113 zcmXZcziX5+9LMqRUGKRHEfTTdkL3cQb8wPQ89P3IfMO7wL&DK!f3L;DKtn;$ju?fCf{cWS z01t;A76uv$f)?pVML|YFM1Y5jdM-VMg@J~GpdB&*6$Kdy5dj_!JuD2=p%vlT4(LTi zK}JGEfQLhWFsGTqKtn;$-Z20b1sMqu0Ui!LEDSUh1nn*Ts3^!thzRg-=;v$}1{w;2 z_J#qdD9A{N2=H*|VPT-5AZV}YM@2zKLPUUv!@Os+FwjsCv{wv3ML|YFM1Y4w4+{eg z1wq@V9~A`|2@wGvZvX7}r?4>4P!P123_wLeMnXh@heHnw0}Ta1+oK;91sMqu0q5&z z=kCUqToolhCnDFE&lV3imk)01?olV}oc`hT!s==#(;=@9xf}9y$de&=LtYy)BUqh` zhrBlA(U8Z>dw2egHpX&|gY(aLy#1uRse~K)(#6&F)ixf=)jtBY+C5#a+uyU%Xz};{ h*5dp8)_*~>9wYz& diff --git a/pg_data/base/16384/2699 b/pg_data/base/16384/2699 index 7379b780b5c0b9d52420e8d3268ad8b26f62a5e3..f92a1edb91e55828bf31bf5f37cd2df8bd19bf3f 100644 GIT binary patch delta 754 zcmZ9}J5Iwu6hP7EaS%-kOM&nY1K|@s0YgPW5ega_QXp!x1DAB3CAcz_u91+8vVkli zB_&Hpp8~Ea!tg9z$!DxL9%-BloC~UkZ6@FEf$%(=v^|RKXONYzR&sKbQbI!-P)wF0 z5}LkP`JxGpsiKl{a+Fd+LmE&_mLd|G7R=Lx##9wHl9HF49HoW*xS6%GP!=STho}0e z^%F`%IaD^v0luHl8@W)9mCt==V&sg4J8y%&@~QHP@-e>k=8u$n%7>ma;Q$9LTzVVq zEAJ_Hm3ML9o8M99TK;|C{xkpQ038;3-UeIBo5~x?>$vO9uPLu8ugra2-?@=C3mtER PW#uL1)~`ozSC5N7tWH&l delta 36 rcmZo@U~Fh$+`yv1bHQN+BLfh;VB8?FSwP_i<3^`bVw*Qv_^|^3(T)qw diff --git a/pg_data/base/16384/2701 b/pg_data/base/16384/2701 index 205b63a4407af6fddeb17732ba75af72577e3855..774ff3d8042978635d7a04e4216e77392f1605ef 100644 GIT binary patch delta 1055 zcmY+BJ5S?46oqeWR-!;jB#*-*2|HnVnwQPPV^f8ScI&OY?G`8{6|xlGRggsiRSH_9 zNc@3R)RdG|)btc^40v{~r6W7%i_g7hoTjBTEe%HG*zo zvS~z65Y?;Idxy`P<2Ee8X)(e2F z4HK;CED)oEMXQ>K*f%;@v;tE5n&KNhELtvr8~a8Vi#(kL!n!PJf+?)aBFO0X6xL;- z0LWrp<^kONdo)B8nkDBns6=e~EDpX^iP+pC2dD6@aPxlAdvZSjWmKZJ delta 51 zcmZo@U~Fh$+`yv1W8k=gkpT!^FdA@87Enl-+@TOL`GbPOWCg_;lTRpSY;^MC*leVA GP80xt{SY7k diff --git a/pg_data/base/16384/2702 b/pg_data/base/16384/2702 index 307551d313e5cb88d29ccaf48559cc89a81bf189..5138492cfbe6b8fcb0da5ff0fc9489345f2fadf1 100644 GIT binary patch delta 754 zcmYk(yG{Z@6oBEg3&zG`6BO?JT9$5HD diff --git a/pg_data/base/16384/2703 b/pg_data/base/16384/2703 index 0177d9e615177af380ac35307b8ba24db5ee9259..f9b59ac041e5278e1422de827b38ca1486c6e9fc 100644 GIT binary patch delta 109 zcmZo@U}|V!+Q8z#b0A?YBLfhmupHpqEa2e6!vCO8f#CxX9{}PDeF_^L?X6(C3ow0BgBLfhyFf~l(S6Is2FwtT2W`)xN5_}A*3mIu9c>Pqg`3J*9QYX2 ef#$^HFlYt`$k8Cc$DjgqCz>-s?!45dX9)mCy+o`4 delta 102 zcmZo@U~Xt&-oT>3{b2oaMg|aIS}>VkVd>@_3a11n2B>UaWSGRq9l*F4EXl##u$kZC zBGcw4PGxKp19Ubwc{Z7G&sYo5I)VAdX8s0U#>oziH#W;Om9b0=2-tk9P0bPjbL1iG diff --git a/pg_data/base/16384/3455 b/pg_data/base/16384/3455 index 65eeebcd6d37c0b4eab91552734536370449452a..a2c202ddb4867fb786ce444b515ffdc6083b0685 100644 GIT binary patch delta 360 zcmYk#Jr05}7{>8}fW!}AF(K;EO&y#ZL>DDGcm(_ybn^&qbW%s%I0A7nBrG1mBX|Ul z;OK*S2Alkw{F=6}Qkqg)X2@FR-8F%gnUR%ya%0XHCn;K?C zMhCP<5lSvw{Tkk4SGd9}z833UvAe>dS9G0T(p7p!SLl$o=_y^NC$vS63&$8}@?gXZ g1|85PdPwVZgVyNw&yE<-ExJ!P>E7S_JnE$W7ktnwp8x;= delta 41 vcmZo@U~Fh$+`yv1^B`~qBLff=utudPbm^_2`V diff --git a/pg_data/base/16384/pg_internal.init b/pg_data/base/16384/pg_internal.init index 28a0642b7939f2733de347b5496dca2ac50c4777..3c9051d0c969877bc5db8dad6768ef4edf464de2 100644 GIT binary patch delta 67 zcmZ4Uh;z*&&J8Dfm>a%2Pi~m1)BK}n`;Q*RUm{Er&Xc%xwks@R6ba!JU;qN33Wn{r R-xy`GL5e|=9f?d!_yOVm8aMy| delta 67 zcmZ4Uh;z*&&J8Dfm>JGGPi~m1)BK}n`;Q*RUm{EmPLsHGwks@R6ba$vV*r7(&V1W# SzcI>WgA{`#I}(|e@B;w14;Zrm diff --git a/pg_data/global/pg_control b/pg_data/global/pg_control index 3609c327c55c1a1201cb4ae77c9c28bf67b92fd3..5634f28893690a785864a0b6750aee5d85c0e5be 100644 GIT binary patch delta 86 zcmZp0XmFSyp($tYn8^SH34hl!f@lpW4dTEsNL+KGqq?9tR53^Z1T-gBE@%19(!F7` MA>(TGqfQmn34H>Sy)023P~FK~}0Y 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 zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ z1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;= zV1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~ z0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz z7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|Xg zfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_1{h#~0R|XgfB^;=V1NMz7+`<_ f1{h#~0R|XgfB^;=V1NMz7+~Q4-@tv1`H}w(GJ1Rv delta 10203 zcmeIuRZ3^mMfl|~q8l+nf*Yn<^Wm}rv8rkHA)>1LQ|mf7Z*Yo03A=38K)MHX9Psb!X1 zVWm}8TVt(t*4tpCO*Y$Nt8KR1VW(Yo+hebN_N#HgL5Cc6#8Jl_cfv`hoOZ@p=bU%J zMVDMwaK%;EaNP|z-E!LrYXAS#5P)!}`kds+!U~0uhKn1R@ZD2t*(P5r{wpA`pQHL?8kYh(H7)5P=9p bAOaDHKm;NXfe1t(0uhKn1S0T%fr{e4u_*jU diff --git a/pg_data/pg_xact/0000 b/pg_data/pg_xact/0000 index c5ba85dea2f781d3f2268f79930a7560f54ea865..513cf82177e9105072a7d231a3cfcd258af7f9e6 100644 GIT binary patch delta 16 XcmZp0XmFTtk|~sN<3)Y>i4WKSHz@{r delta 15 WcmZp0XmFTtl96@eMSb~+57+@QXa*<%